diff options
Diffstat (limited to 'dhcpv4/bsdp')
-rw-r--r-- | dhcpv4/bsdp/bsdp_option_generic.go | 6 | ||||
-rw-r--r-- | dhcpv4/bsdp/bsdp_option_generic_test.go | 4 | ||||
-rw-r--r-- | dhcpv4/bsdp/option_vendor_specific_information.go | 7 | ||||
-rw-r--r-- | dhcpv4/bsdp/types.go | 48 |
4 files changed, 40 insertions, 25 deletions
diff --git a/dhcpv4/bsdp/bsdp_option_generic.go b/dhcpv4/bsdp/bsdp_option_generic.go index 3859d8b..e9e163f 100644 --- a/dhcpv4/bsdp/bsdp_option_generic.go +++ b/dhcpv4/bsdp/bsdp_option_generic.go @@ -32,9 +32,5 @@ func (o OptGeneric) ToBytes() []byte { // String returns a human-readable representation of a generic option. func (o OptGeneric) String() string { - code, ok := optionCodeToString[o.Code()] - if !ok { - code = "Unknown" - } - return fmt.Sprintf("%v -> %v", code, o.Data) + return fmt.Sprintf("%s -> %v", o.OptionCode, o.Data) } diff --git a/dhcpv4/bsdp/bsdp_option_generic_test.go b/dhcpv4/bsdp/bsdp_option_generic_test.go index fe78242..a813f95 100644 --- a/dhcpv4/bsdp/bsdp_option_generic_test.go +++ b/dhcpv4/bsdp/bsdp_option_generic_test.go @@ -50,8 +50,8 @@ func TestOptGenericString(t *testing.T) { func TestOptGenericStringUnknown(t *testing.T) { o := OptGeneric{ - OptionCode: 102, // Returend option code. + OptionCode: optionCode(102), // Returned option code. Data: []byte{5}, } - require.Equal(t, "Unknown -> [5]", o.String()) + require.Equal(t, "unknown -> [5]", o.String()) } diff --git a/dhcpv4/bsdp/option_vendor_specific_information.go b/dhcpv4/bsdp/option_vendor_specific_information.go index 7d68f7f..de144b3 100644 --- a/dhcpv4/bsdp/option_vendor_specific_information.go +++ b/dhcpv4/bsdp/option_vendor_specific_information.go @@ -48,10 +48,15 @@ func parseOption(code dhcpv4.OptionCode, data []byte) (dhcpv4.Option, error) { return opt, nil } +// codeGetter is a dhcpv4.OptionCodeGetter for BSDP optionCodes. +func codeGetter(c uint8) dhcpv4.OptionCode { + return optionCode(c) +} + // ParseOptVendorSpecificInformation constructs an OptVendorSpecificInformation struct from a sequence of // bytes and returns it, or an error. func ParseOptVendorSpecificInformation(data []byte) (*OptVendorSpecificInformation, error) { - options, err := dhcpv4.OptionsFromBytesWithParser(data, parseOption, false /* don't check for OptionEnd tag */) + options, err := dhcpv4.OptionsFromBytesWithParser(data, codeGetter, parseOption, false /* don't check for OptionEnd tag */) if err != nil { return nil, err } diff --git a/dhcpv4/bsdp/types.go b/dhcpv4/bsdp/types.go index aa9a824..4ce840f 100644 --- a/dhcpv4/bsdp/types.go +++ b/dhcpv4/bsdp/types.go @@ -1,34 +1,48 @@ package bsdp -import "github.com/insomniacslk/dhcp/dhcpv4" - // DefaultMacOSVendorClassIdentifier is a default vendor class identifier used // on non-darwin hosts where the vendor class identifier cannot be determined. // It should mostly be used for debugging if testing BSDP on a non-darwin // system. const DefaultMacOSVendorClassIdentifier = AppleVendorID + "/i386/MacMini6,1" +// optionCode are BSDP option codes. +// +// optionCode implements the dhcpv4.OptionCode interface. +type optionCode uint8 + +func (o optionCode) Code() uint8 { + return uint8(o) +} + +func (o optionCode) String() string { + if s, ok := optionCodeToString[o]; ok { + return s + } + return "unknown" +} + // Options (occur as sub-options of DHCP option 43). const ( - OptionMessageType dhcpv4.OptionCode = 1 - OptionVersion dhcpv4.OptionCode = 2 - OptionServerIdentifier dhcpv4.OptionCode = 3 - OptionServerPriority dhcpv4.OptionCode = 4 - OptionReplyPort dhcpv4.OptionCode = 5 - OptionBootImageListPath dhcpv4.OptionCode = 6 // Not used - OptionDefaultBootImageID dhcpv4.OptionCode = 7 - OptionSelectedBootImageID dhcpv4.OptionCode = 8 - OptionBootImageList dhcpv4.OptionCode = 9 - OptionNetboot1_0Firmware dhcpv4.OptionCode = 10 - OptionBootImageAttributesFilterList dhcpv4.OptionCode = 11 - OptionShadowMountPath dhcpv4.OptionCode = 128 - OptionShadowFilePath dhcpv4.OptionCode = 129 - OptionMachineName dhcpv4.OptionCode = 130 + OptionMessageType optionCode = 1 + OptionVersion optionCode = 2 + OptionServerIdentifier optionCode = 3 + OptionServerPriority optionCode = 4 + OptionReplyPort optionCode = 5 + OptionBootImageListPath optionCode = 6 // Not used + OptionDefaultBootImageID optionCode = 7 + OptionSelectedBootImageID optionCode = 8 + OptionBootImageList optionCode = 9 + OptionNetboot1_0Firmware optionCode = 10 + OptionBootImageAttributesFilterList optionCode = 11 + OptionShadowMountPath optionCode = 128 + OptionShadowFilePath optionCode = 129 + OptionMachineName optionCode = 130 ) // optionCodeToString maps BSDP OptionCodes to human-readable strings // describing what they are. -var optionCodeToString = map[dhcpv4.OptionCode]string{ +var optionCodeToString = map[optionCode]string{ OptionMessageType: "BSDP Message Type", OptionVersion: "BSDP Version", OptionServerIdentifier: "BSDP Server Identifier", |