Skip to content
Snippets Groups Projects
Commit c29208b3 authored by Daniel Czerwonk's avatar Daniel Czerwonk
Browse files

applied changes to filter package

parent 7c9c9348
No related branches found
No related tags found
No related merge requests found
......@@ -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)
}
}
}
......@@ -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
}
......@@ -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,
})
......
......@@ -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
}
......@@ -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,
})
......
......@@ -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{
......
......@@ -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)
}
......@@ -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,
},
}
......
......@@ -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{
......
......@@ -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
}
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)
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment