kdhcp/dhcp/options.go

77 lines
2.5 KiB
Go

package dhcp
import (
"fmt"
"io"
)
type OptionTag uint8
func (opt OptionTag) String() string {
s, ok := optionStrings[opt]
if !ok {
return fmt.Sprintf("<unknown DHCP option [%d]>", opt)
}
return s
}
type Option func(req *Packet, r io.Reader) error
const (
OptionTagPadding OptionTag = 0
OptionTagSubnetMask OptionTag = 1
OptionTagTimeOffset OptionTag = 2
OptionTagRouter OptionTag = 3
OptionTagDomainNameServer OptionTag = 6
OptionTagHostName OptionTag = 12
OptionTagDomainName OptionTag = 15
OptionTagInterfaceMTU OptionTag = 26
OptionTagBroadcastAddress OptionTag = 28
OptionTagNTPServers OptionTag = 42
OptionTagNBNS OptionTag = 44
OptionTagNBScope OptionTag = 47
OptionTagMessageType OptionTag = 53
OptionTagParameterRequestList OptionTag = 55
OptionTagDHCPMaxMessageSize OptionTag = 57
OptionTagClientID OptionTag = 61
OptionTagDomainSearch OptionTag = 119
OptionTagClasslessStaticRoute OptionTag = 121
OptionTagEnd OptionTag = 255
)
var optionStrings = map[OptionTag]string{
OptionTagPadding: "pad",
OptionTagSubnetMask: "subnet mask",
OptionTagTimeOffset: "time offset from UTC",
OptionTagRouter: "routers",
OptionTagDomainNameServer: "domain name servers",
OptionTagHostName: "host name",
OptionTagDomainName: "domain name",
OptionTagInterfaceMTU: "interface MTU",
OptionTagBroadcastAddress: "broadcast address",
OptionTagNTPServers: "NTP servers",
OptionTagNBNS: "NetBIOS name servers",
OptionTagNBScope: "NetBIOS scope",
OptionTagMessageType: "message type",
OptionTagParameterRequestList: "parameter request list",
OptionTagDHCPMaxMessageSize: "DHCP max message size",
OptionTagClientID: "client ID",
OptionTagDomainSearch: "search domain",
OptionTagClasslessStaticRoute: "classless static route",
OptionTagEnd: "end",
}
type DHCPMessageType uint8
const (
DHCPMessageTypeDiscover DHCPMessageType = 1
DHCPMessageTypeOffer DHCPMessageType = 2
DHCPMessageTypeRequest DHCPMessageType = 3
DHCPMessageTypeDecline DHCPMessageType = 4
DHCPMessageTypeAck DHCPMessageType = 5
DHCPMessageTypeNAK DHCPMessageType = 6
DHCPMessageTypeRelease DHCPMessageType = 7
DHCPMessageTypeInform DHCPMessageType = 8
)