code: func (c *Client) GetOffer(discoverPacket *dhcp4.Packet) (dhcp4.Packet, error) {
  	start := time.Now()
  
  	for {
  		timeout := c.timeout - time.Since(start)
  		if timeout < 0 {
  			return dhcp4.Packet{}, &TimeoutError{Timeout: c.timeout}
  		}
  
  		c.connection.SetReadTimeout(timeout)
  		readBuffer, source, err := c.connection.ReadFrom()
  		if err != nil {
  			if errno, ok := err.(syscall.Errno); ok && errno == syscall.EAGAIN {
  				return dhcp4.Packet{}, &TimeoutError{Timeout: c.timeout}
  			}
  			return dhcp4.Packet{}, err
  		}
  
  		offerPacket := dhcp4.Packet(readBuffer)
  		offerPacketOptions := offerPacket.ParseOptions()
  
  		// Ignore Servers in my Ignore list
  		for _, ignoreServer := range c.ignoreServers {
  			if source.Equal(ignoreServer) {
  				continue
  			}
  
  			if offerPacket.SIAddr().Equal(ignoreServer) {
  				continue
  			}
  		}
  
  		if len(offerPacketOptions[dhcp4.OptionDHCPMessageType]) < 1 || dhcp4.MessageType(offerPacketOptions[dhcp4.OptionDHCPMessageType][0]) != dhcp4.Offer || !bytes.Equal(discoverPacket.XId(), offerPacket.XId()) {
  			continue
  		}
  
  		return offerPacket, nil
  	}
  
  }
docs: //Retreive Offer...
  //Wait for the offer for a specific Discovery Packet.