From c29208b3d4da8e9fa04376989c026b71534d738b Mon Sep 17 00:00:00 2001 From: Daniel Czerwonk <daniel@dan-nrw.de> Date: Thu, 28 Jun 2018 21:51:56 +0200 Subject: [PATCH] applied changes to filter package --- net/ip_test.go | 30 ++++++++ routingtable/adjRIBIn/adj_rib_in_test.go | 43 +++++------ routingtable/adjRIBOutAddPath/BUILD.bazel | 0 .../actions/as_path_prepend_action_test.go | 4 +- .../actions/set_local_pref_action_test.go | 9 +-- .../filter/actions/set_nexthop_action_test.go | 2 +- routingtable/filter/filter_test.go | 6 +- routingtable/filter/helper_test.go | 4 +- routingtable/filter/route_filter_test.go | 72 +++++++++---------- routingtable/filter/term_condition_test.go | 58 +++++++-------- routingtable/filter/term_test.go | 29 ++++---- routingtable/trie_test.go | 34 --------- 12 files changed, 136 insertions(+), 155 deletions(-) delete mode 100644 routingtable/adjRIBOutAddPath/BUILD.bazel delete mode 100644 routingtable/trie_test.go diff --git a/net/ip_test.go b/net/ip_test.go index cb97d5bd..613e342d 100644 --- a/net/ip_test.go +++ b/net/ip_test.go @@ -260,3 +260,33 @@ func TestToNetIP(t *testing.T) { }) } } + +func TestBitAtPosition(t *testing.T) { + tests := []struct { + name string + input IP + position uint8 + expected bool + }{ + { + name: "Bit 8 from 1.0.0.0 -> 0", + input: IPv4FromOctets(10, 0, 0, 0), + position: 8, + expected: false, + }, + { + name: "Bit 8 from 11.0.0.0 -> 1", + input: IPv4FromOctets(11, 0, 0, 0), + position: 8, + expected: true, + }, + } + + for _, test := range tests { + b := test.input.BitAtPosition(test.position) + if b != test.expected { + t.Errorf("%s: Unexpected failure: Bit %d of %d is %v. Expected %v", + test.name, test.position, test.input, b, test.expected) + } + } +} diff --git a/routingtable/adjRIBIn/adj_rib_in_test.go b/routingtable/adjRIBIn/adj_rib_in_test.go index 9939e805..761e6293 100644 --- a/routingtable/adjRIBIn/adj_rib_in_test.go +++ b/routingtable/adjRIBIn/adj_rib_in_test.go @@ -22,17 +22,17 @@ func TestAddPath(t *testing.T) { { name: "Add route", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 100, }, }), }, - removePfx: net.NewPfx(0, 0), + removePfx: net.NewPfx(net.IPv4(0), 0), removePath: nil, expected: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 100, @@ -43,20 +43,20 @@ func TestAddPath(t *testing.T) { { name: "Overwrite routes", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 100, }, }), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 200, }, }), }, - removePfx: net.NewPfx(strAddr("10.0.0.0"), 8), + removePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), removePath: &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ @@ -64,7 +64,7 @@ func TestAddPath(t *testing.T) { }, }, expected: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 200, @@ -105,30 +105,30 @@ func TestRemovePath(t *testing.T) { { name: "Remove an existing route", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 9), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 9), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), - route.NewRoute(net.NewPfx(strAddr("10.128.0.0"), 9), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 128, 0, 0), 9), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), }, - removePfx: net.NewPfx(strAddr("10.0.0.0"), 8), + removePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), removePath: &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }, expected: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 9), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 9), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), - route.NewRoute(net.NewPfx(strAddr("10.128.0.0"), 9), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 128, 0, 0), 9), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), @@ -138,26 +138,26 @@ func TestRemovePath(t *testing.T) { { name: "Remove non existing route", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 9), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 9), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), - route.NewRoute(net.NewPfx(strAddr("10.128.0.0"), 9), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 128, 0, 0), 9), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), }, - removePfx: net.NewPfx(strAddr("10.0.0.0"), 8), + removePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), removePath: &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }, expected: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 9), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 9), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), - route.NewRoute(net.NewPfx(strAddr("10.128.0.0"), 9), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 128, 0, 0), 9), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }), @@ -184,7 +184,7 @@ func TestRemovePath(t *testing.T) { assert.Equal(t, test.removePath, removePathParams.Path) } else { removePathParams := mc.GetRemovePathParams() - if removePathParams.Pfx != net.NewPfx(0, 0) { + if removePathParams.Pfx != net.NewPfx(net.IPv4(0), 0) { t.Errorf("Test %q failed: Call to RemovePath propagated unexpectedly", test.name) } } @@ -192,8 +192,3 @@ func TestRemovePath(t *testing.T) { assert.Equal(t, test.expected, adjRIBIn.rt.Dump()) } } - -func strAddr(s string) uint32 { - ret, _ := net.StrToAddr(s) - return ret -} diff --git a/routingtable/adjRIBOutAddPath/BUILD.bazel b/routingtable/adjRIBOutAddPath/BUILD.bazel deleted file mode 100644 index e69de29b..00000000 diff --git a/routingtable/filter/actions/as_path_prepend_action_test.go b/routingtable/filter/actions/as_path_prepend_action_test.go index 702a9497..f7c7af59 100644 --- a/routingtable/filter/actions/as_path_prepend_action_test.go +++ b/routingtable/filter/actions/as_path_prepend_action_test.go @@ -3,9 +3,9 @@ package actions import ( "testing" + bnet "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/protocols/bgp/types" - "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/route" "github.com/stretchr/testify/assert" ) @@ -56,7 +56,7 @@ func TestAppendPath(t *testing.T) { for _, test := range tests { t.Run(test.name, func(te *testing.T) { a := NewASPathPrependAction(12345, test.times) - p, _ := a.Do(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + p, _ := a.Do(bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ BGPPath: test.bgpPath, }) diff --git a/routingtable/filter/actions/set_local_pref_action_test.go b/routingtable/filter/actions/set_local_pref_action_test.go index 0f21a637..7b104d39 100644 --- a/routingtable/filter/actions/set_local_pref_action_test.go +++ b/routingtable/filter/actions/set_local_pref_action_test.go @@ -3,7 +3,7 @@ package actions import ( "testing" - "github.com/bio-routing/bio-rd/net" + bnet "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/route" "github.com/stretchr/testify/assert" ) @@ -29,7 +29,7 @@ func TestSetLocalPref(t *testing.T) { for _, test := range tests { t.Run(test.name, func(te *testing.T) { a := NewSetLocalPrefAction(150) - p, _ := a.Do(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + p, _ := a.Do(bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ BGPPath: test.bgpPath, }) @@ -39,8 +39,3 @@ func TestSetLocalPref(t *testing.T) { }) } } - -func strAddr(s string) uint32 { - ret, _ := net.StrToAddr(s) - return ret -} diff --git a/routingtable/filter/actions/set_nexthop_action_test.go b/routingtable/filter/actions/set_nexthop_action_test.go index 269970ad..7f691d23 100644 --- a/routingtable/filter/actions/set_nexthop_action_test.go +++ b/routingtable/filter/actions/set_nexthop_action_test.go @@ -31,7 +31,7 @@ func TestSetNextHopTest(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { a := NewSetNextHopAction(bnet.IPv4FromOctets(100, 64, 2, 1)) - p, _ := a.Do(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + p, _ := a.Do(net.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ BGPPath: test.bgpPath, }) diff --git a/routingtable/filter/filter_test.go b/routingtable/filter/filter_test.go index 273e986d..52ebc8b9 100644 --- a/routingtable/filter/filter_test.go +++ b/routingtable/filter/filter_test.go @@ -20,7 +20,7 @@ func TestProcessTerms(t *testing.T) { }{ { name: "accept", - prefix: net.NewPfx(0, 0), + prefix: net.NewPfx(net.IPv4(0), 0), path: &route.Path{}, term: &Term{ then: []FilterAction{ @@ -32,7 +32,7 @@ func TestProcessTerms(t *testing.T) { }, { name: "reject", - prefix: net.NewPfx(0, 0), + prefix: net.NewPfx(net.IPv4(0), 0), path: &route.Path{}, term: &Term{ then: []FilterAction{ @@ -44,7 +44,7 @@ func TestProcessTerms(t *testing.T) { }, { name: "modified", - prefix: net.NewPfx(0, 0), + prefix: net.NewPfx(net.IPv4(0), 0), path: &route.Path{}, term: &Term{ then: []FilterAction{ diff --git a/routingtable/filter/helper_test.go b/routingtable/filter/helper_test.go index 19a444d4..485d1ae3 100644 --- a/routingtable/filter/helper_test.go +++ b/routingtable/filter/helper_test.go @@ -11,13 +11,13 @@ import ( func TestNewAcceptAllFilter(t *testing.T) { f := NewAcceptAllFilter() - _, reject := f.ProcessTerms(net.NewPfx(0, 0), &route.Path{}) + _, reject := f.ProcessTerms(net.NewPfx(net.IPv4(0), 0), &route.Path{}) assert.Equal(t, false, reject) } func TestNewDrainFilter(t *testing.T) { f := NewDrainFilter() - _, reject := f.ProcessTerms(net.NewPfx(0, 0), &route.Path{}) + _, reject := f.ProcessTerms(net.NewPfx(net.IPv4(0), 0), &route.Path{}) assert.Equal(t, true, reject) } diff --git a/routingtable/filter/route_filter_test.go b/routingtable/filter/route_filter_test.go index 35d98f58..2384e0d8 100644 --- a/routingtable/filter/route_filter_test.go +++ b/routingtable/filter/route_filter_test.go @@ -18,56 +18,56 @@ func TestInRange(t *testing.T) { }{ { name: "matches and in range (22-24)", - prefix: net.NewPfx(strAddr("1.2.1.0"), 23), - pattern: net.NewPfx(strAddr("1.2.0.0"), 22), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 1, 0), 23), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 22), begin: 22, end: 24, expected: true, }, { name: "matches begin of range (22-24)", - prefix: net.NewPfx(strAddr("1.2.0.0"), 22), - pattern: net.NewPfx(strAddr("1.2.0.0"), 22), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 22), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 22), begin: 22, end: 24, expected: true, }, { name: "matches end of range (22-24)", - prefix: net.NewPfx(strAddr("1.2.3.0"), 24), - pattern: net.NewPfx(strAddr("1.2.0.0"), 22), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 22), begin: 22, end: 24, expected: true, }, { name: "matches begin and end of range (24-24)", - prefix: net.NewPfx(strAddr("1.2.0.0"), 24), - pattern: net.NewPfx(strAddr("1.2.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 24), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 24), begin: 24, end: 24, expected: true, }, { name: "smaller (22-24)", - prefix: net.NewPfx(strAddr("1.2.0.0"), 16), - pattern: net.NewPfx(strAddr("1.2.4.0"), 22), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 16), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 4, 0), 22), begin: 22, end: 24, expected: false, }, { name: "longer (22-24)", - prefix: net.NewPfx(strAddr("1.2.0.128"), 25), - pattern: net.NewPfx(strAddr("1.2.0.0"), 22), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 128), 25), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 22), begin: 22, end: 24, expected: false, }, { name: "does not match", - prefix: net.NewPfx(strAddr("2.0.0.0"), 23), - pattern: net.NewPfx(strAddr("1.2.0.0"), 22), + prefix: net.NewPfx(net.IPv4FromOctets(2, 0, 0, 0), 23), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 0, 0), 22), expected: false, }, } @@ -89,32 +89,32 @@ func TestExact(t *testing.T) { }{ { name: "matches (0.0.0.0/0)", - prefix: net.NewPfx(strAddr("0.0.0.0"), 0), - pattern: net.NewPfx(strAddr("0.0.0.0"), 0), + prefix: net.NewPfx(net.IPv4(0), 0), + pattern: net.NewPfx(net.IPv4(0), 0), expected: true, }, { name: "matches (192.168.0.0)", - prefix: net.NewPfx(strAddr("192.168.1.1"), 24), - pattern: net.NewPfx(strAddr("192.168.1.1"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(192, 168, 1, 1), 24), + pattern: net.NewPfx(net.IPv4FromOctets(192, 168, 1, 1), 24), expected: true, }, { name: "does not match", - prefix: net.NewPfx(strAddr("1.0.0.0"), 8), - pattern: net.NewPfx(strAddr("0.0.0.0"), 0), + prefix: net.NewPfx(net.IPv4FromOctets(1, 0, 0, 0), 8), + pattern: net.NewPfx(net.IPv4FromOctets(0, 0, 0, 0), 0), expected: false, }, { name: "longer", - prefix: net.NewPfx(strAddr("1.0.0.0"), 8), - pattern: net.NewPfx(strAddr("1.0.0.0"), 7), + prefix: net.NewPfx(net.IPv4FromOctets(1, 0, 0, 0), 8), + pattern: net.NewPfx(net.IPv4FromOctets(1, 0, 0, 0), 7), expected: false, }, { name: "lesser", - prefix: net.NewPfx(strAddr("1.0.0.0"), 7), - pattern: net.NewPfx(strAddr("1.0.0.0"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(1, 0, 0, 0), 7), + pattern: net.NewPfx(net.IPv4FromOctets(1, 0, 0, 0), 8), expected: false, }, } @@ -136,20 +136,20 @@ func TestOrLonger(t *testing.T) { }{ { name: "longer", - prefix: net.NewPfx(strAddr("1.2.3.128"), 25), - pattern: net.NewPfx(strAddr("1.2.3.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 128), 25), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), expected: true, }, { name: "exact", - prefix: net.NewPfx(strAddr("1.2.3.0"), 24), - pattern: net.NewPfx(strAddr("1.2.3.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), expected: true, }, { name: "lesser", - prefix: net.NewPfx(strAddr("1.2.3.0"), 23), - pattern: net.NewPfx(strAddr("1.2.3.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 23), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), expected: false, }, } @@ -171,20 +171,20 @@ func TestLonger(t *testing.T) { }{ { name: "longer", - prefix: net.NewPfx(strAddr("1.2.3.128"), 25), - pattern: net.NewPfx(strAddr("1.2.3.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 128), 25), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), expected: true, }, { name: "exact", - prefix: net.NewPfx(strAddr("1.2.3.0"), 24), - pattern: net.NewPfx(strAddr("1.2.3.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), expected: false, }, { name: "lesser", - prefix: net.NewPfx(strAddr("1.2.3.0"), 23), - pattern: net.NewPfx(strAddr("1.2.3.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 23), + pattern: net.NewPfx(net.IPv4FromOctets(1, 2, 3, 0), 24), expected: false, }, } diff --git a/routingtable/filter/term_condition_test.go b/routingtable/filter/term_condition_test.go index 5217feaa..2e142ff1 100644 --- a/routingtable/filter/term_condition_test.go +++ b/routingtable/filter/term_condition_test.go @@ -22,90 +22,90 @@ func TestMatches(t *testing.T) { }{ { name: "one prefix matches in prefix list, no route filters set", - prefix: net.NewPfx(strAddr("127.0.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(127, 0, 0, 1), 8), prefixLists: []*PrefixList{ - NewPrefixList(net.NewPfx(strAddr("127.0.0.1"), 8)), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(127, 0, 0, 1), 8)), }, expected: true, }, { name: "one prefix in prefix list and no match, no route filters set", - prefix: net.NewPfx(strAddr("127.0.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(127, 0, 0, 1), 8), prefixLists: []*PrefixList{ - NewPrefixList(net.NewPfx(0, 32)), + NewPrefixList(net.NewPfx(net.IPv4(0), 32)), }, expected: false, }, { name: "one prefix of 2 matches in prefix list, no route filters set", - prefix: net.NewPfx(strAddr("127.0.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(127, 0, 0, 1), 8), prefixLists: []*PrefixList{ - NewPrefixList(net.NewPfx(strAddr("10.0.0.0"), 8)), - NewPrefixList(net.NewPfx(strAddr("127.0.0.1"), 8)), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8)), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(127, 0, 0, 1), 8)), }, expected: true, }, { name: "no prefixes in prefix list, only route filter matches", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), routeFilters: []*RouteFilter{ - NewRouteFilter(net.NewPfx(strAddr("10.0.0.0"), 8), Longer()), + NewRouteFilter(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), Longer()), }, expected: true, }, { name: "no prefixes in prefix list, one route filter matches", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), routeFilters: []*RouteFilter{ - NewRouteFilter(net.NewPfx(strAddr("8.0.0.0"), 8), Longer()), - NewRouteFilter(net.NewPfx(strAddr("10.0.0.0"), 8), Longer()), + NewRouteFilter(net.NewPfx(net.IPv4FromOctets(8, 0, 0, 0), 8), Longer()), + NewRouteFilter(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), Longer()), }, expected: true, }, { name: "no prefixes in prefix list, one of many route filters matches", - prefix: net.NewPfx(strAddr("127.0.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(127, 0, 0, 1), 8), routeFilters: []*RouteFilter{ - NewRouteFilter(net.NewPfx(strAddr("10.0.0.0"), 8), Longer()), + NewRouteFilter(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), Longer()), }, expected: false, }, { name: "no match in prefix list, no macht in route filter", - prefix: net.NewPfx(strAddr("9.9.9.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(9, 9, 9, 0), 24), prefixLists: []*PrefixList{ - NewPrefixList(net.NewPfx(strAddr("8.0.0.0"), 8)), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(8, 0, 0, 0), 8)), }, routeFilters: []*RouteFilter{ - NewRouteFilter(net.NewPfx(strAddr("10.0.0.0"), 8), Longer()), + NewRouteFilter(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), Longer()), }, expected: false, }, { name: "one prefix in prefixlist, one route filter, only prefix list matches", - prefix: net.NewPfx(strAddr("8.8.8.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(8, 8, 8, 0), 24), prefixLists: []*PrefixList{ - NewPrefixList(net.NewPfx(strAddr("8.0.0.0"), 8)), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(8, 0, 0, 0), 8)), }, routeFilters: []*RouteFilter{ - NewRouteFilter(net.NewPfx(strAddr("10.0.0.0"), 8), Longer()), + NewRouteFilter(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), Longer()), }, expected: false, }, { name: "one prefix in prefixlist, one route filter, only route filter matches", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), prefixLists: []*PrefixList{ - NewPrefixList(net.NewPfx(strAddr("8.0.0.0"), 8)), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(8, 0, 0, 0), 8)), }, routeFilters: []*RouteFilter{ - NewRouteFilter(net.NewPfx(strAddr("10.0.0.0"), 8), Longer()), + NewRouteFilter(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), Longer()), }, expected: false, }, { name: "community matches", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), bgpPath: &route.BGPPath{ Communities: []uint32{65538, 196612, 327686}, // (1,2) (3,4) (5,6) }, @@ -116,7 +116,7 @@ func TestMatches(t *testing.T) { }, { name: "community does not match", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), bgpPath: &route.BGPPath{ Communities: []uint32{65538, 196612, 327686}, // (1,2) (3,4) (5,6) }, @@ -127,7 +127,7 @@ func TestMatches(t *testing.T) { }, { name: "community filter, bgp path is nil", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), communityFilters: []*CommunityFilter{ &CommunityFilter{196608}, // (3,0) }, @@ -135,7 +135,7 @@ func TestMatches(t *testing.T) { }, { name: "large community matches", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), bgpPath: &route.BGPPath{ LargeCommunities: []types.LargeCommunity{ types.LargeCommunity{ @@ -163,7 +163,7 @@ func TestMatches(t *testing.T) { }, { name: "large community does not match", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), bgpPath: &route.BGPPath{}, largeCommunityFilters: []*LargeCommunityFilter{ { @@ -178,7 +178,7 @@ func TestMatches(t *testing.T) { }, { name: "large community filter, bgp path is nil", - prefix: net.NewPfx(strAddr("10.0.0.0"), 24), + prefix: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 24), largeCommunityFilters: []*LargeCommunityFilter{ { types.LargeCommunity{ diff --git a/routingtable/filter/term_test.go b/routingtable/filter/term_test.go index d3abef87..876eb669 100644 --- a/routingtable/filter/term_test.go +++ b/routingtable/filter/term_test.go @@ -31,7 +31,7 @@ func TestProcess(t *testing.T) { }{ { name: "empty from", - prefix: net.NewPfx(strAddr("100.64.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8), path: &route.Path{}, from: []*TermCondition{}, then: []FilterAction{ @@ -42,11 +42,11 @@ func TestProcess(t *testing.T) { }, { name: "from matches", - prefix: net.NewPfx(strAddr("100.64.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8), path: &route.Path{}, from: []*TermCondition{ NewTermConditionWithPrefixLists( - NewPrefixList(net.NewPfx(strAddr("100.64.0.1"), 8))), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8))), }, then: []FilterAction{ &actions.AcceptAction{}, @@ -56,11 +56,11 @@ func TestProcess(t *testing.T) { }, { name: "from does not match", - prefix: net.NewPfx(strAddr("100.64.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8), path: &route.Path{}, from: []*TermCondition{ NewTermConditionWithPrefixLists( - NewPrefixList(net.NewPfx(0, 32))), + NewPrefixList(net.NewPfx(net.IPv4(0), 32))), }, then: []FilterAction{ &actions.AcceptAction{}, @@ -70,11 +70,11 @@ func TestProcess(t *testing.T) { }, { name: "modified", - prefix: net.NewPfx(strAddr("100.64.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8), path: &route.Path{}, from: []*TermCondition{ NewTermConditionWithPrefixLists( - NewPrefixList(net.NewPfx(strAddr("100.64.0.1"), 8))), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8))), }, then: []FilterAction{ &mockAction{}, @@ -84,11 +84,11 @@ func TestProcess(t *testing.T) { }, { name: "modified and accepted (2 actions)", - prefix: net.NewPfx(strAddr("100.64.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8), path: &route.Path{}, from: []*TermCondition{ NewTermConditionWithRouteFilters( - NewRouteFilter(net.NewPfx(strAddr("100.64.0.1"), 8), Exact())), + NewRouteFilter(net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8), Exact())), }, then: []FilterAction{ &mockAction{}, @@ -99,13 +99,13 @@ func TestProcess(t *testing.T) { }, { name: "one of the prefix filters matches", - prefix: net.NewPfx(strAddr("100.64.0.1"), 8), + prefix: net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8), path: &route.Path{}, from: []*TermCondition{ { prefixLists: []*PrefixList{ - NewPrefixListWithMatcher(Exact(), net.NewPfx(0, 32)), - NewPrefixList(net.NewPfx(strAddr("100.64.0.1"), 8)), + NewPrefixListWithMatcher(Exact(), net.NewPfx(net.IPv4(0), 32)), + NewPrefixList(net.NewPfx(net.IPv4FromOctets(100, 64, 0, 1), 8)), }, }, }, @@ -134,8 +134,3 @@ func TestProcess(t *testing.T) { }) } } - -func strAddr(s string) uint32 { - ret, _ := net.StrToAddr(s) - return ret -} diff --git a/routingtable/trie_test.go b/routingtable/trie_test.go deleted file mode 100644 index 7bbf46e1..00000000 --- a/routingtable/trie_test.go +++ /dev/null @@ -1,34 +0,0 @@ -package routingtable - -import ( - "testing" -) - -func TestGetBitUint32(t *testing.T) { - tests := []struct { - name string - input uint32 - offset uint8 - expected bool - }{ - { - name: "test 1", - input: 167772160, // 10.0.0.0 - offset: 8, - expected: false, - }, - { - name: "test 2", - input: 184549376, // 11.0.0.0 - offset: 8, - expected: true, - }, - } - - for _, test := range tests { - b := getBitUint32(test.input, test.offset) - if b != test.expected { - t.Errorf("%s: Unexpected failure: Bit %d of %d is %v. Expected %v", test.name, test.offset, test.input, b, test.expected) - } - } -} -- GitLab