code: func (c *Client) GetAcknowledgement(requestPacket *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
  		}
  
  		acknowledgementPacket := dhcp4.Packet(readBuffer)
  		acknowledgementPacketOptions := acknowledgementPacket.ParseOptions()
  
  		// Ignore Servers in my Ignore list
  		for _, ignoreServer := range c.ignoreServers {
  			if source.Equal(ignoreServer) {
  				continue
  			}
  
  			if acknowledgementPacket.SIAddr().Equal(ignoreServer) {
  				continue
  			}
  		}
  
  		if !bytes.Equal(requestPacket.XId(), acknowledgementPacket.XId()) || len(acknowledgementPacketOptions[dhcp4.OptionDHCPMessageType]) < 1 || (dhcp4.MessageType(acknowledgementPacketOptions[dhcp4.OptionDHCPMessageType][0]) != dhcp4.ACK && dhcp4.MessageType(acknowledgementPacketOptions[dhcp4.OptionDHCPMessageType][0]) != dhcp4.NAK) {
  			continue
  		}
  
  		return acknowledgementPacket, nil
  	}
  }
docs: //Retreive Acknowledgement
  //Wait for the offer for a specific Request Packet.