diff --git a/dhcpd/dhcpd.go b/dhcpd/dhcpd.go index 74f6c2fb..1503749d 100644 --- a/dhcpd/dhcpd.go +++ b/dhcpd/dhcpd.go @@ -14,9 +14,10 @@ const defaultDiscoverTime = time.Second * 3 // field ordering is important -- yaml fields will mirror ordering from here type Lease struct { - HWAddr net.HardwareAddr `json:"mac" yaml:"hwaddr"` - IP net.IP `json:"ip"` - Expiry time.Time `json:"expires"` + HWAddr net.HardwareAddr `json:"mac" yaml:"hwaddr"` + IP net.IP `json:"ip"` + Hostname string `json:"hostname"` + Expiry time.Time `json:"expires"` } // field ordering is important -- yaml fields will mirror ordering from here @@ -176,7 +177,8 @@ func (s *Server) reserveLease(p dhcp4.Packet) (*Lease, error) { return nil, wrapErrPrint(err, "Couldn't find free IP for the lease %s", hwaddr.String()) } trace("Assigning to %s IP address %s", hwaddr, ip.String()) - lease := &Lease{HWAddr: hwaddr, IP: ip} + hostname := p.ParseOptions()[dhcp4.OptionHostName] + lease := &Lease{HWAddr: hwaddr, IP: ip, Hostname: string(hostname)} s.leases = append(s.leases, lease) return lease, nil }