summaryrefslogtreecommitdiffhomepage
path: root/dhcpv6/option_bootfileparam.go
diff options
context:
space:
mode:
Diffstat (limited to 'dhcpv6/option_bootfileparam.go')
-rw-r--r--dhcpv6/option_bootfileparam.go22
1 files changed, 10 insertions, 12 deletions
diff --git a/dhcpv6/option_bootfileparam.go b/dhcpv6/option_bootfileparam.go
index 7618080..ba09ca0 100644
--- a/dhcpv6/option_bootfileparam.go
+++ b/dhcpv6/option_bootfileparam.go
@@ -9,10 +9,12 @@ import (
// OptBootFileParam returns a BootfileParam option as defined in RFC 5970
// Section 3.2.
func OptBootFileParam(args ...string) Option {
- return optBootFileParam(args)
+ return &optBootFileParam{args}
}
-type optBootFileParam []string
+type optBootFileParam struct {
+ params []string
+}
// Code returns the option code
func (optBootFileParam) Code() OptionCode {
@@ -22,7 +24,7 @@ func (optBootFileParam) Code() OptionCode {
// ToBytes serializes the option and returns it as a sequence of bytes
func (op optBootFileParam) ToBytes() []byte {
buf := uio.NewBigEndianBuffer(nil)
- for _, param := range op {
+ for _, param := range op.params {
if len(param) >= 1<<16 {
// TODO: say something here instead of silently ignoring a parameter
continue
@@ -42,20 +44,16 @@ func (op optBootFileParam) ToBytes() []byte {
}
func (op optBootFileParam) String() string {
- return fmt.Sprintf("%s: %v", op.Code(), ([]string)(op))
+ return fmt.Sprintf("%s: %v", op.Code(), op.params)
}
-// parseOptBootFileParam builds an OptBootFileParam structure from a sequence
+// FromBytes builds an OptBootFileParam structure from a sequence
// of bytes. The input data does not include option code and length bytes.
-func parseOptBootFileParam(data []byte) (optBootFileParam, error) {
+func (op *optBootFileParam) FromBytes(data []byte) error {
buf := uio.NewBigEndianBuffer(data)
- var result optBootFileParam
for buf.Has(2) {
length := buf.Read16()
- result = append(result, string(buf.CopyN(int(length))))
- }
- if err := buf.FinError(); err != nil {
- return nil, err
+ op.params = append(op.params, string(buf.CopyN(int(length))))
}
- return result, nil
+ return buf.FinError()
}