summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/bsdp/option_vendor_specific_information.go
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv4/bsdp/option_vendor_specific_information.go')
-rw-r--r--dhcpv4/bsdp/option_vendor_specific_information.go157
1 files changed, 0 insertions, 157 deletions
diff --git a/dhcpv4/bsdp/option_vendor_specific_information.go b/dhcpv4/bsdp/option_vendor_specific_information.go
deleted file mode 100644
index 4c2365c..0000000
--- a/dhcpv4/bsdp/option_vendor_specific_information.go
+++ /dev/null
@@ -1,157 +0,0 @@
-package bsdp
-
-import (
- "fmt"
- "net"
-
- "github.com/insomniacslk/dhcp/dhcpv4"
-)
-
-// VendorOptions is like dhcpv4.Options, but stringifies using BSDP-specific
-// option codes.
-type VendorOptions struct {
- dhcpv4.Options
-}
-
-// String prints the contained options using BSDP-specific option code parsing.
-func (v VendorOptions) String() string {
- return v.Options.ToString(bsdpHumanizer)
-}
-
-// FromBytes parses vendor options from
-func (v *VendorOptions) FromBytes(data []byte) error {
- v.Options = make(dhcpv4.Options)
- return v.Options.FromBytes(data)
-}
-
-// DefaultBootImageID returns the default boot image ID in v.
-func (v VendorOptions) DefaultBootImageID() *BootImageID {
- return getBootImageID(OptionDefaultBootImageID, v.Options)
-}
-
-// SelectedBootImageID returns the selected boot image ID in v.
-func (v VendorOptions) SelectedBootImageID() *BootImageID {
- return getBootImageID(OptionSelectedBootImageID, v.Options)
-}
-
-// BootImageList returns the BSDP boot image list in v.
-func (v VendorOptions) BootImageList() BootImageList {
- val := v.Options.Get(OptionBootImageList)
- if val == nil {
- return nil
- }
- var bil BootImageList
- if err := bil.FromBytes(val); err != nil {
- return nil
- }
- return bil
-}
-
-// MessageType returns the BSDP Message Type in v.
-func (v VendorOptions) MessageType() MessageType {
- val := v.Options.Get(OptionMessageType)
- if val == nil {
- return MessageTypeNone
- }
- var m MessageType
- if err := m.FromBytes(val); err != nil {
- return MessageTypeNone
- }
- return m
-}
-
-// GetVersion returns the BSDP version in v if present.
-func (v VendorOptions) Version() (Version, error) {
- val := v.Options.Get(OptionVersion)
- if val == nil {
- return Version{0, 0}, fmt.Errorf("version not found")
- }
- var ver Version
- if err := ver.FromBytes(val); err != nil {
- return Version{0, 0}, err
- }
- return ver, nil
-}
-
-// GetServerIdentifier returns the BSDP Server Identifier value in v if present.
-func (v VendorOptions) ServerIdentifier() net.IP {
- return dhcpv4.GetIP(OptionServerIdentifier, v.Options)
-}
-
-// GetReplyPort returns the BSDP reply port in v if present.
-func (v VendorOptions) ReplyPort() (uint16, error) {
- return dhcpv4.GetUint16(OptionReplyPort, v.Options)
-}
-
-// GetServerPriority returns the BSDP server priority in v if present.
-func (v VendorOptions) ServerPriority() (uint16, error) {
- return dhcpv4.GetUint16(OptionServerPriority, v.Options)
-}
-
-// GetMachineName finds and parses the BSDP Machine Name option from v.
-func (v VendorOptions) MachineName() string {
- return dhcpv4.GetString(OptionMachineName, v.Options)
-}
-
-// OptVendorOptions returns the BSDP Vendor Specific Info in o.
-func OptVendorOptions(o ...dhcpv4.Option) dhcpv4.Option {
- return dhcpv4.Option{
- Code: dhcpv4.OptionVendorSpecificInformation,
- Value: VendorOptions{dhcpv4.OptionsFromList(o...)},
- }
-}
-
-// GetVendorOptions returns a new BSDP Vendor Specific Info option.
-func GetVendorOptions(o dhcpv4.Options) *VendorOptions {
- v := o.Get(dhcpv4.OptionVendorSpecificInformation)
- if v == nil {
- return nil
- }
- var vo VendorOptions
- if err := vo.FromBytes(v); err != nil {
- return nil
- }
- return &vo
-}
-
-var bsdpHumanizer = dhcpv4.OptionHumanizer{
- ValueHumanizer: parseOption,
- CodeHumanizer: func(c uint8) dhcpv4.OptionCode {
- return optionCode(c)
- },
-}
-
-// parseOption is similar to dhcpv4.parseOption, except that it interprets
-// option codes based on the BSDP-specific options.
-func parseOption(code dhcpv4.OptionCode, data []byte) fmt.Stringer {
- var d dhcpv4.OptionDecoder
- switch code {
- case OptionMachineName:
- var s dhcpv4.String
- d = &s
-
- case OptionServerIdentifier:
- d = &dhcpv4.IP{}
-
- case OptionServerPriority, OptionReplyPort:
- var u dhcpv4.Uint16
- d = &u
-
- case OptionBootImageList:
- d = &BootImageList{}
-
- case OptionDefaultBootImageID, OptionSelectedBootImageID:
- d = &BootImageID{}
-
- case OptionMessageType:
- var m MessageType
- d = &m
-
- case OptionVersion:
- d = &Version{}
- }
- if d != nil && d.FromBytes(data) == nil {
- return d
- }
- return dhcpv4.OptionGeneric{Data: data}
-}