From 72e14d6762cd895f00fd5c04fec8a16df521b65f Mon Sep 17 00:00:00 2001 From: Chris Koch Date: Sat, 28 Dec 2019 09:49:06 -0800 Subject: v6: add BootFileParam getter Signed-off-by: Chris Koch --- dhcpv6/option_bootfileparam.go | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'dhcpv6/option_bootfileparam.go') diff --git a/dhcpv6/option_bootfileparam.go b/dhcpv6/option_bootfileparam.go index 13ec16a..4e2750b 100644 --- a/dhcpv6/option_bootfileparam.go +++ b/dhcpv6/option_bootfileparam.go @@ -6,21 +6,21 @@ import ( "github.com/u-root/u-root/pkg/uio" ) -// OptBootFileParam implements the OptionBootfileParam option -// -// This module defines the OPT_BOOTFILE_PARAM structure. -// https://www.ietf.org/rfc/rfc5970.txt (section 3.2) -type OptBootFileParam []string +// OptBootFileParam returns a BootfileParam option as defined in RFC 5970 +// Section 3.2. +func OptBootFileParam(args ...string) Option { + return optBootFileParam(args) +} -var _ Option = OptBootFileParam(nil) +type optBootFileParam []string // Code returns the option code -func (op OptBootFileParam) Code() OptionCode { +func (optBootFileParam) Code() OptionCode { return OptionBootfileParam } // ToBytes serializes the option and returns it as a sequence of bytes -func (op OptBootFileParam) ToBytes() []byte { +func (op optBootFileParam) ToBytes() []byte { buf := uio.NewBigEndianBuffer(nil) for _, param := range op { if len(param) >= 1<<16 { @@ -41,14 +41,15 @@ func (op OptBootFileParam) ToBytes() []byte { return buf.Data() } -func (op OptBootFileParam) String() string { - return fmt.Sprintf("OptBootFileParam(%v)", ([]string)(op)) +func (op optBootFileParam) String() string { + return fmt.Sprintf("BootFileParam: %v", ([]string)(op)) } -// ParseOptBootFileParam builds an OptBootFileParam structure from a sequence +// parseOptBootFileParam builds an OptBootFileParam structure from a sequence // of bytes. The input data does not include option code and length bytes. -func ParseOptBootFileParam(data []byte) (result OptBootFileParam, err error) { +func parseOptBootFileParam(data []byte) (optBootFileParam, error) { buf := uio.NewBigEndianBuffer(data) + var result optBootFileParam for buf.Has(2) { length := buf.Read16() result = append(result, string(buf.CopyN(int(length)))) @@ -56,5 +57,5 @@ func ParseOptBootFileParam(data []byte) (result OptBootFileParam, err error) { if err := buf.FinError(); err != nil { return nil, err } - return + return result, nil } -- cgit v1.2.3