1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package reservation
- import (
- "context"
- "dhcp/data"
- "github.com/insomniacslk/dhcp/dhcpv4"
- "net/netip"
- )
- // setDHCPOpts takes a client dhcpServer packet and data (typically from a macAndIPXE) and creates a slice of dhcpServer packet modifiers.
- // m is the dhcpServer request from a client. d is the data to use to create the dhcpServer packet modifiers.
- // This is most likely the place where we would have any business logic for determining dhcpServer option setting.
- func (h *Handler) setDHCPOpts(_ context.Context, _ *dhcpv4.DHCPv4, d *data.DHCP) []dhcpv4.Modifier {
- mods := []dhcpv4.Modifier{
- dhcpv4.WithLeaseTime(d.LeaseTime),
- dhcpv4.WithYourIP(d.IPAddress.AsSlice()),
- }
- if len(d.NameServers) > 0 {
- mods = append(mods, dhcpv4.WithDNS(d.NameServers...))
- }
- if len(d.DomainSearch) > 0 {
- mods = append(mods, dhcpv4.WithDomainSearchList(d.DomainSearch...))
- }
- if len(d.NTPServers) > 0 {
- mods = append(mods, dhcpv4.WithOption(dhcpv4.OptNTPServers(d.NTPServers...)))
- }
- if d.BroadcastAddress.Compare(netip.Addr{}) != 0 {
- mods = append(mods, dhcpv4.WithGeneric(dhcpv4.OptionBroadcastAddress, d.BroadcastAddress.AsSlice()))
- }
- if d.DomainName != "" {
- mods = append(mods, dhcpv4.WithGeneric(dhcpv4.OptionDomainName, []byte(d.DomainName)))
- }
- if len(d.SubnetMask) > 0 {
- mods = append(mods, dhcpv4.WithNetmask(d.SubnetMask))
- }
- if d.DefaultGateway.Compare(netip.Addr{}) != 0 {
- mods = append(mods, dhcpv4.WithRouter(d.DefaultGateway.AsSlice()))
- }
- return mods
- }
|