diff options
author | Pablo Mazzini <pmazzini@gmail.com> | 2018-08-02 18:24:24 +0200 |
---|---|---|
committer | Pablo Mazzini <pmazzini@gmail.com> | 2018-08-02 18:24:24 +0200 |
commit | 5e00177fe0c35379c9e83da496d6527d932854ae (patch) | |
tree | 470a0f0348beb4c0cacb961ad4606e8808133d3f | |
parent | 4ceb1c8174876a7564bca419ab971cd63c10327f (diff) |
OptUserClass: use only the flag as authoritative
-rw-r--r-- | dhcpv4/dhcpv4_test.go | 4 | ||||
-rw-r--r-- | dhcpv4/modifiers_test.go | 4 | ||||
-rw-r--r-- | dhcpv4/option_userclass.go | 14 | ||||
-rw-r--r-- | dhcpv4/option_userclass_test.go | 1 |
4 files changed, 14 insertions, 9 deletions
diff --git a/dhcpv4/dhcpv4_test.go b/dhcpv4/dhcpv4_test.go index 7e5f083..217c801 100644 --- a/dhcpv4/dhcpv4_test.go +++ b/dhcpv4/dhcpv4_test.go @@ -363,7 +363,7 @@ func TestDHCPv4RequestFromOfferWithModifier(t *testing.T) { require.NoError(t, err) require.NotEqual(t, (*MessageType)(nil), *req.MessageType()) require.Equal(t, MessageTypeRequest, *req.MessageType()) - require.Equal(t, "OptUserClass{userclass=[linuxboot]}", req.options[3].String()) + require.Equal(t, "User Class Information -> linuxboot", req.options[3].String()) } func TestNewReplyFromRequest(t *testing.T) { @@ -385,7 +385,7 @@ func TestNewReplyFromRequestWithModifier(t *testing.T) { require.NoError(t, err) require.Equal(t, discover.TransactionID(), reply.TransactionID()) require.Equal(t, discover.GatewayIPAddr(), reply.GatewayIPAddr()) - require.Equal(t, "OptUserClass{userclass=[linuxboot]}", reply.options[0].String()) + require.Equal(t, "User Class Information -> linuxboot", reply.options[0].String()) } func TestDHCPv4MessageTypeNil(t *testing.T) { diff --git a/dhcpv4/modifiers_test.go b/dhcpv4/modifiers_test.go index 415a4ea..2e249ee 100644 --- a/dhcpv4/modifiers_test.go +++ b/dhcpv4/modifiers_test.go @@ -10,5 +10,5 @@ func TestUserClassModifier(t *testing.T) { d, _ := New() userClass := WithUserClass([]byte("linuxboot")) d = userClass(d) - require.Equal(t, "OptUserClass{userclass=[linuxboot]}", d.options[0].String()) -}
\ No newline at end of file + require.Equal(t, "User Class Information -> linuxboot", d.options[0].String()) +} diff --git a/dhcpv4/option_userclass.go b/dhcpv4/option_userclass.go index f8a081f..d6ddabc 100644 --- a/dhcpv4/option_userclass.go +++ b/dhcpv4/option_userclass.go @@ -23,7 +23,7 @@ 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())} - if !op.Rfc3004 && len(op.UserClasses) == 1 { + if !op.Rfc3004 { return append(buf, op.UserClasses[0]...) } for _, uc := range op.UserClasses { @@ -36,7 +36,7 @@ func (op *OptUserClass) ToBytes() []byte { // Length returns the option length func (op *OptUserClass) Length() int { ret := 0 - if !op.Rfc3004 && len(op.UserClasses) == 1 { + if !op.Rfc3004 { return len(op.UserClasses[0]) } for _, uc := range op.UserClasses { @@ -47,10 +47,14 @@ func (op *OptUserClass) Length() int { func (op *OptUserClass) String() string { ucStrings := make([]string, 0, len(op.UserClasses)) - for _, uc := range op.UserClasses { - ucStrings = append(ucStrings, string(uc)) + if !op.Rfc3004 { + ucStrings = append(ucStrings, string(op.UserClasses[0])) + } else { + for _, uc := range op.UserClasses { + ucStrings = append(ucStrings, string(uc)) + } } - return fmt.Sprintf("OptUserClass{userclass=[%s]}", strings.Join(ucStrings, ", ")) + return fmt.Sprintf("User Class Information -> %v", strings.Join(ucStrings, ", ")) } // ParseOptUserClass returns a new OptUserClass from a byte stream or diff --git a/dhcpv4/option_userclass_test.go b/dhcpv4/option_userclass_test.go index 72cf131..f6039df 100644 --- a/dhcpv4/option_userclass_test.go +++ b/dhcpv4/option_userclass_test.go @@ -98,6 +98,7 @@ func TestOptUserClassToBytesMultiple(t *testing.T) { []byte("linuxboot"), []byte("test"), }, + Rfc3004: true, } data := opt.ToBytes() expected := []byte{ |