diff options
author | Christopher Koch <chrisko@google.com> | 2018-12-29 09:16:15 -0800 |
---|---|---|
committer | insomniac <insomniacslk@users.noreply.github.com> | 2019-01-11 19:38:21 +0000 |
commit | 9492662dae0651fd4d6698d35b58ade7300e149e (patch) | |
tree | 77f53ebd6dfded05880c322005909b97a1cf140c /dhcpv4/option_userclass.go | |
parent | 512011c2eb80a7c0316405ef7aaae6e0b5b09b1c (diff) |
dhcpv4: simplify marshaling options to binary.
- Consolidate writing the option code and length to Options.Marshal
rather than doing it in each individual option.
- Use uio in marshaling code.
Diffstat (limited to 'dhcpv4/option_userclass.go')
-rw-r--r-- | dhcpv4/option_userclass.go | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/dhcpv4/option_userclass.go b/dhcpv4/option_userclass.go index 44ce090..560d6ac 100644 --- a/dhcpv4/option_userclass.go +++ b/dhcpv4/option_userclass.go @@ -24,15 +24,16 @@ func (op *OptUserClass) Code() OptionCode { // ToBytes serializes the option and returns it as a sequence of bytes func (op *OptUserClass) ToBytes() []byte { - buf := []byte{byte(op.Code()), byte(op.Length())} + buf := uio.NewBigEndianBuffer(nil) if !op.Rfc3004 { - return append(buf, op.UserClasses[0]...) - } - for _, uc := range op.UserClasses { - buf = append(buf, byte(len(uc))) - buf = append(buf, uc...) + buf.WriteBytes(op.UserClasses[0]) + } else { + for _, uc := range op.UserClasses { + buf.Write8(uint8(len(uc))) + buf.WriteBytes(uc) + } } - return buf + return buf.Data() } // Length returns the option length |