code: func (s *Server) newConn(p PacketConn, addr *net.UDPAddr, n int, buf []byte) (*conn, error) {
  	c := &conn{
  		conn:       p,
  		remoteAddr: addr,
  		server:     s,
  		buf:        make([]byte, n),
  	}
  	copy(c.buf, buf[:n])
  
  	return c, nil
  }
docs: // newConn creates a new conn using information received in a single DHCP
  // connection.  newConn makes a copy of the input buffer for use in handling
  // a single connection.
  // BUG(mdlayher): consider using a sync.Pool with many buffers available to avoid
  // allocating a new one on each connection