summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/bsdp
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv4/bsdp')
-rw-r--r--dhcpv4/bsdp/bsdp_option_generic.go6
-rw-r--r--dhcpv4/bsdp/bsdp_option_generic_test.go4
-rw-r--r--dhcpv4/bsdp/option_vendor_specific_information.go7
-rw-r--r--dhcpv4/bsdp/types.go48
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",