From 3636b6c158946c8d2287ae12bdce2b1d5ad5b3ee Mon Sep 17 00:00:00 2001 From: Martin Winter Date: Mon, 23 Nov 2020 23:34:51 +0100 Subject: [PATCH] tests: Make ospf convergence predictable by setting if priority Added OSPF priorities to force a predictable DR/Backup router selection Signed-off-by: Martin Winter --- tests/topotests/bgp_features/r1/ospf6d.conf | 5 ++--- .../bgp_features/r1/ospf_neighbor.json | 8 ++++---- tests/topotests/bgp_features/r1/ospfd.conf | 17 ++++++++++------- tests/topotests/bgp_features/r2/ospf6d.conf | 5 ++--- .../bgp_features/r2/ospf_neighbor.json | 8 ++++---- tests/topotests/bgp_features/r2/ospfd.conf | 17 ++++++++++------- tests/topotests/bgp_features/r3/ospf6d.conf | 5 ++--- .../bgp_features/r3/ospf_neighbor.json | 8 ++++---- tests/topotests/bgp_features/r3/ospfd.conf | 17 ++++++++++------- .../topotests/ldp-oc-acl-topo1/r1/ospfd.conf | 1 + .../r1/show_ip_ospf_neighbor.json | 2 +- .../topotests/ldp-oc-acl-topo1/r2/ospfd.conf | 2 ++ .../r2/show_ip_ospf_neighbor.json | 9 +++------ .../topotests/ldp-oc-acl-topo1/r3/ospfd.conf | 1 + .../r3/show_ip_ospf_neighbor.json | 2 +- .../topotests/ldp-oc-acl-topo1/r4/ospfd.conf | 1 + .../r4/show_ip_ospf_neighbor.json | 2 +- tests/topotests/ldp-oc-topo1/r1/ospfd.conf | 1 + .../r1/show_ip_ospf_neighbor.json | 2 +- tests/topotests/ldp-oc-topo1/r2/ospfd.conf | 2 ++ .../r2/show_ip_ospf_neighbor.json | 9 +++------ tests/topotests/ldp-oc-topo1/r3/ospfd.conf | 1 + .../r3/show_ip_ospf_neighbor.json | 2 +- tests/topotests/ldp-oc-topo1/r4/ospfd.conf | 1 + .../r4/show_ip_ospf_neighbor.json | 2 +- tests/topotests/ldp-vpls-topo1/r1/ospfd.conf | 2 ++ .../r1/show_ip_ospf_neighbor.json | 8 ++++---- tests/topotests/ldp-vpls-topo1/r2/ospfd.conf | 2 ++ .../r2/show_ip_ospf_neighbor.json | 6 +++--- tests/topotests/ldp-vpls-topo1/r3/ospfd.conf | 2 ++ .../r3/show_ip_ospf_neighbor.json | 4 ++-- .../ldp-vpls-topo1/test_ldp_vpls_topo1.pdf | Bin 14773 -> 16693 bytes 32 files changed, 85 insertions(+), 69 deletions(-) diff --git a/tests/topotests/bgp_features/r1/ospf6d.conf b/tests/topotests/bgp_features/r1/ospf6d.conf index 532da39fb7..a38e4b862a 100644 --- a/tests/topotests/bgp_features/r1/ospf6d.conf +++ b/tests/topotests/bgp_features/r1/ospf6d.conf @@ -4,17 +4,16 @@ debug ospf6 neighbor ! interface r1-lo ! -interface r1-eth0 -! interface r1-eth1 + ipv6 ospf6 priority 10 ! interface r1-eth2 + ipv6 ospf6 priority 10 ! router ospf6 ospf6 router-id 192.168.0.1 log-adjacency-changes interface r1-lo area 0.0.0.0 - interface r1-eth0 area 0.0.0.0 interface r1-eth1 area 0.0.0.0 interface r1-eth2 area 0.0.0.0 ! diff --git a/tests/topotests/bgp_features/r1/ospf_neighbor.json b/tests/topotests/bgp_features/r1/ospf_neighbor.json index ecb97d8d74..e742c119da 100644 --- a/tests/topotests/bgp_features/r1/ospf_neighbor.json +++ b/tests/topotests/bgp_features/r1/ospf_neighbor.json @@ -2,14 +2,14 @@ "neighbors":{ "192.168.0.2":[ { - "priority":1, - "state":"Full\/DR" + "priority":5, + "state":"Full\/Backup" } ], "192.168.0.3":[ { - "priority":1, - "state":"Full\/DR" + "priority":5, + "state":"Full\/Backup" } ] } diff --git a/tests/topotests/bgp_features/r1/ospfd.conf b/tests/topotests/bgp_features/r1/ospfd.conf index 8f1711db7b..68a1bb5c75 100644 --- a/tests/topotests/bgp_features/r1/ospfd.conf +++ b/tests/topotests/bgp_features/r1/ospfd.conf @@ -3,6 +3,16 @@ log file ospfd.log debug ospf event debug ospf zebra ! +interface r1-eth1 + ip ospf hello-interval 2 + ip ospf dead-interval 10 + ip ospf priority 10 +! +interface r1-eth2 + ip ospf hello-interval 2 + ip ospf dead-interval 10 + ip ospf priority 10 +! router ospf ospf router-id 192.168.0.1 log-adjacency-changes @@ -13,11 +23,4 @@ router ospf refresh timer 10 ! line vty -interface r1-eth1 - ip ospf hello-interval 2 - ip ospf dead-interval 10 -! -interface r1-eth2 - ip ospf hello-interval 2 - ip ospf dead-interval 10 ! diff --git a/tests/topotests/bgp_features/r2/ospf6d.conf b/tests/topotests/bgp_features/r2/ospf6d.conf index 283d205489..47bd5a99cc 100644 --- a/tests/topotests/bgp_features/r2/ospf6d.conf +++ b/tests/topotests/bgp_features/r2/ospf6d.conf @@ -4,17 +4,16 @@ debug ospf6 neighbor ! interface r2-lo ! -interface r2-eth0 -! interface r2-eth1 + ipv6 ospf6 priority 5 ! interface r2-eth2 + ipv6 ospf6 priority 10 ! router ospf6 ospf6 router-id 192.168.0.2 log-adjacency-changes interface r2-lo area 0.0.0.0 - interface r2-eth0 area 0.0.0.0 interface r2-eth1 area 0.0.0.0 interface r2-eth2 area 0.0.0.0 ! diff --git a/tests/topotests/bgp_features/r2/ospf_neighbor.json b/tests/topotests/bgp_features/r2/ospf_neighbor.json index 5fcbd82ee1..2fd589ae25 100644 --- a/tests/topotests/bgp_features/r2/ospf_neighbor.json +++ b/tests/topotests/bgp_features/r2/ospf_neighbor.json @@ -2,14 +2,14 @@ "neighbors":{ "192.168.0.1":[ { - "priority":1, - "state":"Full\/Backup" + "priority":10, + "state":"Full\/DR" } ], "192.168.0.3":[ { - "priority":1, - "state":"Full\/DR" + "priority":5, + "state":"Full\/Backup" } ] } diff --git a/tests/topotests/bgp_features/r2/ospfd.conf b/tests/topotests/bgp_features/r2/ospfd.conf index 2174fddb11..6f608e454b 100644 --- a/tests/topotests/bgp_features/r2/ospfd.conf +++ b/tests/topotests/bgp_features/r2/ospfd.conf @@ -3,6 +3,16 @@ log file ospfd.log debug ospf event debug ospf zebra ! +int r2-eth1 + ip ospf hello-interval 2 + ip ospf dead-interval 10 + ip ospf priority 5 +! +int r2-eth2 + ip ospf hello-interval 2 + ip ospf dead-interval 10 + ip ospf priority 10 +! router ospf ospf router-id 192.168.0.2 log-adjacency-changes @@ -12,12 +22,5 @@ router ospf timers throttle lsa all 0 refresh timer 10 ! -int r2-eth1 - ip ospf hello-interval 2 - ip ospf dead-interval 10 -int r2-eth2 - ip ospf hello-interval 2 - ip ospf dead-interval 10 -! line vty ! diff --git a/tests/topotests/bgp_features/r3/ospf6d.conf b/tests/topotests/bgp_features/r3/ospf6d.conf index 7a6623f979..eb74901ba1 100644 --- a/tests/topotests/bgp_features/r3/ospf6d.conf +++ b/tests/topotests/bgp_features/r3/ospf6d.conf @@ -4,17 +4,16 @@ debug ospf6 neighbor ! interface r3-lo ! -interface r3-eth0 -! interface r3-eth1 + ipv6 ospf6 priority 5 ! interface r3-eth2 + ipv6 ospf6 priority 5 ! router ospf6 ospf6 router-id 192.168.0.3 log-adjacency-changes interface r3-lo area 0.0.0.0 - interface r3-eth0 area 0.0.0.0 interface r3-eth1 area 0.0.0.0 interface r3-eth2 area 0.0.0.0 ! diff --git a/tests/topotests/bgp_features/r3/ospf_neighbor.json b/tests/topotests/bgp_features/r3/ospf_neighbor.json index e90a70a8f6..80fc92c3bc 100644 --- a/tests/topotests/bgp_features/r3/ospf_neighbor.json +++ b/tests/topotests/bgp_features/r3/ospf_neighbor.json @@ -2,14 +2,14 @@ "neighbors":{ "192.168.0.1":[ { - "priority":1, - "state":"Full\/Backup" + "priority":10, + "state":"Full\/DR" } ], "192.168.0.2":[ { - "priority":1, - "state":"Full\/Backup" + "priority":10, + "state":"Full\/DR" } ] } diff --git a/tests/topotests/bgp_features/r3/ospfd.conf b/tests/topotests/bgp_features/r3/ospfd.conf index 795344fbe6..71e4f1e1df 100644 --- a/tests/topotests/bgp_features/r3/ospfd.conf +++ b/tests/topotests/bgp_features/r3/ospfd.conf @@ -3,6 +3,16 @@ log file ospfd.log debug ospf event debug ospf zebra ! +int r3-eth1 + ip ospf hello-interval 2 + ip ospf dead-interval 10 + ip ospf priority 5 +! +int r3-eth2 + ip ospf hello-interval 2 + ip ospf dead-interval 10 + ip ospf priority 5 +! router ospf ospf router-id 192.168.0.3 log-adjacency-changes @@ -12,12 +22,5 @@ router ospf timers throttle lsa all 0 refresh timer 10 ! -int r3-eth1 - ip ospf hello-interval 2 - ip ospf dead-interval 10 -int r3-eth2 - ip ospf hello-interval 2 - ip ospf dead-interval 10 -! line vty ! diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/ospfd.conf b/tests/topotests/ldp-oc-acl-topo1/r1/ospfd.conf index 87d5703d9e..877e14ff36 100644 --- a/tests/topotests/ldp-oc-acl-topo1/r1/ospfd.conf +++ b/tests/topotests/ldp-oc-acl-topo1/r1/ospfd.conf @@ -8,4 +8,5 @@ router ospf int r1-eth0 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 1 ! diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/show_ip_ospf_neighbor.json b/tests/topotests/ldp-oc-acl-topo1/r1/show_ip_ospf_neighbor.json index 2c493173f5..aa3f74fc5f 100644 --- a/tests/topotests/ldp-oc-acl-topo1/r1/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-oc-acl-topo1/r1/show_ip_ospf_neighbor.json @@ -2,7 +2,7 @@ "neighbors":{ "2.2.2.2":[ { - "priority":1, + "priority":2, "state":"Full\/DR", "address":"10.0.1.2", "ifaceName":"r1-eth0:10.0.1.1" diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/ospfd.conf b/tests/topotests/ldp-oc-acl-topo1/r2/ospfd.conf index 51317202bb..8cba1529e8 100644 --- a/tests/topotests/ldp-oc-acl-topo1/r2/ospfd.conf +++ b/tests/topotests/ldp-oc-acl-topo1/r2/ospfd.conf @@ -8,8 +8,10 @@ router ospf int r2-eth0 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 2 ! int r2-eth1 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 1 ! diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/show_ip_ospf_neighbor.json b/tests/topotests/ldp-oc-acl-topo1/r2/show_ip_ospf_neighbor.json index 55f12359e5..aa68198957 100644 --- a/tests/topotests/ldp-oc-acl-topo1/r2/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-oc-acl-topo1/r2/show_ip_ospf_neighbor.json @@ -5,15 +5,12 @@ "priority":1, "state":"Full\/Backup", "address":"10.0.1.1", - "ifaceName":"r2-eth0:10.0.1.2", - "retransmitCounter":0, - "requestCounter":0, - "dbSummaryCounter":0 + "ifaceName":"r2-eth0:10.0.1.2" } ], "3.3.3.3":[ { - "priority":1, + "priority":2, "state":"Full\/Backup", "address":"10.0.2.3", "ifaceName":"r2-eth1:10.0.2.2" @@ -21,7 +18,7 @@ ], "4.4.4.4":[ { - "priority":1, + "priority":3, "state":"Full\/DR", "address":"10.0.2.4", "ifaceName":"r2-eth1:10.0.2.2" diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/ospfd.conf b/tests/topotests/ldp-oc-acl-topo1/r3/ospfd.conf index 4566976b7b..0d3a74c4ac 100644 --- a/tests/topotests/ldp-oc-acl-topo1/r3/ospfd.conf +++ b/tests/topotests/ldp-oc-acl-topo1/r3/ospfd.conf @@ -9,4 +9,5 @@ router ospf int r3-eth0 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 2 ! diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/show_ip_ospf_neighbor.json b/tests/topotests/ldp-oc-acl-topo1/r3/show_ip_ospf_neighbor.json index 24502ed813..905774fc46 100644 --- a/tests/topotests/ldp-oc-acl-topo1/r3/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-oc-acl-topo1/r3/show_ip_ospf_neighbor.json @@ -10,7 +10,7 @@ ], "4.4.4.4":[ { - "priority":1, + "priority":3, "state":"Full\/DR", "address":"10.0.2.4", "ifaceName":"r3-eth0:10.0.2.3" diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/ospfd.conf b/tests/topotests/ldp-oc-acl-topo1/r4/ospfd.conf index 5aae885a12..7bbd228d02 100644 --- a/tests/topotests/ldp-oc-acl-topo1/r4/ospfd.conf +++ b/tests/topotests/ldp-oc-acl-topo1/r4/ospfd.conf @@ -8,4 +8,5 @@ router ospf int r4-eth0 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 3 ! diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/show_ip_ospf_neighbor.json b/tests/topotests/ldp-oc-acl-topo1/r4/show_ip_ospf_neighbor.json index 794410522d..67593952ca 100644 --- a/tests/topotests/ldp-oc-acl-topo1/r4/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-oc-acl-topo1/r4/show_ip_ospf_neighbor.json @@ -11,7 +11,7 @@ ], "3.3.3.3":[ { - "priority":1, + "priority":2, "state":"Full\/Backup", "address":"10.0.2.3", "ifaceName":"r4-eth0:10.0.2.4" diff --git a/tests/topotests/ldp-oc-topo1/r1/ospfd.conf b/tests/topotests/ldp-oc-topo1/r1/ospfd.conf index 87d5703d9e..877e14ff36 100644 --- a/tests/topotests/ldp-oc-topo1/r1/ospfd.conf +++ b/tests/topotests/ldp-oc-topo1/r1/ospfd.conf @@ -8,4 +8,5 @@ router ospf int r1-eth0 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 1 ! diff --git a/tests/topotests/ldp-oc-topo1/r1/show_ip_ospf_neighbor.json b/tests/topotests/ldp-oc-topo1/r1/show_ip_ospf_neighbor.json index 2c493173f5..aa3f74fc5f 100644 --- a/tests/topotests/ldp-oc-topo1/r1/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-oc-topo1/r1/show_ip_ospf_neighbor.json @@ -2,7 +2,7 @@ "neighbors":{ "2.2.2.2":[ { - "priority":1, + "priority":2, "state":"Full\/DR", "address":"10.0.1.2", "ifaceName":"r1-eth0:10.0.1.1" diff --git a/tests/topotests/ldp-oc-topo1/r2/ospfd.conf b/tests/topotests/ldp-oc-topo1/r2/ospfd.conf index 51317202bb..8cba1529e8 100644 --- a/tests/topotests/ldp-oc-topo1/r2/ospfd.conf +++ b/tests/topotests/ldp-oc-topo1/r2/ospfd.conf @@ -8,8 +8,10 @@ router ospf int r2-eth0 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 2 ! int r2-eth1 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 1 ! diff --git a/tests/topotests/ldp-oc-topo1/r2/show_ip_ospf_neighbor.json b/tests/topotests/ldp-oc-topo1/r2/show_ip_ospf_neighbor.json index 55f12359e5..aa68198957 100644 --- a/tests/topotests/ldp-oc-topo1/r2/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-oc-topo1/r2/show_ip_ospf_neighbor.json @@ -5,15 +5,12 @@ "priority":1, "state":"Full\/Backup", "address":"10.0.1.1", - "ifaceName":"r2-eth0:10.0.1.2", - "retransmitCounter":0, - "requestCounter":0, - "dbSummaryCounter":0 + "ifaceName":"r2-eth0:10.0.1.2" } ], "3.3.3.3":[ { - "priority":1, + "priority":2, "state":"Full\/Backup", "address":"10.0.2.3", "ifaceName":"r2-eth1:10.0.2.2" @@ -21,7 +18,7 @@ ], "4.4.4.4":[ { - "priority":1, + "priority":3, "state":"Full\/DR", "address":"10.0.2.4", "ifaceName":"r2-eth1:10.0.2.2" diff --git a/tests/topotests/ldp-oc-topo1/r3/ospfd.conf b/tests/topotests/ldp-oc-topo1/r3/ospfd.conf index 4566976b7b..0d3a74c4ac 100644 --- a/tests/topotests/ldp-oc-topo1/r3/ospfd.conf +++ b/tests/topotests/ldp-oc-topo1/r3/ospfd.conf @@ -9,4 +9,5 @@ router ospf int r3-eth0 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 2 ! diff --git a/tests/topotests/ldp-oc-topo1/r3/show_ip_ospf_neighbor.json b/tests/topotests/ldp-oc-topo1/r3/show_ip_ospf_neighbor.json index 24502ed813..905774fc46 100644 --- a/tests/topotests/ldp-oc-topo1/r3/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-oc-topo1/r3/show_ip_ospf_neighbor.json @@ -10,7 +10,7 @@ ], "4.4.4.4":[ { - "priority":1, + "priority":3, "state":"Full\/DR", "address":"10.0.2.4", "ifaceName":"r3-eth0:10.0.2.3" diff --git a/tests/topotests/ldp-oc-topo1/r4/ospfd.conf b/tests/topotests/ldp-oc-topo1/r4/ospfd.conf index 5aae885a12..7bbd228d02 100644 --- a/tests/topotests/ldp-oc-topo1/r4/ospfd.conf +++ b/tests/topotests/ldp-oc-topo1/r4/ospfd.conf @@ -8,4 +8,5 @@ router ospf int r4-eth0 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 3 ! diff --git a/tests/topotests/ldp-oc-topo1/r4/show_ip_ospf_neighbor.json b/tests/topotests/ldp-oc-topo1/r4/show_ip_ospf_neighbor.json index 794410522d..67593952ca 100644 --- a/tests/topotests/ldp-oc-topo1/r4/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-oc-topo1/r4/show_ip_ospf_neighbor.json @@ -11,7 +11,7 @@ ], "3.3.3.3":[ { - "priority":1, + "priority":2, "state":"Full\/Backup", "address":"10.0.2.3", "ifaceName":"r4-eth0:10.0.2.4" diff --git a/tests/topotests/ldp-vpls-topo1/r1/ospfd.conf b/tests/topotests/ldp-vpls-topo1/r1/ospfd.conf index 76ea32fb61..a66fb92ba3 100644 --- a/tests/topotests/ldp-vpls-topo1/r1/ospfd.conf +++ b/tests/topotests/ldp-vpls-topo1/r1/ospfd.conf @@ -8,8 +8,10 @@ router ospf int r1-eth1 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 1 ! int r1-eth2 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 1 ! diff --git a/tests/topotests/ldp-vpls-topo1/r1/show_ip_ospf_neighbor.json b/tests/topotests/ldp-vpls-topo1/r1/show_ip_ospf_neighbor.json index 6e6c3c8cb8..7e281abb5f 100644 --- a/tests/topotests/ldp-vpls-topo1/r1/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-vpls-topo1/r1/show_ip_ospf_neighbor.json @@ -4,8 +4,8 @@ { "dbSummaryCounter": 0, "retransmitCounter": 0, - "priority": 1, - "state": "Full/DR", + "priority": 2, + "state": "Full\/DR", "address": "10.0.1.2", "ifaceName": "r1-eth1:10.0.1.1", "requestCounter": 0 @@ -15,8 +15,8 @@ { "dbSummaryCounter": 0, "retransmitCounter": 0, - "priority": 1, - "state": "Full/DR", + "priority": 2, + "state": "Full\/DR", "address": "10.0.2.3", "ifaceName": "r1-eth2:10.0.2.1", "requestCounter": 0 diff --git a/tests/topotests/ldp-vpls-topo1/r2/ospfd.conf b/tests/topotests/ldp-vpls-topo1/r2/ospfd.conf index 7b3ddfe371..b4692feec8 100644 --- a/tests/topotests/ldp-vpls-topo1/r2/ospfd.conf +++ b/tests/topotests/ldp-vpls-topo1/r2/ospfd.conf @@ -8,8 +8,10 @@ router ospf int r2-eth1 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 2 ! int r2-eth2 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 1 ! diff --git a/tests/topotests/ldp-vpls-topo1/r2/show_ip_ospf_neighbor.json b/tests/topotests/ldp-vpls-topo1/r2/show_ip_ospf_neighbor.json index b5b10cc535..22fd98f519 100644 --- a/tests/topotests/ldp-vpls-topo1/r2/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-vpls-topo1/r2/show_ip_ospf_neighbor.json @@ -3,7 +3,7 @@ "1.1.1.1": [ { "priority":1, - "state":"Full/Backup", + "state":"Full\/Backup", "address":"10.0.1.1", "ifaceName":"r2-eth1:10.0.1.2", "retransmitCounter":0, @@ -13,8 +13,8 @@ ], "3.3.3.3": [ { - "priority":1, - "state":"Full/DR", + "priority":2, + "state":"Full\/DR", "address":"10.0.3.3", "ifaceName":"r2-eth2:10.0.3.2", "retransmitCounter":0, diff --git a/tests/topotests/ldp-vpls-topo1/r3/ospfd.conf b/tests/topotests/ldp-vpls-topo1/r3/ospfd.conf index b424f2e108..2413bfa9d5 100644 --- a/tests/topotests/ldp-vpls-topo1/r3/ospfd.conf +++ b/tests/topotests/ldp-vpls-topo1/r3/ospfd.conf @@ -8,8 +8,10 @@ router ospf int r3-eth1 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 2 ! int r3-eth2 ip ospf hello-interval 2 ip ospf dead-interval 10 + ip ospf priority 2 ! diff --git a/tests/topotests/ldp-vpls-topo1/r3/show_ip_ospf_neighbor.json b/tests/topotests/ldp-vpls-topo1/r3/show_ip_ospf_neighbor.json index bc7bb1e894..970eb2fc1d 100644 --- a/tests/topotests/ldp-vpls-topo1/r3/show_ip_ospf_neighbor.json +++ b/tests/topotests/ldp-vpls-topo1/r3/show_ip_ospf_neighbor.json @@ -3,7 +3,7 @@ "1.1.1.1": [ { "priority":1, - "state":"Full/Backup", + "state":"Full\/Backup", "address":"10.0.2.1", "ifaceName":"r3-eth1:10.0.2.3", "retransmitCounter":0, @@ -14,7 +14,7 @@ "2.2.2.2": [ { "priority":1, - "state":"Full/Backup", + "state":"Full\/Backup", "address":"10.0.3.2", "ifaceName":"r3-eth2:10.0.3.3", "retransmitCounter":0, diff --git a/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.pdf b/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.pdf index dd7c6f74d05f98c9437e8ef15d431ca57bdbd3a6..4d26732ea7c54efdb47023e8a056fb7d1a8cbf20 100644 GIT binary patch literal 16693 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 H82bMK_T=w- literal 14773 zcmdU0Yj4|D68$XxirEiF9AGW!@+k&EfKAh40|bas2mO);1ufAsTZ&Xk%8v^9?|bGx zNM1c+N$~=0kl5t#KIhJyIWuI={&jhE@t;|FonCmuv2%9zLzN~?S-qlpl`L=XvcKpq zt?H~S$Q^o<;h4_dvGB*f@P;mazC@Q#S(B%)s7V*gJZVx$E|Ym$zoK*86*F$~wpHFU_zr#6AldZ1plZ%hndG_Zj{YHzO zb9V#q<9&ntP_C*B=eoILE#Eu2dA@V%{=+>JPxCaX8Ymkk|CO#`1o9M&7yX>pSlAS< zxva`5+@$mAF^!$kv@EOH1s~tVO|r=HN3zaO9vXfms~io!*-DNiO?7+B)`}-oPm^4l zi(2OBeQ|fiqMzUv@KOPEk&|Mnzsa_pQ?LsNN*|`|0(Z38RXylTRra=Zg421-(;7Zk z=GhEB^7#v#98=Ab`j&d?8?hjjEn?bO;$oFcZ`|9pY#P;7?CKis5bhf)EAFzI)}xy& z&uLwx_sgWYm2O6WjjH?ue!d~SE$?Z~KHr!3cXrMGwI-Lhox^qSvl%d@--2h88|VvH z#ZGa>puW|3mL>DDNOG**8o5c9X|>rJNO@b9f7A>|yeJ^-oTdQ(ikwkV&Qf)~=4ZF{ zwYuvsEuGDuY$GGtQv(&{Qa3T6iQm1MoRLJ`B_bQG2WOPg?^N(z?F>fhLYpV7a4`D4 zf0OlZaCRhMcumE7WqTj!?t-m5#9slp&<@Ia5$ zR7p`wx;Ma}m_25IU!Q|$nK04aZdgtMc%0jJr%~qi#V!J@ zR~pg{0smOi;&HVE?Dvgs@tBwQmZ%-jJj$`jo=^=jhp?=iK{q8VUrpJzRr~?`2Z@DY zKk80r6gt1S;*`M=KKI|EH&ChsJ_q`T?Pg%?d4^v=w-J(v@?K*FK%A#HQiUpkTGAOU z5(MaaRi(6?-7rHVL~~>S3vdt>?vQxN++ta!n4+e#xrJJqTTthBS>13TuAGtSeUFFG zw+u?_Rh?Fng}0AKJuXPfK2}Xj`}J~Oyng+H60pPu6-n`k< zOk%G(Ky_p|5R>ace2Epl!m@?Fwz5nw1P0LrFywls!AH>aqCu)y7O&{CtN>y-SH=ZF zZFqN7aMAr;pF|vxf%_@o)zB*#h%^z+Re{bW#!kr}^WP32CGIHhEuEYV&tlrG#d&Tp z90wEubyS=n5r%aBiNWksx#Xny5%~7u-Q~qEmmjW3yrfCa!%4Iuvz>6HG>{b zclE>GaC!<$)Xx)Rijm5*8~=m125tf-f9&Q$b#B2BmZS+qtYnct^x8v; zq9H01V$#=i;0|F@w#@U@!S(xUSs>>yC#U-QeM8W5ShDWq^!AhobOyNB0Wck^E+RxK zXm$qoqjT7`ZR#y^J)^oc`Ju;uVDRHe_->4gNi^}jo_U1QzxrX$Sl zpz)4Xf-n6DZUX1kFn}{XXOFj)aIjk4hz}Uf*o_zgSJ+iWIE1oCu5S@iFV{_a@Hs0T4o`->1~0xna2`#IB)`@ zo8A0Vws;bvN62;9_!Q7;hHZovqDP^(jpz}3^CroTTpgPGh;D=yqMPm(c$jf#`-?PFTXh|?NL%>-+~P?9?Rt`t z*Z^&W7C^g5aJPyeA{N^KEh6c+!s>2>7C@Ws78aX{EMa$&#{!ek{KqbZxO86aPd}>@ z5_K{0xr!uwI9^KzMTp`d7$V3ZSe-!R3I!qGjAH^Z3|;1S5vb&5j9*VA>-~Jf zH%#p5=z~v_y6A(mi`?%l^c*(e@rNwo&Wb+5qw{*B8gp==hfzop_FknY#DD_av150|Sp%iye53Pz4@+rvi_@`M$to#@`iqHk{+&T8|42?F>8{1NQAPINTn6MJQE% z`yBRo*nr2{qmMKWTG+P7z~+Pp+oK;ywOU-LwMTI5Z`B>8JsKS!YLB3EF0$AFB)dg3 z7r_te*^H z>taymT=z%Ivze5x=zd&F`Cho=PjdxW5Sn`Ez%^uR_+P<1i zp|0Vw}n8xwcy2&RlyVH9pv(JS0X(I#gxq7?|YAcUK-Z&gWp! z93$-091ptNO0_*c;LZ0}E?$&uGC3nt)9Cjgrng1f%siH`i~lDuIkTI8$`(&za_lSe z9Q(ynBebX(zZ~6Sa^4vBznN;gI(@gg8==MIOm~a4nTaf6caq0~sy9{%!ZwrJ@U32K zsZJ>Cc?e+uACARKRu&3j`&Gs97{~VRwKr2yd(*YGF-r|U}c2EASM@-7xhnmjpC6DS?n>d z#i!yX3|J?9K+V#Ha@dxim6#~)Z@-1wZ#;E)I57!@taLpeF*$5NOS1=*t3p)CcM_BE zL}C)4RE+_56BFct-y|mNoJPk75);O9Pzj-4zZ>Voo8Ac4GVGCo3oNZWj5Z(u?&CP4wr9~0O_BVghb z6G+j-r2s{0ynK&9PWUF~az0jtn^PSmP-)pt2idUagNa74kGXFQ*hg1WUOR+ngs95P z0M#!U8DXDjgbE<-@_mRS+9Dc(dY@vIjEu}88m70!Da<^UunSKo5Dl{%i)a|(-*Ag3 z5sgs2Vzf&}MrbjG5R7q)Xasmawna1ofHT{M)!hg!qG7sQoWe|G3A>X#9wZfi-6k5} zsGgosZ4OaHjS)tzl2M55hDfqh$tXlr1#?g(qsYaJM&QVI)r>+w7pwY6>cHDOGKUOw zm6!1`Hq;>i3L;(zd`S}lJAt^UmSKA#1!H_50_GsUYB?DgHQGNXa|p1cof+5@)^KEG z(*fTu0U4nx0qHyav5#UL-&X=M-R^91BjQlk96TU9x lZ+PYB$ogAV+;n1=;lD}p*Qww5bQRM$=KpD6sE