code: func ParseRequest(b []byte, remoteAddr *net.UDPAddr) (*Request, error) {
  	p := new(dhcp6.Packet)
  	if err := p.UnmarshalBinary(b); err != nil {
  		return nil, err
  	}
  
  	return &Request{
  		MessageType:   p.MessageType,
  		TransactionID: p.TransactionID,
  		Options:       p.Options,
  		Length:        int64(len(b)),
  		RemoteAddr:    remoteAddr.String(),
  	}, nil
  }
docs: // ParseRequest creates a new Request from an input byte slice and UDP address.
  // It populates the basic struct members which can be used in a DHCP handler.
  //
  // If the input byte slice is not a valid DHCP packet, ErrInvalidPacket is
  // returned.