diff options
author | Pablo Mazzini <pmazzini@gmail.com> | 2018-07-14 01:49:02 +0200 |
---|---|---|
committer | Pablo Mazzini <pmazzini@gmail.com> | 2018-07-14 01:49:02 +0200 |
commit | 4fe609e1066744c0f049bdbe0c284859ee1ae230 (patch) | |
tree | 81e88e57e6baef50255b9bf79348e2357a0a7781 /dhcpv6/dhcpv6_test.go | |
parent | 6ebda8509292d4f9091c36cdcf169a322bc173da (diff) |
extend DecapsulateRelay
Diffstat (limited to 'dhcpv6/dhcpv6_test.go')
-rw-r--r-- | dhcpv6/dhcpv6_test.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/dhcpv6/dhcpv6_test.go b/dhcpv6/dhcpv6_test.go index f8ec76d..bc56ea3 100644 --- a/dhcpv6/dhcpv6_test.go +++ b/dhcpv6/dhcpv6_test.go @@ -1,6 +1,7 @@ package dhcpv6 import ( + "net" "testing" "github.com/stretchr/testify/require" @@ -36,6 +37,59 @@ func TestNewMessage(t *testing.T) { require.Empty(t, d.(*DHCPv6Message).options) } +func TestDecapsulateRelay(t *testing.T) { + m := DHCPv6Message{} + r1, err := EncapsulateRelay(&m, RELAY_FORW, net.IPv6linklocalallnodes, net.IPv6interfacelocalallnodes) + require.NoError(t, err) + r2, err := EncapsulateRelay(r1, RELAY_FORW, net.IPv6loopback, net.IPv6linklocalallnodes) + require.NoError(t, err) + r3, err := EncapsulateRelay(r2, RELAY_FORW, net.IPv6unspecified, net.IPv6linklocalallrouters) + require.NoError(t, err) + + first, err := DecapsulateRelay(r3, 0) + require.NoError(t, err) + relay, ok := first.(*DHCPv6Relay) + require.True(t, ok) + require.Equal(t, relay.HopCount(), uint8(1)) + require.Equal(t, relay.LinkAddr(), net.IPv6loopback) + require.Equal(t, relay.PeerAddr(), net.IPv6linklocalallnodes) + + second, err := DecapsulateRelay(r3, 1) + require.NoError(t, err) + relay, ok = second.(*DHCPv6Relay) + require.True(t, ok) + require.Equal(t, relay.HopCount(), uint8(0)) + require.Equal(t, relay.LinkAddr(), net.IPv6linklocalallnodes) + require.Equal(t, relay.PeerAddr(), net.IPv6interfacelocalallnodes) + + third, err := DecapsulateRelay(r3, 2) + require.NoError(t, err) + _, ok = third.(*DHCPv6Message) + require.True(t, ok) + + _, err = DecapsulateRelay(r3, 3) + require.Error(t, err) + + rfirst, err := DecapsulateRelay(r3, -1) + require.NoError(t, err) + relay, ok = rfirst.(*DHCPv6Relay) + require.True(t, ok) + require.Equal(t, relay.HopCount(), uint8(0)) + require.Equal(t, relay.LinkAddr(), net.IPv6linklocalallnodes) + require.Equal(t, relay.PeerAddr(), net.IPv6interfacelocalallnodes) + + rsecond, err := DecapsulateRelay(r3, -2) + require.NoError(t, err) + relay, ok = rsecond.(*DHCPv6Relay) + require.True(t, ok) + require.Equal(t, relay.HopCount(), uint8(1)) + require.Equal(t, relay.LinkAddr(), net.IPv6loopback) + require.Equal(t, relay.PeerAddr(), net.IPv6linklocalallnodes) + + _, err = DecapsulateRelay(r3, -3) + require.Error(t, err) +} + func TestSettersAndGetters(t *testing.T) { d := DHCPv6Message{} // Message |