// ReplyPacket creates a reply packet that a Server would send to a client. // It uses the req Packet param to copy across common/necessary fields to // associate the reply with the request. func informReplyPacket(req dhcp4.Packet, mt dhcp4.MessageType, serverID net.IP, options []dhcp4.Option) dhcp4.Packet { p := dhcp4.NewPacket(dhcp4.BootReply) p.SetXId(req.XId()) p.SetHType(req.HType()) p[2] = req.HLen() // dhcp4 library does not provide a setter p.SetFlags(req.Flags()) p.SetCIAddr(req.CIAddr()) p.SetCHAddr(req.CHAddr()) p.AddOption(dhcp4.OptionDHCPMessageType, []byte{byte(mt)}) p.AddOption(dhcp4.OptionServerIdentifier, []byte(serverID)) for _, o := range options { p.AddOption(o.Code, o.Value) } p.PadToMinSize() return p }