diff --git a/config/BUILD.bazel b/config/BUILD.bazel index b593df6146f658e92a526b07ffd7c2c9e0582d1c..0597dcfbcb0107809739ca60ba91eb748ba56d5c 100644 --- a/config/BUILD.bazel +++ b/config/BUILD.bazel @@ -9,6 +9,7 @@ go_library( importpath = "github.com/bio-routing/bio-rd/config", visibility = ["//visibility:public"], deps = [ + "//net:go_default_library", "//routingtable:go_default_library", "//routingtable/filter:go_default_library", "//vendor/github.com/taktv6/tflow2/convert:go_default_library", diff --git a/config/peer.go b/config/peer.go index 5bcfa49af2c68951ed5aecb12d2402e6284a42f2..5f151fe56c59ffa4ca410eb174745e755b15c09d 100644 --- a/config/peer.go +++ b/config/peer.go @@ -1,20 +1,21 @@ package config import ( - "net" "time" + bnet "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/routingtable" "github.com/bio-routing/bio-rd/routingtable/filter" ) +// Peer defines the configuration for a BGP session type Peer struct { AdminEnabled bool ReconnectInterval time.Duration KeepAlive time.Duration HoldTime time.Duration - LocalAddress net.IP - PeerAddress net.IP + LocalAddress bnet.IP + PeerAddress bnet.IP LocalAS uint32 PeerAS uint32 Passive bool diff --git a/main.go b/main.go index 7c5bd7f1ba15450a5679688079307d3e0428e626..6b924601418c4335d5c7ccb7878eb4281d29710c 100644 --- a/main.go +++ b/main.go @@ -42,8 +42,8 @@ func main() { AdminEnabled: true, LocalAS: 65200, PeerAS: 65300, - PeerAddress: net.IP([]byte{172, 17, 0, 3}), - LocalAddress: net.IP([]byte{169, 254, 200, 0}), + PeerAddress: bnet.IPv4FromOctets(172, 17, 0, 3), + LocalAddress: bnet.IPv4FromOctets(169, 254, 200, 0), ReconnectInterval: time.Second * 15, HoldTime: time.Second * 90, KeepAlive: time.Second * 30, @@ -61,8 +61,8 @@ func main() { AdminEnabled: true, LocalAS: 65200, PeerAS: 65100, - PeerAddress: net.IP([]byte{172, 17, 0, 2}), - LocalAddress: net.IP([]byte{169, 254, 100, 1}), + PeerAddress: bnet.IPv4FromOctets(172, 17, 0, 2), + LocalAddress: bnet.IPv4FromOctets(169, 254, 100, 1), ReconnectInterval: time.Second * 15, HoldTime: time.Second * 90, KeepAlive: time.Second * 30, diff --git a/net/BUILD.bazel b/net/BUILD.bazel index 81111915c61f4963b5dfa5dc3ece2f221cf9e136..3c05c0de402d1317834cf2da3ea702a745db397f 100644 --- a/net/BUILD.bazel +++ b/net/BUILD.bazel @@ -4,17 +4,18 @@ go_library( name = "go_default_library", srcs = [ "helper.go", + "ip.go", "prefix.go", ], importpath = "github.com/bio-routing/bio-rd/net", visibility = ["//visibility:public"], - deps = ["//vendor/github.com/taktv6/tflow2/convert:go_default_library"], ) go_test( name = "go_default_test", srcs = [ "helper_test.go", + "ip_test.go", "prefix_test.go", ], embed = [":go_default_library"], diff --git a/net/ip.go b/net/ip.go new file mode 100644 index 0000000000000000000000000000000000000000..2855235eae0e6c44753f351f2363ed790f2ed9e3 --- /dev/null +++ b/net/ip.go @@ -0,0 +1,165 @@ +package net + +import ( + "fmt" + "net" +) + +// IP represents an IPv4 or IPv6 address +type IP struct { + higher uint64 + lower uint64 + ipVersion uint8 +} + +// IPv4 returns a new `IP` representing an IPv4 address +func IPv4(val uint32) IP { + return IP{ + lower: uint64(val), + ipVersion: 4, + } +} + +// IPv4FromOctets returns an IPv4 address for the given 4 octets +func IPv4FromOctets(o1, o2, o3, o4 uint8) IP { + return IPv4(uint32(o1)<<24 + uint32(o2)<<16 + uint32(o3)<<8 + uint32(o4)) +} + +// IPv6 returns a new `IP` representing an IPv6 address +func IPv6(higher, lower uint64) IP { + return IP{ + higher: higher, + lower: lower, + ipVersion: 6, + } +} + +// IPv6FromBlocks returns an IPv6 address for the given 8 blocks +func IPv6FromBlocks(b1, b2, b3, b4, b5, b6, b7, b8 uint16) IP { + return IPv6( + uint64(uint64(b1)<<48+uint64(b2)<<32+uint64(b3)<<16+uint64(b4)), + uint64(uint64(b5)<<48+uint64(b6)<<32+uint64(b7)<<16+uint64(b8))) +} + +// Equal returns true if ip is equal to other +func (ip IP) Equal(other IP) bool { + return ip == other +} + +// Compare compares two IP addresses (returns 0 if equal, -1 if `ip` is smaller than `other`, 1 if `ip` is greater than `other`) +func (ip IP) Compare(other IP) int { + if ip.Equal(other) { + return 0 + } + + if ip.higher > other.higher { + return 1 + } + + if ip.higher < other.higher { + return -1 + } + + if ip.lower > other.lower { + return 1 + } + + return -1 +} + +func (ip IP) String() string { + if ip.ipVersion == 6 { + return ip.stringIPv6() + } + + return ip.stringIPv4() +} + +func (ip IP) stringIPv6() string { + return fmt.Sprintf("%X:%X:%X:%X:%X:%X:%X:%X", + ip.higher&0xFFFF000000000000>>48, + ip.higher&0x0000FFFF00000000>>32, + ip.higher&0x00000000FFFF0000>>16, + ip.higher&0x000000000000FFFF, + ip.lower&0xFFFF000000000000>>48, + ip.lower&0x0000FFFF00000000>>32, + ip.lower&0x00000000FFFF0000>>16, + ip.lower&0x000000000000FFFF) +} + +func (ip IP) stringIPv4() string { + b := ip.Bytes() + + return fmt.Sprintf("%d.%d.%d.%d", b[0], b[1], b[2], b[3]) +} + +// Bytes returns the byte representation of an IP address +func (ip IP) Bytes() []byte { + if ip.ipVersion == 6 { + return ip.bytesIPv6() + } + + return ip.bytesIPv4() +} + +func (ip IP) bytesIPv4() []byte { + u := ip.ToUint32() + return []byte{ + byte(u & 0xFF000000 >> 24), + byte(u & 0x00FF0000 >> 16), + byte(u & 0x0000FF00 >> 8), + byte(u & 0x000000FF), + } +} + +// ToUint32 return the rightmost 32 bits of an 'IP' +func (ip IP) ToUint32() uint32 { + return uint32(^uint64(0) >> 32 & ip.lower) +} + +func (ip IP) bytesIPv6() []byte { + return []byte{ + byte(ip.higher & 0xFF00000000000000 >> 56), + byte(ip.higher & 0x00FF000000000000 >> 48), + byte(ip.higher & 0x0000FF0000000000 >> 40), + byte(ip.higher & 0x000000FF00000000 >> 32), + byte(ip.higher & 0x00000000FF000000 >> 24), + byte(ip.higher & 0x0000000000FF0000 >> 16), + byte(ip.higher & 0x000000000000FF00 >> 8), + byte(ip.higher & 0x00000000000000FF), + byte(ip.lower & 0xFF00000000000000 >> 56), + byte(ip.lower & 0x00FF000000000000 >> 48), + byte(ip.lower & 0x0000FF0000000000 >> 40), + byte(ip.lower & 0x000000FF00000000 >> 32), + byte(ip.lower & 0x00000000FF000000 >> 24), + byte(ip.lower & 0x0000000000FF0000 >> 16), + byte(ip.lower & 0x000000000000FF00 >> 8), + byte(ip.lower & 0x00000000000000FF), + } +} + +// ToNetIP converts the IP address in a `net.IP` +func (ip IP) ToNetIP() net.IP { + return net.IP(ip.Bytes()) +} + +// BitAtPosition returns the bit at position pos +func (ip IP) BitAtPosition(pos uint8) bool { + if ip.ipVersion == 6 { + return ip.bitAtPositionIPv6(pos) + } + + return ip.bitAtPositionIPv4(pos) +} + +func (ip IP) bitAtPositionIPv4(pos uint8) bool { + if pos > 32 { + return false + } + + return (ip.ToUint32() & (1 << (32 - pos))) != 0 +} + +func (ip IP) bitAtPositionIPv6(pos uint8) bool { + panic("No IPv6 support yet!") +} diff --git a/net/ip_test.go b/net/ip_test.go new file mode 100644 index 0000000000000000000000000000000000000000..613e342d7ffe46460007aeec692da8c39286258f --- /dev/null +++ b/net/ip_test.go @@ -0,0 +1,292 @@ +package net + +import ( + "math" + "net" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestCompare(t *testing.T) { + tests := []struct { + name string + ip IP + other IP + expected int + }{ + { + name: "equal", + ip: IP{ + lower: 100, + higher: 200, + }, + other: IP{ + lower: 100, + higher: 200, + }, + expected: 0, + }, + { + name: "greater higher word", + ip: IP{ + lower: 123, + higher: 200, + }, + other: IP{ + lower: 456, + higher: 100, + }, + expected: 1, + }, + { + name: "lesser higher word", + ip: IP{ + lower: 123, + higher: 100, + }, + other: IP{ + lower: 456, + higher: 200, + }, + expected: -1, + }, + { + name: "equal higher word but lesser lower word", + ip: IP{ + lower: 456, + higher: 100, + }, + other: IP{ + lower: 123, + higher: 100, + }, + expected: 1, + }, + { + name: "equal higher word but lesser lower word", + ip: IP{ + lower: 123, + higher: 100, + }, + other: IP{ + lower: 456, + higher: 100, + }, + expected: -1, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + assert.Equal(t, test.expected, test.ip.Compare(test.other)) + }) + } +} + +func TestIPString(t *testing.T) { + tests := []struct { + ip IP + expected string + }{ + { + ip: IPv4FromOctets(192, 168, 0, 1), + expected: "192.168.0.1", + }, + { + ip: IPv4FromOctets(0, 0, 0, 0), + expected: "0.0.0.0", + }, + { + ip: IPv4FromOctets(255, 255, 255, 255), + expected: "255.255.255.255", + }, + { + ip: IPv6(0, 0), + expected: "0:0:0:0:0:0:0:0", + }, + { + ip: IPv6(2306131596687708724, 6230974922281175806), + expected: "2001:678:1E0:1234:5678:DEAD:BEEF:CAFE", + }, + { + ip: IPv6(^uint64(0), ^uint64(0)), + expected: "FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF", + }, + } + + for _, test := range tests { + assert.Equal(t, test.expected, test.ip.String()) + } +} + +func TestBytes(t *testing.T) { + tests := []struct { + name string + ip IP + expected []byte + }{ + { + name: "IPv4 172.217.16.195", + ip: IPv4(2899906755), + expected: []byte{172, 217, 16, 195}, + }, + { + name: "IPv6 2001:678:1E0:1234:5678:DEAD:BEEF:CAFE", + ip: IPv6(2306131596687708724, 6230974922281175806), + expected: []byte{32, 1, 6, 120, 1, 224, 18, 52, 86, 120, 222, 173, 190, 239, 202, 254}, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + assert.Equal(t, test.expected, test.ip.Bytes()) + }) + } +} + +func TestIPv4FromOctets(t *testing.T) { + tests := []struct { + name string + octets []uint8 + expected IP + }{ + { + name: "172.217.16.195", + octets: []uint8{172, 217, 16, 195}, + expected: IP{ + higher: 0, + lower: 2899906755, + ipVersion: 4, + }, + }, + { + name: "0.0.0.0", + octets: []uint8{0, 0, 0, 0}, + expected: IP{ + higher: 0, + lower: 0, + ipVersion: 4, + }, + }, + { + name: "255.255.255.255", + octets: []uint8{255, 255, 255, 255}, + expected: IP{ + higher: 0, + lower: math.MaxUint32, + ipVersion: 4, + }, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + assert.Equal(t, test.expected, IPv4FromOctets(test.octets[0], test.octets[1], test.octets[2], test.octets[3])) + }) + } +} + +func TestIPv6FromBlocks(t *testing.T) { + tests := []struct { + name string + blocks []uint16 + expected IP + }{ + { + name: "IPv6 2001:678:1E0:1234:5678:DEAD:BEEF:CAFE", + blocks: []uint16{ + 0x2001, + 0x678, + 0x1e0, + 0x1234, + 0x5678, + 0xdead, + 0xbeef, + 0xcafe, + }, + expected: IP{ + higher: 2306131596687708724, + lower: 6230974922281175806, + ipVersion: 6, + }, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + assert.Equal(t, test.expected, IPv6FromBlocks( + test.blocks[0], + test.blocks[1], + test.blocks[2], + test.blocks[3], + test.blocks[4], + test.blocks[5], + test.blocks[6], + test.blocks[7])) + }) + } +} + +func TestToNetIP(t *testing.T) { + tests := []struct { + name string + ip IP + expected net.IP + }{ + { + name: "IPv4", + ip: IPv4FromOctets(192, 168, 1, 1), + expected: net.IP{192, 168, 1, 1}, + }, + { + name: "IPv6", + ip: IPv6FromBlocks( + 0x2001, + 0x678, + 0x1e0, + 0x1234, + 0x5678, + 0xdead, + 0xbeef, + 0xcafe), + expected: net.IP{32, 1, 6, 120, 1, 224, 18, 52, 86, 120, 222, 173, 190, 239, 202, 254}, + }, + } + + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + assert.Equal(t, test.expected, test.ip.ToNetIP()) + }) + } +} + +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/net/prefix.go b/net/prefix.go index 126090fa3713f4331c80c3420dca969e9afe68d5..c40420247dfbfb11e8e05c01bae2fa1ed7d5e183 100644 --- a/net/prefix.go +++ b/net/prefix.go @@ -3,21 +3,18 @@ package net import ( "fmt" "math" - "net" "strconv" "strings" - - "github.com/taktv6/tflow2/convert" ) // Prefix represents an IPv4 prefix type Prefix struct { - addr uint32 + addr IP pfxlen uint8 } // NewPfx creates a new Prefix -func NewPfx(addr uint32, pfxlen uint8) Prefix { +func NewPfx(addr IP, pfxlen uint8) Prefix { return Prefix{ addr: addr, pfxlen: pfxlen, @@ -49,7 +46,7 @@ func StrToAddr(x string) (uint32, error) { } // Addr returns the address of the prefix -func (pfx Prefix) Addr() uint32 { +func (pfx Prefix) Addr() IP { return pfx.addr } @@ -60,7 +57,7 @@ func (pfx Prefix) Pfxlen() uint8 { // String returns a string representation of pfx func (pfx Prefix) String() string { - return fmt.Sprintf("%s/%d", net.IP(convert.Uint32Byte(pfx.addr)), pfx.pfxlen) + return fmt.Sprintf("%s/%d", pfx.addr, pfx.pfxlen) } // Contains checks if x is a subnet of or equal to pfx @@ -69,8 +66,16 @@ func (pfx Prefix) Contains(x Prefix) bool { return false } + if pfx.addr.ipVersion == 4 { + return pfx.containsIPv4(x) + } + + panic("No IPv6 support yet!") +} + +func (pfx Prefix) containsIPv4(x Prefix) bool { mask := uint32((math.MaxUint32 << (32 - pfx.pfxlen))) - return (pfx.addr & mask) == (x.addr & mask) + return (pfx.addr.ToUint32() & mask) == (x.addr.ToUint32() & mask) } // Equal checks if pfx and x are equal @@ -80,9 +85,17 @@ func (pfx Prefix) Equal(x Prefix) bool { // GetSupernet gets the next common supernet of pfx and x func (pfx Prefix) GetSupernet(x Prefix) Prefix { + if pfx.addr.ipVersion == 4 { + return pfx.supernetIPv4(x) + } + + panic("No IPv6 support yet!") +} + +func (pfx Prefix) supernetIPv4(x Prefix) Prefix { maxPfxLen := min(pfx.pfxlen, x.pfxlen) - 1 - a := pfx.addr >> (32 - maxPfxLen) - b := x.addr >> (32 - maxPfxLen) + a := pfx.addr.ToUint32() >> (32 - maxPfxLen) + b := x.addr.ToUint32() >> (32 - maxPfxLen) for i := 0; a != b; i++ { a = a >> 1 @@ -91,7 +104,7 @@ func (pfx Prefix) GetSupernet(x Prefix) Prefix { } return Prefix{ - addr: a << (32 - maxPfxLen), + addr: IPv4(a << (32 - maxPfxLen)), pfxlen: maxPfxLen, } } diff --git a/net/prefix_test.go b/net/prefix_test.go index 9ab908bca278be9a526c2570c9bbdc07a8d017a0..d886a49e4ae1ed49fede133df33ac4d90331dd16 100644 --- a/net/prefix_test.go +++ b/net/prefix_test.go @@ -7,8 +7,8 @@ import ( ) func TestNewPfx(t *testing.T) { - p := NewPfx(123, 11) - if p.addr != 123 || p.pfxlen != 11 { + p := NewPfx(IPv4(123), 11) + if p.addr != IPv4(123) || p.pfxlen != 11 { t.Errorf("NewPfx() failed: Unexpected values") } } @@ -17,12 +17,12 @@ func TestAddr(t *testing.T) { tests := []struct { name string pfx Prefix - expected uint32 + expected IP }{ { name: "Test 1", - pfx: NewPfx(100, 5), - expected: 100, + pfx: NewPfx(IPv4(100), 5), + expected: IPv4(100), }, } @@ -42,7 +42,7 @@ func TestPfxlen(t *testing.T) { }{ { name: "Test 1", - pfx: NewPfx(100, 5), + pfx: NewPfx(IPv4(100), 5), expected: 5, }, } @@ -65,30 +65,30 @@ func TestGetSupernet(t *testing.T) { { name: "Test 1", a: Prefix{ - addr: 167772160, // 10.0.0.0/8 + addr: IPv4FromOctets(10, 0, 0, 0), pfxlen: 8, }, b: Prefix{ - addr: 191134464, // 11.100.123.0/24 + addr: IPv4FromOctets(11, 100, 123, 0), pfxlen: 24, }, expected: Prefix{ - addr: 167772160, // 10.0.0.0/7 + addr: IPv4FromOctets(10, 0, 0, 0), pfxlen: 7, }, }, { name: "Test 2", a: Prefix{ - addr: 167772160, // 10.0.0.0/8 + addr: IPv4FromOctets(10, 0, 0, 0), pfxlen: 8, }, b: Prefix{ - addr: 3232235520, // 192.168.0.0/24 + addr: IPv4FromOctets(192, 168, 0, 0), pfxlen: 24, }, expected: Prefix{ - addr: 0, // 0.0.0.0/0 + addr: IPv4(0), // 0.0.0.0/0 pfxlen: 0, }, }, @@ -110,11 +110,11 @@ func TestContains(t *testing.T) { { name: "Test 1", a: Prefix{ - addr: 0, + addr: IPv4(0), pfxlen: 0, }, b: Prefix{ - addr: 100, + addr: IPv4(100), pfxlen: 24, }, expected: true, @@ -122,11 +122,11 @@ func TestContains(t *testing.T) { { name: "Test 2", a: Prefix{ - addr: 100, + addr: IPv4(100), pfxlen: 24, }, b: Prefix{ - addr: 0, + addr: IPv4(0), pfxlen: 0, }, expected: false, @@ -134,11 +134,11 @@ func TestContains(t *testing.T) { { name: "Test 3", a: Prefix{ - addr: 167772160, + addr: IPv4(167772160), pfxlen: 8, }, b: Prefix{ - addr: 167772160, + addr: IPv4(167772160), pfxlen: 9, }, expected: true, @@ -146,11 +146,11 @@ func TestContains(t *testing.T) { { name: "Test 4", a: Prefix{ - addr: 167772160, + addr: IPv4(167772160), pfxlen: 8, }, b: Prefix{ - addr: 174391040, + addr: IPv4(174391040), pfxlen: 24, }, expected: true, @@ -158,11 +158,11 @@ func TestContains(t *testing.T) { { name: "Test 5", a: Prefix{ - addr: 167772160, + addr: IPv4(167772160), pfxlen: 8, }, b: Prefix{ - addr: 184549377, + addr: IPv4(184549377), pfxlen: 24, }, expected: false, @@ -170,11 +170,11 @@ func TestContains(t *testing.T) { { name: "Test 6", a: Prefix{ - addr: 167772160, + addr: IPv4(167772160), pfxlen: 8, }, b: Prefix{ - addr: 191134464, + addr: IPv4(191134464), pfxlen: 24, }, expected: false, @@ -182,11 +182,11 @@ func TestContains(t *testing.T) { { name: "Test 7", a: Prefix{ - addr: strAddr("169.0.0.0"), + addr: IPv4FromOctets(169, 0, 0, 0), pfxlen: 25, }, b: Prefix{ - addr: strAddr("169.1.1.0"), + addr: IPv4FromOctets(169, 1, 1, 0), pfxlen: 26, }, expected: false, @@ -245,14 +245,14 @@ func TestEqual(t *testing.T) { }{ { name: "Equal PFXs", - a: NewPfx(100, 8), - b: NewPfx(100, 8), + a: NewPfx(IPv4(100), 8), + b: NewPfx(IPv4(100), 8), expected: true, }, { name: "Unequal PFXs", - a: NewPfx(100, 8), - b: NewPfx(200, 8), + a: NewPfx(IPv4(100), 8), + b: NewPfx(IPv4(200), 8), expected: false, }, } @@ -273,12 +273,12 @@ func TestString(t *testing.T) { }{ { name: "Test 1", - pfx: NewPfx(167772160, 8), // 10.0.0.0/8 + pfx: NewPfx(IPv4FromOctets(10, 0, 0, 0), 8), expected: "10.0.0.0/8", }, { name: "Test 2", - pfx: NewPfx(167772160, 16), // 10.0.0.0/8 + pfx: NewPfx(IPv4FromOctets(10, 0, 0, 0), 16), expected: "10.0.0.0/16", }, } @@ -345,7 +345,11 @@ func TestStrToAddr(t *testing.T) { } } -func strAddr(s string) uint32 { - ret, _ := StrToAddr(s) - return ret +func TestEqualOperator(t *testing.T) { + p1 := NewPfx(IPv4(100), 4) + p2 := NewPfx(IPv4(100), 4) + + if p1 != p2 { + assert.Fail(t, "p1 != p2 (even if attributes are equal)") + } } diff --git a/protocols/bgp/packet/BUILD.bazel b/protocols/bgp/packet/BUILD.bazel index 3a9b5fd463ba33831be932734b27a8c845e8069d..d6f4d73f49b4a5ec4eaf7b1d288a1e32bd2eb88d 100644 --- a/protocols/bgp/packet/BUILD.bazel +++ b/protocols/bgp/packet/BUILD.bazel @@ -15,6 +15,7 @@ go_library( importpath = "github.com/bio-routing/bio-rd/protocols/bgp/packet", visibility = ["//visibility:public"], deps = [ + "//net:go_default_library", "//protocols/bgp/types:go_default_library", "//route:go_default_library", "//vendor/github.com/taktv6/tflow2/convert:go_default_library", diff --git a/protocols/bgp/packet/decoder_test.go b/protocols/bgp/packet/decoder_test.go index a874ba1041d35c3ca3476251096cef5320dbbc70..5613bbcb6c46a385492f5c38f5a837ae5e287ee7 100644 --- a/protocols/bgp/packet/decoder_test.go +++ b/protocols/bgp/packet/decoder_test.go @@ -10,6 +10,8 @@ import ( "github.com/bio-routing/bio-rd/protocols/bgp/types" "github.com/stretchr/testify/assert" "github.com/taktv6/tflow2/convert" + + bnet "github.com/bio-routing/bio-rd/net" ) type test struct { @@ -723,7 +725,7 @@ func TestDecodeUpdateMsg(t *testing.T) { ExtendedLength: false, Length: 4, TypeCode: 3, - Value: strAddr("10.11.12.13"), + Value: bnet.IPv4FromOctets(10, 11, 12, 13), }, }, }, @@ -813,7 +815,7 @@ func TestDecodeUpdateMsg(t *testing.T) { ExtendedLength: false, Length: 4, TypeCode: 3, - Value: strAddr("10.11.12.13"), + Value: bnet.IPv4FromOctets(10, 11, 12, 13), Next: &PathAttribute{ Optional: false, Transitive: false, @@ -916,7 +918,7 @@ func TestDecodeUpdateMsg(t *testing.T) { ExtendedLength: false, Length: 4, TypeCode: 3, - Value: strAddr("10.11.12.13"), + Value: bnet.IPv4FromOctets(10, 11, 12, 13), Next: &PathAttribute{ Optional: false, Transitive: false, @@ -1032,7 +1034,7 @@ func TestDecodeUpdateMsg(t *testing.T) { ExtendedLength: false, Length: 4, TypeCode: 3, - Value: strAddr("10.11.12.13"), + Value: bnet.IPv4FromOctets(10, 11, 12, 13), Next: &PathAttribute{ Optional: false, Transitive: false, @@ -1164,7 +1166,7 @@ func TestDecodeUpdateMsg(t *testing.T) { ExtendedLength: false, Length: 4, TypeCode: 3, - Value: strAddr("10.11.12.13"), + Value: bnet.IPv4FromOctets(10, 11, 12, 13), Next: &PathAttribute{ Optional: false, Transitive: false, diff --git a/protocols/bgp/packet/path_attributes.go b/protocols/bgp/packet/path_attributes.go index f592af68c359cae74837725d823d9cac5bc6075a..f1aae242153e09da32de808fabe40efbcc719456 100644 --- a/protocols/bgp/packet/path_attributes.go +++ b/protocols/bgp/packet/path_attributes.go @@ -4,6 +4,7 @@ import ( "bytes" "fmt" + bnet "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/protocols/bgp/types" "github.com/bio-routing/bio-rd/route" "github.com/taktv6/tflow2/convert" @@ -212,7 +213,14 @@ func (pa *PathAttribute) decode2ByteASN(buf *bytes.Buffer) (asn uint32, err erro } func (pa *PathAttribute) decodeNextHop(buf *bytes.Buffer) error { - return pa.decodeUint32(buf, "next hop") + nextHop := uint32(0) + err := decode(buf, []interface{}{&nextHop}) + if err != nil { + return fmt.Errorf("Unable to decode next hop: %v", err) + } + + pa.Value = bnet.IPv4(nextHop) + return nil } func (pa *PathAttribute) decodeMED(buf *bytes.Buffer) error { @@ -441,8 +449,8 @@ func (pa *PathAttribute) serializeNextHop(buf *bytes.Buffer) uint8 { buf.WriteByte(NextHopAttr) length := uint8(4) buf.WriteByte(length) - addr := pa.Value.(uint32) - buf.Write(convert.Uint32Byte(addr)) + addr := pa.Value.(bnet.IP) + buf.Write(addr.Bytes()) return 7 } diff --git a/protocols/bgp/packet/path_attributes_test.go b/protocols/bgp/packet/path_attributes_test.go index dea391e069527f65f33c946c421da91632d37373..4a0966e6b3dee2a6bbbf3bb4712247eefc7696e1 100644 --- a/protocols/bgp/packet/path_attributes_test.go +++ b/protocols/bgp/packet/path_attributes_test.go @@ -4,6 +4,7 @@ import ( "bytes" "testing" + bnet "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/protocols/bgp/types" "github.com/stretchr/testify/assert" ) @@ -35,7 +36,7 @@ func TestDecodePathAttrs(t *testing.T) { Next: &PathAttribute{ TypeCode: 3, Length: 4, - Value: strAddr("10.20.30.40"), + Value: bnet.IPv4FromOctets(10, 20, 30, 40), }, }, }, @@ -396,7 +397,7 @@ func TestDecodeNextHop(t *testing.T) { wantFail: false, expected: &PathAttribute{ Length: 4, - Value: strAddr("10.20.30.40"), + Value: bnet.IPv4FromOctets(10, 20, 30, 40), }, }, { @@ -1004,7 +1005,7 @@ func TestSerializeNextHop(t *testing.T) { name: "Test #1", input: &PathAttribute{ TypeCode: NextHopAttr, - Value: strAddr("100.110.120.130"), + Value: bnet.IPv4FromOctets(100, 110, 120, 130), }, expected: []byte{64, 3, 4, 100, 110, 120, 130}, expectedLen: 7, @@ -1503,7 +1504,7 @@ func TestSerialize(t *testing.T) { }, Next: &PathAttribute{ TypeCode: NextHopAttr, - Value: strAddr("10.20.30.40"), + Value: bnet.IPv4FromOctets(10, 20, 30, 40), Next: &PathAttribute{ TypeCode: MEDAttr, Value: uint32(100), @@ -1712,7 +1713,7 @@ func TestSerializeAddPath(t *testing.T) { }, Next: &PathAttribute{ TypeCode: NextHopAttr, - Value: strAddr("10.20.30.40"), + Value: bnet.IPv4FromOctets(10, 20, 30, 40), Next: &PathAttribute{ TypeCode: MEDAttr, Value: uint32(100), diff --git a/protocols/bgp/server/fsm.go b/protocols/bgp/server/fsm.go index e85bda8cc21d6c47ac2c300639177aab8623859f..991f1b60853631a7b88d7fbb38c0e81ff551cc6e 100644 --- a/protocols/bgp/server/fsm.go +++ b/protocols/bgp/server/fsm.go @@ -170,7 +170,7 @@ func (fsm *FSM) tcpConnector() error { for { select { case <-fsm.initiateCon: - c, err := net.DialTCP("tcp", &net.TCPAddr{IP: fsm.local}, &net.TCPAddr{IP: fsm.peer.addr, Port: BGPPORT}) + c, err := net.DialTCP("tcp", &net.TCPAddr{IP: fsm.local}, &net.TCPAddr{IP: fsm.peer.addr.ToNetIP(), Port: BGPPORT}) if err != nil { select { case fsm.conErrCh <- err: diff --git a/protocols/bgp/server/fsm_established.go b/protocols/bgp/server/fsm_established.go index 9aced1fe480489ed116960262318750f74e7b5ee..b5740c57b9d32ef299d2e783c87b16d06a6e0b14 100644 --- a/protocols/bgp/server/fsm_established.go +++ b/protocols/bgp/server/fsm_established.go @@ -74,11 +74,11 @@ func (s *establishedState) init() error { n := &routingtable.Neighbor{ Type: route.BGPPathType, - Address: bnet.IPv4ToUint32(s.fsm.peer.addr), + Address: s.fsm.peer.addr, IBGP: s.fsm.peer.localASN == s.fsm.peer.peerASN, LocalASN: s.fsm.peer.localASN, RouteServerClient: s.fsm.peer.routeServerClient, - LocalAddress: bnet.IPv4ToUint32(hostIP), + LocalAddress: bnet.IPv4(bnet.IPv4ToUint32(hostIP)), CapAddPathRX: s.fsm.options.AddPathRX, } @@ -207,19 +207,19 @@ func (s *establishedState) update(msg *packet.BGPMessage) (state, string) { func (s *establishedState) withdraws(u *packet.BGPUpdate) { for r := u.WithdrawnRoutes; r != nil; r = r.Next { - pfx := bnet.NewPfx(r.IP, r.Pfxlen) + pfx := bnet.NewPfx(bnet.IPv4(r.IP), r.Pfxlen) s.fsm.adjRIBIn.RemovePath(pfx, nil) } } func (s *establishedState) updates(u *packet.BGPUpdate) { for r := u.NLRI; r != nil; r = r.Next { - pfx := bnet.NewPfx(r.IP, r.Pfxlen) + pfx := bnet.NewPfx(bnet.IPv4(r.IP), r.Pfxlen) path := &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ - Source: bnet.IPv4ToUint32(s.fsm.peer.addr), + Source: s.fsm.peer.addr, EBGP: s.fsm.peer.localASN != s.fsm.peer.peerASN, }, } @@ -240,7 +240,7 @@ func (s *establishedState) processAttributes(attrs *packet.PathAttribute, path * case packet.MEDAttr: path.BGPPath.MED = pa.Value.(uint32) case packet.NextHopAttr: - path.BGPPath.NextHop = pa.Value.(uint32) + path.BGPPath.NextHop = pa.Value.(bnet.IP) case packet.ASPathAttr: path.BGPPath.ASPath = pa.Value.(types.ASPath) path.BGPPath.ASPathLen = path.BGPPath.ASPath.Length() diff --git a/protocols/bgp/server/fsm_test.go b/protocols/bgp/server/fsm_test.go index 9cff29b3706dc30d11a1017a7d963d30bafcb1f2..2af938822e25b265831033c1b74fd690eef4e90d 100644 --- a/protocols/bgp/server/fsm_test.go +++ b/protocols/bgp/server/fsm_test.go @@ -1,7 +1,6 @@ package server import ( - "net" "sync" "testing" "time" @@ -10,12 +9,14 @@ import ( "github.com/bio-routing/bio-rd/routingtable/filter" "github.com/bio-routing/bio-rd/routingtable/locRIB" "github.com/stretchr/testify/assert" + + bnet "github.com/bio-routing/bio-rd/net" ) // TestFSM100Updates emulates receiving 100 BGP updates and withdraws. Checks route counts. func TestFSM100Updates(t *testing.T) { fsmA := newFSM2(&peer{ - addr: net.ParseIP("169.254.100.100"), + addr: bnet.IPv4FromOctets(169, 254, 100, 100), rib: locRIB.New(), importFilter: filter.NewAcceptAllFilter(), exportFilter: filter.NewAcceptAllFilter(), diff --git a/protocols/bgp/server/peer.go b/protocols/bgp/server/peer.go index 125393fb8fbfbfb5ed4bb626a5bc0aa352094d82..2772903061d6180c6d49ff48c70e3f96af4dfc33 100644 --- a/protocols/bgp/server/peer.go +++ b/protocols/bgp/server/peer.go @@ -1,11 +1,11 @@ package server import ( - "net" "sync" "time" "github.com/bio-routing/bio-rd/config" + bnet "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/protocols/bgp/packet" "github.com/bio-routing/bio-rd/routingtable" "github.com/bio-routing/bio-rd/routingtable/filter" @@ -13,14 +13,14 @@ import ( ) type PeerInfo struct { - PeerAddr net.IP + PeerAddr bnet.IP PeerASN uint32 LocalASN uint32 } type peer struct { server *bgpServer - addr net.IP + addr bnet.IP peerASN uint32 localASN uint32 @@ -184,7 +184,7 @@ func filterOrDefault(f *filter.Filter) *filter.Filter { } // GetAddr returns the IP address of the peer -func (p *peer) GetAddr() net.IP { +func (p *peer) GetAddr() bnet.IP { return p.addr } diff --git a/protocols/bgp/server/server_test.go b/protocols/bgp/server/server_test.go index baf30a19344cb12c284ec22eb364809d7dc4cd72..fffe879ce078deaa77a6a795d357f64ef74e3796 100644 --- a/protocols/bgp/server/server_test.go +++ b/protocols/bgp/server/server_test.go @@ -1,7 +1,6 @@ package server import ( - "net" "testing" "time" @@ -9,6 +8,8 @@ import ( "github.com/bio-routing/bio-rd/routingtable" "github.com/bio-routing/bio-rd/routingtable/filter" "github.com/bio-routing/bio-rd/routingtable/locRIB" + + bnet "github.com/bio-routing/bio-rd/net" ) func TestBgpServerPeerSnapshot(t *testing.T) { @@ -30,8 +31,8 @@ func TestBgpServerPeerSnapshot(t *testing.T) { pc := config.Peer{ AdminEnabled: true, PeerAS: 65300, - PeerAddress: net.IP([]byte{169, 254, 200, 1}), - LocalAddress: net.IP([]byte{169, 254, 200, 0}), + PeerAddress: bnet.IPv4FromOctets(169, 254, 200, 1), + LocalAddress: bnet.IPv4FromOctets(169, 254, 200, 0), ReconnectInterval: time.Second * 15, HoldTime: time.Second * 90, KeepAlive: time.Second * 30, @@ -56,7 +57,7 @@ func TestBgpServerPeerSnapshot(t *testing.T) { break } - if want, got := net.ParseIP("169.254.200.1"), peer.PeerAddr; !want.Equal(got) { + if want, got := bnet.IPv4FromOctets(169, 254, 200, 1), peer.PeerAddr; !want.Equal(got) { t.Errorf("PeerAddr: got %v, want %v", got, want) } if want, got := uint32(65300), peer.PeerASN; want != got { diff --git a/protocols/bgp/server/update_sender.go b/protocols/bgp/server/update_sender.go index dedae8ef54a63f3afc73a355636534150c69492a..a223ee1752b63775a32a4715bbbb3232575a86ab 100644 --- a/protocols/bgp/server/update_sender.go +++ b/protocols/bgp/server/update_sender.go @@ -130,7 +130,7 @@ func (u *UpdateSender) sendUpdates(pathAttrs *packet.PathAttribute, updatePrefix for _, pfx := range updatePrefix { nlri = &packet.NLRI{ PathIdentifier: pathID, - IP: pfx.Addr(), + IP: pfx.Addr().ToUint32(), Pfxlen: pfx.Pfxlen(), Next: update.NLRI, } diff --git a/protocols/bgp/server/update_sender_test.go b/protocols/bgp/server/update_sender_test.go index 1683c23d12434c711edeb5f2d62bd54882709303..1335c15385d42b4fba6e616a2bf297bce20f671d 100644 --- a/protocols/bgp/server/update_sender_test.go +++ b/protocols/bgp/server/update_sender_test.go @@ -1,7 +1,6 @@ package server import ( - "net" "reflect" "testing" "time" @@ -35,10 +34,10 @@ func TestSender(t *testing.T) { }, }, pfxs: []bnet.Prefix{ - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{10, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{11, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{12, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{13, 0, 0, 0})), 32), + bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(11, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(12, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(13, 0, 0, 0), 32), }, }, { @@ -49,10 +48,10 @@ func TestSender(t *testing.T) { }, }, pfxs: []bnet.Prefix{ - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{20, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{21, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{22, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{23, 0, 0, 0})), 8), + bnet.NewPfx(bnet.IPv4FromOctets(20, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(21, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(22, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(23, 0, 0, 0), 8), }, }, }, @@ -97,10 +96,10 @@ func TestSender(t *testing.T) { }, }, pfxs: []bnet.Prefix{ - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{10, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{11, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{12, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{13, 0, 0, 0})), 32), + bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(11, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(12, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(13, 0, 0, 0), 32), }, }, { @@ -111,10 +110,10 @@ func TestSender(t *testing.T) { }, }, pfxs: []bnet.Prefix{ - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{20, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{21, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{22, 0, 0, 0})), 8), - bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{23, 0, 0, 0})), 8), + bnet.NewPfx(bnet.IPv4FromOctets(20, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(21, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(22, 0, 0, 0), 8), + bnet.NewPfx(bnet.IPv4FromOctets(23, 0, 0, 0), 8), }, }, }, @@ -334,7 +333,7 @@ func TestSender(t *testing.T) { for _, test := range tests { fsmA := newFSM2(&peer{ - addr: net.ParseIP("169.254.100.100"), + addr: bnet.IPv4FromOctets(169, 254, 100, 100), rib: locRIB.New(), importFilter: filter.NewAcceptAllFilter(), exportFilter: filter.NewAcceptAllFilter(), @@ -362,7 +361,7 @@ func TestSender(t *testing.T) { for i := uint64(0); i < test.generateNLRIs; i++ { x := i / 256 y := i - x - pfx := bnet.NewPfx(bnet.IPv4ToUint32(net.IP([]byte{10, 0, uint8(x), uint8(y)})), 32) + pfx := bnet.NewPfx(bnet.IPv4FromOctets(10, 0, uint8(x), uint8(y)), 32) updateSender.AddPath(pfx, pathPfx.path) } } diff --git a/protocols/bgp/server/withdraw.go b/protocols/bgp/server/withdraw.go index e3f1137e1e96469dfa69f3bd825a3a644a582fc2..98243560f929952ab7c26e47e3c797af17016772 100644 --- a/protocols/bgp/server/withdraw.go +++ b/protocols/bgp/server/withdraw.go @@ -21,13 +21,13 @@ func withDrawPrefixes(out io.Writer, opt *types.Options, prefixes ...net.Prefix) for _, pfx := range prefixes { if rootNLRI == nil { rootNLRI = &packet.NLRI{ - IP: pfx.Addr(), + IP: pfx.Addr().ToUint32(), Pfxlen: pfx.Pfxlen(), } currentNLRI = rootNLRI } else { currentNLRI.Next = &packet.NLRI{ - IP: pfx.Addr(), + IP: pfx.Addr().ToUint32(), Pfxlen: pfx.Pfxlen(), } currentNLRI = currentNLRI.Next @@ -52,7 +52,7 @@ func withDrawPrefixesAddPath(out io.Writer, opt *types.Options, pfx net.Prefix, update := &packet.BGPUpdate{ WithdrawnRoutes: &packet.NLRI{ PathIdentifier: p.BGPPath.PathIdentifier, - IP: pfx.Addr(), + IP: pfx.Addr().ToUint32(), Pfxlen: pfx.Pfxlen(), }, } diff --git a/protocols/bgp/server/withdraw_test.go b/protocols/bgp/server/withdraw_test.go index c21b6ada956e4c694a8408e962a67efe611574c2..cfe0a0283c0af493317284b495b150ae27f1edc8 100644 --- a/protocols/bgp/server/withdraw_test.go +++ b/protocols/bgp/server/withdraw_test.go @@ -23,7 +23,7 @@ func TestWithDrawPrefixes(t *testing.T) { }{ { Name: "One withdraw", - Prefix: []net.Prefix{net.NewPfx(1413010532, 24)}, + Prefix: []net.Prefix{net.NewPfx(net.IPv4(1413010532), 24)}, Expected: []byte{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // BGP Marker 0x00, 0x1b, // BGP Message Length @@ -37,7 +37,7 @@ func TestWithDrawPrefixes(t *testing.T) { }, { Name: "two withdraws", - Prefix: []net.Prefix{net.NewPfx(1413010532, 24), net.NewPfx(1413010534, 25)}, + Prefix: []net.Prefix{net.NewPfx(net.IPv4(1413010532), 24), net.NewPfx(net.IPv4(1413010534), 25)}, Expected: []byte{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, // BGP Marker 0x00, 0x20, // BGP Message Length @@ -71,7 +71,7 @@ func TestWithDrawPrefixesAddPath(t *testing.T) { }{ { Name: "Normal withdraw", - Prefix: net.NewPfx(1413010532, 24), + Prefix: net.NewPfx(net.IPv4(1413010532), 24), Path: &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ @@ -92,7 +92,7 @@ func TestWithDrawPrefixesAddPath(t *testing.T) { }, { Name: "Non bgp withdraw", - Prefix: net.NewPfx(1413010532, 24), + Prefix: net.NewPfx(net.IPv4(1413010532), 24), Path: &route.Path{ Type: route.StaticPathType, }, @@ -101,7 +101,7 @@ func TestWithDrawPrefixesAddPath(t *testing.T) { }, { Name: "Nil BGPPathType", - Prefix: net.NewPfx(1413010532, 24), + Prefix: net.NewPfx(net.IPv4(1413010532), 24), Path: &route.Path{ Type: route.BGPPathType, }, diff --git a/route/bgp_path.go b/route/bgp_path.go index fbca2255f620b8b49a9d7bc57490754316b412de..ee9aca8343129a52aebf5eac6cd487dc489cb466 100644 --- a/route/bgp_path.go +++ b/route/bgp_path.go @@ -5,6 +5,7 @@ import ( "fmt" "strings" + bnet "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/protocols/bgp/types" "github.com/taktv6/tflow2/convert" ) @@ -12,7 +13,7 @@ import ( // BGPPath represents a set of BGP path attributes type BGPPath struct { PathIdentifier uint32 - NextHop uint32 + NextHop bnet.IP LocalPref uint32 ASPath types.ASPath ASPathLen uint16 @@ -22,7 +23,7 @@ type BGPPath struct { AtomicAggregate bool Aggregator *types.Aggregator BGPIdentifier uint32 - Source uint32 + Source bnet.IP Communities []uint32 LargeCommunities []types.LargeCommunity UnknownAttributes []types.UnknownPathAttribute @@ -119,19 +120,19 @@ func (b *BGPPath) Compare(c *BGPPath) int8 { } // g) - if c.Source < b.Source { + if c.Source.Compare(b.Source) == -1 { return 1 } - if c.Source > b.Source { + if c.Source.Compare(b.Source) == 1 { return -1 } - if c.NextHop < b.NextHop { + if c.NextHop.Compare(b.NextHop) == -1 { return 1 } - if c.NextHop > b.NextHop { + if c.NextHop.Compare(b.NextHop) == 1 { return -1 } @@ -183,7 +184,7 @@ func (b *BGPPath) better(c *BGPPath) bool { return true } - if c.Source < b.Source { + if c.Source.Compare(b.Source) == -1 { return true } @@ -211,12 +212,10 @@ func (b *BGPPath) Print() string { ret += fmt.Sprintf("\t\tOrigin: %s\n", origin) ret += fmt.Sprintf("\t\tAS Path: %v\n", b.ASPath) ret += fmt.Sprintf("\t\tBGP type: %s\n", bgpType) - nh := uint32To4Byte(b.NextHop) - ret += fmt.Sprintf("\t\tNEXT HOP: %d.%d.%d.%d\n", nh[0], nh[1], nh[2], nh[3]) + ret += fmt.Sprintf("\t\tNEXT HOP: %s\n", b.NextHop) ret += fmt.Sprintf("\t\tMED: %d\n", b.MED) ret += fmt.Sprintf("\t\tPath ID: %d\n", b.PathIdentifier) - src := uint32To4Byte(b.Source) - ret += fmt.Sprintf("\t\tSource: %d.%d.%d.%d\n", src[0], src[1], src[2], src[3]) + ret += fmt.Sprintf("\t\tSource: %s\n", b.Source) ret += fmt.Sprintf("\t\tCommunities: %v\n", b.Communities) ret += fmt.Sprintf("\t\tLargeCommunities: %v\n", b.LargeCommunities) @@ -286,7 +285,7 @@ func (b *BGPPath) Copy() *BGPPath { // ComputeHash computes an hash over all attributes of the path func (b *BGPPath) ComputeHash() string { - s := fmt.Sprintf("%d\t%d\t%v\t%d\t%d\t%v\t%d\t%d\t%v\t%v\t%d", + s := fmt.Sprintf("%s\t%d\t%v\t%d\t%d\t%v\t%d\t%s\t%v\t%v\t%d", b.NextHop, b.LocalPref, b.ASPath, diff --git a/route/bgp_test.go b/route/bgp_test.go index 46ceb9af2364746aba48711400e9091cc882457f..f399d5d51ab96ad1a5b789a22aceb4d7b2490932 100644 --- a/route/bgp_test.go +++ b/route/bgp_test.go @@ -5,6 +5,8 @@ import ( "github.com/bio-routing/bio-rd/protocols/bgp/types" "github.com/stretchr/testify/assert" + + bnet "github.com/bio-routing/bio-rd/net" ) func TestComputeHash(t *testing.T) { @@ -29,14 +31,14 @@ func TestComputeHash(t *testing.T) { }, LocalPref: 100, MED: 1, - NextHop: 100, + NextHop: bnet.IPv4(100), PathIdentifier: 5, - Source: 4, + Source: bnet.IPv4(4), } - assert.Equal(t, "45e238420552b88043edb8cb402034466b08d53b49f8e0fedc680747014ddeff", p.ComputeHash()) + assert.Equal(t, "98d68e69d993f8807c561cc7d63de759f7edc732887f88a7ebf42f61b9e54821", p.ComputeHash()) p.LocalPref = 150 - assert.NotEqual(t, "45e238420552b88043edb8cb402034466b08d53b49f8e0fedc680747014ddeff", p.ComputeHash()) + assert.NotEqual(t, "98d68e69d993f8807c561cc7d63de759f7edc732887f88a7ebf42f61b9e54821", p.ComputeHash()) } diff --git a/route/route.go b/route/route.go index 300f5dcb96c07453cbee03c964935dad028a10da..f9251bbcef51371005215b99b1efa58fae17d26a 100644 --- a/route/route.go +++ b/route/route.go @@ -63,7 +63,7 @@ func (r *Route) Prefix() net.Prefix { } // Addr gets a routes address -func (r *Route) Addr() uint32 { +func (r *Route) Addr() net.IP { return r.pfx.Addr() } diff --git a/route/route_test.go b/route/route_test.go index aece08b7e592a2d4fd6119ba3562e5d15cbf5553..4aaeb92804618918f8306364448c47521fa19cea 100644 --- a/route/route_test.go +++ b/route/route_test.go @@ -5,25 +5,25 @@ import ( "github.com/stretchr/testify/assert" - "github.com/bio-routing/bio-rd/net" + bnet "github.com/bio-routing/bio-rd/net" ) func TestNewRoute(t *testing.T) { tests := []struct { name string - pfx net.Prefix + pfx bnet.Prefix path *Path expected *Route }{ { name: "BGP Path", - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), path: &Path{ Type: BGPPathType, BGPPath: &BGPPath{}, }, expected: &Route{ - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), paths: []*Path{ &Path{ Type: BGPPathType, @@ -34,9 +34,9 @@ func TestNewRoute(t *testing.T) { }, { name: "Empty Path", - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), expected: &Route{ - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), paths: []*Path{}, }, }, @@ -52,14 +52,14 @@ func TestPrefix(t *testing.T) { tests := []struct { name string route *Route - expected net.Prefix + expected bnet.Prefix }{ { name: "Prefix", route: &Route{ - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), }, - expected: net.NewPfx(strAddr("10.0.0.0"), 8), + expected: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), }, } @@ -73,14 +73,14 @@ func TestAddr(t *testing.T) { tests := []struct { name string route *Route - expected uint32 + expected bnet.IP }{ { name: "Prefix", route: &Route{ - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), }, - expected: 0xa000000, + expected: bnet.IPv4(0xa000000), }, } @@ -99,7 +99,7 @@ func TestPfxlen(t *testing.T) { { name: "Prefix", route: &Route{ - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), }, expected: 8, }, @@ -120,7 +120,7 @@ func TestAddPath(t *testing.T) { }{ { name: "Regular BGP path", - route: NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), &Path{ + route: NewRoute(bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), &Path{ Type: BGPPathType, BGPPath: &BGPPath{}, }), @@ -129,7 +129,7 @@ func TestAddPath(t *testing.T) { BGPPath: &BGPPath{}, }, expected: &Route{ - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), paths: []*Path{ { Type: BGPPathType, @@ -144,13 +144,13 @@ func TestAddPath(t *testing.T) { }, { name: "Nil path", - route: NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), &Path{ + route: NewRoute(bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), &Path{ Type: BGPPathType, BGPPath: &BGPPath{}, }), newPath: nil, expected: &Route{ - pfx: net.NewPfx(strAddr("10.0.0.0"), 8), + pfx: bnet.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), paths: []*Path{ { Type: BGPPathType, @@ -271,7 +271,7 @@ func TestCopy(t *testing.T) { { name: "", route: &Route{ - pfx: net.NewPfx(1000, 8), + pfx: bnet.NewPfx(bnet.IPv4(1000), 8), ecmpPaths: 2, paths: []*Path{ { @@ -280,7 +280,7 @@ func TestCopy(t *testing.T) { }, }, expected: &Route{ - pfx: net.NewPfx(1000, 8), + pfx: bnet.NewPfx(bnet.IPv4(1000), 8), ecmpPaths: 2, paths: []*Path{ { @@ -328,7 +328,7 @@ func TestBestPath(t *testing.T) { { Type: StaticPathType, StaticPath: &StaticPath{ - NextHop: 32, + NextHop: bnet.IPv4(32), }, }, }, @@ -336,7 +336,7 @@ func TestBestPath(t *testing.T) { expected: &Path{ Type: StaticPathType, StaticPath: &StaticPath{ - NextHop: 32, + NextHop: bnet.IPv4(32), }, }, }, @@ -366,13 +366,13 @@ func TestECMPPaths(t *testing.T) { { Type: StaticPathType, StaticPath: &StaticPath{ - NextHop: 32, + NextHop: bnet.IPv4(32), }, }, { Type: StaticPathType, StaticPath: &StaticPath{ - NextHop: 32, + NextHop: bnet.IPv4(32), }, }, }, @@ -381,13 +381,13 @@ func TestECMPPaths(t *testing.T) { { Type: StaticPathType, StaticPath: &StaticPath{ - NextHop: 32, + NextHop: bnet.IPv4(32), }, }, { Type: StaticPathType, StaticPath: &StaticPath{ - NextHop: 32, + NextHop: bnet.IPv4(32), }, }, }, @@ -397,8 +397,3 @@ func TestECMPPaths(t *testing.T) { assert.Equal(t, tc.expected, tc.route.ECMPPaths()) } } - -func strAddr(s string) uint32 { - ret, _ := net.StrToAddr(s) - return ret -} diff --git a/route/static.go b/route/static.go index 0ab6b26e3dc01c58b756efca28935b2e8e4e9d5a..af2990f25ba164346587bf1b3ebb0dae2011ffea 100644 --- a/route/static.go +++ b/route/static.go @@ -1,8 +1,10 @@ package route +import bnet "github.com/bio-routing/bio-rd/net" + // StaticPath represents a static path of a route type StaticPath struct { - NextHop uint32 + NextHop bnet.IP } func (r *Route) staticPathSelection() { diff --git a/routingtable/BUILD.bazel b/routingtable/BUILD.bazel index 78434b1aa57a1173a8cd8f202763a0498236f0c5..02ae5d697f23572ae7e82037e0055dd6bfb220ff 100644 --- a/routingtable/BUILD.bazel +++ b/routingtable/BUILD.bazel @@ -28,7 +28,6 @@ go_test( "client_manager_test.go", "contributing_asn_list_test.go", "table_test.go", - "trie_test.go", "update_helper_test.go", ], embed = [":go_default_library"], diff --git a/routingtable/adjRIBIn/adj_rib_in_test.go b/routingtable/adjRIBIn/adj_rib_in_test.go index 9939e805d0dc73bd9e9f6555463c343f6ca16bcc..0fb052db2a5e34f26eb2132cf86cd03632f420c7 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.Prefix{}, 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,8 @@ func TestRemovePath(t *testing.T) { assert.Equal(t, test.removePath, removePathParams.Path) } else { removePathParams := mc.GetRemovePathParams() - if removePathParams.Pfx != net.NewPfx(0, 0) { + uninitialized := net.Prefix{} + if removePathParams.Pfx != uninitialized { t.Errorf("Test %q failed: Call to RemovePath propagated unexpectedly", test.name) } } @@ -192,8 +193,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.go b/routingtable/filter/actions/set_nexthop_action.go index f178f61802882157856fc1f4bf15c8d9f0b08dc6..de1e9bc959b8f9d827c48c844699aa2aed92fda9 100644 --- a/routingtable/filter/actions/set_nexthop_action.go +++ b/routingtable/filter/actions/set_nexthop_action.go @@ -2,16 +2,17 @@ package actions import ( "github.com/bio-routing/bio-rd/net" + bnet "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/route" ) type SetNextHopAction struct { - addr uint32 + ip bnet.IP } -func NewSetNextHopAction(addr uint32) *SetNextHopAction { +func NewSetNextHopAction(ip bnet.IP) *SetNextHopAction { return &SetNextHopAction{ - addr: addr, + ip: ip, } } @@ -21,7 +22,7 @@ func (a *SetNextHopAction) Do(p net.Prefix, pa *route.Path) (modPath *route.Path } modified := pa.Copy() - modified.BGPPath.NextHop = a.addr + modified.BGPPath.NextHop = a.ip return modified, false } diff --git a/routingtable/filter/actions/set_nexthop_action_test.go b/routingtable/filter/actions/set_nexthop_action_test.go index 7501e6bdcc388c65577cea8ce0a425acf8b7d3e3..7f691d235f288e1155980ea997b4e6fddaa6a4de 100644 --- a/routingtable/filter/actions/set_nexthop_action_test.go +++ b/routingtable/filter/actions/set_nexthop_action_test.go @@ -6,13 +6,15 @@ import ( "github.com/bio-routing/bio-rd/net" "github.com/bio-routing/bio-rd/route" "github.com/stretchr/testify/assert" + + bnet "github.com/bio-routing/bio-rd/net" ) func TestSetNextHopTest(t *testing.T) { tests := []struct { name string bgpPath *route.BGPPath - expected uint32 + expected net.IP }{ { name: "BGPPath is nil", @@ -20,21 +22,21 @@ func TestSetNextHopTest(t *testing.T) { { name: "modify path", bgpPath: &route.BGPPath{ - NextHop: strAddr("100.64.2.1"), + NextHop: bnet.IPv4FromOctets(192, 168, 1, 1), }, - expected: strAddr("100.64.2.1"), + expected: bnet.IPv4FromOctets(100, 64, 2, 1), }, } for _, test := range tests { - t.Run(test.name, func(te *testing.T) { - a := NewSetNextHopAction(strAddr("100.64.2.1")) - p, _ := a.Do(net.NewPfx(strAddr("10.0.0.0"), 8), &route.Path{ + t.Run(test.name, func(t *testing.T) { + a := NewSetNextHopAction(bnet.IPv4FromOctets(100, 64, 2, 1)) + p, _ := a.Do(net.NewPfx(bnet.IPv4FromOctets(10, 0, 0, 0), 8), &route.Path{ BGPPath: test.bgpPath, }) - if test.expected > 0 { - assert.Equal(te, test.expected, p.BGPPath.NextHop) + if test.bgpPath != nil { + assert.Equal(t, test.expected, p.BGPPath.NextHop) } }) } 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/locRIB/loc_rib_test.go b/routingtable/locRIB/loc_rib_test.go index ea4d9c6c30e5596f4b0685d92a20b86eb182bf16..6b3e24e0715ec5ec8a670c9d6bd94f1a28fab5ad 100644 --- a/routingtable/locRIB/loc_rib_test.go +++ b/routingtable/locRIB/loc_rib_test.go @@ -3,14 +3,14 @@ package locRIB 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" ) type pfxPath struct { - pfx net.Prefix + pfx bnet.Prefix path *route.Path } @@ -25,7 +25,7 @@ func TestContainsPfxPath(t *testing.T) { { in: []pfxPath{}, check: pfxPath{ - pfx: net.NewPfx(1, 32), + pfx: bnet.NewPfx(bnet.IPv4(1), 32), path: nil, }, expected: false, @@ -34,17 +34,17 @@ func TestContainsPfxPath(t *testing.T) { { in: []pfxPath{ { - pfx: net.NewPfx(1, 32), + pfx: bnet.NewPfx(bnet.IPv4(1), 32), path: &route.Path{ Type: route.StaticPathType, StaticPath: &route.StaticPath{ - NextHop: 2, + NextHop: bnet.IPv4(2), }, }, }, }, check: pfxPath{ - pfx: net.NewPfx(1, 32), + pfx: bnet.NewPfx(bnet.IPv4(1), 32), path: nil, }, expected: false, @@ -53,21 +53,21 @@ func TestContainsPfxPath(t *testing.T) { { in: []pfxPath{ { - pfx: net.NewPfx(1, 32), + pfx: bnet.NewPfx(bnet.IPv4(1), 32), path: &route.Path{ Type: route.StaticPathType, StaticPath: &route.StaticPath{ - NextHop: 2, + NextHop: bnet.IPv4(2), }, }, }, }, check: pfxPath{ - pfx: net.NewPfx(1, 32), + pfx: bnet.NewPfx(bnet.IPv4(1), 32), path: &route.Path{ Type: route.StaticPathType, StaticPath: &route.StaticPath{ - NextHop: 2, + NextHop: bnet.IPv4(2), }, }, }, @@ -87,11 +87,11 @@ func TestContainsPfxPath(t *testing.T) { func TestLocRIB_RemovePathUnknown(t *testing.T) { rib := New() - assert.True(t, rib.RemovePath(net.NewPfx(1, 32), + assert.True(t, rib.RemovePath(bnet.NewPfx(bnet.IPv4(1), 32), &route.Path{ Type: route.StaticPathType, StaticPath: &route.StaticPath{ - NextHop: 2, + NextHop: bnet.IPv4(2), }, })) } diff --git a/routingtable/neighbor.go b/routingtable/neighbor.go index f298356fa73ef40de0293b76d55c28cc0c363dfe..bf6e97c6af46da590dd071e6e40b9978410f78ce 100644 --- a/routingtable/neighbor.go +++ b/routingtable/neighbor.go @@ -1,12 +1,14 @@ package routingtable +import bnet "github.com/bio-routing/bio-rd/net" + // Neighbor represents the attributes identifying a neighbor relationsship type Neighbor struct { // Addres is the IPv4 address of the neighbor as integer representation - Address uint32 + Address bnet.IP // Local address is the local address of the BGP TCP connection - LocalAddress uint32 + LocalAddress bnet.IP // Type is the type / protocol used for routing inforation communitation Type uint8 diff --git a/routingtable/table_test.go b/routingtable/table_test.go index ef18c5175533a649504f4d6ade2a43edcda102ff..d0c00092f7750143c09ad2d2171eb4b3a23f8bcc 100644 --- a/routingtable/table_test.go +++ b/routingtable/table_test.go @@ -17,59 +17,59 @@ func TestAddPath(t *testing.T) { { name: "Insert first node", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), }, expected: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), skip: 8, }, }, { name: "Insert duplicate node", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), }, expected: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), skip: 8, }, }, { name: "Insert triangle", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 9), nil), - route.NewRoute(net.NewPfx(strAddr("10.128.0.0"), 9), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 9), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 128, 0, 0), 9), nil), }, expected: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), skip: 8, l: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 9), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 9), nil), }, h: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.128.0.0"), 9), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 128, 0, 0), 9), nil), }, }, }, { name: "Insert disjunct prefixes", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), }, expected: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 7), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 7), nil), skip: 7, dummy: true, l: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), }, h: &node{ - route: route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), skip: 16, }, }, @@ -77,28 +77,28 @@ func TestAddPath(t *testing.T) { { name: "Insert disjunct prefixes plus one child low", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), }, expected: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 7), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 7), nil), skip: 7, dummy: true, l: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), l: &node{ skip: 1, - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), l: &node{ skip: 1, - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), }, }, }, h: &node{ - route: route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), skip: 16, }, }, @@ -106,32 +106,32 @@ func TestAddPath(t *testing.T) { { name: "Insert disjunct prefixes plus one child high", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.128"), 25), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 128), 25), nil), }, expected: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 7), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 7), nil), skip: 7, dummy: true, l: &node{ - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), l: &node{ skip: 1, - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), l: &node{ skip: 1, - route: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), }, }, }, h: &node{ - route: route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), skip: 16, h: &node{ - route: route.NewRoute(net.NewPfx(strAddr("11.100.123.128"), 25), nil), + route: route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 128), 25), nil), }, }, }, @@ -158,67 +158,67 @@ func TestGet(t *testing.T) { { name: "Test 1: Search pfx and dump route + more specifics", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), }, - needle: net.NewPfx(strAddr("10.0.0.0"), 8), - expected: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), + expected: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), }, { name: "Test 2: Search pfx and don't dump more specifics", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), }, - needle: net.NewPfx(strAddr("10.0.0.0"), 8), - expected: route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), + expected: route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), }, { name: "Test 3: Empty table", routes: []*route.Route{}, - needle: net.NewPfx(strAddr("10.0.0.0"), 32), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 32), expected: nil, }, { name: "Test 4: Get Dummy", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), }, - needle: net.NewPfx(strAddr("10.0.0.0"), 7), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 7), expected: nil, }, { name: "Test 5", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), }, - needle: net.NewPfx(strAddr("11.100.123.0"), 24), - expected: route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), + needle: net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), + expected: route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), }, { name: "Test 4: Get nonexistent #1", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), }, - needle: net.NewPfx(strAddr("10.0.0.0"), 10), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), expected: nil, }, { name: "Test 4: Get nonexistent #2", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), }, - needle: net.NewPfx(strAddr("10.0.0.0"), 10), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), expected: nil, }, } @@ -250,22 +250,22 @@ func TestGetLonger(t *testing.T) { { name: "Test 1: Search pfx and dump route + more specifics", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), }, - needle: net.NewPfx(strAddr("10.0.0.0"), 8), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), expected: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), }, }, { name: "Test 2: Empty root", routes: nil, - needle: net.NewPfx(strAddr("10.0.0.0"), 8), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), expected: []*route.Route{}, }, } @@ -297,36 +297,36 @@ func TestLPM(t *testing.T) { { name: "LPM for non-existent route", routes: []*route.Route{}, - needle: net.NewPfx(strAddr("10.0.0.0"), 32), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 32), expected: nil, }, { name: "Positive LPM test", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), }, - needle: net.NewPfx(167772160, 32), // 10.0.0.0/32 + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 32), expected: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), }, }, { name: "Exact match", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("11.100.123.0"), 24), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 12), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 100, 123, 0), 24), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 12), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), }, - needle: net.NewPfx(strAddr("10.0.0.0"), 10), + needle: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), expected: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 8), nil), - route.NewRoute(net.NewPfx(strAddr("10.0.0.0"), 10), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), nil), + route.NewRoute(net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 10), nil), }, }, } @@ -351,30 +351,30 @@ func TestRemovePath(t *testing.T) { { name: "Remove a path that is the only one for a prefix", 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{}, }), @@ -383,28 +383,28 @@ func TestRemovePath(t *testing.T) { { name: "Remove a path that is one of two for a prefix", 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: 1000, }, }), - 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: 2000, }, }), - 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{ @@ -412,17 +412,17 @@ func TestRemovePath(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: 2000, }, }), - 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{}, }), @@ -462,13 +462,13 @@ func TestReplacePath(t *testing.T) { }{ { name: "replace in empty table", - replacePfx: net.NewPfx(strAddr("10.0.0.0"), 8), + replacePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), replacePath: &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{}, }, 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{}, }), @@ -478,22 +478,22 @@ func TestReplacePath(t *testing.T) { { name: "replace not existing prefix with multiple paths", routes: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1001, - NextHop: 101, + NextHop: net.IPv4(101), }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, - replacePfx: net.NewPfx(strAddr("10.0.0.0"), 8), + replacePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), replacePath: &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ @@ -501,23 +501,23 @@ func TestReplacePath(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: 1000, }, }), - newMultiPathRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + newMultiPathRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1001, - NextHop: 101, + NextHop: net.IPv4(101), }, }, &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, @@ -526,34 +526,34 @@ func TestReplacePath(t *testing.T) { { name: "replace existing prefix with multiple paths", 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: 1, }, }), - 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: 2, }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1001, - NextHop: 101, + NextHop: net.IPv4(101), }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, - replacePfx: net.NewPfx(strAddr("10.0.0.0"), 8), + replacePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), replacePath: &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ @@ -561,23 +561,23 @@ func TestReplacePath(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: 1000, }, }), - newMultiPathRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + newMultiPathRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1001, - NextHop: 101, + NextHop: net.IPv4(101), }, }, &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, @@ -624,42 +624,42 @@ func TestRemovePrefix(t *testing.T) { }{ { name: "remove in empty table", - removePfx: net.NewPfx(strAddr("10.0.0.0"), 8), + removePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), expected: []*route.Route{}, expectedOld: nil, }, { name: "remove not exist prefix", 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: 1, }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, - removePfx: net.NewPfx(strAddr("12.0.0.0"), 8), + removePfx: net.NewPfx(net.IPv4FromOctets(12, 0, 0, 0), 8), 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: 1, }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, @@ -668,35 +668,35 @@ func TestRemovePrefix(t *testing.T) { { name: "remove not existing more specific prefix", 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: 1, }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, - removePfx: net.NewPfx(strAddr("10.0.0.0"), 9), + removePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 9), 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: 1, }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, @@ -705,35 +705,35 @@ func TestRemovePrefix(t *testing.T) { { name: "remove not existing more less prefix", 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: 1, }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, - removePfx: net.NewPfx(strAddr("10.0.0.0"), 7), + removePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 7), 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: 1, }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, @@ -742,33 +742,33 @@ func TestRemovePrefix(t *testing.T) { { name: "remove existing prefix", 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: 1, }, }), - 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: 2, }, }), - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, - removePfx: net.NewPfx(strAddr("10.0.0.0"), 8), + removePfx: net.NewPfx(net.IPv4FromOctets(10, 0, 0, 0), 8), expected: []*route.Route{ - route.NewRoute(net.NewPfx(strAddr("11.0.0.0"), 8), &route.Path{ + route.NewRoute(net.NewPfx(net.IPv4FromOctets(11, 0, 0, 0), 8), &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ LocalPref: 1002, - NextHop: 100, + NextHop: net.IPv4(100), }, }), }, @@ -816,8 +816,3 @@ func newMultiPathRoute(pfx net.Prefix, paths ...*route.Path) *route.Route { return r } - -func strAddr(s string) uint32 { - ret, _ := net.StrToAddr(s) - return ret -} diff --git a/routingtable/trie.go b/routingtable/trie.go index 5e719f086ec9b60d1466775d495a34cf35159eed..25a4262e6d4001383c5a2bd095b13d44fd47401b 100644 --- a/routingtable/trie.go +++ b/routingtable/trie.go @@ -14,10 +14,6 @@ type node struct { h *node } -func getBitUint32(x uint32, pos uint8) bool { - return ((x) & (1 << (32 - pos))) != 0 -} - func newNode(pfx net.Prefix, path *route.Path, skip uint8, dummy bool) *node { n := &node{ route: route.NewRoute(pfx, path), @@ -46,7 +42,7 @@ func (n *node) removePath(pfx net.Prefix, p *route.Path) (final bool) { return nPathsAfterDel == 0 } - b := getBitUint32(pfx.Addr(), n.route.Pfxlen()+1) + b := pfx.Addr().BitAtPosition(n.route.Pfxlen() + 1) if !b { return n.l.removePath(pfx, p) } @@ -111,7 +107,7 @@ func (n *node) get(pfx net.Prefix) *node { return nil } - b := getBitUint32(pfx.Addr(), n.route.Pfxlen()+1) + b := pfx.Addr().BitAtPosition(n.route.Pfxlen() + 1) if !b { return n.l.get(pfx) } @@ -136,7 +132,7 @@ func (n *node) addPath(pfx net.Prefix, p *route.Path) (*node, bool) { } // pfx is a subnet of this node - b := getBitUint32(pfx.Addr(), n.route.Pfxlen()+1) + b := pfx.Addr().BitAtPosition(n.route.Pfxlen() + 1) if !b { return n.insertLow(pfx, p, currentPfx.Pfxlen()) @@ -177,7 +173,7 @@ func (n *node) newSuperNode(pfx net.Prefix, p *route.Path) *node { func (n *node) insertChildren(old *node, newPfx net.Prefix, newPath *route.Path) { // Place the old node - b := getBitUint32(old.route.Prefix().Addr(), n.route.Pfxlen()+1) + b := old.route.Prefix().Addr().BitAtPosition(n.route.Pfxlen() + 1) if !b { n.l = old n.l.skip = old.route.Pfxlen() - n.route.Pfxlen() - 1 @@ -188,7 +184,7 @@ func (n *node) insertChildren(old *node, newPfx net.Prefix, newPath *route.Path) // Place the new Prefix newNode := newNode(newPfx, newPath, newPfx.Pfxlen()-n.route.Pfxlen()-1, false) - b = getBitUint32(newPfx.Addr(), n.route.Pfxlen()+1) + b = newPfx.Addr().BitAtPosition(n.route.Pfxlen() + 1) if !b { n.l = newNode } else { @@ -203,7 +199,7 @@ func (n *node) insertBefore(pfx net.Prefix, p *route.Path, parentPfxLen uint8) * skip := n.skip - pfxLenDiff new := newNode(pfx, p, skip, false) - b := getBitUint32(pfx.Addr(), parentPfxLen) + b := pfx.Addr().BitAtPosition(parentPfxLen) if !b { new.l = tmp new.l.skip = tmp.route.Pfxlen() - pfx.Pfxlen() - 1 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) - } - } -} diff --git a/routingtable/update_helper_test.go b/routingtable/update_helper_test.go index 451b983beae4df2ce289b60be0be8d1b7bd7f67a..b6527e39c4180a6a7c2b7788793d8dcdfb6fc7d8 100644 --- a/routingtable/update_helper_test.go +++ b/routingtable/update_helper_test.go @@ -1,7 +1,6 @@ package routingtable import ( - "net" "strings" "testing" @@ -27,7 +26,7 @@ func TestShouldPropagateUpdate(t *testing.T) { communities: "(1,2)", neighbor: Neighbor{ Type: route.BGPPathType, - Address: bnet.IPv4ToUint32(net.ParseIP("192.168.1.1")), + Address: bnet.IPv4FromOctets(192, 168, 1, 1), }, expected: false, }, @@ -74,12 +73,12 @@ func TestShouldPropagateUpdate(t *testing.T) { comms = append(comms, com) } - pfx := bnet.NewPfx(0, 32) + pfx := bnet.NewPfx(bnet.IPv4(0), 32) pa := &route.Path{ Type: route.BGPPathType, BGPPath: &route.BGPPath{ Communities: comms, - Source: bnet.IPv4ToUint32(net.ParseIP("192.168.1.1")), + Source: bnet.IPv4FromOctets(192, 168, 1, 1), }, } diff --git a/vendor/github.com/Masterminds/semver/BUILD.bazel b/vendor/github.com/Masterminds/semver/BUILD.bazel index 501de4ec1a18ecb59402f7b162965c56eb7e8786..bf7d35c81e3bd31ef56f80d8d2d344275048525f 100644 --- a/vendor/github.com/Masterminds/semver/BUILD.bazel +++ b/vendor/github.com/Masterminds/semver/BUILD.bazel @@ -13,7 +13,7 @@ go_library( "union.go", "version.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/Masterminds/semver", + importmap = "vendor/github.com/Masterminds/semver", importpath = "github.com/Masterminds/semver", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/Masterminds/vcs/BUILD.bazel b/vendor/github.com/Masterminds/vcs/BUILD.bazel index 25a38e72e1c0b651fd4486751f6709322a548bef..d5544f95e2f1331450898c29a481e06792b5d39b 100644 --- a/vendor/github.com/Masterminds/vcs/BUILD.bazel +++ b/vendor/github.com/Masterminds/vcs/BUILD.bazel @@ -12,7 +12,7 @@ go_library( "vcs_local_lookup.go", "vcs_remote_lookup.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/Masterminds/vcs", + importmap = "vendor/github.com/Masterminds/vcs", importpath = "github.com/Masterminds/vcs", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/armon/go-radix/BUILD.bazel b/vendor/github.com/armon/go-radix/BUILD.bazel index 7f2d8cc3e915f7a0c611751b8241b96ebe8de8b6..e9b05f2ca2c5d8946a9a3cf1c2b89da835fe36f3 100644 --- a/vendor/github.com/armon/go-radix/BUILD.bazel +++ b/vendor/github.com/armon/go-radix/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["radix.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/armon/go-radix", + importmap = "vendor/github.com/armon/go-radix", importpath = "github.com/armon/go-radix", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/boltdb/bolt/BUILD.bazel b/vendor/github.com/boltdb/bolt/BUILD.bazel index e44ac9afc0e1ddfc14210cb96827ed60647f39ca..f2b6acbede3f24e2a8688c1cc4530f7f1acfca05 100644 --- a/vendor/github.com/boltdb/bolt/BUILD.bazel +++ b/vendor/github.com/boltdb/bolt/BUILD.bazel @@ -26,7 +26,7 @@ go_library( "page.go", "tx.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/boltdb/bolt", + importmap = "vendor/github.com/boltdb/bolt", importpath = "github.com/boltdb/bolt", visibility = ["//visibility:public"], deps = select({ diff --git a/vendor/github.com/davecgh/go-spew/spew/BUILD.bazel b/vendor/github.com/davecgh/go-spew/spew/BUILD.bazel index d2c31e00c111bd66e601740791122d71a8ee0015..be40c1a667e4ae7ee4dfcdcef73efe74d18fa1d6 100644 --- a/vendor/github.com/davecgh/go-spew/spew/BUILD.bazel +++ b/vendor/github.com/davecgh/go-spew/spew/BUILD.bazel @@ -11,7 +11,7 @@ go_library( "format.go", "spew.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/davecgh/go-spew/spew", + importmap = "vendor/github.com/davecgh/go-spew/spew", importpath = "github.com/davecgh/go-spew/spew", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/go-yaml/yaml/BUILD.bazel b/vendor/github.com/go-yaml/yaml/BUILD.bazel index 5a950bd804e1e122e011eb13cb8c4582685cde91..48a837c2d7107a2e2a7b54cf16fb971361188b50 100644 --- a/vendor/github.com/go-yaml/yaml/BUILD.bazel +++ b/vendor/github.com/go-yaml/yaml/BUILD.bazel @@ -17,7 +17,7 @@ go_library( "yamlh.go", "yamlprivateh.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/go-yaml/yaml", + importmap = "vendor/github.com/go-yaml/yaml", importpath = "github.com/go-yaml/yaml", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/golang/dep/BUILD.bazel b/vendor/github.com/golang/dep/BUILD.bazel index 890fa4720a4a2120b76bc0185988a2b6ae3a2f2d..e5fa67015561b614abde2a9c800c3c5acb116bf6 100644 --- a/vendor/github.com/golang/dep/BUILD.bazel +++ b/vendor/github.com/golang/dep/BUILD.bazel @@ -11,7 +11,7 @@ go_library( "project.go", "txn_writer.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep", + importmap = "vendor/github.com/golang/dep", importpath = "github.com/golang/dep", visibility = ["//visibility:public"], deps = [ diff --git a/vendor/github.com/golang/dep/cmd/dep/BUILD.bazel b/vendor/github.com/golang/dep/cmd/dep/BUILD.bazel index a60622cd81dea5af0951ef405047ff4e11d337d6..69276c90879818b0f1c81b25ce3b032c3413579c 100644 --- a/vendor/github.com/golang/dep/cmd/dep/BUILD.bazel +++ b/vendor/github.com/golang/dep/cmd/dep/BUILD.bazel @@ -16,7 +16,7 @@ go_library( "status.go", "version.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/cmd/dep", + importmap = "vendor/github.com/golang/dep/cmd/dep", importpath = "github.com/golang/dep/cmd/dep", visibility = ["//visibility:private"], deps = [ diff --git a/vendor/github.com/golang/dep/gps/BUILD.bazel b/vendor/github.com/golang/dep/gps/BUILD.bazel index 7665f62fa3acc65e4e4af1f5e7289b4fa21a1d1e..a86871b51919587edbcb2c8baadfe45d60f29732 100644 --- a/vendor/github.com/golang/dep/gps/BUILD.bazel +++ b/vendor/github.com/golang/dep/gps/BUILD.bazel @@ -42,7 +42,7 @@ go_library( "version_queue.go", "version_unifier.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/gps", + importmap = "vendor/github.com/golang/dep/gps", importpath = "github.com/golang/dep/gps", visibility = ["//visibility:public"], deps = [ diff --git a/vendor/github.com/golang/dep/gps/internal/pb/BUILD.bazel b/vendor/github.com/golang/dep/gps/internal/pb/BUILD.bazel index 490ae09fcfcbb1cb4baf3c4142a924ade5dc759b..fafa65ddf55f1bb7cb543eee99e6d98b0976a4fe 100644 --- a/vendor/github.com/golang/dep/gps/internal/pb/BUILD.bazel +++ b/vendor/github.com/golang/dep/gps/internal/pb/BUILD.bazel @@ -6,7 +6,7 @@ go_library( "pb.go", "source_cache.pb.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/gps/internal/pb", + importmap = "vendor/github.com/golang/dep/gps/internal/pb", importpath = "github.com/golang/dep/gps/internal/pb", visibility = ["//vendor/github.com/golang/dep/gps:__subpackages__"], deps = ["//vendor/github.com/golang/protobuf/proto:go_default_library"], diff --git a/vendor/github.com/golang/dep/gps/paths/BUILD.bazel b/vendor/github.com/golang/dep/gps/paths/BUILD.bazel index dcac6f2b33ff5c3245996af0d01260be7705ef60..4dad14b3c38fe2737a8e1fc1f0d3f28bd00cc7db 100644 --- a/vendor/github.com/golang/dep/gps/paths/BUILD.bazel +++ b/vendor/github.com/golang/dep/gps/paths/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["paths.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/gps/paths", + importmap = "vendor/github.com/golang/dep/gps/paths", importpath = "github.com/golang/dep/gps/paths", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/golang/dep/gps/pkgtree/BUILD.bazel b/vendor/github.com/golang/dep/gps/pkgtree/BUILD.bazel index c6e0d12728171e1fa7b93294ff5b28d1bd991131..2c64bdfad3ed5ced70decbd41a3279534b283e7d 100644 --- a/vendor/github.com/golang/dep/gps/pkgtree/BUILD.bazel +++ b/vendor/github.com/golang/dep/gps/pkgtree/BUILD.bazel @@ -9,7 +9,7 @@ go_library( "pkgtree.go", "reachmap.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/gps/pkgtree", + importmap = "vendor/github.com/golang/dep/gps/pkgtree", importpath = "github.com/golang/dep/gps/pkgtree", visibility = ["//visibility:public"], deps = [ diff --git a/vendor/github.com/golang/dep/hack/licenseok/BUILD.bazel b/vendor/github.com/golang/dep/hack/licenseok/BUILD.bazel index 269168018559980ff3c2879c2ce532ba049f2ab8..f1194382b165c29f44dab43eb11adfeb75f28947 100644 --- a/vendor/github.com/golang/dep/hack/licenseok/BUILD.bazel +++ b/vendor/github.com/golang/dep/hack/licenseok/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library") go_library( name = "go_default_library", srcs = ["main.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/hack/licenseok", + importmap = "vendor/github.com/golang/dep/hack/licenseok", importpath = "github.com/golang/dep/hack/licenseok", visibility = ["//visibility:private"], ) diff --git a/vendor/github.com/golang/dep/internal/feedback/BUILD.bazel b/vendor/github.com/golang/dep/internal/feedback/BUILD.bazel index 4fe3726b2ec3382412446ea04c99489498b26947..10a231192ad633adb6101fb572486d4749df5348 100644 --- a/vendor/github.com/golang/dep/internal/feedback/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/feedback/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["feedback.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/feedback", + importmap = "vendor/github.com/golang/dep/internal/feedback", importpath = "github.com/golang/dep/internal/feedback", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = ["//vendor/github.com/golang/dep/gps:go_default_library"], diff --git a/vendor/github.com/golang/dep/internal/fs/BUILD.bazel b/vendor/github.com/golang/dep/internal/fs/BUILD.bazel index 418f2d3ca5a255edce129a788cbcbba3789a9afb..10e60f08a648cf669b64ce6bd9bfafe06f771ecf 100644 --- a/vendor/github.com/golang/dep/internal/fs/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/fs/BUILD.bazel @@ -7,7 +7,7 @@ go_library( "rename.go", "rename_windows.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/fs", + importmap = "vendor/github.com/golang/dep/internal/fs", importpath = "github.com/golang/dep/internal/fs", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = ["//vendor/github.com/pkg/errors:go_default_library"], diff --git a/vendor/github.com/golang/dep/internal/importers/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/BUILD.bazel index 153c3a59ba280c35fcd483faab8118a2920759cb..7d4330ccf931e7f74c62cd00aa46394a11c6f2cf 100644 --- a/vendor/github.com/golang/dep/internal/importers/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importers.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers", + importmap = "vendor/github.com/golang/dep/internal/importers", importpath = "github.com/golang/dep/internal/importers", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/base/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/base/BUILD.bazel index e0689249cb4847e0938446e324e8b4034c7f0611..dd342c3138c515f98e89b5d317e4c2a4392e86ee 100644 --- a/vendor/github.com/golang/dep/internal/importers/base/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/base/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importer.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/base", + importmap = "vendor/github.com/golang/dep/internal/importers/base", importpath = "github.com/golang/dep/internal/importers/base", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/glide/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/glide/BUILD.bazel index dc945ddeff342fe9db78e8022f277fc16286a5e6..68dd5efb0f014d6d76f99c6140c92415746579d1 100644 --- a/vendor/github.com/golang/dep/internal/importers/glide/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/glide/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importer.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/glide", + importmap = "vendor/github.com/golang/dep/internal/importers/glide", importpath = "github.com/golang/dep/internal/importers/glide", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/glock/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/glock/BUILD.bazel index 00a24a995074874944d7b62b4ed47caccde030c2..43742756bfa5bc9dd7e67eefba01dbc4aef1b0dc 100644 --- a/vendor/github.com/golang/dep/internal/importers/glock/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/glock/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importer.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/glock", + importmap = "vendor/github.com/golang/dep/internal/importers/glock", importpath = "github.com/golang/dep/internal/importers/glock", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/godep/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/godep/BUILD.bazel index 0f244ede8c70f163eb94f70cf74596278b68efd4..86849a916d4e605a9553e181c7510e4f4c568323 100644 --- a/vendor/github.com/golang/dep/internal/importers/godep/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/godep/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importer.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/godep", + importmap = "vendor/github.com/golang/dep/internal/importers/godep", importpath = "github.com/golang/dep/internal/importers/godep", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/govend/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/govend/BUILD.bazel index 58ed9c5b0f6bd2f79ba5efd796f6cc949b758dee..dd3d3b485805eacbc3b011be4f98173da9eff411 100644 --- a/vendor/github.com/golang/dep/internal/importers/govend/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/govend/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importer.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/govend", + importmap = "vendor/github.com/golang/dep/internal/importers/govend", importpath = "github.com/golang/dep/internal/importers/govend", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/govendor/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/govendor/BUILD.bazel index b48ee6f19cd6dcdf60dfc0706c3e58b1c6b5338e..26dc082e35140e1a1cadae8d476b2e77dfda74dc 100644 --- a/vendor/github.com/golang/dep/internal/importers/govendor/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/govendor/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importer.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/govendor", + importmap = "vendor/github.com/golang/dep/internal/importers/govendor", importpath = "github.com/golang/dep/internal/importers/govendor", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/gvt/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/gvt/BUILD.bazel index 425445f1033972fc1e1d63708eb5bc51db560471..a22b94389803339fef8f522821396691f737b390 100644 --- a/vendor/github.com/golang/dep/internal/importers/gvt/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/gvt/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importer.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/gvt", + importmap = "vendor/github.com/golang/dep/internal/importers/gvt", importpath = "github.com/golang/dep/internal/importers/gvt", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/importertest/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/importertest/BUILD.bazel index 507928a84cacb8c562bba675e646690f1736e0c0..e11ed7d2475cc3a5a42a178e33728d2809620c92 100644 --- a/vendor/github.com/golang/dep/internal/importers/importertest/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/importertest/BUILD.bazel @@ -6,7 +6,7 @@ go_library( "testcase.go", "testdata.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/importertest", + importmap = "vendor/github.com/golang/dep/internal/importers/importertest", importpath = "github.com/golang/dep/internal/importers/importertest", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/importers/vndr/BUILD.bazel b/vendor/github.com/golang/dep/internal/importers/vndr/BUILD.bazel index 8e40fcceda4d29f0c7e59b2d27d0e39257ee37d3..72cc72322cd432346ce7b4957849265c881b1630 100644 --- a/vendor/github.com/golang/dep/internal/importers/vndr/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/importers/vndr/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["importer.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/importers/vndr", + importmap = "vendor/github.com/golang/dep/internal/importers/vndr", importpath = "github.com/golang/dep/internal/importers/vndr", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/dep/internal/test/BUILD.bazel b/vendor/github.com/golang/dep/internal/test/BUILD.bazel index 4017b6da593c40bf1fe206c6f933e92c4868314d..b0e3e57fc044d5e118565efaba0f0e073065bda9 100644 --- a/vendor/github.com/golang/dep/internal/test/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/test/BUILD.bazel @@ -6,7 +6,7 @@ go_library( "test.go", "writer.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/test", + importmap = "vendor/github.com/golang/dep/internal/test", importpath = "github.com/golang/dep/internal/test", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = ["//vendor/github.com/pkg/errors:go_default_library"], diff --git a/vendor/github.com/golang/dep/internal/test/integration/BUILD.bazel b/vendor/github.com/golang/dep/internal/test/integration/BUILD.bazel index a2c964aa02019fd22c24c30437094faf04d77099..928ded317b831494f4d9b5494efa1ef31af64be3 100644 --- a/vendor/github.com/golang/dep/internal/test/integration/BUILD.bazel +++ b/vendor/github.com/golang/dep/internal/test/integration/BUILD.bazel @@ -6,7 +6,7 @@ go_library( "testcase.go", "testproj.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/dep/internal/test/integration", + importmap = "vendor/github.com/golang/dep/internal/test/integration", importpath = "github.com/golang/dep/internal/test/integration", visibility = ["//vendor/github.com/golang/dep:__subpackages__"], deps = [ diff --git a/vendor/github.com/golang/protobuf/proto/BUILD.bazel b/vendor/github.com/golang/protobuf/proto/BUILD.bazel index 9d5aafd83380464a9f48c492698a8a01d0f5f8d6..98590c1c2793ef88a7790d37a8241c2b0d16d8e5 100644 --- a/vendor/github.com/golang/protobuf/proto/BUILD.bazel +++ b/vendor/github.com/golang/protobuf/proto/BUILD.bazel @@ -19,7 +19,7 @@ go_library( "text.go", "text_parser.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/golang/protobuf/proto", + importmap = "vendor/github.com/golang/protobuf/proto", importpath = "github.com/golang/protobuf/proto", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/jmank88/nuts/BUILD.bazel b/vendor/github.com/jmank88/nuts/BUILD.bazel index 72db5e47f7dcd7c8f03d5c429368e22ca71631be..920f2b554e5325aafe6d1eec46e28aa4a9f79771 100644 --- a/vendor/github.com/jmank88/nuts/BUILD.bazel +++ b/vendor/github.com/jmank88/nuts/BUILD.bazel @@ -8,7 +8,7 @@ go_library( "paths.go", "types.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/jmank88/nuts", + importmap = "vendor/github.com/jmank88/nuts", importpath = "github.com/jmank88/nuts", visibility = ["//visibility:public"], deps = ["//vendor/github.com/boltdb/bolt:go_default_library"], diff --git a/vendor/github.com/nightlyone/lockfile/BUILD.bazel b/vendor/github.com/nightlyone/lockfile/BUILD.bazel index 8b1c688bca89ed5bb9caae81fdab35cd1c912209..0a74fcf8fb203c8ffa147d183c97661a0f8faf92 100644 --- a/vendor/github.com/nightlyone/lockfile/BUILD.bazel +++ b/vendor/github.com/nightlyone/lockfile/BUILD.bazel @@ -7,7 +7,7 @@ go_library( "lockfile_unix.go", "lockfile_windows.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/nightlyone/lockfile", + importmap = "vendor/github.com/nightlyone/lockfile", importpath = "github.com/nightlyone/lockfile", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/pelletier/go-toml/BUILD.bazel b/vendor/github.com/pelletier/go-toml/BUILD.bazel index 8130328c049d880232a298fb7213cc55e10e50d7..526e4aeca6d915a4f18a420ac9de331d194e34dd 100644 --- a/vendor/github.com/pelletier/go-toml/BUILD.bazel +++ b/vendor/github.com/pelletier/go-toml/BUILD.bazel @@ -14,7 +14,7 @@ go_library( "tomltree_create.go", "tomltree_write.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/pelletier/go-toml", + importmap = "vendor/github.com/pelletier/go-toml", importpath = "github.com/pelletier/go-toml", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/pkg/errors/BUILD.bazel b/vendor/github.com/pkg/errors/BUILD.bazel index b1eb9941074b0da6982111f122d750abafa7b994..02e03382df2b88e8d286b8ee8eccb0d9ea754a28 100644 --- a/vendor/github.com/pkg/errors/BUILD.bazel +++ b/vendor/github.com/pkg/errors/BUILD.bazel @@ -6,7 +6,7 @@ go_library( "errors.go", "stack.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/pkg/errors", + importmap = "vendor/github.com/pkg/errors", importpath = "github.com/pkg/errors", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/pmezard/go-difflib/difflib/BUILD.bazel b/vendor/github.com/pmezard/go-difflib/difflib/BUILD.bazel index 8a8fca20454989179efb5cfa46a8542fc30c5845..f6d4fa72e45f482c4cb676837b518e6d5be14450 100644 --- a/vendor/github.com/pmezard/go-difflib/difflib/BUILD.bazel +++ b/vendor/github.com/pmezard/go-difflib/difflib/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["difflib.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/pmezard/go-difflib/difflib", + importmap = "vendor/github.com/pmezard/go-difflib/difflib", importpath = "github.com/pmezard/go-difflib/difflib", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/q3k/goveralls/BUILD.bazel b/vendor/github.com/q3k/goveralls/BUILD.bazel index df180746db3e3d43e3b4692f17747a679186c80b..04249c71ebd3067a7084271ba6fc909d316ae87b 100644 --- a/vendor/github.com/q3k/goveralls/BUILD.bazel +++ b/vendor/github.com/q3k/goveralls/BUILD.bazel @@ -7,7 +7,7 @@ go_library( "gocover.go", "goveralls.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/q3k/goveralls", + importmap = "vendor/github.com/q3k/goveralls", importpath = "github.com/q3k/goveralls", visibility = ["//visibility:private"], deps = ["//vendor/golang.org/x/tools/cover:go_default_library"], diff --git a/vendor/github.com/sdboyer/constext/BUILD.bazel b/vendor/github.com/sdboyer/constext/BUILD.bazel index effb8ca864561db47f40692afd71632eddebf5d5..ee94b66945d935ba8431de6870cfd7947ffe3d84 100644 --- a/vendor/github.com/sdboyer/constext/BUILD.bazel +++ b/vendor/github.com/sdboyer/constext/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["constext.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/sdboyer/constext", + importmap = "vendor/github.com/sdboyer/constext", importpath = "github.com/sdboyer/constext", visibility = ["//visibility:public"], ) diff --git a/vendor/github.com/sirupsen/logrus/BUILD.bazel b/vendor/github.com/sirupsen/logrus/BUILD.bazel index 57ae49599a33ea71cb1c88dfbee68b1c92cde40a..8ddbd66e796eca4e59145cca34fc95cdc257feca 100644 --- a/vendor/github.com/sirupsen/logrus/BUILD.bazel +++ b/vendor/github.com/sirupsen/logrus/BUILD.bazel @@ -18,7 +18,7 @@ go_library( "text_formatter.go", "writer.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/sirupsen/logrus", + importmap = "vendor/github.com/sirupsen/logrus", importpath = "github.com/sirupsen/logrus", visibility = ["//visibility:public"], deps = [ diff --git a/vendor/github.com/stretchr/testify/assert/BUILD.bazel b/vendor/github.com/stretchr/testify/assert/BUILD.bazel index 5fc04335b69097cb28abf6363cbc53e98a917aa6..84915770c4ea7ff0b7db3bd5f755c5a8f5c7df3f 100644 --- a/vendor/github.com/stretchr/testify/assert/BUILD.bazel +++ b/vendor/github.com/stretchr/testify/assert/BUILD.bazel @@ -11,7 +11,7 @@ go_library( "forward_assertions.go", "http_assertions.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/stretchr/testify/assert", + importmap = "vendor/github.com/stretchr/testify/assert", importpath = "github.com/stretchr/testify/assert", visibility = ["//visibility:public"], deps = [ diff --git a/vendor/github.com/taktv6/tflow2/convert/BUILD.bazel b/vendor/github.com/taktv6/tflow2/convert/BUILD.bazel index 5506643341e1e3a4ea891167b92208d92d0931cb..b6d8a418d173754e2d28152a5a674c26ad27a76e 100644 --- a/vendor/github.com/taktv6/tflow2/convert/BUILD.bazel +++ b/vendor/github.com/taktv6/tflow2/convert/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["convert.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/github.com/taktv6/tflow2/convert", + importmap = "vendor/github.com/taktv6/tflow2/convert", importpath = "github.com/taktv6/tflow2/convert", visibility = ["//visibility:public"], ) diff --git a/vendor/golang.org/x/crypto/ssh/terminal/BUILD.bazel b/vendor/golang.org/x/crypto/ssh/terminal/BUILD.bazel index f1dbddae821cfbbdda8f70941472708f75ddf41d..593a697cd9117b5d197fa40ea741b4da68685b20 100644 --- a/vendor/golang.org/x/crypto/ssh/terminal/BUILD.bazel +++ b/vendor/golang.org/x/crypto/ssh/terminal/BUILD.bazel @@ -11,7 +11,7 @@ go_library( "util_solaris.go", "util_windows.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/golang.org/x/crypto/ssh/terminal", + importmap = "vendor/golang.org/x/crypto/ssh/terminal", importpath = "golang.org/x/crypto/ssh/terminal", visibility = ["//visibility:public"], deps = select({ diff --git a/vendor/golang.org/x/net/context/BUILD.bazel b/vendor/golang.org/x/net/context/BUILD.bazel index 8a09a3615ea3ef3a023ed3ca7a5dc82d3b7ca79d..79dde6dff60ca5ed498faadc52bc0af430537f4b 100644 --- a/vendor/golang.org/x/net/context/BUILD.bazel +++ b/vendor/golang.org/x/net/context/BUILD.bazel @@ -9,7 +9,7 @@ go_library( "pre_go17.go", "pre_go19.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/golang.org/x/net/context", + importmap = "vendor/golang.org/x/net/context", importpath = "golang.org/x/net/context", visibility = ["//visibility:public"], ) diff --git a/vendor/golang.org/x/sync/errgroup/BUILD.bazel b/vendor/golang.org/x/sync/errgroup/BUILD.bazel index 9090cd0a8fb216e140ee77e5f9410f28874be014..50a4d6452a81b27bafb5accd7f061473c3175315 100644 --- a/vendor/golang.org/x/sync/errgroup/BUILD.bazel +++ b/vendor/golang.org/x/sync/errgroup/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["errgroup.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/golang.org/x/sync/errgroup", + importmap = "vendor/golang.org/x/sync/errgroup", importpath = "golang.org/x/sync/errgroup", visibility = ["//visibility:public"], deps = ["//vendor/golang.org/x/net/context:go_default_library"], diff --git a/vendor/golang.org/x/sys/unix/BUILD.bazel b/vendor/golang.org/x/sys/unix/BUILD.bazel index aa6151ab66e8e90b6f8e8cc946dc94fb1bf41e1b..a2505682d8e61d2ebcde3fe2affc8334f0f1417d 100644 --- a/vendor/golang.org/x/sys/unix/BUILD.bazel +++ b/vendor/golang.org/x/sys/unix/BUILD.bazel @@ -200,7 +200,7 @@ go_library( "ztypes_solaris_amd64.go", ], cgo = True, - importmap = "github.com/bio-routing/bio-rd/vendor/golang.org/x/sys/unix", + importmap = "vendor/golang.org/x/sys/unix", importpath = "golang.org/x/sys/unix", visibility = ["//visibility:public"], ) diff --git a/vendor/golang.org/x/sys/windows/BUILD.bazel b/vendor/golang.org/x/sys/windows/BUILD.bazel index b4ed609cba4449ca6cb18529dcb491fd705d808c..8dd57def4faf7ccff521cb81875e463962b42fe9 100644 --- a/vendor/golang.org/x/sys/windows/BUILD.bazel +++ b/vendor/golang.org/x/sys/windows/BUILD.bazel @@ -22,7 +22,7 @@ go_library( "types_windows_amd64.go", "zsyscall_windows.go", ], - importmap = "github.com/bio-routing/bio-rd/vendor/golang.org/x/sys/windows", + importmap = "vendor/golang.org/x/sys/windows", importpath = "golang.org/x/sys/windows", visibility = ["//visibility:public"], ) diff --git a/vendor/golang.org/x/tools/cover/BUILD.bazel b/vendor/golang.org/x/tools/cover/BUILD.bazel index 85feea167867389c8dcfe6a82669ea915359276f..599c3ebc6b9e73701e26299c299a4694e20d0ff2 100644 --- a/vendor/golang.org/x/tools/cover/BUILD.bazel +++ b/vendor/golang.org/x/tools/cover/BUILD.bazel @@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library") go_library( name = "go_default_library", srcs = ["profile.go"], - importmap = "github.com/bio-routing/bio-rd/vendor/golang.org/x/tools/cover", + importmap = "vendor/golang.org/x/tools/cover", importpath = "golang.org/x/tools/cover", visibility = ["//visibility:public"], )