summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/isisd/test_fuzz_isis_tlv_tests.h.gzbin221875 -> 221883 bytes
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step1/show_ipv6_route.ref16
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_healthy.ref16
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt2_down.ref16
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt3_down.ref16
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/zebra.conf2
-rw-r--r--tests/topotests/bfd_isis_topo1/rt2/zebra.conf2
-rw-r--r--tests/topotests/bfd_isis_topo1/rt3/zebra.conf2
-rw-r--r--tests/topotests/bfd_isis_topo1/rt4/zebra.conf2
-rw-r--r--tests/topotests/bfd_isis_topo1/rt5/zebra.conf2
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step1/show_ipv6_route.ref16
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_healthy.ref16
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt2_down.ref16
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt3_down.ref16
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/zebra.conf2
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt2/zebra.conf2
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt3/zebra.conf2
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt4/zebra.conf2
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt5/zebra.conf2
-rw-r--r--tests/topotests/bgp_aigp/r1/bgpd.conf16
-rw-r--r--tests/topotests/bgp_aigp/r1/ospfd.conf2
-rw-r--r--tests/topotests/bgp_aigp/r1/zebra.conf3
-rw-r--r--tests/topotests/bgp_aigp/r2/bgpd.conf2
-rw-r--r--tests/topotests/bgp_aigp/r2/ospfd.conf2
-rw-r--r--tests/topotests/bgp_aigp/r3/bgpd.conf2
-rw-r--r--tests/topotests/bgp_aigp/r3/ospfd.conf2
-rw-r--r--tests/topotests/bgp_aigp/r4/bgpd.conf23
-rw-r--r--tests/topotests/bgp_aigp/r4/ospfd.conf2
-rw-r--r--tests/topotests/bgp_aigp/r5/bgpd.conf16
-rw-r--r--tests/topotests/bgp_aigp/r5/ospfd.conf2
-rw-r--r--tests/topotests/bgp_aigp/r6/bgpd.conf8
-rw-r--r--tests/topotests/bgp_aigp/r6/ospfd.conf2
-rw-r--r--tests/topotests/bgp_aigp/r6/zebra.conf1
-rw-r--r--tests/topotests/bgp_aigp/r8/bgpd.conf4
-rw-r--r--tests/topotests/bgp_aigp/r8/zebra.conf4
-rw-r--r--tests/topotests/bgp_aigp/test_bgp_aigp.py125
-rw-r--r--tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py6
-rw-r--r--tests/topotests/bgp_ipv4_over_ipv6/test_rfc5549_ebgp_unnumbered_nbr.py4
-rw-r--r--tests/topotests/bgp_match_peer/r1/frr.conf6
-rw-r--r--tests/topotests/bgp_match_peer/test_bgp_match_peer.py23
-rw-r--r--tests/topotests/bgp_nexthop_ipv6/r4/show_bgp_ipv6_step2.json48
-rw-r--r--tests/topotests/bgp_nexthop_ipv6/r5/show_bgp_ipv6_step2.json48
-rw-r--r--tests/topotests/bgp_set_metric_igp/__init__.py0
-rw-r--r--tests/topotests/bgp_set_metric_igp/r1/frr.conf13
-rw-r--r--tests/topotests/bgp_set_metric_igp/r2/frr.conf36
-rw-r--r--tests/topotests/bgp_set_metric_igp/r3/frr.conf38
-rw-r--r--tests/topotests/bgp_set_metric_igp/r4/frr.conf41
-rw-r--r--tests/topotests/bgp_set_metric_igp/r5/frr.conf14
-rw-r--r--tests/topotests/bgp_set_metric_igp/test_bgp_set_metric_igp.py146
-rw-r--r--tests/topotests/lib/common_check.py2
50 files changed, 588 insertions, 201 deletions
diff --git a/tests/isisd/test_fuzz_isis_tlv_tests.h.gz b/tests/isisd/test_fuzz_isis_tlv_tests.h.gz
index 05e9f723a1..902b671b32 100644
--- a/tests/isisd/test_fuzz_isis_tlv_tests.h.gz
+++ b/tests/isisd/test_fuzz_isis_tlv_tests.h.gz
Binary files differ
diff --git a/tests/topotests/bfd_isis_topo1/rt1/step1/show_ipv6_route.ref b/tests/topotests/bfd_isis_topo1/rt1/step1/show_ipv6_route.ref
index 68d3fe2c44..a760f1c249 100644
--- a/tests/topotests/bfd_isis_topo1/rt1/step1/show_ipv6_route.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step1/show_ipv6_route.ref
@@ -1,7 +1,7 @@
{
- "::ffff:202:202\/128":[
+ "::ffff:2.2.2.2\/128":[
{
- "prefix":"::ffff:202:202\/128",
+ "prefix":"::ffff:2.2.2.2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -16,9 +16,9 @@
]
}
],
- "::ffff:303:303\/128":[
+ "::ffff:3.3.3.3\/128":[
{
- "prefix":"::ffff:303:303\/128",
+ "prefix":"::ffff:3.3.3.3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -33,9 +33,9 @@
]
}
],
- "::ffff:404:404\/128":[
+ "::ffff:4.4.4.4\/128":[
{
- "prefix":"::ffff:404:404\/128",
+ "prefix":"::ffff:4.4.4.4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -50,9 +50,9 @@
]
}
],
- "::ffff:505:505\/128":[
+ "::ffff:5.5.5.5\/128":[
{
- "prefix":"::ffff:505:505\/128",
+ "prefix":"::ffff:5.5.5.5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
diff --git a/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_healthy.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_healthy.ref
index 68d3fe2c44..a760f1c249 100644
--- a/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_healthy.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_healthy.ref
@@ -1,7 +1,7 @@
{
- "::ffff:202:202\/128":[
+ "::ffff:2.2.2.2\/128":[
{
- "prefix":"::ffff:202:202\/128",
+ "prefix":"::ffff:2.2.2.2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -16,9 +16,9 @@
]
}
],
- "::ffff:303:303\/128":[
+ "::ffff:3.3.3.3\/128":[
{
- "prefix":"::ffff:303:303\/128",
+ "prefix":"::ffff:3.3.3.3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -33,9 +33,9 @@
]
}
],
- "::ffff:404:404\/128":[
+ "::ffff:4.4.4.4\/128":[
{
- "prefix":"::ffff:404:404\/128",
+ "prefix":"::ffff:4.4.4.4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -50,9 +50,9 @@
]
}
],
- "::ffff:505:505\/128":[
+ "::ffff:5.5.5.5\/128":[
{
- "prefix":"::ffff:505:505\/128",
+ "prefix":"::ffff:5.5.5.5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
diff --git a/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt2_down.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt2_down.ref
index 200053c3e8..1168765457 100644
--- a/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt2_down.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt2_down.ref
@@ -1,7 +1,7 @@
{
- "::ffff:202:202\/128":[
+ "::ffff:2.2.2.2\/128":[
{
- "prefix":"::ffff:202:202\/128",
+ "prefix":"::ffff:2.2.2.2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -16,9 +16,9 @@
]
}
],
- "::ffff:303:303\/128":[
+ "::ffff:3.3.3.3\/128":[
{
- "prefix":"::ffff:303:303\/128",
+ "prefix":"::ffff:3.3.3.3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -33,9 +33,9 @@
]
}
],
- "::ffff:404:404\/128":[
+ "::ffff:4.4.4.4\/128":[
{
- "prefix":"::ffff:404:404\/128",
+ "prefix":"::ffff:4.4.4.4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -50,9 +50,9 @@
]
}
],
- "::ffff:505:505\/128":[
+ "::ffff:5.5.5.5\/128":[
{
- "prefix":"::ffff:505:505\/128",
+ "prefix":"::ffff:5.5.5.5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
diff --git a/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt3_down.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt3_down.ref
index 4297f163b5..3e8505e79b 100644
--- a/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt3_down.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt3_down.ref
@@ -1,7 +1,7 @@
{
- "::ffff:202:202\/128":[
+ "::ffff:2.2.2.2\/128":[
{
- "prefix":"::ffff:202:202\/128",
+ "prefix":"::ffff:2.2.2.2\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -16,9 +16,9 @@
]
}
],
- "::ffff:303:303\/128":[
+ "::ffff:3.3.3.3\/128":[
{
- "prefix":"::ffff:303:303\/128",
+ "prefix":"::ffff:3.3.3.3\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -33,9 +33,9 @@
]
}
],
- "::ffff:404:404\/128":[
+ "::ffff:4.4.4.4\/128":[
{
- "prefix":"::ffff:404:404\/128",
+ "prefix":"::ffff:4.4.4.4\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
@@ -50,9 +50,9 @@
]
}
],
- "::ffff:505:505\/128":[
+ "::ffff:5.5.5.5\/128":[
{
- "prefix":"::ffff:505:505\/128",
+ "prefix":"::ffff:5.5.5.5\/128",
"protocol":"isis",
"selected":true,
"destSelected":true,
diff --git a/tests/topotests/bfd_isis_topo1/rt1/zebra.conf b/tests/topotests/bfd_isis_topo1/rt1/zebra.conf
index 7e6f7881b4..bf2428e625 100644
--- a/tests/topotests/bfd_isis_topo1/rt1/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt1/zebra.conf
@@ -10,7 +10,7 @@ hostname rt1
!
interface lo
ip address 1.1.1.1/32
- ipv6 address ::ffff:0101:0101/128
+ ipv6 address ::ffff:1.1.1.1/128
!
interface eth-rt2
ip address 10.0.1.1/24
diff --git a/tests/topotests/bfd_isis_topo1/rt2/zebra.conf b/tests/topotests/bfd_isis_topo1/rt2/zebra.conf
index 5788e31f12..1670c20506 100644
--- a/tests/topotests/bfd_isis_topo1/rt2/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt2/zebra.conf
@@ -7,7 +7,7 @@ hostname rt2
!
interface lo
ip address 2.2.2.2/32
- ipv6 address ::ffff:0202:0202/128
+ ipv6 address ::ffff:2.2.2.2/128
!
interface eth-rt1
ip address 10.0.1.2/24
diff --git a/tests/topotests/bfd_isis_topo1/rt3/zebra.conf b/tests/topotests/bfd_isis_topo1/rt3/zebra.conf
index 78eac2e15a..d59085560f 100644
--- a/tests/topotests/bfd_isis_topo1/rt3/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt3/zebra.conf
@@ -7,7 +7,7 @@ hostname rt3
!
interface lo
ip address 3.3.3.3/32
- ipv6 address ::ffff:0303:0303/128
+ ipv6 address ::ffff:3.3.3.3/128
!
interface eth-rt1
ip address 10.0.2.2/24
diff --git a/tests/topotests/bfd_isis_topo1/rt4/zebra.conf b/tests/topotests/bfd_isis_topo1/rt4/zebra.conf
index a6cb573ed8..66121662dd 100644
--- a/tests/topotests/bfd_isis_topo1/rt4/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt4/zebra.conf
@@ -7,7 +7,7 @@ hostname rt4
!
interface lo
ip address 4.4.4.4/32
- ipv6 address ::ffff:0404:0404/128
+ ipv6 address ::ffff:4.4.4.4/128
!
interface eth-rt3
ip address 10.0.4.2/24
diff --git a/tests/topotests/bfd_isis_topo1/rt5/zebra.conf b/tests/topotests/bfd_isis_topo1/rt5/zebra.conf
index 33473c91a3..d3331b5b6c 100644
--- a/tests/topotests/bfd_isis_topo1/rt5/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt5/zebra.conf
@@ -7,7 +7,7 @@ hostname rt5
!
interface lo
ip address 5.5.5.5/32
- ipv6 address ::ffff:0505:0505/128
+ ipv6 address ::ffff:5.5.5.5/128
!
interface eth-rt2
ip address 10.0.3.2/24
diff --git a/tests/topotests/bfd_ospf_topo1/rt1/step1/show_ipv6_route.ref b/tests/topotests/bfd_ospf_topo1/rt1/step1/show_ipv6_route.ref
index 6465efb8b5..0526d8a6af 100644
--- a/tests/topotests/bfd_ospf_topo1/rt1/step1/show_ipv6_route.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step1/show_ipv6_route.ref
@@ -1,7 +1,7 @@
{
- "::ffff:202:202\/128":[
+ "::ffff:2.2.2.2\/128":[
{
- "prefix":"::ffff:202:202\/128",
+ "prefix":"::ffff:2.2.2.2\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -16,9 +16,9 @@
]
}
],
- "::ffff:303:303\/128":[
+ "::ffff:3.3.3.3\/128":[
{
- "prefix":"::ffff:303:303\/128",
+ "prefix":"::ffff:3.3.3.3\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -33,9 +33,9 @@
]
}
],
- "::ffff:404:404\/128":[
+ "::ffff:4.4.4.4\/128":[
{
- "prefix":"::ffff:404:404\/128",
+ "prefix":"::ffff:4.4.4.4\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -50,9 +50,9 @@
]
}
],
- "::ffff:505:505\/128":[
+ "::ffff:5.5.5.5\/128":[
{
- "prefix":"::ffff:505:505\/128",
+ "prefix":"::ffff:5.5.5.5\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
diff --git a/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_healthy.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_healthy.ref
index 6465efb8b5..0526d8a6af 100644
--- a/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_healthy.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_healthy.ref
@@ -1,7 +1,7 @@
{
- "::ffff:202:202\/128":[
+ "::ffff:2.2.2.2\/128":[
{
- "prefix":"::ffff:202:202\/128",
+ "prefix":"::ffff:2.2.2.2\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -16,9 +16,9 @@
]
}
],
- "::ffff:303:303\/128":[
+ "::ffff:3.3.3.3\/128":[
{
- "prefix":"::ffff:303:303\/128",
+ "prefix":"::ffff:3.3.3.3\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -33,9 +33,9 @@
]
}
],
- "::ffff:404:404\/128":[
+ "::ffff:4.4.4.4\/128":[
{
- "prefix":"::ffff:404:404\/128",
+ "prefix":"::ffff:4.4.4.4\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -50,9 +50,9 @@
]
}
],
- "::ffff:505:505\/128":[
+ "::ffff:5.5.5.5\/128":[
{
- "prefix":"::ffff:505:505\/128",
+ "prefix":"::ffff:5.5.5.5\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
diff --git a/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt2_down.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt2_down.ref
index cfb1ef1bb6..8a8a0cd77d 100644
--- a/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt2_down.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt2_down.ref
@@ -1,7 +1,7 @@
{
- "::ffff:202:202\/128":[
+ "::ffff:2.2.2.2\/128":[
{
- "prefix":"::ffff:202:202\/128",
+ "prefix":"::ffff:2.2.2.2\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -16,9 +16,9 @@
]
}
],
- "::ffff:303:303\/128":[
+ "::ffff:3.3.3.3\/128":[
{
- "prefix":"::ffff:303:303\/128",
+ "prefix":"::ffff:3.3.3.3\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -33,9 +33,9 @@
]
}
],
- "::ffff:404:404\/128":[
+ "::ffff:4.4.4.4\/128":[
{
- "prefix":"::ffff:404:404\/128",
+ "prefix":"::ffff:4.4.4.4\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -50,9 +50,9 @@
]
}
],
- "::ffff:505:505\/128":[
+ "::ffff:5.5.5.5\/128":[
{
- "prefix":"::ffff:505:505\/128",
+ "prefix":"::ffff:5.5.5.5\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
diff --git a/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt3_down.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt3_down.ref
index 58b44da5c2..e4f056f7b5 100644
--- a/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt3_down.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt3_down.ref
@@ -1,7 +1,7 @@
{
- "::ffff:202:202\/128":[
+ "::ffff:2.2.2.2\/128":[
{
- "prefix":"::ffff:202:202\/128",
+ "prefix":"::ffff:2.2.2.2\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -16,9 +16,9 @@
]
}
],
- "::ffff:303:303\/128":[
+ "::ffff:3.3.3.3\/128":[
{
- "prefix":"::ffff:303:303\/128",
+ "prefix":"::ffff:3.3.3.3\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -33,9 +33,9 @@
]
}
],
- "::ffff:404:404\/128":[
+ "::ffff:4.4.4.4\/128":[
{
- "prefix":"::ffff:404:404\/128",
+ "prefix":"::ffff:4.4.4.4\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
@@ -50,9 +50,9 @@
]
}
],
- "::ffff:505:505\/128":[
+ "::ffff:5.5.5.5\/128":[
{
- "prefix":"::ffff:505:505\/128",
+ "prefix":"::ffff:5.5.5.5\/128",
"protocol":"ospf6",
"selected":true,
"destSelected":true,
diff --git a/tests/topotests/bfd_ospf_topo1/rt1/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt1/zebra.conf
index 7e6f7881b4..bf2428e625 100644
--- a/tests/topotests/bfd_ospf_topo1/rt1/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt1/zebra.conf
@@ -10,7 +10,7 @@ hostname rt1
!
interface lo
ip address 1.1.1.1/32
- ipv6 address ::ffff:0101:0101/128
+ ipv6 address ::ffff:1.1.1.1/128
!
interface eth-rt2
ip address 10.0.1.1/24
diff --git a/tests/topotests/bfd_ospf_topo1/rt2/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt2/zebra.conf
index 5788e31f12..1670c20506 100644
--- a/tests/topotests/bfd_ospf_topo1/rt2/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt2/zebra.conf
@@ -7,7 +7,7 @@ hostname rt2
!
interface lo
ip address 2.2.2.2/32
- ipv6 address ::ffff:0202:0202/128
+ ipv6 address ::ffff:2.2.2.2/128
!
interface eth-rt1
ip address 10.0.1.2/24
diff --git a/tests/topotests/bfd_ospf_topo1/rt3/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt3/zebra.conf
index 78eac2e15a..d59085560f 100644
--- a/tests/topotests/bfd_ospf_topo1/rt3/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt3/zebra.conf
@@ -7,7 +7,7 @@ hostname rt3
!
interface lo
ip address 3.3.3.3/32
- ipv6 address ::ffff:0303:0303/128
+ ipv6 address ::ffff:3.3.3.3/128
!
interface eth-rt1
ip address 10.0.2.2/24
diff --git a/tests/topotests/bfd_ospf_topo1/rt4/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt4/zebra.conf
index a6cb573ed8..66121662dd 100644
--- a/tests/topotests/bfd_ospf_topo1/rt4/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt4/zebra.conf
@@ -7,7 +7,7 @@ hostname rt4
!
interface lo
ip address 4.4.4.4/32
- ipv6 address ::ffff:0404:0404/128
+ ipv6 address ::ffff:4.4.4.4/128
!
interface eth-rt3
ip address 10.0.4.2/24
diff --git a/tests/topotests/bfd_ospf_topo1/rt5/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt5/zebra.conf
index 33473c91a3..d3331b5b6c 100644
--- a/tests/topotests/bfd_ospf_topo1/rt5/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt5/zebra.conf
@@ -7,7 +7,7 @@ hostname rt5
!
interface lo
ip address 5.5.5.5/32
- ipv6 address ::ffff:0505:0505/128
+ ipv6 address ::ffff:5.5.5.5/128
!
interface eth-rt2
ip address 10.0.3.2/24
diff --git a/tests/topotests/bgp_aigp/r1/bgpd.conf b/tests/topotests/bgp_aigp/r1/bgpd.conf
index 74a0215bc4..15621999c5 100644
--- a/tests/topotests/bgp_aigp/r1/bgpd.conf
+++ b/tests/topotests/bgp_aigp/r1/bgpd.conf
@@ -9,4 +9,20 @@ router bgp 65001
neighbor 10.0.0.3 timers 1 3
neighbor 10.0.0.3 timers connect 1
neighbor 10.0.0.3 update-source lo
+ neighbor 192.168.18.8 remote-as external
+ neighbor 192.168.18.8 timers 1 3
+ neighbor 192.168.18.8 timers connect 1
+ address-family ipv4
+ neighbor 192.168.18.8 route-map r8 out
+ exit-address-family
!
+ip prefix-list p71 seq 5 permit 10.0.0.71/32
+ip prefix-list p72 seq 5 permit 10.0.0.72/32
+!
+route-map r8 permit 10
+ match ip address prefix-list p71
+ set metric igp
+route-map r8 permit 20
+ match ip address prefix-list p72
+ set metric aigp
+exit
diff --git a/tests/topotests/bgp_aigp/r1/ospfd.conf b/tests/topotests/bgp_aigp/r1/ospfd.conf
index 38aa11d036..098bf57b03 100644
--- a/tests/topotests/bgp_aigp/r1/ospfd.conf
+++ b/tests/topotests/bgp_aigp/r1/ospfd.conf
@@ -1,6 +1,6 @@
!
interface lo
- ip ospf cost 10
+ ip ospf passive
!
interface r1-eth0
ip ospf dead-interval 4
diff --git a/tests/topotests/bgp_aigp/r1/zebra.conf b/tests/topotests/bgp_aigp/r1/zebra.conf
index 0ed22d37be..7ac4bb5de9 100644
--- a/tests/topotests/bgp_aigp/r1/zebra.conf
+++ b/tests/topotests/bgp_aigp/r1/zebra.conf
@@ -8,3 +8,6 @@ interface r1-eth0
interface r1-eth1
ip address 192.168.13.1/24
!
+interface r1-eth2
+ ip address 192.168.18.1/24
+!
diff --git a/tests/topotests/bgp_aigp/r2/bgpd.conf b/tests/topotests/bgp_aigp/r2/bgpd.conf
index 4db4687536..4539016f91 100644
--- a/tests/topotests/bgp_aigp/r2/bgpd.conf
+++ b/tests/topotests/bgp_aigp/r2/bgpd.conf
@@ -1,6 +1,7 @@
router bgp 65001
no bgp ebgp-requires-policy
no bgp network import-check
+ bgp route-reflector allow-outbound-policy
neighbor 10.0.0.1 remote-as internal
neighbor 10.0.0.1 timers 1 3
neighbor 10.0.0.1 timers connect 1
@@ -11,5 +12,6 @@ router bgp 65001
neighbor 192.168.24.4 aigp
address-family ipv4
redistribute connected
+ neighbor 10.0.0.1 next-hop-self force
exit-address-family
!
diff --git a/tests/topotests/bgp_aigp/r2/ospfd.conf b/tests/topotests/bgp_aigp/r2/ospfd.conf
index ed31941f65..106a46251d 100644
--- a/tests/topotests/bgp_aigp/r2/ospfd.conf
+++ b/tests/topotests/bgp_aigp/r2/ospfd.conf
@@ -1,6 +1,6 @@
!
interface lo
- ip ospf cost 10
+ ip ospf passive
!
interface r2-eth0
ip ospf dead-interval 4
diff --git a/tests/topotests/bgp_aigp/r3/bgpd.conf b/tests/topotests/bgp_aigp/r3/bgpd.conf
index 5ab712eaba..bdaa5cf55d 100644
--- a/tests/topotests/bgp_aigp/r3/bgpd.conf
+++ b/tests/topotests/bgp_aigp/r3/bgpd.conf
@@ -1,6 +1,7 @@
router bgp 65001
no bgp ebgp-requires-policy
no bgp network import-check
+ bgp route-reflector allow-outbound-policy
neighbor 10.0.0.1 remote-as internal
neighbor 10.0.0.1 timers 1 3
neighbor 10.0.0.1 timers connect 1
@@ -11,5 +12,6 @@ router bgp 65001
neighbor 192.168.35.5 aigp
address-family ipv4
redistribute connected
+ neighbor 10.0.0.1 next-hop-self force
exit-address-family
!
diff --git a/tests/topotests/bgp_aigp/r3/ospfd.conf b/tests/topotests/bgp_aigp/r3/ospfd.conf
index f971ad6f89..9ede3a1fab 100644
--- a/tests/topotests/bgp_aigp/r3/ospfd.conf
+++ b/tests/topotests/bgp_aigp/r3/ospfd.conf
@@ -1,6 +1,6 @@
!
interface lo
- ip ospf cost 10
+ ip ospf passive
!
interface r3-eth0
ip ospf dead-interval 4
diff --git a/tests/topotests/bgp_aigp/r4/bgpd.conf b/tests/topotests/bgp_aigp/r4/bgpd.conf
index aa88bac913..2cdf84a1b3 100644
--- a/tests/topotests/bgp_aigp/r4/bgpd.conf
+++ b/tests/topotests/bgp_aigp/r4/bgpd.conf
@@ -1,6 +1,7 @@
router bgp 65001
no bgp ebgp-requires-policy
no bgp network import-check
+ bgp route-reflector allow-outbound-policy
neighbor 192.168.24.2 remote-as internal
neighbor 192.168.24.2 timers 1 3
neighbor 192.168.24.2 timers connect 1
@@ -11,7 +12,25 @@ router bgp 65001
neighbor 10.0.0.6 timers connect 1
neighbor 10.0.0.6 update-source lo
address-family ipv4
- redistribute connected
- redistribute ospf
+ redistribute connected route-map connected-to-bgp
+ redistribute ospf route-map ospf-to-bgp
+ neighbor 192.168.24.2 route-map set-nexthop out
exit-address-family
!
+ip prefix-list p66 seq 5 permit 10.0.6.6/32
+!
+route-map ospf-to-bgp permit 10
+ match ip address prefix-list p66
+ set aigp igp-metric
+!
+! Two OSPF domains should be isolated - otherwise the connected routes
+! on r4 would be advertised to r3 (via r4 -> r6 -> r5 -> r3), and can
+! mess up bgp bestpath calculation (igp metrics for the BGP nexthops).
+!
+route-map connected-to-bgp permit 10
+ set community no-advertise
+!
+route-map set-nexthop permit 10
+ set ip next-hop peer-address
+exit
+!
diff --git a/tests/topotests/bgp_aigp/r4/ospfd.conf b/tests/topotests/bgp_aigp/r4/ospfd.conf
index c9e6796f6e..237b5e18ab 100644
--- a/tests/topotests/bgp_aigp/r4/ospfd.conf
+++ b/tests/topotests/bgp_aigp/r4/ospfd.conf
@@ -1,6 +1,6 @@
!
interface lo
- ip ospf cost 10
+ ip ospf passive
!
interface r4-eth1
ip ospf dead-interval 4
diff --git a/tests/topotests/bgp_aigp/r5/bgpd.conf b/tests/topotests/bgp_aigp/r5/bgpd.conf
index 4fde262053..3d1f5e8572 100644
--- a/tests/topotests/bgp_aigp/r5/bgpd.conf
+++ b/tests/topotests/bgp_aigp/r5/bgpd.conf
@@ -1,6 +1,7 @@
router bgp 65001
no bgp ebgp-requires-policy
no bgp network import-check
+ bgp route-reflector allow-outbound-policy
neighbor 192.168.35.3 remote-as internal
neighbor 192.168.35.3 timers 1 3
neighbor 192.168.35.3 timers connect 1
@@ -11,7 +12,18 @@ router bgp 65001
neighbor 10.0.0.6 timers connect 1
neighbor 10.0.0.6 update-source lo
address-family ipv4
- redistribute connected
- redistribute ospf
+ redistribute connected route-map connected-to-bgp
+ neighbor 192.168.35.3 route-map set-nexthop out
exit-address-family
!
+! Two OSPF domains should be isolated - otherwise the connected routes
+! on r5 would be advertised to r2 (via r5 -> r6 -> r4 -> r2), and can
+! mess up bgp bestpath calculation (igp metrics for the BGP nexthops).
+!
+route-map connected-to-bgp permit 10
+ set community no-advertise
+!
+route-map set-nexthop permit 10
+ set ip next-hop peer-address
+exit
+!
diff --git a/tests/topotests/bgp_aigp/r5/ospfd.conf b/tests/topotests/bgp_aigp/r5/ospfd.conf
index b853c74102..65a213df17 100644
--- a/tests/topotests/bgp_aigp/r5/ospfd.conf
+++ b/tests/topotests/bgp_aigp/r5/ospfd.conf
@@ -1,6 +1,6 @@
!
interface lo
- ip ospf cost 10
+ ip ospf passive
!
interface r5-eth1
ip ospf dead-interval 4
diff --git a/tests/topotests/bgp_aigp/r6/bgpd.conf b/tests/topotests/bgp_aigp/r6/bgpd.conf
index 2faae7720c..2d5f7a89ba 100644
--- a/tests/topotests/bgp_aigp/r6/bgpd.conf
+++ b/tests/topotests/bgp_aigp/r6/bgpd.conf
@@ -1,6 +1,7 @@
router bgp 65001
no bgp ebgp-requires-policy
no bgp network import-check
+ bgp route-reflector allow-outbound-policy
neighbor 10.0.0.4 remote-as internal
neighbor 10.0.0.4 timers 1 3
neighbor 10.0.0.4 timers connect 1
@@ -15,6 +16,11 @@ router bgp 65001
neighbor 192.168.67.7 timers 1 3
neighbor 192.168.67.7 timers connect 1
address-family ipv4
- redistribute ospf
+ neighbor 10.0.0.4 route-map set-nexthop out
+ neighbor 10.0.0.5 route-map set-nexthop out
exit-address-family
!
+route-map set-nexthop permit 10
+ set ip next-hop peer-address
+exit
+!
diff --git a/tests/topotests/bgp_aigp/r6/ospfd.conf b/tests/topotests/bgp_aigp/r6/ospfd.conf
index 46b2933178..89cbefa895 100644
--- a/tests/topotests/bgp_aigp/r6/ospfd.conf
+++ b/tests/topotests/bgp_aigp/r6/ospfd.conf
@@ -1,6 +1,6 @@
!
interface lo
- ip ospf cost 10
+ ip ospf passive
!
interface r6-eth0
ip ospf dead-interval 4
diff --git a/tests/topotests/bgp_aigp/r6/zebra.conf b/tests/topotests/bgp_aigp/r6/zebra.conf
index f8ca5f8b82..b6456cacc5 100644
--- a/tests/topotests/bgp_aigp/r6/zebra.conf
+++ b/tests/topotests/bgp_aigp/r6/zebra.conf
@@ -1,6 +1,7 @@
!
interface lo
ip address 10.0.0.6/32
+ ip address 10.0.6.6/32
!
interface r6-eth0
ip address 192.168.46.6/24
diff --git a/tests/topotests/bgp_aigp/r8/bgpd.conf b/tests/topotests/bgp_aigp/r8/bgpd.conf
new file mode 100644
index 0000000000..c50c3ce91a
--- /dev/null
+++ b/tests/topotests/bgp_aigp/r8/bgpd.conf
@@ -0,0 +1,4 @@
+router bgp 65008
+ no bgp ebgp-requires-policy
+ neighbor 192.168.18.1 remote-as external
+!
diff --git a/tests/topotests/bgp_aigp/r8/zebra.conf b/tests/topotests/bgp_aigp/r8/zebra.conf
new file mode 100644
index 0000000000..f7545270b2
--- /dev/null
+++ b/tests/topotests/bgp_aigp/r8/zebra.conf
@@ -0,0 +1,4 @@
+!
+interface r8-eth0
+ ip address 192.168.18.8/24
+!
diff --git a/tests/topotests/bgp_aigp/test_bgp_aigp.py b/tests/topotests/bgp_aigp/test_bgp_aigp.py
index b81c543297..f937f851a6 100644
--- a/tests/topotests/bgp_aigp/test_bgp_aigp.py
+++ b/tests/topotests/bgp_aigp/test_bgp_aigp.py
@@ -12,9 +12,13 @@ r7 sets aigp-metric for 10.0.0.71/32 to 71, and 72 for 10.0.0.72/32.
r6 receives those routes with aigp-metric TLV.
r2 and r3 receives those routes with aigp-metric TLV increased by 20,
-and 30 appropriately.
+and 10 appropriately.
-r1 receives routes with aigp-metric TLV 111,131 and 112,132 appropriately.
+r1 receives routes with aigp-metric TLV 81, 91 and 82, 92 respectively.
+
+r1 advertises MED from IGP protocol (set metric igp) to r8.
+
+r1 advertises MED from AIGP (set metric aigp) to r8.
"""
import os
@@ -34,7 +38,7 @@ pytestmark = [pytest.mark.bgpd]
def build_topo(tgen):
- for routern in range(1, 8):
+ for routern in range(1, 9):
tgen.add_router("r{}".format(routern))
switch = tgen.add_switch("s1")
@@ -65,6 +69,10 @@ def build_topo(tgen):
switch.add_link(tgen.gears["r6"])
switch.add_link(tgen.gears["r7"])
+ switch = tgen.add_switch("s8")
+ switch.add_link(tgen.gears["r1"])
+ switch.add_link(tgen.gears["r8"])
+
def setup_module(mod):
tgen = Topogen(build_topo, mod.__name__)
@@ -102,21 +110,36 @@ def test_bgp_aigp():
r3 = tgen.gears["r3"]
r4 = tgen.gears["r4"]
r5 = tgen.gears["r5"]
+ r8 = tgen.gears["r8"]
def _bgp_converge():
output = json.loads(r1.vtysh_cmd("show bgp ipv4 unicast 10.0.0.71/32 json"))
expected = {
"paths": [
{
- "aigpMetric": 111,
+ "aigpMetric": 81,
"valid": True,
- "nexthops": [{"hostname": "r3", "accessible": True}],
+ "nexthops": [
+ {
+ "ip": "10.0.0.3",
+ "hostname": "r3",
+ "metric": 30,
+ "accessible": True,
+ }
+ ],
},
{
- "aigpMetric": 131,
+ "aigpMetric": 91,
"valid": True,
- "bestpath": {"selectionReason": "Neighbor IP"},
- "nexthops": [{"hostname": "r2", "accessible": True}],
+ "bestpath": {"selectionReason": "IGP Metric"},
+ "nexthops": [
+ {
+ "ip": "10.0.0.2",
+ "hostname": "r2",
+ "metric": 10,
+ "accessible": True,
+ }
+ ],
},
]
}
@@ -129,6 +152,18 @@ def test_bgp_aigp():
expected = {"paths": [{"aigpMetric": aigp, "valid": True}]}
return topotest.json_cmp(output, expected)
+ def _bgp_check_received_med():
+ output = json.loads(
+ r8.vtysh_cmd("show bgp ipv4 unicast 10.0.0.64/28 longer-prefixes json")
+ )
+ expected = {
+ "routes": {
+ "10.0.0.71/32": [{"valid": True, "metric": 10}],
+ "10.0.0.72/32": [{"valid": True, "metric": 92}],
+ }
+ }
+ return topotest.json_cmp(output, expected)
+
def _bgp_check_aigp_metric_bestpath():
output = json.loads(
r1.vtysh_cmd(
@@ -140,30 +175,58 @@ def test_bgp_aigp():
"10.0.0.71/32": {
"paths": [
{
- "aigpMetric": 111,
- "bestpath": {"selectionReason": "AIGP"},
+ "aigpMetric": 81,
"valid": True,
- "nexthops": [{"hostname": "r3", "accessible": True}],
+ "nexthops": [
+ {
+ "ip": "10.0.0.3",
+ "hostname": "r3",
+ "metric": 30,
+ "accessible": True,
+ }
+ ],
},
{
- "aigpMetric": 131,
+ "aigpMetric": 91,
"valid": True,
- "nexthops": [{"hostname": "r2", "accessible": True}],
+ "bestpath": {"selectionReason": "AIGP"},
+ "nexthops": [
+ {
+ "ip": "10.0.0.2",
+ "hostname": "r2",
+ "metric": 10,
+ "accessible": True,
+ }
+ ],
},
],
},
"10.0.0.72/32": {
"paths": [
{
- "aigpMetric": 112,
- "bestpath": {"selectionReason": "AIGP"},
+ "aigpMetric": 82,
"valid": True,
- "nexthops": [{"hostname": "r3", "accessible": True}],
+ "nexthops": [
+ {
+ "ip": "10.0.0.3",
+ "hostname": "r3",
+ "metric": 30,
+ "accessible": True,
+ }
+ ],
},
{
- "aigpMetric": 132,
+ "aigpMetric": 92,
"valid": True,
- "nexthops": [{"hostname": "r2", "accessible": True}],
+ "bestpath": {"selectionReason": "AIGP"},
+ "nexthops": [
+ {
+ "ip": "10.0.0.2",
+ "hostname": "r2",
+ "metric": 10,
+ "accessible": True,
+ }
+ ],
},
],
},
@@ -185,6 +248,11 @@ def test_bgp_aigp():
"""
)
+ # r4, 10.0.6.6/32 with aigp-metric 20
+ test_func = functools.partial(_bgp_check_aigp_metric, r4, "10.0.6.6/32", 20)
+ _, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
+ assert result is None, "aigp-metric for 10.0.6.6/32 is not 20"
+
# r4, 10.0.0.71/32 with aigp-metric 71
test_func = functools.partial(_bgp_check_aigp_metric, r4, "10.0.0.71/32", 71)
_, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
@@ -195,21 +263,28 @@ def test_bgp_aigp():
_, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assert result is None, "aigp-metric for 10.0.0.72/32 is not 72"
- # r2, 10.0.0.71/32 with aigp-metric 101 (71 + 30)
- test_func = functools.partial(_bgp_check_aigp_metric, r2, "10.0.0.71/32", 101)
+ # r2, 10.0.0.71/32 with aigp-metric 101 (71 + 20)
+ test_func = functools.partial(_bgp_check_aigp_metric, r2, "10.0.0.71/32", 91)
_, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
- assert result is None, "aigp-metric for 10.0.0.71/32 is not 101"
+ assert result is None, "aigp-metric for 10.0.0.71/32 is not 91"
- # r3, 10.0.0.72/32 with aigp-metric 92 (72 + 20)
- test_func = functools.partial(_bgp_check_aigp_metric, r3, "10.0.0.72/32", 92)
+ # r3, 10.0.0.72/32 with aigp-metric 92 (72 + 10)
+ test_func = functools.partial(_bgp_check_aigp_metric, r3, "10.0.0.72/32", 82)
_, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
- assert result is None, "aigp-metric for 10.0.0.72/32 is not 92"
+ assert result is None, "aigp-metric for 10.0.0.72/32 is not 82"
- # r1, check if AIGP is considered in best-path selection (lowest wins)
+ # r1, check if AIGP is considered in best-path selection (lowest wins: aigp + nexthop-metric)
test_func = functools.partial(_bgp_check_aigp_metric_bestpath)
_, result = topotest.run_and_expect(test_func, None, count=60, wait=1)
assert result is None, "AIGP attribute is not considered in best-path selection"
+ # r8, check if MED is set derived from `set metric igp`, and `set metric aigp`
+ test_func = functools.partial(_bgp_check_received_med)
+ _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+ assert (
+ result is None
+ ), "MED attribute values are not derived from `set metric [a]igp`"
+
if __name__ == "__main__":
args = ["-s"] + sys.argv[1:]
diff --git a/tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py b/tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py
index 2d027081cb..9dfb7fc4d9 100644
--- a/tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py
+++ b/tests/topotests/bgp_evpn_rt5/test_bgp_evpn.py
@@ -210,7 +210,7 @@ def test_protocols_convergence():
"vrfName": "r1-vrf-101",
"nexthops": [
{
- "ip": "::ffff:c0a8:6429",
+ "ip": "::ffff:192.168.100.41",
}
],
}
@@ -227,8 +227,8 @@ def test_protocols_convergence():
"192.168.100.41": {
"nexthopIp": "192.168.100.41",
},
- "::ffff:c0a8:6429": {
- "nexthopIp": "::ffff:c0a8:6429",
+ "::ffff:192.168.100.41": {
+ "nexthopIp": "::ffff:192.168.100.41",
},
}
}
diff --git a/tests/topotests/bgp_ipv4_over_ipv6/test_rfc5549_ebgp_unnumbered_nbr.py b/tests/topotests/bgp_ipv4_over_ipv6/test_rfc5549_ebgp_unnumbered_nbr.py
index 803b51c043..8382fea188 100644
--- a/tests/topotests/bgp_ipv4_over_ipv6/test_rfc5549_ebgp_unnumbered_nbr.py
+++ b/tests/topotests/bgp_ipv4_over_ipv6/test_rfc5549_ebgp_unnumbered_nbr.py
@@ -670,7 +670,7 @@ def test_configure_gua_on_unnumbered_intf(request):
{
"nexthops": [
{
- "ip": "::ffff:a00:501",
+ "ip": "::ffff:10.0.5.1",
"hostname": "r1",
"afi": "ipv6",
"scope": "global",
@@ -754,7 +754,7 @@ def test_configure_gua_on_unnumbered_intf(request):
assert (
result is None
), "Testcase {} : Failed \n Error: Nexthop for prefix 11.0.20.1 \
- is not ::ffff:a00:501".format(
+ is not ::ffff:10.0.5.1".format(
tc_name
)
diff --git a/tests/topotests/bgp_match_peer/r1/frr.conf b/tests/topotests/bgp_match_peer/r1/frr.conf
index f30da3b896..02fb8ae518 100644
--- a/tests/topotests/bgp_match_peer/r1/frr.conf
+++ b/tests/topotests/bgp_match_peer/r1/frr.conf
@@ -17,6 +17,7 @@ router bgp 65001
neighbor 192.168.1.2 route-map all in
neighbor r3 route-map all in
neighbor r4 route-map all in
+ neighbor r4 route-map r4 out
exit-address-family
!
route-map all permit 5
@@ -24,7 +25,7 @@ route-map all permit 5
set metric 1
!
route-map all permit 10
- match peer 192.168.1.2
+ match src-peer 192.168.1.2
set metric 2
!
route-map all permit 15
@@ -35,3 +36,6 @@ route-map all permit 20
match peer r4
set metric 4
!
+route-map r4 permit 10
+ match src-peer r3
+!
diff --git a/tests/topotests/bgp_match_peer/test_bgp_match_peer.py b/tests/topotests/bgp_match_peer/test_bgp_match_peer.py
index 4eb7473df0..180dbcd08a 100644
--- a/tests/topotests/bgp_match_peer/test_bgp_match_peer.py
+++ b/tests/topotests/bgp_match_peer/test_bgp_match_peer.py
@@ -82,6 +82,29 @@ def test_bgp_match_peer():
_, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
assert result is None, "Can't converge"
+ def _bgp_show_advertised_routes():
+ output = json.loads(
+ r1.vtysh_cmd("show bgp ipv4 unicast neighbors r4 advertised-routes json")
+ )
+ expected = {
+ "advertisedRoutes": {
+ "10.0.0.3/32": {
+ "network": "10.0.0.3/32",
+ "nextHop": "192.168.1.3",
+ "path": "65003",
+ }
+ },
+ "totalPrefixCounter": 1,
+ }
+
+ return topotest.json_cmp(output, expected)
+
+ test_func = functools.partial(
+ _bgp_show_advertised_routes,
+ )
+ _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+ assert result is None, "Can't filter by source peer"
+
if __name__ == "__main__":
args = ["-s"] + sys.argv[1:]
diff --git a/tests/topotests/bgp_nexthop_ipv6/r4/show_bgp_ipv6_step2.json b/tests/topotests/bgp_nexthop_ipv6/r4/show_bgp_ipv6_step2.json
index 35a31e63f9..5506f07f29 100644
--- a/tests/topotests/bgp_nexthop_ipv6/r4/show_bgp_ipv6_step2.json
+++ b/tests/topotests/bgp_nexthop_ipv6/r4/show_bgp_ipv6_step2.json
@@ -9,13 +9,7 @@
"ip": "fd00:0:2::1",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-sw",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -28,13 +22,7 @@
"ip": "fd00:0:2::2",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-sw",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -47,13 +35,7 @@
"ip": "fd00:0:2::3",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-sw",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -117,13 +99,7 @@
"ip": "fd00:0:2::1",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-sw",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -136,13 +112,7 @@
"ip": "fd00:0:2::2",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-sw",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -155,13 +125,7 @@
"ip": "fd00:0:2::3",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-sw",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
diff --git a/tests/topotests/bgp_nexthop_ipv6/r5/show_bgp_ipv6_step2.json b/tests/topotests/bgp_nexthop_ipv6/r5/show_bgp_ipv6_step2.json
index d0875474ae..afcf7c3ffc 100644
--- a/tests/topotests/bgp_nexthop_ipv6/r5/show_bgp_ipv6_step2.json
+++ b/tests/topotests/bgp_nexthop_ipv6/r5/show_bgp_ipv6_step2.json
@@ -9,13 +9,7 @@
"ip": "fd00:0:3::9",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-r5",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -28,13 +22,7 @@
"ip": "fd00:0:3::9",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-r5",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -47,13 +35,7 @@
"ip": "fd00:0:3::9",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-r5",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -117,13 +99,7 @@
"ip": "fd00:0:3::9",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-r5",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -136,13 +112,7 @@
"ip": "fd00:0:3::9",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-r5",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
@@ -155,13 +125,7 @@
"ip": "fd00:0:3::9",
"hostname": "rr",
"afi": "ipv6",
- "scope": "global"
- },
- {
- "ip": "link-local:rr:eth-r5",
- "hostname": "rr",
- "afi": "ipv6",
- "scope": "link-local",
+ "scope": "global",
"used": true
}
]
diff --git a/tests/topotests/bgp_set_metric_igp/__init__.py b/tests/topotests/bgp_set_metric_igp/__init__.py
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/tests/topotests/bgp_set_metric_igp/__init__.py
diff --git a/tests/topotests/bgp_set_metric_igp/r1/frr.conf b/tests/topotests/bgp_set_metric_igp/r1/frr.conf
new file mode 100644
index 0000000000..018ea0269e
--- /dev/null
+++ b/tests/topotests/bgp_set_metric_igp/r1/frr.conf
@@ -0,0 +1,13 @@
+!
+int r1-eth0
+ ip address 10.0.0.1/24
+!
+int r1-eth1
+ ip address 10.0.1.1/24
+!
+router bgp 65001
+ no bgp ebgp-requires-policy
+ no bgp network import-check
+ neighbor 10.0.0.2 remote-as external
+ neighbor 10.0.1.2 remote-as external
+!
diff --git a/tests/topotests/bgp_set_metric_igp/r2/frr.conf b/tests/topotests/bgp_set_metric_igp/r2/frr.conf
new file mode 100644
index 0000000000..bce06c47f0
--- /dev/null
+++ b/tests/topotests/bgp_set_metric_igp/r2/frr.conf
@@ -0,0 +1,36 @@
+!
+int r2-eth0
+ ip address 10.0.0.2/24
+ ip router isis n2
+ isis circuit-type level-2-only
+ isis fast-reroute lfa level-2
+ isis network point-to-point
+ isis hello-interval 1
+ isis hello-multiplier 10
+!
+int r2-eth1
+ ip address 10.0.2.1/24
+ ip router isis n2
+ isis circuit-type level-2-only
+ isis fast-reroute lfa level-2
+ isis network point-to-point
+ isis hello-interval 1
+ isis hello-multiplier 10
+!
+router bgp 65002
+ no bgp ebgp-requires-policy
+ neighbor 10.0.0.1 remote-as external
+ neighbor 10.0.2.2 remote-as internal
+ address-family ipv4 unicast
+ neighbor 10.0.0.1 route-map igp out
+ exit-address-family
+!
+router isis n2
+ is-type level-2-only
+ net 49.0001.0000.0000.0002.00
+ lsp-mtu 1440
+exit
+!
+route-map igp permit 10
+ set metric igp
+exit
diff --git a/tests/topotests/bgp_set_metric_igp/r3/frr.conf b/tests/topotests/bgp_set_metric_igp/r3/frr.conf
new file mode 100644
index 0000000000..312f97d08a
--- /dev/null
+++ b/tests/topotests/bgp_set_metric_igp/r3/frr.conf
@@ -0,0 +1,38 @@
+!
+int r3-eth0
+ ip address 10.0.1.2/24
+ ip router isis n3
+ isis circuit-type level-2-only
+ isis fast-reroute lfa level-2
+ isis network point-to-point
+ isis hello-interval 1
+ isis hello-multiplier 10
+!
+int r3-eth1
+ ip address 10.0.3.1/24
+ ip router isis n3
+ isis circuit-type level-2-only
+ isis fast-reroute lfa level-2
+ isis metric level-1 10
+ isis metric level-2 100
+ isis network point-to-point
+ isis hello-interval 1
+ isis hello-multiplier 10
+!
+router bgp 65002
+ no bgp ebgp-requires-policy
+ neighbor 10.0.1.1 remote-as external
+ neighbor 10.0.3.2 remote-as internal
+ address-family ipv4 unicast
+ neighbor 10.0.1.1 route-map igp out
+ exit-address-family
+!
+router isis n3
+ is-type level-2-only
+ net 49.0001.0000.0000.0003.00
+ lsp-mtu 1440
+exit
+!
+route-map igp permit 10
+ set metric igp
+exit
diff --git a/tests/topotests/bgp_set_metric_igp/r4/frr.conf b/tests/topotests/bgp_set_metric_igp/r4/frr.conf
new file mode 100644
index 0000000000..04165b80b2
--- /dev/null
+++ b/tests/topotests/bgp_set_metric_igp/r4/frr.conf
@@ -0,0 +1,41 @@
+!
+int r4-eth0
+ ip address 10.0.2.2/24
+ ip router isis n4
+ isis circuit-type level-2-only
+ isis fast-reroute lfa level-2
+ isis network point-to-point
+ isis hello-interval 1
+ isis hello-multiplier 10
+!
+int r4-eth1
+ ip address 10.0.3.2/24
+ ip router isis n4
+ isis circuit-type level-2-only
+ isis fast-reroute lfa level-2
+ isis metric level-1 10
+ isis metric level-2 100
+ isis network point-to-point
+ isis hello-interval 1
+ isis hello-multiplier 10
+!
+int r4-eth2
+ ip address 10.0.4.1/24
+ ip router isis n4
+ isis circuit-type level-2-only
+ isis fast-reroute lfa level-2
+ isis network point-to-point
+ isis hello-interval 1
+ isis hello-multiplier 10
+!
+router bgp 65002
+ no bgp ebgp-requires-policy
+ neighbor 10.0.2.1 remote-as internal
+ neighbor 10.0.3.1 remote-as internal
+ neighbor 10.0.4.2 remote-as external
+!
+router isis n4
+ is-type level-2-only
+ net 49.0001.0000.0000.0004.00
+ lsp-mtu 1440
+exit
diff --git a/tests/topotests/bgp_set_metric_igp/r5/frr.conf b/tests/topotests/bgp_set_metric_igp/r5/frr.conf
new file mode 100644
index 0000000000..af23677b72
--- /dev/null
+++ b/tests/topotests/bgp_set_metric_igp/r5/frr.conf
@@ -0,0 +1,14 @@
+!
+int r5-eth0
+ ip address 10.0.4.2/24
+!
+router bgp 65005
+ no bgp ebgp-requires-policy
+ no bgp network import-check
+ neighbor 10.0.4.1 remote-as external
+ neighbor 10.0.4.1 timers 1 3
+ neighbor 10.0.4.1 timers connect 1
+ address-family ipv4 unicast
+ network 10.5.5.5/32
+ exit-address-family
+!
diff --git a/tests/topotests/bgp_set_metric_igp/test_bgp_set_metric_igp.py b/tests/topotests/bgp_set_metric_igp/test_bgp_set_metric_igp.py
new file mode 100644
index 0000000000..8fbe817689
--- /dev/null
+++ b/tests/topotests/bgp_set_metric_igp/test_bgp_set_metric_igp.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python
+# SPDX-License-Identifier: ISC
+
+# Copyright (c) 2024 by
+# Donatas Abraitis <donatas@opensourcerouting.org>
+#
+
+import os
+import sys
+import json
+import pytest
+import functools
+
+CWD = os.path.dirname(os.path.realpath(__file__))
+sys.path.append(os.path.join(CWD, "../"))
+
+# pylint: disable=C0413
+from lib import topotest
+from lib.topogen import Topogen, get_topogen
+
+pytestmark = [pytest.mark.bgpd]
+
+
+def setup_module(mod):
+ topodef = {
+ "s1": ("r1", "r2"),
+ "s2": ("r1", "r3"),
+ "s3": ("r2", "r4"),
+ "s4": ("r3", "r4"),
+ "s5": ("r4", "r5"),
+ }
+ tgen = Topogen(topodef, mod.__name__)
+ tgen.start_topology()
+
+ router_list = tgen.routers()
+
+ for _, (rname, router) in enumerate(router_list.items(), 1):
+ router.load_frr_config(os.path.join(CWD, "{}/frr.conf".format(rname)))
+
+ tgen.start_router()
+
+
+def teardown_module(mod):
+ tgen = get_topogen()
+ tgen.stop_topology()
+
+
+def test_bgp_set_metric_igp():
+ tgen = get_topogen()
+
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ r1 = tgen.gears["r1"]
+ r2 = tgen.gears["r2"]
+
+ def _bgp_converge():
+ output = json.loads(r1.vtysh_cmd("show bgp ipv4 unicast json"))
+ expected = {
+ "routes": {
+ "10.5.5.5/32": [
+ {
+ "valid": True,
+ "bestpath": True,
+ "selectionReason": "MED",
+ "metric": 20,
+ "nexthops": [
+ {
+ "ip": "10.0.0.2",
+ "hostname": "r2",
+ }
+ ],
+ },
+ {
+ "valid": True,
+ "bestpath": None,
+ "metric": 110,
+ "nexthops": [
+ {
+ "ip": "10.0.1.2",
+ "hostname": "r3",
+ }
+ ],
+ },
+ ]
+ }
+ }
+ return topotest.json_cmp(output, expected)
+
+ test_func = functools.partial(
+ _bgp_converge,
+ )
+ _, result = topotest.run_and_expect(test_func, None, count=120, wait=5)
+ assert result is None, "10.5.5.5/32 best path is not via r2 (MED == 20)"
+
+ r2.vtysh_cmd(
+ """
+configure terminal
+interface r2-eth1
+ isis metric level-2 6000
+"""
+ )
+
+ def _bgp_converge_after_isis_metric_changes():
+ output = json.loads(r1.vtysh_cmd("show bgp ipv4 unicast json"))
+ expected = {
+ "routes": {
+ "10.5.5.5/32": [
+ {
+ "valid": True,
+ "bestpath": None,
+ "metric": 6010,
+ "nexthops": [
+ {
+ "ip": "10.0.0.2",
+ "hostname": "r2",
+ }
+ ],
+ },
+ {
+ "valid": True,
+ "bestpath": True,
+ "selectionReason": "MED",
+ "metric": 110,
+ "nexthops": [
+ {
+ "ip": "10.0.1.2",
+ "hostname": "r3",
+ }
+ ],
+ },
+ ]
+ }
+ }
+ return topotest.json_cmp(output, expected)
+
+ test_func = functools.partial(
+ _bgp_converge_after_isis_metric_changes,
+ )
+ _, result = topotest.run_and_expect(test_func, None, count=120, wait=5)
+ assert result is None, "10.5.5.5/32 best path is not via r3 (MED == 110)"
+
+
+if __name__ == "__main__":
+ args = ["-s"] + sys.argv[1:]
+ sys.exit(pytest.main(args))
diff --git a/tests/topotests/lib/common_check.py b/tests/topotests/lib/common_check.py
index 19f02dbadc..b04b9de44e 100644
--- a/tests/topotests/lib/common_check.py
+++ b/tests/topotests/lib/common_check.py
@@ -58,7 +58,7 @@ def iproute2_check_path_selection(router, ipaddr_str, expected, vrf_name=None):
else:
cmdstr = f"ip -json route show {ipaddr_str}"
try:
- output = json.loads(cmdstr)
+ output = json.loads(router.cmd(cmdstr))
except:
output = []