diff --git a/net/ip_test.go b/net/ip_test.go index cb97d5bd3951a67557897cc8b098d4c049fbeb70..613e342d7ffe46460007aeec692da8c39286258f 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 9939e805d0dc73bd9e9f6555463c343f6ca16bcc..761e6293dad71fb76bde56ef9010b4da353ceea4 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 e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/routingtable/filter/actions/as_path_prepend_action_test.go b/routingtable/filter/actions/as_path_prepend_action_test.go index 702a9497cc767cb6b240805a7b4af6f20e17277b..f7c7af59394670a51c6062d43df19ae45ec69eb2 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 0f21a637379bf7c0018db89a0fab0a46deadd5b0..7b104d3949d127e794dcd34a2a05a7b7aa3f2b02 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 269970adbc33d0b3a39375acc966f49e0927e3ab..7f691d235f288e1155980ea997b4e6fddaa6a4de 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 273e986d29dc4e25a6788bfb8f750e54bff6beb4..52ebc8b9180aab9429b22489d75db95e210d2f65 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 19a444d4a5c8d656534cfb415f2b401a11ae4c57..485d1ae34f03f02e2f4dd1d1626450184cd6f58e 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 35d98f58ece6ed1a1a1755542d9c13d6f8f4f614..2384e0d8d182ca0fec1fe37f50e7c0266ef56ecc 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 5217feaaacc67a57539a90369664a81663f4e642..2e142ff1cad6da79bea9d92dcd84cff35061748c 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 d3abef87b52d2679084827283744e9b73599b433..876eb6691ec33a0a95697267f171ace3307d8a83 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 7bbf46e11dcc2a19e3af36a012e81b65be326cad..0000000000000000000000000000000000000000 --- 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) - } - } -}