summaryrefslogtreecommitdiffhomepage
path: root/dhcpv4/option_userclass.go
diff options
context:
space:
mode:
authorChristopher Koch <chrisko@google.com>2018-12-29 09:16:15 -0800
committerinsomniac <insomniacslk@users.noreply.github.com>2019-01-11 19:38:21 +0000
commit9492662dae0651fd4d6698d35b58ade7300e149e (patch)
tree77f53ebd6dfded05880c322005909b97a1cf140c /dhcpv4/option_userclass.go
parent512011c2eb80a7c0316405ef7aaae6e0b5b09b1c (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.go15
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