From 9492662dae0651fd4d6698d35b58ade7300e149e Mon Sep 17 00:00:00 2001 From: Christopher Koch Date: Sat, 29 Dec 2018 09:16:15 -0800 Subject: 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. --- dhcpv4/option_vivc.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'dhcpv4/option_vivc.go') diff --git a/dhcpv4/option_vivc.go b/dhcpv4/option_vivc.go index 4ff42a3..4c278e0 100644 --- a/dhcpv4/option_vivc.go +++ b/dhcpv4/option_vivc.go @@ -2,7 +2,6 @@ package dhcpv4 import ( "bytes" - "encoding/binary" "fmt" "github.com/u-root/u-root/pkg/uio" @@ -44,17 +43,13 @@ func (o *OptVIVC) Code() OptionCode { // ToBytes returns a serialized stream of bytes for this option. func (o *OptVIVC) ToBytes() []byte { - buf := make([]byte, o.Length()+2) - copy(buf[0:], []byte{byte(o.Code()), byte(o.Length())}) - - b := buf[2:] + buf := uio.NewBigEndianBuffer(nil) for _, id := range o.Identifiers { - binary.BigEndian.PutUint32(b[0:4], id.EntID) - b[4] = byte(len(id.Data)) - copy(b[5:], id.Data) - b = b[len(id.Data)+5:] + buf.Write32(id.EntID) + buf.Write8(uint8(len(id.Data))) + buf.WriteBytes(id.Data) } - return buf + return buf.Data() } // String returns a human-readable string for this option. -- cgit v1.2.3