summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.clang-format3
-rw-r--r--.git-blame-ignore-revs1
-rw-r--r--.travis.yml20
-rw-r--r--bfdd/bfd.c8
-rw-r--r--bgpd/bgp_evpn.c29
-rw-r--r--bgpd/bgp_evpn_mh.c58
-rw-r--r--bgpd/bgp_evpn_mh.h6
-rw-r--r--bgpd/bgp_main.c12
-rw-r--r--bgpd/bgp_nb.c3
-rw-r--r--bgpd/bgp_nb.h6
-rw-r--r--bgpd/bgp_nb_config.c156
-rw-r--r--bgpd/bgp_nht.c4
-rw-r--r--bgpd/bgp_pbr.c70
-rw-r--r--bgpd/bgp_route.c12
-rw-r--r--bgpd/bgp_vty.c61
-rw-r--r--bgpd/bgp_zebra.c43
-rw-r--r--bgpd/bgpd.c50
-rw-r--r--bgpd/bgpd.h2
-rw-r--r--bgpd/subdir.am4
-rw-r--r--configure.ac4
-rw-r--r--debian/control4
-rw-r--r--doc/developer/building-libyang.rst22
-rw-r--r--doc/developer/topotests.rst12
-rw-r--r--doc/user/bgp.rst50
-rw-r--r--doc/user/ospf6d.rst10
-rw-r--r--doc/user/pathd.rst40
-rw-r--r--docker/ubuntu18-ci/Dockerfile14
-rw-r--r--docker/ubuntu20-ci/Dockerfile14
-rw-r--r--eigrpd/eigrp_cli.c2
-rw-r--r--isisd/isis_adjacency.h2
-rw-r--r--isisd/isis_bfd.c421
-rw-r--r--isisd/isis_bfd.h8
-rw-r--r--isisd/isis_circuit.c7
-rw-r--r--isisd/isis_circuit.h7
-rw-r--r--isisd/isis_cli.c58
-rw-r--r--isisd/isis_main.c2
-rw-r--r--isisd/isis_nb_config.c77
-rw-r--r--isisd/isis_vty_fabricd.c15
-rw-r--r--isisd/isis_zebra.c2
-rw-r--r--isisd/isisd.c3
-rw-r--r--lib/bfd.c419
-rw-r--r--lib/bfd.h78
-rw-r--r--lib/grammar_sandbox_main.c1
-rw-r--r--lib/if.c6
-rw-r--r--lib/if.h3
-rw-r--r--lib/libfrr.c6
-rw-r--r--lib/nexthop.c102
-rw-r--r--lib/nexthop.h5
-rw-r--r--lib/northbound.c377
-rw-r--r--lib/northbound.h15
-rw-r--r--lib/northbound_cli.c93
-rw-r--r--lib/northbound_confd.c16
-rw-r--r--lib/northbound_grpc.cpp2
-rw-r--r--lib/northbound_sysrepo.c22
-rw-r--r--lib/privs.c4
-rw-r--r--lib/privs.h1
-rw-r--r--lib/vrf.c3
-rw-r--r--lib/yang.c400
-rw-r--r--lib/yang.h143
-rw-r--r--lib/yang_translator.c129
-rw-r--r--lib/yang_wrappers.c546
-rw-r--r--ospf6d/ospf6_flood.c18
-rw-r--r--ospf6d/ospf6_interface.c13
-rw-r--r--ospf6d/ospf6_interface.h1
-rw-r--r--ospf6d/ospf6_intra.c32
-rw-r--r--ospf6d/ospf6_main.c5
-rw-r--r--ospf6d/ospf6_top.c18
-rw-r--r--ospf6d/ospf6_top.h4
-rw-r--r--ospf6d/ospf6_zebra.c23
-rw-r--r--ospfd/ospf_asbr.c6
-rw-r--r--ospfd/ospf_flood.c10
-rw-r--r--ospfd/ospf_gr_helper.c53
-rw-r--r--ospfd/ospf_nsm.c2
-rw-r--r--ospfd/ospf_packet.c2
-rw-r--r--ospfd/ospf_spf.c2
-rw-r--r--ospfd/ospfd.c1
-rw-r--r--pathd/path_cli.c297
-rw-r--r--pathd/path_main.c4
-rw-r--r--pathd/path_nb.c9
-rw-r--r--pathd/path_nb.h2
-rw-r--r--pathd/path_nb_config.c41
-rw-r--r--pathd/path_pcep_config.c87
-rw-r--r--pathd/path_pcep_debug.c2
-rw-r--r--pathd/path_ted.c726
-rw-r--r--pathd/path_ted.h178
-rw-r--r--pathd/path_zebra.c56
-rw-r--r--pathd/pathd.c278
-rw-r--r--pathd/pathd.h70
-rw-r--r--pathd/subdir.am8
-rw-r--r--pceplib/test/pcep_msg_messages_test.c42
-rw-r--r--pceplib/test/pcep_msg_objects_test.c19
-rw-r--r--pceplib/test/pcep_msg_tlvs_test.c25
-rw-r--r--pceplib/test/pcep_msg_tools_test.c23
-rw-r--r--pceplib/test/pcep_pcc_api_test.c10
-rw-r--r--pceplib/test/pcep_session_logic_loop_test.c5
-rw-r--r--pceplib/test/pcep_session_logic_states_test.c10
-rw-r--r--pceplib/test/pcep_session_logic_test.c17
-rw-r--r--pceplib/test/pcep_socket_comm_test.c13
-rw-r--r--pceplib/test/pcep_utils_counters_test.c3
-rw-r--r--pceplib/test/pcep_utils_double_linked_list_test.c14
-rw-r--r--pceplib/test/pcep_utils_ordered_list_test.c5
-rw-r--r--pceplib/test/pcep_utils_queue_test.c2
-rw-r--r--pimd/pim_cmd.c85
-rw-r--r--pimd/pim_ifchannel.c2
-rw-r--r--pimd/pim_nb_config.c13
-rw-r--r--pimd/pim_upstream.c22
-rw-r--r--pimd/pim_upstream.h1
-rw-r--r--pimd/pim_vty.c33
-rw-r--r--pimd/pimd.c3
-rw-r--r--redhat/frr.spec.in2
-rw-r--r--ripd/rip_cli.c12
-rw-r--r--ripd/rip_interface.c5
-rw-r--r--ripd/ripd.c10
-rw-r--r--ripngd/ripng_interface.c5
-rw-r--r--ripngd/ripngd.c10
-rw-r--r--staticd/static_nb.c2
-rw-r--r--staticd/static_nb.h4
-rw-r--r--staticd/static_nb_config.c37
-rw-r--r--tests/.gitignore1
-rw-r--r--tests/bgpd/test_peer_attr.c3
-rw-r--r--tests/helpers/c/main.c1
-rw-r--r--tests/isisd/test_isis_spf.c2
-rw-r--r--tests/lib/cli/common_cli.c1
-rw-r--r--tests/lib/cli/test_commands.c1
-rw-r--r--tests/lib/northbound/test_oper_data.c1
-rw-r--r--tests/lib/test_assert.c2
-rw-r--r--tests/lib/test_nexthop.c201
-rw-r--r--tests/lib/test_nexthop.py8
-rw-r--r--tests/subdir.am8
-rw-r--r--tests/topotests/all_protocol_startup/r1/babeld.conf (renamed from tests/topotests/all-protocol-startup/r1/babeld.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/bgpd.conf (renamed from tests/topotests/all-protocol-startup/r1/bgpd.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ip_nht.ref (renamed from tests/topotests/all-protocol-startup/r1/ip_nht.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ipv4_routes.ref (renamed from tests/topotests/all-protocol-startup/r1/ipv4_routes.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ipv6_nht.ref (renamed from tests/topotests/all-protocol-startup/r1/ipv6_nht.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ipv6_routes.ref (renamed from tests/topotests/all-protocol-startup/r1/ipv6_routes.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/isisd.conf (renamed from tests/topotests/all-protocol-startup/r1/isisd.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ldpd.conf (renamed from tests/topotests/all-protocol-startup/r1/ldpd.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/nhrpd.conf (renamed from tests/topotests/all-protocol-startup/r1/nhrpd.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ospf6d.conf (renamed from tests/topotests/all-protocol-startup/r1/ospf6d.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ospf6d.conf-pre-v4 (renamed from tests/topotests/all-protocol-startup/r1/ospf6d.conf-pre-v4)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ospfd.conf (renamed from tests/topotests/all-protocol-startup/r1/ospfd.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/pbrd.conf (renamed from tests/topotests/all-protocol-startup/r1/pbrd.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/rip_status.ref (renamed from tests/topotests/all-protocol-startup/r1/rip_status.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ripd.conf (renamed from tests/topotests/all-protocol-startup/r1/ripd.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ripng_status.ref (renamed from tests/topotests/all-protocol-startup/r1/ripng_status.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/ripngd.conf (renamed from tests/topotests/all-protocol-startup/r1/ripngd.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post4.1.ref (renamed from tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post4.1.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post5.0.ref (renamed from tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post5.0.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post6.1.ref (renamed from tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post6.1.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_bgp_ipv4.ref (renamed from tests/topotests/all-protocol-startup/r1/show_bgp_ipv4.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_bgp_ipv6-post4.1.ref (renamed from tests/topotests/all-protocol-startup/r1/show_bgp_ipv6-post4.1.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_bgp_ipv6.ref (renamed from tests/topotests/all-protocol-startup/r1/show_bgp_ipv6.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_bgp_ipv6_post6.1.ref (renamed from tests/topotests/all-protocol-startup/r1/show_bgp_ipv6_post6.1.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_bgp_ipv6_summary.ref (renamed from tests/topotests/all-protocol-startup/r1/show_bgp_ipv6_summary.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_ip_bgp_summary.ref (renamed from tests/topotests/all-protocol-startup/r1/show_ip_bgp_summary.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_ip_ospf_interface.ref (renamed from tests/topotests/all-protocol-startup/r1/show_ip_ospf_interface.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_ipv6_ospf6_interface (renamed from tests/topotests/all-protocol-startup/r1/show_ipv6_ospf6_interface)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_ipv6_ospf6_interface.ref (renamed from tests/topotests/all-protocol-startup/r1/show_ipv6_ospf6_interface.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_isis_interface_detail.ref (renamed from tests/topotests/all-protocol-startup/r1/show_isis_interface_detail.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_mpls_ldp_interface.ref (renamed from tests/topotests/all-protocol-startup/r1/show_mpls_ldp_interface.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/show_route_map.ref (renamed from tests/topotests/all-protocol-startup/r1/show_route_map.ref)0
-rw-r--r--tests/topotests/all_protocol_startup/r1/zebra.conf (renamed from tests/topotests/all-protocol-startup/r1/zebra.conf)0
-rw-r--r--tests/topotests/all_protocol_startup/test_all_protocol_startup.dot (renamed from tests/topotests/all-protocol-startup/test_all_protocol_startup.dot)0
-rw-r--r--tests/topotests/all_protocol_startup/test_all_protocol_startup.pdf (renamed from tests/topotests/all-protocol-startup/test_all_protocol_startup.pdf)bin21760 -> 21760 bytes
-rw-r--r--tests/topotests/all_protocol_startup/test_all_protocol_startup.py (renamed from tests/topotests/all-protocol-startup/test_all_protocol_startup.py)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/__init__.py (renamed from tests/topotests/bfd-bgp-cbit-topo3/__init__.py)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r1/bfdd.conf (renamed from tests/topotests/bfd-bgp-cbit-topo3/r1/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r1/bgp_ipv6_routes_down.json (renamed from tests/topotests/bfd-bgp-cbit-topo3/r1/bgp_ipv6_routes_down.json)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r1/bgpd.conf (renamed from tests/topotests/bfd-bgp-cbit-topo3/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r1/ipv6_routes.json (renamed from tests/topotests/bfd-bgp-cbit-topo3/r1/ipv6_routes.json)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r1/peers.json (renamed from tests/topotests/bfd-bgp-cbit-topo3/r1/peers.json)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r1/peers_down.json (renamed from tests/topotests/bfd-bgp-cbit-topo3/r1/peers_down.json)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r1/zebra.conf (renamed from tests/topotests/bfd-bgp-cbit-topo3/r1/zebra.conf)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r2/zebra.conf (renamed from tests/topotests/bfd-bgp-cbit-topo3/r2/zebra.conf)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r3/bfdd.conf (renamed from tests/topotests/bfd-bgp-cbit-topo3/r3/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r3/bgp_ipv6_routes_down.json (renamed from tests/topotests/bfd-bgp-cbit-topo3/r3/bgp_ipv6_routes_down.json)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r3/bgpd.conf (renamed from tests/topotests/bfd-bgp-cbit-topo3/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r3/ipv6_routes.json (renamed from tests/topotests/bfd-bgp-cbit-topo3/r3/ipv6_routes.json)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r3/peers.json (renamed from tests/topotests/bfd-bgp-cbit-topo3/r3/peers.json)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r3/peers_down.json (renamed from tests/topotests/bfd-bgp-cbit-topo3/r3/peers_down.json)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/r3/zebra.conf (renamed from tests/topotests/bfd-bgp-cbit-topo3/r3/zebra.conf)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/test_bfd_bgp_cbit_topo3.dot (renamed from tests/topotests/bfd-bgp-cbit-topo3/test_bfd_bgp_cbit_topo3.dot)0
-rw-r--r--tests/topotests/bfd_bgp_cbit_topo3/test_bfd_bgp_cbit_topo3.py (renamed from tests/topotests/bfd-bgp-cbit-topo3/test_bfd_bgp_cbit_topo3.py)0
-rw-r--r--tests/topotests/bfd_isis_topo1/__init__.py (renamed from tests/topotests/bfd-isis-topo1/__init__.py)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/bfdd.conf (renamed from tests/topotests/bfd-isis-topo1/rt1/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/isisd.conf (renamed from tests/topotests/bfd-isis-topo1/rt1/isisd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step1/show_ip_route.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step1/show_ipv6_route.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step2/show_bfd_peers.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step2/show_bfd_peers.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_healthy.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_healthy.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_rt2_down.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_rt2_down.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_rt3_down.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_rt3_down.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_healthy.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_healthy.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_rt2_down.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_rt2_down.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_rt3_down.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_rt3_down.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_healthy.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_ipv6_route_healthy.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt2_down.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_ipv6_route_rt2_down.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/step3/show_ipv6_route_rt3_down.ref (renamed from tests/topotests/bfd-isis-topo1/rt1/step3/show_ipv6_route_rt3_down.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt1/zebra.conf (renamed from tests/topotests/bfd-isis-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt2/bfdd.conf (renamed from tests/topotests/bfd-isis-topo1/rt2/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt2/isisd.conf (renamed from tests/topotests/bfd-isis-topo1/rt2/isisd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt2/step2/show_bfd_peers.ref (renamed from tests/topotests/bfd-isis-topo1/rt2/step2/show_bfd_peers.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt2/zebra.conf (renamed from tests/topotests/bfd-isis-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt3/bfdd.conf (renamed from tests/topotests/bfd-isis-topo1/rt3/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt3/isisd.conf (renamed from tests/topotests/bfd-isis-topo1/rt3/isisd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt3/step2/show_bfd_peers.ref (renamed from tests/topotests/bfd-isis-topo1/rt3/step2/show_bfd_peers.ref)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt3/zebra.conf (renamed from tests/topotests/bfd-isis-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt4/bfdd.conf (renamed from tests/topotests/bfd-isis-topo1/rt4/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt4/isisd.conf (renamed from tests/topotests/bfd-isis-topo1/rt4/isisd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt4/zebra.conf (renamed from tests/topotests/bfd-isis-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt5/bfdd.conf (renamed from tests/topotests/bfd-isis-topo1/rt5/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt5/isisd.conf (renamed from tests/topotests/bfd-isis-topo1/rt5/isisd.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/rt5/zebra.conf (renamed from tests/topotests/bfd-isis-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/bfd_isis_topo1/test_bfd_isis_topo1.py (renamed from tests/topotests/bfd-isis-topo1/test_bfd_isis_topo1.py)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/__init__.py (renamed from tests/topotests/bfd-ospf-topo1/__init__.py)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/bfdd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt1/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/ospf6d.conf (renamed from tests/topotests/bfd-ospf-topo1/rt1/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/ospfd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt1/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step1/show_ip_route.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step1/show_ipv6_route.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step2/show_bfd_peers.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step2/show_bfd_peers.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_healthy.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_healthy.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_rt2_down.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_rt2_down.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_rt3_down.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_rt3_down.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_healthy.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_healthy.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_rt2_down.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_rt2_down.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_rt3_down.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_rt3_down.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_healthy.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_ipv6_route_healthy.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt2_down.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_ipv6_route_rt2_down.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/step3/show_ipv6_route_rt3_down.ref (renamed from tests/topotests/bfd-ospf-topo1/rt1/step3/show_ipv6_route_rt3_down.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt1/zebra.conf (renamed from tests/topotests/bfd-ospf-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt2/bfdd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt2/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt2/ospf6d.conf (renamed from tests/topotests/bfd-ospf-topo1/rt2/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt2/ospfd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt2/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt2/step2/show_bfd_peers.ref (renamed from tests/topotests/bfd-ospf-topo1/rt2/step2/show_bfd_peers.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt2/zebra.conf (renamed from tests/topotests/bfd-ospf-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt3/bfdd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt3/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt3/ospf6d.conf (renamed from tests/topotests/bfd-ospf-topo1/rt3/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt3/ospfd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt3/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt3/step2/show_bfd_peers.ref (renamed from tests/topotests/bfd-ospf-topo1/rt3/step2/show_bfd_peers.ref)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt3/zebra.conf (renamed from tests/topotests/bfd-ospf-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt4/bfdd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt4/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt4/ospf6d.conf (renamed from tests/topotests/bfd-ospf-topo1/rt4/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt4/ospfd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt4/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt4/zebra.conf (renamed from tests/topotests/bfd-ospf-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt5/bfdd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt5/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt5/ospf6d.conf (renamed from tests/topotests/bfd-ospf-topo1/rt5/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt5/ospfd.conf (renamed from tests/topotests/bfd-ospf-topo1/rt5/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_ospf_topo1/rt5/zebra.conf (renamed from tests/topotests/bfd-ospf-topo1/rt5/zebra.conf)0
-rwxr-xr-xtests/topotests/bfd_ospf_topo1/test_bfd_ospf_topo1.py (renamed from tests/topotests/bfd-ospf-topo1/test_bfd_ospf_topo1.py)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/__init__.py (renamed from tests/topotests/bfd-profiles-topo1/__init__.py)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r1/bfd-peers-initial.json (renamed from tests/topotests/bfd-profiles-topo1/r1/bfd-peers-initial.json)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r1/bfdd.conf (renamed from tests/topotests/bfd-profiles-topo1/r1/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r1/ospfd.conf (renamed from tests/topotests/bfd-profiles-topo1/r1/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r1/zebra.conf (renamed from tests/topotests/bfd-profiles-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r2/bfd-peers-initial.json (renamed from tests/topotests/bfd-profiles-topo1/r2/bfd-peers-initial.json)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r2/bfdd.conf (renamed from tests/topotests/bfd-profiles-topo1/r2/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r2/bgpd.conf (renamed from tests/topotests/bfd-profiles-topo1/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r2/zebra.conf (renamed from tests/topotests/bfd-profiles-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r3/bfd-peers-initial.json (renamed from tests/topotests/bfd-profiles-topo1/r3/bfd-peers-initial.json)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r3/bfdd.conf (renamed from tests/topotests/bfd-profiles-topo1/r3/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r3/bgpd.conf (renamed from tests/topotests/bfd-profiles-topo1/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r3/isisd.conf (renamed from tests/topotests/bfd-profiles-topo1/r3/isisd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r3/zebra.conf (renamed from tests/topotests/bfd-profiles-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r4/bfd-peers-initial.json (renamed from tests/topotests/bfd-profiles-topo1/r4/bfd-peers-initial.json)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r4/bfdd.conf (renamed from tests/topotests/bfd-profiles-topo1/r4/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r4/bgpd.conf (renamed from tests/topotests/bfd-profiles-topo1/r4/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r4/isisd.conf (renamed from tests/topotests/bfd-profiles-topo1/r4/isisd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r4/ospf6d.conf (renamed from tests/topotests/bfd-profiles-topo1/r4/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r4/zebra.conf (renamed from tests/topotests/bfd-profiles-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r5/bfd-peers-initial.json (renamed from tests/topotests/bfd-profiles-topo1/r5/bfd-peers-initial.json)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r5/bfdd.conf (renamed from tests/topotests/bfd-profiles-topo1/r5/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r5/ospf6d.conf (renamed from tests/topotests/bfd-profiles-topo1/r5/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r5/zebra.conf (renamed from tests/topotests/bfd-profiles-topo1/r5/zebra.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r6/bfd-peers-initial.json (renamed from tests/topotests/bfd-profiles-topo1/r6/bfd-peers-initial.json)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r6/bfdd.conf (renamed from tests/topotests/bfd-profiles-topo1/r6/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r6/ospfd.conf (renamed from tests/topotests/bfd-profiles-topo1/r6/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/r6/zebra.conf (renamed from tests/topotests/bfd-profiles-topo1/r6/zebra.conf)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.dot (renamed from tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.dot)0
-rw-r--r--tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.png (renamed from tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.png)bin43508 -> 43508 bytes
-rw-r--r--tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.py (renamed from tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.py)0
-rw-r--r--tests/topotests/bfd_topo1/__init__.py (renamed from tests/topotests/bfd-topo1/__init__.py)0
-rw-r--r--tests/topotests/bfd_topo1/r1/bfdd.conf (renamed from tests/topotests/bfd-topo1/r1/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r1/bgp_prefixes.json (renamed from tests/topotests/bfd-topo1/r1/bgp_prefixes.json)0
-rw-r--r--tests/topotests/bfd_topo1/r1/bgp_summary.json (renamed from tests/topotests/bfd-topo1/r1/bgp_summary.json)0
-rw-r--r--tests/topotests/bfd_topo1/r1/bgpd.conf (renamed from tests/topotests/bfd-topo1/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r1/peers.json (renamed from tests/topotests/bfd-topo1/r1/peers.json)0
-rw-r--r--tests/topotests/bfd_topo1/r1/zebra.conf (renamed from tests/topotests/bfd-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r2/bfdd.conf (renamed from tests/topotests/bfd-topo1/r2/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r2/bgp_prefixes.json (renamed from tests/topotests/bfd-topo1/r2/bgp_prefixes.json)0
-rw-r--r--tests/topotests/bfd_topo1/r2/bgp_summary.json (renamed from tests/topotests/bfd-topo1/r2/bgp_summary.json)0
-rw-r--r--tests/topotests/bfd_topo1/r2/bgpd.conf (renamed from tests/topotests/bfd-topo1/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r2/peers.json (renamed from tests/topotests/bfd-topo1/r2/peers.json)0
-rw-r--r--tests/topotests/bfd_topo1/r2/zebra.conf (renamed from tests/topotests/bfd-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r3/bfdd.conf (renamed from tests/topotests/bfd-topo1/r3/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r3/bgp_prefixes.json (renamed from tests/topotests/bfd-topo1/r3/bgp_prefixes.json)0
-rw-r--r--tests/topotests/bfd_topo1/r3/bgp_summary.json (renamed from tests/topotests/bfd-topo1/r3/bgp_summary.json)0
-rw-r--r--tests/topotests/bfd_topo1/r3/bgpd.conf (renamed from tests/topotests/bfd-topo1/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r3/peers.json (renamed from tests/topotests/bfd-topo1/r3/peers.json)0
-rw-r--r--tests/topotests/bfd_topo1/r3/zebra.conf (renamed from tests/topotests/bfd-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r4/bfdd.conf (renamed from tests/topotests/bfd-topo1/r4/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r4/bgp_prefixes.json (renamed from tests/topotests/bfd-topo1/r4/bgp_prefixes.json)0
-rw-r--r--tests/topotests/bfd_topo1/r4/bgp_summary.json (renamed from tests/topotests/bfd-topo1/r4/bgp_summary.json)0
-rw-r--r--tests/topotests/bfd_topo1/r4/bgpd.conf (renamed from tests/topotests/bfd-topo1/r4/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo1/r4/peers.json (renamed from tests/topotests/bfd-topo1/r4/peers.json)0
-rw-r--r--tests/topotests/bfd_topo1/r4/zebra.conf (renamed from tests/topotests/bfd-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo1/test_bfd_topo1.dot (renamed from tests/topotests/bfd-topo1/test_bfd_topo1.dot)0
-rw-r--r--tests/topotests/bfd_topo1/test_bfd_topo1.jpg (renamed from tests/topotests/bfd-topo1/test_bfd_topo1.jpg)bin25713 -> 25713 bytes
-rw-r--r--tests/topotests/bfd_topo1/test_bfd_topo1.py (renamed from tests/topotests/bfd-topo1/test_bfd_topo1.py)0
-rw-r--r--tests/topotests/bfd_topo2/__init__.py (renamed from tests/topotests/bfd-topo2/__init__.py)0
-rw-r--r--tests/topotests/bfd_topo2/r1/bfdd.conf (renamed from tests/topotests/bfd-topo2/r1/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r1/bgpd.conf (renamed from tests/topotests/bfd-topo2/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r1/ipv4_routes.json (renamed from tests/topotests/bfd-topo2/r1/ipv4_routes.json)0
-rw-r--r--tests/topotests/bfd_topo2/r1/ipv6_routes.json (renamed from tests/topotests/bfd-topo2/r1/ipv6_routes.json)0
-rw-r--r--tests/topotests/bfd_topo2/r1/peers.json (renamed from tests/topotests/bfd-topo2/r1/peers.json)0
-rw-r--r--tests/topotests/bfd_topo2/r1/zebra.conf (renamed from tests/topotests/bfd-topo2/r1/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r2/bfdd.conf (renamed from tests/topotests/bfd-topo2/r2/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r2/bgpd.conf (renamed from tests/topotests/bfd-topo2/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r2/ipv4_routes.json (renamed from tests/topotests/bfd-topo2/r2/ipv4_routes.json)0
-rw-r--r--tests/topotests/bfd_topo2/r2/ipv6_routes.json (renamed from tests/topotests/bfd-topo2/r2/ipv6_routes.json)0
-rw-r--r--tests/topotests/bfd_topo2/r2/ospf6d.conf (renamed from tests/topotests/bfd-topo2/r2/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r2/ospfd.conf (renamed from tests/topotests/bfd-topo2/r2/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r2/peers.json (renamed from tests/topotests/bfd-topo2/r2/peers.json)0
-rw-r--r--tests/topotests/bfd_topo2/r2/zebra.conf (renamed from tests/topotests/bfd-topo2/r2/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r3/bfdd.conf (renamed from tests/topotests/bfd-topo2/r3/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r3/ipv4_routes.json (renamed from tests/topotests/bfd-topo2/r3/ipv4_routes.json)0
-rw-r--r--tests/topotests/bfd_topo2/r3/ipv6_routes.json (renamed from tests/topotests/bfd-topo2/r3/ipv6_routes.json)0
-rw-r--r--tests/topotests/bfd_topo2/r3/ospfd.conf (renamed from tests/topotests/bfd-topo2/r3/ospfd.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r3/peers.json (renamed from tests/topotests/bfd-topo2/r3/peers.json)0
-rw-r--r--tests/topotests/bfd_topo2/r3/zebra.conf (renamed from tests/topotests/bfd-topo2/r3/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r4/bfdd.conf (renamed from tests/topotests/bfd-topo2/r4/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r4/ipv4_routes.json (renamed from tests/topotests/bfd-topo2/r4/ipv4_routes.json)0
-rw-r--r--tests/topotests/bfd_topo2/r4/ipv6_routes.json (renamed from tests/topotests/bfd-topo2/r4/ipv6_routes.json)0
-rw-r--r--tests/topotests/bfd_topo2/r4/ospf6d.conf (renamed from tests/topotests/bfd-topo2/r4/ospf6d.conf)0
-rw-r--r--tests/topotests/bfd_topo2/r4/peers.json (renamed from tests/topotests/bfd-topo2/r4/peers.json)0
-rw-r--r--tests/topotests/bfd_topo2/r4/zebra.conf (renamed from tests/topotests/bfd-topo2/r4/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo2/test_bfd_topo2.dot (renamed from tests/topotests/bfd-topo2/test_bfd_topo2.dot)0
-rw-r--r--tests/topotests/bfd_topo2/test_bfd_topo2.jpg (renamed from tests/topotests/bfd-topo2/test_bfd_topo2.jpg)bin24206 -> 24206 bytes
-rw-r--r--tests/topotests/bfd_topo2/test_bfd_topo2.py (renamed from tests/topotests/bfd-topo2/test_bfd_topo2.py)0
-rw-r--r--tests/topotests/bfd_topo3/__init__.py (renamed from tests/topotests/bfd-topo3/__init__.py)0
-rw-r--r--tests/topotests/bfd_topo3/r1/bfd-peers.json (renamed from tests/topotests/bfd-topo3/r1/bfd-peers.json)0
-rw-r--r--tests/topotests/bfd_topo3/r1/bfdd.conf (renamed from tests/topotests/bfd-topo3/r1/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r1/bgpd.conf (renamed from tests/topotests/bfd-topo3/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r1/zebra.conf (renamed from tests/topotests/bfd-topo3/r1/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r2/bfd-peers.json (renamed from tests/topotests/bfd-topo3/r2/bfd-peers.json)0
-rw-r--r--tests/topotests/bfd_topo3/r2/bfdd.conf (renamed from tests/topotests/bfd-topo3/r2/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r2/bgpd.conf (renamed from tests/topotests/bfd-topo3/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r2/zebra.conf (renamed from tests/topotests/bfd-topo3/r2/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r3/bfd-peers.json (renamed from tests/topotests/bfd-topo3/r3/bfd-peers.json)0
-rw-r--r--tests/topotests/bfd_topo3/r3/bfdd.conf (renamed from tests/topotests/bfd-topo3/r3/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r3/bgpd.conf (renamed from tests/topotests/bfd-topo3/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r3/zebra.conf (renamed from tests/topotests/bfd-topo3/r3/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r4/bfd-peers.json (renamed from tests/topotests/bfd-topo3/r4/bfd-peers.json)0
-rw-r--r--tests/topotests/bfd_topo3/r4/bfdd.conf (renamed from tests/topotests/bfd-topo3/r4/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r4/bgpd.conf (renamed from tests/topotests/bfd-topo3/r4/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_topo3/r4/zebra.conf (renamed from tests/topotests/bfd-topo3/r4/zebra.conf)0
-rw-r--r--tests/topotests/bfd_topo3/test_bfd_topo3.dot (renamed from tests/topotests/bfd-topo3/test_bfd_topo3.dot)0
-rw-r--r--tests/topotests/bfd_topo3/test_bfd_topo3.jpg (renamed from tests/topotests/bfd-topo3/test_bfd_topo3.jpg)bin34705 -> 34705 bytes
-rw-r--r--tests/topotests/bfd_topo3/test_bfd_topo3.py (renamed from tests/topotests/bfd-topo3/test_bfd_topo3.py)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/__init__.py (renamed from tests/topotests/bfd-vrf-topo1/__init__.py)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r1/bfdd.conf (renamed from tests/topotests/bfd-vrf-topo1/r1/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r1/bgp_prefixes.json (renamed from tests/topotests/bfd-vrf-topo1/r1/bgp_prefixes.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r1/bgp_summary.json (renamed from tests/topotests/bfd-vrf-topo1/r1/bgp_summary.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r1/bgpd.conf (renamed from tests/topotests/bfd-vrf-topo1/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r1/peers.json (renamed from tests/topotests/bfd-vrf-topo1/r1/peers.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r1/zebra.conf (renamed from tests/topotests/bfd-vrf-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r2/bfdd.conf (renamed from tests/topotests/bfd-vrf-topo1/r2/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r2/bgp_prefixes.json (renamed from tests/topotests/bfd-vrf-topo1/r2/bgp_prefixes.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r2/bgp_summary.json (renamed from tests/topotests/bfd-vrf-topo1/r2/bgp_summary.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r2/bgpd.conf (renamed from tests/topotests/bfd-vrf-topo1/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r2/peers.json (renamed from tests/topotests/bfd-vrf-topo1/r2/peers.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r2/zebra.conf (renamed from tests/topotests/bfd-vrf-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r3/bfdd.conf (renamed from tests/topotests/bfd-vrf-topo1/r3/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r3/bgp_prefixes.json (renamed from tests/topotests/bfd-vrf-topo1/r3/bgp_prefixes.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r3/bgp_summary.json (renamed from tests/topotests/bfd-vrf-topo1/r3/bgp_summary.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r3/bgpd.conf (renamed from tests/topotests/bfd-vrf-topo1/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r3/peers.json (renamed from tests/topotests/bfd-vrf-topo1/r3/peers.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r3/zebra.conf (renamed from tests/topotests/bfd-vrf-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r4/bfdd.conf (renamed from tests/topotests/bfd-vrf-topo1/r4/bfdd.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r4/bgp_prefixes.json (renamed from tests/topotests/bfd-vrf-topo1/r4/bgp_prefixes.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r4/bgp_summary.json (renamed from tests/topotests/bfd-vrf-topo1/r4/bgp_summary.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r4/bgpd.conf (renamed from tests/topotests/bfd-vrf-topo1/r4/bgpd.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r4/peers.json (renamed from tests/topotests/bfd-vrf-topo1/r4/peers.json)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/r4/zebra.conf (renamed from tests/topotests/bfd-vrf-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.dot (renamed from tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.dot)0
-rw-r--r--tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.jpg (renamed from tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.jpg)bin25713 -> 25713 bytes
-rw-r--r--tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.py (renamed from tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.py)0
-rw-r--r--tests/topotests/bgp_aggregate_address_origin/__init__.py (renamed from tests/topotests/bgp-aggregator-zero/__init__.py)0
-rw-r--r--tests/topotests/bgp_aggregate_address_origin/r1/bgpd.conf (renamed from tests/topotests/bgp_aggregate-address_origin/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_aggregate_address_origin/r1/zebra.conf (renamed from tests/topotests/bgp_aggregate-address_origin/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_aggregate_address_origin/r2/bgpd.conf (renamed from tests/topotests/bgp_aggregate-address_origin/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_aggregate_address_origin/r2/zebra.conf (renamed from tests/topotests/bgp-default-ipv4-ipv6-unicast/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_aggregate_address_origin/test_bgp_aggregate-address_origin.py (renamed from tests/topotests/bgp_aggregate-address_origin/test_bgp_aggregate-address_origin.py)0
-rw-r--r--tests/topotests/bgp_aggregate_address_route_map/__init__.py (renamed from tests/topotests/bgp-basic-functionality-topo1/__init__.py)0
-rw-r--r--tests/topotests/bgp_aggregate_address_route_map/r1/bgpd.conf (renamed from tests/topotests/bgp_aggregate-address_route-map/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_aggregate_address_route_map/r1/zebra.conf (renamed from tests/topotests/bgp_aggregate-address_route-map/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_aggregate_address_route_map/r2/bgpd.conf (renamed from tests/topotests/bgp_aggregate-address_route-map/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_aggregate_address_route_map/r2/zebra.conf (renamed from tests/topotests/bgp_aggregate-address_origin/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_aggregate_address_route_map/test_bgp_aggregate-address_route-map.py (renamed from tests/topotests/bgp_aggregate-address_route-map/test_bgp_aggregate-address_route-map.py)0
-rw-r--r--tests/topotests/bgp_aggregator_zero/__init__.py (renamed from tests/topotests/bgp-community-alias/__init__.py)0
-rw-r--r--tests/topotests/bgp_aggregator_zero/exabgp.env (renamed from tests/topotests/bgp-aggregator-zero/exabgp.env)0
-rw-r--r--tests/topotests/bgp_aggregator_zero/peer1/exabgp.cfg (renamed from tests/topotests/bgp-aggregator-zero/peer1/exabgp.cfg)0
-rw-r--r--tests/topotests/bgp_aggregator_zero/r1/bgpd.conf (renamed from tests/topotests/bgp-aggregator-zero/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_aggregator_zero/r1/zebra.conf (renamed from tests/topotests/bgp-aggregator-zero/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_aggregator_zero/test_bgp_aggregator_zero.py (renamed from tests/topotests/bgp-aggregator-zero/test_bgp_aggregator_zero.py)0
-rw-r--r--tests/topotests/bgp_auth/R1/bgpd.conf (renamed from tests/topotests/bgp-auth/R1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/bgpd_multi_vrf.conf (renamed from tests/topotests/bgp-auth/R1/bgpd_multi_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/bgpd_multi_vrf_prefix.conf (renamed from tests/topotests/bgp-auth/R1/bgpd_multi_vrf_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/bgpd_prefix.conf (renamed from tests/topotests/bgp-auth/R1/bgpd_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/bgpd_vrf.conf (renamed from tests/topotests/bgp-auth/R1/bgpd_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/bgpd_vrf_prefix.conf (renamed from tests/topotests/bgp-auth/R1/bgpd_vrf_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/ospfd.conf (renamed from tests/topotests/bgp-auth/R1/ospfd.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/ospfd_multi_vrf.conf (renamed from tests/topotests/bgp-auth/R1/ospfd_multi_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/ospfd_vrf.conf (renamed from tests/topotests/bgp-auth/R1/ospfd_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R1/zebra.conf (renamed from tests/topotests/bgp-auth/R1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/bgpd.conf (renamed from tests/topotests/bgp-auth/R2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/bgpd_multi_vrf.conf (renamed from tests/topotests/bgp-auth/R2/bgpd_multi_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/bgpd_multi_vrf_prefix.conf (renamed from tests/topotests/bgp-auth/R2/bgpd_multi_vrf_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/bgpd_prefix.conf (renamed from tests/topotests/bgp-auth/R2/bgpd_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/bgpd_vrf.conf (renamed from tests/topotests/bgp-auth/R2/bgpd_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/bgpd_vrf_prefix.conf (renamed from tests/topotests/bgp-auth/R2/bgpd_vrf_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/ospfd.conf (renamed from tests/topotests/bgp-auth/R2/ospfd.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/ospfd_multi_vrf.conf (renamed from tests/topotests/bgp-auth/R2/ospfd_multi_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/ospfd_vrf.conf (renamed from tests/topotests/bgp-auth/R2/ospfd_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R2/zebra.conf (renamed from tests/topotests/bgp-auth/R2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/bgpd.conf (renamed from tests/topotests/bgp-auth/R3/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/bgpd_multi_vrf.conf (renamed from tests/topotests/bgp-auth/R3/bgpd_multi_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/bgpd_multi_vrf_prefix.conf (renamed from tests/topotests/bgp-auth/R3/bgpd_multi_vrf_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/bgpd_prefix.conf (renamed from tests/topotests/bgp-auth/R3/bgpd_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/bgpd_vrf.conf (renamed from tests/topotests/bgp-auth/R3/bgpd_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/bgpd_vrf_prefix.conf (renamed from tests/topotests/bgp-auth/R3/bgpd_vrf_prefix.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/ospfd.conf (renamed from tests/topotests/bgp-auth/R3/ospfd.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/ospfd_multi_vrf.conf (renamed from tests/topotests/bgp-auth/R3/ospfd_multi_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/ospfd_vrf.conf (renamed from tests/topotests/bgp-auth/R3/ospfd_vrf.conf)0
-rw-r--r--tests/topotests/bgp_auth/R3/zebra.conf (renamed from tests/topotests/bgp-auth/R3/zebra.conf)0
-rw-r--r--tests/topotests/bgp_auth/test_bgp_auth.py (renamed from tests/topotests/bgp-auth/test_bgp_auth.py)7
-rw-r--r--tests/topotests/bgp_basic_functionality_topo1/__init__.py (renamed from tests/topotests/bgp-default-ipv4-ipv6-unicast/__init__.py)0
-rw-r--r--tests/topotests/bgp_basic_functionality_topo1/bgp_basic_functionality.json (renamed from tests/topotests/bgp-basic-functionality-topo1/bgp_basic_functionality.json)0
-rw-r--r--tests/topotests/bgp_basic_functionality_topo1/test_bgp_basic_functionality.py (renamed from tests/topotests/bgp-basic-functionality-topo1/test_bgp_basic_functionality.py)0
-rw-r--r--tests/topotests/bgp_comm_list_delete/__init__.py (renamed from tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/__init__.py)0
-rw-r--r--tests/topotests/bgp_comm_list_delete/r1/bgpd.conf (renamed from tests/topotests/bgp_comm-list_delete/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_comm_list_delete/r1/zebra.conf (renamed from tests/topotests/bgp_comm-list_delete/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_comm_list_delete/r2/bgpd.conf (renamed from tests/topotests/bgp_comm-list_delete/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_comm_list_delete/r2/zebra.conf (renamed from tests/topotests/bgp_aggregate-address_route-map/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_comm_list_delete/test_bgp_comm-list_delete.py (renamed from tests/topotests/bgp_comm-list_delete/test_bgp_comm-list_delete.py)0
-rw-r--r--tests/topotests/bgp_community_alias/__init__.py (renamed from tests/topotests/bgp-ecmp-topo1/__init__.py)0
-rw-r--r--tests/topotests/bgp_community_alias/r1/bgpd.conf (renamed from tests/topotests/bgp-community-alias/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_community_alias/r1/zebra.conf (renamed from tests/topotests/bgp-community-alias/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_community_alias/r2/bgpd.conf (renamed from tests/topotests/bgp-community-alias/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_community_alias/r2/zebra.conf (renamed from tests/topotests/bgp-community-alias/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_community_alias/test_bgp-community-alias.py (renamed from tests/topotests/bgp-community-alias/test_bgp-community-alias.py)0
-rw-r--r--tests/topotests/bgp_default_ipv4_ipv6_unicast/__init__.py (renamed from tests/topotests/bgp-evpn-vxlan_topo1/__init__.py)0
-rw-r--r--tests/topotests/bgp_default_ipv4_ipv6_unicast/r1/bgpd.conf (renamed from tests/topotests/bgp-default-ipv4-ipv6-unicast/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_ipv4_ipv6_unicast/r1/zebra.conf (renamed from tests/topotests/bgp-default-ipv4-ipv6-unicast/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_ipv4_ipv6_unicast/r2/bgpd.conf (renamed from tests/topotests/bgp-default-ipv4-ipv6-unicast/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_ipv4_ipv6_unicast/r2/zebra.conf (renamed from tests/topotests/bgp_comm-list_delete/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_ipv4_ipv6_unicast/r3/bgpd.conf (renamed from tests/topotests/bgp-default-ipv4-ipv6-unicast/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_ipv4_ipv6_unicast/r3/zebra.conf (renamed from tests/topotests/bgp-default-ipv4-ipv6-unicast/r3/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_ipv4_ipv6_unicast/test_bgp-default-ipv4-ipv6-unicast.py (renamed from tests/topotests/bgp-default-ipv4-ipv6-unicast/test_bgp-default-ipv4-ipv6-unicast.py)0
-rw-r--r--tests/topotests/bgp_default_route/__init__.py (renamed from tests/topotests/bgp-path-attributes-topo1/__init__.py)0
-rw-r--r--tests/topotests/bgp_default_route/r1/bgpd.conf (renamed from tests/topotests/bgp_default-route/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_route/r1/zebra.conf (renamed from tests/topotests/bgp_default-route/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_route/r2/bgpd.conf (renamed from tests/topotests/bgp_default-route/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_route/r2/zebra.conf (renamed from tests/topotests/bgp_default-route/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_route/test_bgp_default-originate.py (renamed from tests/topotests/bgp_default-route/test_bgp_default-originate.py)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match/__init__.py (renamed from tests/topotests/bgp-prefix-list-topo1/__init__.py)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match/r1/bgpd.conf (renamed from tests/topotests/bgp_default-route_route-map_match/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match/r1/zebra.conf (renamed from tests/topotests/bgp_default-route_route-map_match/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match/r2/bgpd.conf (renamed from tests/topotests/bgp_default-route_route-map_match/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match/r2/zebra.conf (renamed from tests/topotests/bgp_default-route_route-map_match/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match/test_bgp_default-originate_route-map_match.py (renamed from tests/topotests/bgp_default-route_route-map_match/test_bgp_default-originate_route-map_match.py)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match_set/__init__.py (renamed from tests/topotests/bgp_aggregate-address_origin/__init__.py)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match_set/r1/bgpd.conf (renamed from tests/topotests/bgp_default-route_route-map_match_set/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match_set/r1/zebra.conf (renamed from tests/topotests/bgp_default-route_route-map_match_set/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match_set/r2/bgpd.conf (renamed from tests/topotests/bgp_default-route_route-map_match_set/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match_set/r2/zebra.conf (renamed from tests/topotests/bgp_default-route_route-map_match_set/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_match_set/test_bgp_default-originate_route-map_match_set.py (renamed from tests/topotests/bgp_default-route_route-map_match_set/test_bgp_default-originate_route-map_match_set.py)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_set/__init__.py (renamed from tests/topotests/bgp_aggregate-address_route-map/__init__.py)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_set/r1/bgpd.conf (renamed from tests/topotests/bgp_default-route_route-map_set/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_set/r1/zebra.conf (renamed from tests/topotests/bgp_default-route_route-map_set/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_set/r2/bgpd.conf (renamed from tests/topotests/bgp_default-route_route-map_set/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_set/r2/zebra.conf (renamed from tests/topotests/bgp_default-route_route-map_set/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_default_route_route_map_set/test_bgp_default-originate_route-map_set.py (renamed from tests/topotests/bgp_default-route_route-map_set/test_bgp_default-originate_route-map_set.py)0
-rw-r--r--tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/__init__.py (renamed from tests/topotests/bgp_comm-list_delete/__init__.py)0
-rw-r--r--tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r1/bgpd.conf (renamed from tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r1/zebra.conf (renamed from tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r2/bgpd.conf (renamed from tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r2/zebra.conf (renamed from tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r3/bgpd.conf (renamed from tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r3/zebra.conf (renamed from tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r3/zebra.conf)0
-rw-r--r--tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/test_bgp-ebgp-common-subnet-nexthop-unchanged.py (renamed from tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/test_bgp-ebgp-common-subnet-nexthop-unchanged.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/__init__.py (renamed from tests/topotests/bgp_default-route/__init__.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/bgp-ecmp-topo1.dot (renamed from tests/topotests/bgp-ecmp-topo1/bgp-ecmp-topo1.dot)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/bgp-ecmp-topo1.pdf (renamed from tests/topotests/bgp-ecmp-topo1/bgp-ecmp-topo1.pdf)bin21367 -> 21367 bytes
-rw-r--r--tests/topotests/bgp_ecmp_topo1/exabgp.env (renamed from tests/topotests/bgp-ecmp-topo1/exabgp.env)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer1/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer1/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer1/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer1/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer1/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer1/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer10/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer10/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer10/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer10/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer10/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer10/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer11/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer11/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer11/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer11/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer11/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer11/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer12/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer12/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer12/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer12/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer12/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer12/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer13/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer13/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer13/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer13/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer13/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer13/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer14/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer14/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer14/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer14/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer14/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer14/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer15/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer15/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer15/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer15/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer15/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer15/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer16/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer16/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer16/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer16/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer16/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer16/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer17/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer17/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer17/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer17/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer17/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer17/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer18/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer18/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer18/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer18/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer18/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer18/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer19/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer19/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer19/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer19/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer19/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer19/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer2/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer2/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer2/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer2/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer2/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer2/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer20/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer20/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer20/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer20/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer20/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer20/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer3/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer3/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer3/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer3/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer3/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer3/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer4/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer4/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer4/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer4/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer4/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer4/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer5/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer5/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer5/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer5/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer5/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer5/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer6/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer6/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer6/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer6/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer6/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer6/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer7/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer7/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer7/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer7/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer7/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer7/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer8/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer8/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer8/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer8/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer8/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer8/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer9/exa-receive.py (renamed from tests/topotests/bgp-ecmp-topo1/peer9/exa-receive.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo1/peer9/exa-send.py (renamed from tests/topotests/bgp-ecmp-topo1/peer9/exa-send.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/peer9/exabgp.cfg (renamed from tests/topotests/bgp-ecmp-topo1/peer9/exabgp.cfg)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/r1/bgpd.conf (renamed from tests/topotests/bgp-ecmp-topo1/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/r1/summary.txt (renamed from tests/topotests/bgp-ecmp-topo1/r1/summary.txt)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/r1/summary20.txt (renamed from tests/topotests/bgp-ecmp-topo1/r1/summary20.txt)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/r1/zebra.conf (renamed from tests/topotests/bgp-ecmp-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_ecmp_topo1/test_bgp_ecmp_topo1.py (renamed from tests/topotests/bgp-ecmp-topo1/test_bgp_ecmp_topo1.py)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo2/ebgp_ecmp_topo2.json (renamed from tests/topotests/bgp-ecmp-topo2/ebgp_ecmp_topo2.json)0
-rwxr-xr-xtests/topotests/bgp_ecmp_topo2/ibgp_ecmp_topo2.json (renamed from tests/topotests/bgp-ecmp-topo2/ibgp_ecmp_topo2.json)0
-rw-r--r--tests/topotests/bgp_ecmp_topo2/test_ebgp_ecmp_topo2.py (renamed from tests/topotests/bgp-ecmp-topo2/test_ebgp_ecmp_topo2.py)0
-rw-r--r--tests/topotests/bgp_ecmp_topo2/test_ibgp_ecmp_topo2.py (renamed from tests/topotests/bgp-ecmp-topo2/test_ibgp_ecmp_topo2.py)0
-rw-r--r--tests/topotests/bgp_evpn_mh/evpn-mh-topo-tests.pdf (renamed from tests/topotests/bgp-evpn-mh/evpn-mh-topo-tests.pdf)bin90963 -> 90963 bytes
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd11/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/hostd11/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd11/pim.conf (renamed from tests/topotests/bgp-evpn-mh/hostd11/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd11/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/hostd11/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd12/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/hostd12/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd12/pim.conf (renamed from tests/topotests/bgp-evpn-mh/hostd12/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd12/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/hostd12/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd21/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/hostd21/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd21/pim.conf (renamed from tests/topotests/bgp-evpn-mh/hostd21/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd21/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/hostd21/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd22/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/hostd22/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd22/pim.conf (renamed from tests/topotests/bgp-evpn-mh/hostd22/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/hostd22/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/hostd22/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/spine1/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/spine1/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/spine1/pim.conf (renamed from tests/topotests/bgp-evpn-mh/spine1/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/spine1/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/spine1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/spine2/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/spine2/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/spine2/pim.conf (renamed from tests/topotests/bgp-evpn-mh/spine2/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/spine2/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/spine2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/test_evpn_mh.py (renamed from tests/topotests/bgp-evpn-mh/test_evpn_mh.py)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm11/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/torm11/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm11/pim.conf (renamed from tests/topotests/bgp-evpn-mh/torm11/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm11/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/torm11/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm12/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/torm12/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm12/pim.conf (renamed from tests/topotests/bgp-evpn-mh/torm12/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm12/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/torm12/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm21/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/torm21/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm21/pim.conf (renamed from tests/topotests/bgp-evpn-mh/torm21/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm21/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/torm21/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm22/evpn.conf (renamed from tests/topotests/bgp-evpn-mh/torm22/evpn.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm22/pim.conf (renamed from tests/topotests/bgp-evpn-mh/torm22/pim.conf)0
-rw-r--r--tests/topotests/bgp_evpn_mh/torm22/zebra.conf (renamed from tests/topotests/bgp-evpn-mh/torm22/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/P1/bgpd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/P1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/P1/ospfd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/P1/ospfd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/P1/zebra.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/P1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/PE1/bgpd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/PE1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/PE1/evpn.vni.json (renamed from tests/topotests/bgp-evpn-vxlan_topo1/PE1/evpn.vni.json)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/PE1/ospfd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/PE1/ospfd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/PE1/zebra.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/PE1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/PE2/bgpd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/PE2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/PE2/evpn.vni.json (renamed from tests/topotests/bgp-evpn-vxlan_topo1/PE2/evpn.vni.json)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/PE2/ospfd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/PE2/ospfd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/PE2/zebra.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/PE2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/__init__.py (renamed from tests/topotests/bgp_default-route_route-map_match/__init__.py)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/host1/bgpd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/host1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/host1/ospfd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/host1/ospfd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/host1/zebra.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/host1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/host2/bgpd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/host2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/host2/ospfd.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/host2/ospfd.conf)0
-rw-r--r--tests/topotests/bgp_evpn_vxlan_topo1/host2/zebra.conf (renamed from tests/topotests/bgp-evpn-vxlan_topo1/host2/zebra.conf)0
-rwxr-xr-xtests/topotests/bgp_evpn_vxlan_topo1/test_bgp_evpn_vxlan.py (renamed from tests/topotests/bgp-evpn-vxlan_topo1/test_bgp_evpn_vxlan.py)0
-rw-r--r--tests/topotests/bgp_flowspec/test_bgp_flowspec_topo.py4
-rw-r--r--tests/topotests/bgp_path_attributes_topo1/__init__.py (renamed from tests/topotests/bgp_default-route_route-map_match_set/__init__.py)0
-rw-r--r--tests/topotests/bgp_path_attributes_topo1/bgp_path_attributes.json (renamed from tests/topotests/bgp-path-attributes-topo1/bgp_path_attributes.json)0
-rw-r--r--tests/topotests/bgp_path_attributes_topo1/test_bgp_path_attributes.py (renamed from tests/topotests/bgp-path-attributes-topo1/test_bgp_path_attributes.py)0
-rw-r--r--tests/topotests/bgp_peer_group/__init__.py (renamed from tests/topotests/bgp_default-route_route-map_set/__init__.py)0
-rw-r--r--tests/topotests/bgp_peer_group/r1/bgpd.conf (renamed from tests/topotests/bgp_peer-group/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_peer_group/r1/zebra.conf (renamed from tests/topotests/bgp_peer-group/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_peer_group/r2/bgpd.conf (renamed from tests/topotests/bgp_peer-group/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_peer_group/r2/zebra.conf (renamed from tests/topotests/bgp_peer-group/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_peer_group/r3/bgpd.conf (renamed from tests/topotests/bgp_peer-group/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_peer_group/r3/zebra.conf (renamed from tests/topotests/bgp_peer-group/r3/zebra.conf)0
-rw-r--r--tests/topotests/bgp_peer_group/test_bgp_peer-group.py (renamed from tests/topotests/bgp_peer-group/test_bgp_peer-group.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/exabgp.env (renamed from tests/topotests/bgp_peer-type_multipath-relax/exabgp.env)0
-rwxr-xr-xtests/topotests/bgp_peer_type_multipath_relax/peer1/exa-receive.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer1/exa-receive.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/peer1/exa_readpipe.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer1/exa_readpipe.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/peer1/exabgp.cfg (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer1/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_peer_type_multipath_relax/peer2/exa-receive.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer2/exa-receive.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/peer2/exa_readpipe.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer2/exa_readpipe.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/peer2/exabgp.cfg (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer2/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_peer_type_multipath_relax/peer3/exa-receive.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer3/exa-receive.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/peer3/exa_readpipe.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer3/exa_readpipe.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/peer3/exabgp.cfg (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer3/exabgp.cfg)0
-rwxr-xr-xtests/topotests/bgp_peer_type_multipath_relax/peer4/exa-receive.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer4/exa-receive.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/peer4/exa_readpipe.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer4/exa_readpipe.py)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/peer4/exabgp.cfg (renamed from tests/topotests/bgp_peer-type_multipath-relax/peer4/exabgp.cfg)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/bgpd.conf (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/multipath.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/multipath.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/not-multipath.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/not-multipath.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-eBGP-confed.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-eBGP-confed.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-eBGP-iBGP.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-eBGP-iBGP.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-no-recursive.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-no-recursive.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-recursive.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-recursive.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-ip-route.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-ip-route.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-no-recursive.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-no-recursive.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-recursive.json (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-recursive.json)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r1/zebra.conf (renamed from tests/topotests/bgp_peer-type_multipath-relax/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r2/bgpd.conf (renamed from tests/topotests/bgp_peer-type_multipath-relax/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r2/staticd.conf (renamed from tests/topotests/bgp_peer-type_multipath-relax/r2/staticd.conf)0
-rw-r--r--tests/topotests/bgp_peer_type_multipath_relax/r2/zebra.conf (renamed from tests/topotests/bgp_peer-type_multipath-relax/r2/zebra.conf)0
-rwxr-xr-xtests/topotests/bgp_peer_type_multipath_relax/test_bgp_peer-type_multipath-relax.py (renamed from tests/topotests/bgp_peer-type_multipath-relax/test_bgp_peer-type_multipath-relax.py)0
-rw-r--r--tests/topotests/bgp_prefix_list_topo1/__init__.py (renamed from tests/topotests/bgp_peer-group/__init__.py)0
-rw-r--r--tests/topotests/bgp_prefix_list_topo1/prefix_lists.json (renamed from tests/topotests/bgp-prefix-list-topo1/prefix_lists.json)0
-rw-r--r--tests/topotests/bgp_prefix_list_topo1/test_prefix_lists.py (renamed from tests/topotests/bgp-prefix-list-topo1/test_prefix_lists.py)0
-rw-r--r--tests/topotests/bgp_recursive_route_ebgp_multi_hop/test_bgp_recursive_route_ebgp_multi_hop.py30
-rw-r--r--tests/topotests/bgp_route_map/bgp_route_map_topo1.json (renamed from tests/topotests/bgp-route-map/bgp_route_map_topo1.json)0
-rwxr-xr-xtests/topotests/bgp_route_map/bgp_route_map_topo2.json (renamed from tests/topotests/bgp-route-map/bgp_route_map_topo2.json)0
-rw-r--r--tests/topotests/bgp_route_map/test_route_map_topo1.py (renamed from tests/topotests/bgp-route-map/test_route_map_topo1.py)0
-rw-r--r--tests/topotests/bgp_route_map/test_route_map_topo2.py (renamed from tests/topotests/bgp-route-map/test_route_map_topo2.py)0
-rw-r--r--tests/topotests/bgp_sender_as_path_loop_detection/__init__.py (renamed from tests/topotests/bgp_sender-as-path-loop-detection/__init__.py)0
-rw-r--r--tests/topotests/bgp_sender_as_path_loop_detection/r1/bgpd.conf (renamed from tests/topotests/bgp_sender-as-path-loop-detection/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_sender_as_path_loop_detection/r1/zebra.conf (renamed from tests/topotests/bgp_sender-as-path-loop-detection/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_sender_as_path_loop_detection/r2/bgpd.conf (renamed from tests/topotests/bgp_sender-as-path-loop-detection/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_sender_as_path_loop_detection/r2/zebra.conf (renamed from tests/topotests/bgp_sender-as-path-loop-detection/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_sender_as_path_loop_detection/r3/bgpd.conf (renamed from tests/topotests/bgp_sender-as-path-loop-detection/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_sender_as_path_loop_detection/r3/zebra.conf (renamed from tests/topotests/bgp_sender-as-path-loop-detection/r3/zebra.conf)0
-rw-r--r--tests/topotests/bgp_sender_as_path_loop_detection/test_bgp_sender-as-path-loop-detection.py (renamed from tests/topotests/bgp_sender-as-path-loop-detection/test_bgp_sender-as-path-loop-detection.py)0
-rw-r--r--tests/topotests/bgp_set_local_preference_add_subtract/__init__.py (renamed from tests/topotests/bgp_set_local-preference_add_subtract/__init__.py)0
-rw-r--r--tests/topotests/bgp_set_local_preference_add_subtract/r1/bgpd.conf (renamed from tests/topotests/bgp_set_local-preference_add_subtract/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_set_local_preference_add_subtract/r1/zebra.conf (renamed from tests/topotests/bgp_set_local-preference_add_subtract/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_set_local_preference_add_subtract/r2/bgpd.conf (renamed from tests/topotests/bgp_set_local-preference_add_subtract/r2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_set_local_preference_add_subtract/r2/zebra.conf (renamed from tests/topotests/bgp_set_local-preference_add_subtract/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_set_local_preference_add_subtract/r3/bgpd.conf (renamed from tests/topotests/bgp_set_local-preference_add_subtract/r3/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_set_local_preference_add_subtract/r3/zebra.conf (renamed from tests/topotests/bgp_set_local-preference_add_subtract/r3/zebra.conf)0
-rw-r--r--tests/topotests/bgp_set_local_preference_add_subtract/test_bgp_set_local-preference_add_subtract.py (renamed from tests/topotests/bgp_set_local-preference_add_subtract/test_bgp_set_local-preference_add_subtract.py)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce1/bgpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce1/snmpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce1/snmpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce1/zebra.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce2/bgpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce2/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce2/snmpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce2/snmpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce2/zebra.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce3/bgpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce3/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce3/snmpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce3/snmpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce3/zebra.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce3/zebra.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce4/bgpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce4/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce4/snmpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce4/snmpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/ce4/zebra.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/ce4/zebra.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r1/bgpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r1/isisd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r1/isisd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r1/snmpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r1/snmpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r1/zebra.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r2/isisd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r2/isisd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r2/snmpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r2/snmpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r2/zebra.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r2/zebra.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r3/isisd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r3/isisd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r3/snmpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r3/snmpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r3/zebra.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r3/zebra.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r4/bgpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r4/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r4/isisd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r4/isisd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r4/snmpd.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r4/snmpd.conf)0
-rw-r--r--tests/topotests/bgp_snmp_mplsl3vpn/r4/zebra.conf (renamed from tests/topotests/bgp-snmp-mplsl3vpn/r4/zebra.conf)0
-rwxr-xr-xtests/topotests/bgp_snmp_mplsl3vpn/test_bgp_snmp_mplsvpn.py (renamed from tests/topotests/bgp-snmp-mplsl3vpn/test_bgp_snmp_mplsvpn.py)0
-rw-r--r--tests/topotests/bgp_vrf_route_leak_basic/r1/bgpd.conf (renamed from tests/topotests/bgp-vrf-route-leak-basic/r1/bgpd.conf)0
-rw-r--r--tests/topotests/bgp_vrf_route_leak_basic/r1/zebra.conf (renamed from tests/topotests/bgp-vrf-route-leak-basic/r1/zebra.conf)0
-rw-r--r--tests/topotests/bgp_vrf_route_leak_basic/setup_vrfs (renamed from tests/topotests/bgp-vrf-route-leak-basic/setup_vrfs)0
-rw-r--r--tests/topotests/bgp_vrf_route_leak_basic/test_bgp-vrf-route-leak-basic.py (renamed from tests/topotests/bgp-vrf-route-leak-basic/test_bgp-vrf-route-leak-basic.py)0
-rw-r--r--tests/topotests/eigrp_topo1/r1/eigrpd.conf (renamed from tests/topotests/eigrp-topo1/r1/eigrpd.conf)0
-rw-r--r--tests/topotests/eigrp_topo1/r1/show_ip_eigrp.json (renamed from tests/topotests/eigrp-topo1/r1/show_ip_eigrp.json)0
-rw-r--r--tests/topotests/eigrp_topo1/r1/show_ip_eigrp.ref (renamed from tests/topotests/eigrp-topo1/r1/show_ip_eigrp.ref)0
-rw-r--r--tests/topotests/eigrp_topo1/r1/show_ip_route.json_ref (renamed from tests/topotests/eigrp-topo1/r1/show_ip_route.json_ref)0
-rw-r--r--tests/topotests/eigrp_topo1/r1/zebra.conf (renamed from tests/topotests/eigrp-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/eigrp_topo1/r2/eigrpd.conf (renamed from tests/topotests/eigrp-topo1/r2/eigrpd.conf)0
-rw-r--r--tests/topotests/eigrp_topo1/r2/show_ip_eigrp.json (renamed from tests/topotests/eigrp-topo1/r2/show_ip_eigrp.json)0
-rw-r--r--tests/topotests/eigrp_topo1/r2/show_ip_eigrp.ref (renamed from tests/topotests/eigrp-topo1/r2/show_ip_eigrp.ref)0
-rw-r--r--tests/topotests/eigrp_topo1/r2/show_ip_route.json_ref (renamed from tests/topotests/eigrp-topo1/r2/show_ip_route.json_ref)0
-rw-r--r--tests/topotests/eigrp_topo1/r2/zebra.conf (renamed from tests/topotests/eigrp-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/eigrp_topo1/r3/eigrpd.conf (renamed from tests/topotests/eigrp-topo1/r3/eigrpd.conf)0
-rw-r--r--tests/topotests/eigrp_topo1/r3/show_ip_eigrp.json (renamed from tests/topotests/eigrp-topo1/r3/show_ip_eigrp.json)0
-rw-r--r--tests/topotests/eigrp_topo1/r3/show_ip_eigrp.ref (renamed from tests/topotests/eigrp-topo1/r3/show_ip_eigrp.ref)0
-rw-r--r--tests/topotests/eigrp_topo1/r3/show_ip_route.json_ref (renamed from tests/topotests/eigrp-topo1/r3/show_ip_route.json_ref)0
-rw-r--r--tests/topotests/eigrp_topo1/r3/zebra.conf (renamed from tests/topotests/eigrp-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/eigrp_topo1/test_eigrp_topo1.dot (renamed from tests/topotests/eigrp-topo1/test_eigrp_topo1.dot)0
-rw-r--r--tests/topotests/eigrp_topo1/test_eigrp_topo1.py (renamed from tests/topotests/eigrp-topo1/test_eigrp_topo1.py)0
-rw-r--r--tests/topotests/evpn_pim_1/host1/bgpd.conf (renamed from tests/topotests/evpn-pim-1/host1/bgpd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/host1/pimd.conf (renamed from tests/topotests/evpn-pim-1/host1/pimd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/host1/zebra.conf (renamed from tests/topotests/evpn-pim-1/host1/zebra.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/host2/bgpd.conf (renamed from tests/topotests/evpn-pim-1/host2/bgpd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/host2/pimd.conf (renamed from tests/topotests/evpn-pim-1/host2/pimd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/host2/zebra.conf (renamed from tests/topotests/evpn-pim-1/host2/zebra.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/leaf1/bgpd.conf (renamed from tests/topotests/evpn-pim-1/leaf1/bgpd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/leaf1/pimd.conf (renamed from tests/topotests/evpn-pim-1/leaf1/pimd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/leaf1/zebra.conf (renamed from tests/topotests/evpn-pim-1/leaf1/zebra.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/leaf2/bgpd.conf (renamed from tests/topotests/evpn-pim-1/leaf2/bgpd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/leaf2/pimd.conf (renamed from tests/topotests/evpn-pim-1/leaf2/pimd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/leaf2/zebra.conf (renamed from tests/topotests/evpn-pim-1/leaf2/zebra.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/spine/bgp.summ.json (renamed from tests/topotests/evpn-pim-1/spine/bgp.summ.json)0
-rw-r--r--tests/topotests/evpn_pim_1/spine/bgpd.conf (renamed from tests/topotests/evpn-pim-1/spine/bgpd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/spine/join-info.json (renamed from tests/topotests/evpn-pim-1/spine/join-info.json)0
-rw-r--r--tests/topotests/evpn_pim_1/spine/pimd.conf (renamed from tests/topotests/evpn-pim-1/spine/pimd.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/spine/zebra.conf (renamed from tests/topotests/evpn-pim-1/spine/zebra.conf)0
-rw-r--r--tests/topotests/evpn_pim_1/test_evpn_pim_topo1.py (renamed from tests/topotests/evpn-pim-1/test_evpn_pim_topo1.py)0
-rwxr-xr-xtests/topotests/example_test/__init__.py (renamed from tests/topotests/example-test/__init__.py)0
-rwxr-xr-xtests/topotests/example_test/test_example.py (renamed from tests/topotests/example-test/test_example.py)0
-rw-r--r--tests/topotests/example_test/test_template.dot (renamed from tests/topotests/example-test/test_template.dot)0
-rw-r--r--tests/topotests/example_test/test_template.jpg (renamed from tests/topotests/example-test/test_template.jpg)bin15470 -> 15470 bytes
-rw-r--r--tests/topotests/example_test/test_template.py (renamed from tests/topotests/example-test/test_template.py)0
-rwxr-xr-xtests/topotests/example_topojson_test/__init__.py (renamed from tests/topotests/example-topojson-test/__init__.py)0
-rwxr-xr-xtests/topotests/example_topojson_test/test_topo_json_multiple_links/__init__.py (renamed from tests/topotests/example-topojson-test/test_topo_json_multiple_links/__init__.py)0
-rw-r--r--tests/topotests/example_topojson_test/test_topo_json_multiple_links/example_topojson_multiple_links.json (renamed from tests/topotests/example-topojson-test/test_topo_json_multiple_links/example_topojson_multiple_links.json)0
-rwxr-xr-xtests/topotests/example_topojson_test/test_topo_json_multiple_links/test_example_topojson_multiple_links.py (renamed from tests/topotests/example-topojson-test/test_topo_json_multiple_links/test_example_topojson_multiple_links.py)0
-rwxr-xr-xtests/topotests/example_topojson_test/test_topo_json_single_link/__init__.py (renamed from tests/topotests/example-topojson-test/test_topo_json_single_link/__init__.py)0
-rw-r--r--tests/topotests/example_topojson_test/test_topo_json_single_link/example_topojson.json (renamed from tests/topotests/example-topojson-test/test_topo_json_single_link/example_topojson.json)0
-rwxr-xr-xtests/topotests/example_topojson_test/test_topo_json_single_link/test_example_topojson.py (renamed from tests/topotests/example-topojson-test/test_topo_json_single_link/test_example_topojson.py)0
-rwxr-xr-xtests/topotests/example_topojson_test/test_topo_json_single_link_loopback/__init__.py (renamed from tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/__init__.py)0
-rw-r--r--tests/topotests/example_topojson_test/test_topo_json_single_link_loopback/example_topojson.json (renamed from tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/example_topojson.json)0
-rwxr-xr-xtests/topotests/example_topojson_test/test_topo_json_single_link_loopback/test_example_topojson.py (renamed from tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/test_example_topojson.py)0
-rw-r--r--tests/topotests/isis-topo1/r5/r5_topology.json152
-rw-r--r--tests/topotests/isis_lfa_topo1/__init__.py (renamed from tests/topotests/isis-lfa-topo1/__init__.py)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/isisd.conf (renamed from tests/topotests/isis-lfa-topo1/rt1/isisd.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lfa-topo1/rt1/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step10/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step10/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step11/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step11/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step12/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step12/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step13/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step13/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step2/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step2/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step3/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step3/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step4/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step4/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step5/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step5/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step6/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step6/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step7/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step7/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step8/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step8/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/step9/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-lfa-topo1/rt1/step9/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt1/zebra.conf (renamed from tests/topotests/isis-lfa-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt2/isisd.conf (renamed from tests/topotests/isis-lfa-topo1/rt2/isisd.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt2/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lfa-topo1/rt2/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lfa-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt2/zebra.conf (renamed from tests/topotests/isis-lfa-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt3/isisd.conf (renamed from tests/topotests/isis-lfa-topo1/rt3/isisd.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt3/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lfa-topo1/rt3/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lfa-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt3/zebra.conf (renamed from tests/topotests/isis-lfa-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt4/isisd.conf (renamed from tests/topotests/isis-lfa-topo1/rt4/isisd.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt4/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lfa-topo1/rt4/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lfa-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt4/zebra.conf (renamed from tests/topotests/isis-lfa-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt5/isisd.conf (renamed from tests/topotests/isis-lfa-topo1/rt5/isisd.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt5/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lfa-topo1/rt5/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lfa-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt5/zebra.conf (renamed from tests/topotests/isis-lfa-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt6/isisd.conf (renamed from tests/topotests/isis-lfa-topo1/rt6/isisd.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt6/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lfa-topo1/rt6/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lfa-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt6/zebra.conf (renamed from tests/topotests/isis-lfa-topo1/rt6/zebra.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt7/isisd.conf (renamed from tests/topotests/isis-lfa-topo1/rt7/isisd.conf)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt7/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lfa-topo1/rt7/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt7/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lfa-topo1/rt7/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lfa_topo1/rt7/zebra.conf (renamed from tests/topotests/isis-lfa-topo1/rt7/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_lfa_topo1/test_isis_lfa_topo1.py (renamed from tests/topotests/isis-lfa-topo1/test_isis_lfa_topo1.py)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/__init__.py (renamed from tests/topotests/isis-lsp-bits-topo1/__init__.py)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/isisd.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/isisd.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step2/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step2/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step3/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step3/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step4/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/step4/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/step4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt1/zebra.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt2/isisd.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt2/isisd.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt2/zebra.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt3/isisd.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt3/isisd.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt3/zebra.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt4/isisd.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt4/isisd.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt4/zebra.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt5/isisd.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt5/isisd.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt5/zebra.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/isisd.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/isisd.conf)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step2/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step2/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step3/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step3/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step4/show_ip_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/step4/show_ipv6_route.ref (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/step4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_lsp_bits_topo1/rt6/zebra.conf (renamed from tests/topotests/isis-lsp-bits-topo1/rt6/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_lsp_bits_topo1/test_isis_lsp_bits_topo1.py (renamed from tests/topotests/isis-lsp-bits-topo1/test_isis_lsp_bits_topo1.py)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/__init__.py (renamed from tests/topotests/isis-rlfa-topo1/__init__.py)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/isisd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt1/isisd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/ldpd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt1/ldpd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step1/show_ip_route.ref (renamed from tests/topotests/isis-rlfa-topo1/rt1/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-rlfa-topo1/rt1/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-rlfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step10/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step10/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step10/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step10/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step2/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step2/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step2/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step2/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step3/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step3/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step3/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step3/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step4/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step4/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step4/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step4/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step5/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step5/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step5/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step5/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step6/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step6/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step6/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step6/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step7/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step7/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step7/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step7/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step8/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step8/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step8/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step8/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step9/show_ip_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step9/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/step9/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-rlfa-topo1/rt1/step9/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt1/zebra.conf (renamed from tests/topotests/isis-rlfa-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt2/isisd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt2/isisd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt2/ldpd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt2/ldpd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt2/zebra.conf (renamed from tests/topotests/isis-rlfa-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt3/isisd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt3/isisd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt3/ldpd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt3/ldpd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt3/zebra.conf (renamed from tests/topotests/isis-rlfa-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt4/isisd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt4/isisd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt4/ldpd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt4/ldpd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt4/zebra.conf (renamed from tests/topotests/isis-rlfa-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt5/isisd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt5/isisd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt5/ldpd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt5/ldpd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt5/zebra.conf (renamed from tests/topotests/isis-rlfa-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt6/isisd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt6/isisd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt6/ldpd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt6/ldpd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt6/zebra.conf (renamed from tests/topotests/isis-rlfa-topo1/rt6/zebra.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt7/isisd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt7/isisd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt7/ldpd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt7/ldpd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt7/zebra.conf (renamed from tests/topotests/isis-rlfa-topo1/rt7/zebra.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt8/isisd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt8/isisd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt8/ldpd.conf (renamed from tests/topotests/isis-rlfa-topo1/rt8/ldpd.conf)0
-rw-r--r--tests/topotests/isis_rlfa_topo1/rt8/zebra.conf (renamed from tests/topotests/isis-rlfa-topo1/rt8/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_rlfa_topo1/test_isis_rlfa_topo1.py (renamed from tests/topotests/isis-rlfa-topo1/test_isis_rlfa_topo1.py)0
-rw-r--r--tests/topotests/isis_snmp/ce3/zebra.conf (renamed from tests/topotests/isis-snmp/ce3/zebra.conf)0
-rw-r--r--tests/topotests/isis_snmp/r1/isisd.conf (renamed from tests/topotests/isis-snmp/r1/isisd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r1/ldpd.conf (renamed from tests/topotests/isis-snmp/r1/ldpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r1/show_ip_route.ref (renamed from tests/topotests/isis-snmp/r1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_snmp/r1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-snmp/r1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_snmp/r1/snmpd.conf (renamed from tests/topotests/isis-snmp/r1/snmpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r1/zebra.conf (renamed from tests/topotests/isis-snmp/r1/zebra.conf)0
-rw-r--r--tests/topotests/isis_snmp/r2/isisd.conf (renamed from tests/topotests/isis-snmp/r2/isisd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r2/ldpd.conf (renamed from tests/topotests/isis-snmp/r2/ldpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r2/show_ip_route.ref (renamed from tests/topotests/isis-snmp/r2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_snmp/r2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-snmp/r2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_snmp/r2/snmpd.conf (renamed from tests/topotests/isis-snmp/r2/snmpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r2/zebra.conf (renamed from tests/topotests/isis-snmp/r2/zebra.conf)0
-rw-r--r--tests/topotests/isis_snmp/r3/isisd.conf (renamed from tests/topotests/isis-snmp/r3/isisd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r3/ldpd.conf (renamed from tests/topotests/isis-snmp/r3/ldpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r3/show_ip_route.ref (renamed from tests/topotests/isis-snmp/r3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_snmp/r3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-snmp/r3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_snmp/r3/snmpd.conf (renamed from tests/topotests/isis-snmp/r3/snmpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r3/zebra.conf (renamed from tests/topotests/isis-snmp/r3/zebra.conf)0
-rw-r--r--tests/topotests/isis_snmp/r4/isisd.conf (renamed from tests/topotests/isis-snmp/r4/isisd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r4/ldpd.conf (renamed from tests/topotests/isis-snmp/r4/ldpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r4/show_ip_route.ref (renamed from tests/topotests/isis-snmp/r4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_snmp/r4/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-snmp/r4/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_snmp/r4/snmpd.conf (renamed from tests/topotests/isis-snmp/r4/snmpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r4/zebra.conf (renamed from tests/topotests/isis-snmp/r4/zebra.conf)0
-rw-r--r--tests/topotests/isis_snmp/r5/isisd.conf (renamed from tests/topotests/isis-snmp/r5/isisd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r5/ldpd.conf (renamed from tests/topotests/isis-snmp/r5/ldpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r5/ldpdconf (renamed from tests/topotests/isis-snmp/r5/ldpdconf)0
-rw-r--r--tests/topotests/isis_snmp/r5/show_ip_route.ref (renamed from tests/topotests/isis-snmp/r5/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_snmp/r5/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-snmp/r5/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_snmp/r5/snmpd.conf (renamed from tests/topotests/isis-snmp/r5/snmpd.conf)0
-rw-r--r--tests/topotests/isis_snmp/r5/zebra.conf (renamed from tests/topotests/isis-snmp/r5/zebra.conf)0
-rw-r--r--tests/topotests/isis_snmp/test_isis_snmp.dot (renamed from tests/topotests/isis-snmp/test_isis_snmp.dot)0
-rwxr-xr-xtests/topotests/isis_snmp/test_isis_snmp.py (renamed from tests/topotests/isis-snmp/test_isis_snmp.py)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/dst/zebra.conf (renamed from tests/topotests/isis-sr-te-topo1/dst/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/bgpd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt1/bgpd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/isisd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt1/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/pathd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt1/pathd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step1/show_mpls_table_with_candidate.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step1/show_mpls_table_with_candidate.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step1/show_mpls_table_without_candidate.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step1/show_mpls_table_without_candidate.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step2/show_operational_data.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step2/show_operational_data.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step2/show_operational_data_with_candidate.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step2/show_operational_data_with_candidate.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step3/show_operational_data_with_single_candidate.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step3/show_operational_data_with_single_candidate.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step3/show_operational_data_with_two_candidates.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step3/show_operational_data_with_two_candidates.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table_add_segment.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table_add_segment.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table_change_segment.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table_change_segment.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step5/show_ip_route_bgp_active_srte.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step5/show_ip_route_bgp_active_srte.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step5/show_ip_route_bgp_inactive_srte.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step5/show_ip_route_bgp_inactive_srte.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step5/show_operational_data_active.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step5/show_operational_data_active.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/step5/show_operational_data_inactive.ref (renamed from tests/topotests/isis-sr-te-topo1/rt1/step5/show_operational_data_inactive.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt1/zebra.conf (renamed from tests/topotests/isis-sr-te-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt2/isisd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt2/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt2/zebra.conf (renamed from tests/topotests/isis-sr-te-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt3/isisd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt3/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt3/zebra.conf (renamed from tests/topotests/isis-sr-te-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt4/isisd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt4/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt4/zebra.conf (renamed from tests/topotests/isis-sr-te-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt5/isisd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt5/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt5/zebra.conf (renamed from tests/topotests/isis-sr-te-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/bgpd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt6/bgpd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/isisd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt6/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/pathd.conf (renamed from tests/topotests/isis-sr-te-topo1/rt6/pathd.conf)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/step1/show_mpls_table_with_candidate.ref (renamed from tests/topotests/isis-sr-te-topo1/rt6/step1/show_mpls_table_with_candidate.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/step1/show_mpls_table_without_candidate.ref (renamed from tests/topotests/isis-sr-te-topo1/rt6/step1/show_mpls_table_without_candidate.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/step2/show_operational_data.ref (renamed from tests/topotests/isis-sr-te-topo1/rt6/step2/show_operational_data.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/step2/show_operational_data_with_candidate.ref (renamed from tests/topotests/isis-sr-te-topo1/rt6/step2/show_operational_data_with_candidate.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/step3/show_operational_data_with_single_candidate.ref (renamed from tests/topotests/isis-sr-te-topo1/rt6/step3/show_operational_data_with_single_candidate.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/step3/show_operational_data_with_two_candidates.ref (renamed from tests/topotests/isis-sr-te-topo1/rt6/step3/show_operational_data_with_two_candidates.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/step4/show_mpls_table.ref (renamed from tests/topotests/isis-sr-te-topo1/rt6/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_te_topo1/rt6/zebra.conf (renamed from tests/topotests/isis-sr-te-topo1/rt6/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_sr_te_topo1/test_isis_sr_te_topo1.py (renamed from tests/topotests/isis-sr-te-topo1/test_isis_sr_te_topo1.py)0
-rw-r--r--tests/topotests/isis_sr_topo1/__init__.py (renamed from tests/topotests/isis-sr-topo1/__init__.py)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/isisd.conf (renamed from tests/topotests/isis-sr-topo1/rt1/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step1/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step1/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step10/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step10/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step10/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step10/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step10/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step2/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step2/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step2/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step2/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step3/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step3/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step3/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step3/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step4/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step4/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step4/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step4/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step5/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step5/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step5/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step5/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step5/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step6/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step6/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step6/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step6/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step6/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step7/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step7/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step7/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step7/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step7/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step8/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step8/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step8/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step8/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step8/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step9/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step9/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step9/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/step9/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step9/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt1/zebra.conf (renamed from tests/topotests/isis-sr-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/isisd.conf (renamed from tests/topotests/isis-sr-topo1/rt2/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step1/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step1/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step10/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step10/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step10/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step10/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step10/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step2/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step2/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step2/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step2/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step3/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step3/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step3/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step3/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step4/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step4/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step4/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step4/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step5/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step5/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step5/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step5/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step5/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step6/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step6/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step6/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step6/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step6/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step7/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step7/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step7/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step7/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step7/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step8/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step8/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step8/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step8/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step8/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step9/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step9/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step9/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/step9/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step9/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt2/zebra.conf (renamed from tests/topotests/isis-sr-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/isisd.conf (renamed from tests/topotests/isis-sr-topo1/rt3/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step1/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step1/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step10/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step10/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step10/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step10/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step10/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step2/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step2/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step2/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step2/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step3/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step3/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step3/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step3/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step4/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step4/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step4/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step4/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step5/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step5/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step5/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step5/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step5/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step6/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step6/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step6/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step6/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step6/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step7/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step7/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step7/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step7/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step7/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step8/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step8/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step8/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step8/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step8/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step9/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step9/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step9/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/step9/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step9/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt3/zebra.conf (renamed from tests/topotests/isis-sr-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/isisd.conf (renamed from tests/topotests/isis-sr-topo1/rt4/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step1/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step1/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step10/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step10/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step10/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step10/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step10/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step2/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step2/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step2/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step3/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step3/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step3/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step4/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step4/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step4/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step4/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step5/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step5/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step5/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step5/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step5/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step6/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step6/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step6/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step6/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step6/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step7/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step7/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step7/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step7/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step7/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step8/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step8/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step8/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step8/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step8/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step9/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step9/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step9/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/step9/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step9/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt4/zebra.conf (renamed from tests/topotests/isis-sr-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/isisd.conf (renamed from tests/topotests/isis-sr-topo1/rt5/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step1/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step1/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step10/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step10/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step10/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step10/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step10/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step2/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step2/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step2/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step3/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step3/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step3/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step4/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step4/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step4/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step5/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step5/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step5/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step5/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step5/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step6/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step6/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step6/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step6/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step6/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step7/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step7/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step7/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step7/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step7/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step8/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step8/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step8/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step8/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step8/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step9/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step9/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step9/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/step9/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step9/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt5/zebra.conf (renamed from tests/topotests/isis-sr-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/isisd.conf (renamed from tests/topotests/isis-sr-topo1/rt6/isisd.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step1/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step1/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step10/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step10/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step10/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step10/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step10/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step2/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step2/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step2/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step2/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step3/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step3/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step3/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step4/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step4/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step4/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step4/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step5/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step5/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step5/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step5/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step5/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step6/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step6/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step6/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step6/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step6/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step7/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step7/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step7/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step7/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step7/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step8/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step8/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step8/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step8/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step8/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step9/show_ip_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step9/show_ipv6_route.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step9/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/step9/show_mpls_table.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step9/show_mpls_table.ref)0
l---------tests/topotests/isis_sr_topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-sr-topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_sr_topo1/rt6/zebra.conf (renamed from tests/topotests/isis-sr-topo1/rt6/zebra.conf)0
-rw-r--r--tests/topotests/isis_sr_topo1/test_isis_sr_topo1.py (renamed from tests/topotests/isis-sr-topo1/test_isis_sr_topo1.py)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/__init__.py (renamed from tests/topotests/isis-tilfa-topo1/__init__.py)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/isisd.conf (renamed from tests/topotests/isis-tilfa-topo1/rt1/isisd.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step1/show_ip_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt1/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt1/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step1/show_mpls_table.ref (renamed from tests/topotests/isis-tilfa-topo1/rt1/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-tilfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step2/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step2/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step2/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step2/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step2/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step2/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step3/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step3/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step3/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step3/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step3/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step3/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step4/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step4/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step4/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step4/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step4/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step4/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step5/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step5/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step5/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step5/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step5/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step5/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step6/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step6/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step6/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step6/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step6/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step6/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step7/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step7/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step7/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step7/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step7/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step7/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step8/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step8/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step8/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step8/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step8/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step8/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step9/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step9/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step9/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step9/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/step9/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt1/step9/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt1/zebra.conf (renamed from tests/topotests/isis-tilfa-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/isisd.conf (renamed from tests/topotests/isis-tilfa-topo1/rt2/isisd.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step1/show_ip_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt2/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt2/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step1/show_mpls_table.ref (renamed from tests/topotests/isis-tilfa-topo1/rt2/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-tilfa-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step2/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step2/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step2/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step2/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step2/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step2/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step3/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step3/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step3/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step3/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step3/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step3/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step4/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step4/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step4/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step4/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step4/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step4/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step5/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step5/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step5/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step5/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step5/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step5/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step6/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step6/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step6/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step6/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step6/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step6/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step7/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step7/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step7/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step7/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step7/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step7/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step8/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step8/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step8/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step8/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step8/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step8/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step9/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step9/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step9/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step9/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/step9/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt2/step9/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt2/zebra.conf (renamed from tests/topotests/isis-tilfa-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/isisd.conf (renamed from tests/topotests/isis-tilfa-topo1/rt3/isisd.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step1/show_ip_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt3/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt3/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step1/show_mpls_table.ref (renamed from tests/topotests/isis-tilfa-topo1/rt3/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-tilfa-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step2/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step2/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step2/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step2/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step2/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step2/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step3/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step3/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step3/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step3/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step3/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step3/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step4/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step4/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step4/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step4/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step4/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step4/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step5/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step5/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step5/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step5/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step5/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step5/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step6/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step6/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step6/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step6/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step6/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step6/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step7/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step7/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step7/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step7/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step7/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step7/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step8/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step8/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step8/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step8/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step8/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step8/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step9/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step9/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step9/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step9/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/step9/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt3/step9/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt3/zebra.conf (renamed from tests/topotests/isis-tilfa-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/isisd.conf (renamed from tests/topotests/isis-tilfa-topo1/rt4/isisd.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step1/show_ip_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt4/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt4/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step1/show_mpls_table.ref (renamed from tests/topotests/isis-tilfa-topo1/rt4/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-tilfa-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step2/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step2/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step2/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step2/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step2/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step2/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step3/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step3/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step3/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step3/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step3/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step3/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step4/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step4/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step4/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step4/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step4/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step4/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step5/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step5/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step5/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step5/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step5/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step5/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step6/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step6/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step6/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step6/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step6/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step6/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step7/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step7/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step7/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step7/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step7/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step7/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step8/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step8/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step8/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step8/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step8/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step8/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step9/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step9/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step9/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step9/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/step9/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt4/step9/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt4/zebra.conf (renamed from tests/topotests/isis-tilfa-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/isisd.conf (renamed from tests/topotests/isis-tilfa-topo1/rt5/isisd.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step1/show_ip_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt5/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt5/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step1/show_mpls_table.ref (renamed from tests/topotests/isis-tilfa-topo1/rt5/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-tilfa-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step2/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step2/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step2/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step2/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step2/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step2/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step3/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step3/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step3/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step3/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step3/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step3/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step4/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step4/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step4/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step4/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step4/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step4/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step5/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step5/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step5/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step5/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step5/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step5/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step6/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step6/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step6/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step6/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step6/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step6/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step7/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step7/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step7/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step7/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step7/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step7/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step8/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step8/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step8/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step8/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step8/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step8/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step9/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step9/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step9/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step9/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/step9/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt5/step9/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt5/zebra.conf (renamed from tests/topotests/isis-tilfa-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/isisd.conf (renamed from tests/topotests/isis-tilfa-topo1/rt6/isisd.conf)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step1/show_ip_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt6/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step1/show_ipv6_route.ref (renamed from tests/topotests/isis-tilfa-topo1/rt6/step1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step1/show_mpls_table.ref (renamed from tests/topotests/isis-tilfa-topo1/rt6/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/isis-tilfa-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step2/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step2/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step2/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step2/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step2/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step2/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step3/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step3/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step3/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step3/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step3/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step3/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step4/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step4/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step4/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step4/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step4/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step4/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step5/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step5/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step5/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step5/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step5/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step5/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step6/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step6/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step6/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step6/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step6/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step6/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step7/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step7/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step7/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step7/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step7/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step7/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step8/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step8/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step8/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step8/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step8/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step8/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step9/show_ip_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step9/show_ip_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step9/show_ipv6_route.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step9/show_ipv6_route.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/step9/show_mpls_table.ref.diff (renamed from tests/topotests/isis-tilfa-topo1/rt6/step9/show_mpls_table.ref.diff)0
-rw-r--r--tests/topotests/isis_tilfa_topo1/rt6/zebra.conf (renamed from tests/topotests/isis-tilfa-topo1/rt6/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_tilfa_topo1/test_isis_tilfa_topo1.py (renamed from tests/topotests/isis-tilfa-topo1/test_isis_tilfa_topo1.py)0
-rw-r--r--tests/topotests/isis_topo1/__init__.py (renamed from tests/topotests/isis-topo1-vrf/__init__.py)0
-rw-r--r--tests/topotests/isis_topo1/r1/isisd.conf (renamed from tests/topotests/isis-topo1/r1/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1/r1/r1_route.json (renamed from tests/topotests/isis-topo1/r1/r1_route.json)0
-rw-r--r--tests/topotests/isis_topo1/r1/r1_route6.json (renamed from tests/topotests/isis-topo1/r1/r1_route6.json)0
-rw-r--r--tests/topotests/isis_topo1/r1/r1_route6_linux.json (renamed from tests/topotests/isis-topo1/r1/r1_route6_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r1/r1_route_linux.json (renamed from tests/topotests/isis-topo1/r1/r1_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r1/r1_topology.json (renamed from tests/topotests/isis-topo1/r1/r1_topology.json)60
-rw-r--r--tests/topotests/isis_topo1/r1/zebra.conf (renamed from tests/topotests/isis-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/isis_topo1/r2/isisd.conf (renamed from tests/topotests/isis-topo1/r2/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1/r2/r2_route.json (renamed from tests/topotests/isis-topo1/r2/r2_route.json)0
-rw-r--r--tests/topotests/isis_topo1/r2/r2_route6.json (renamed from tests/topotests/isis-topo1/r2/r2_route6.json)0
-rw-r--r--tests/topotests/isis_topo1/r2/r2_route6_linux.json (renamed from tests/topotests/isis-topo1/r2/r2_route6_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r2/r2_route_linux.json (renamed from tests/topotests/isis-topo1/r2/r2_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r2/r2_topology.json (renamed from tests/topotests/isis-topo1/r2/r2_topology.json)60
-rw-r--r--tests/topotests/isis_topo1/r2/zebra.conf (renamed from tests/topotests/isis-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/isis_topo1/r3/isisd.conf (renamed from tests/topotests/isis-topo1/r3/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1/r3/r3_route.json (renamed from tests/topotests/isis-topo1/r3/r3_route.json)0
-rw-r--r--tests/topotests/isis_topo1/r3/r3_route6.json (renamed from tests/topotests/isis-topo1/r3/r3_route6.json)0
-rw-r--r--tests/topotests/isis_topo1/r3/r3_route6_linux.json (renamed from tests/topotests/isis-topo1/r3/r3_route6_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r3/r3_route_linux.json (renamed from tests/topotests/isis-topo1/r3/r3_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r3/r3_topology.json (renamed from tests/topotests/isis-topo1/r3/r3_topology.json)139
-rw-r--r--tests/topotests/isis_topo1/r3/zebra.conf (renamed from tests/topotests/isis-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/isis_topo1/r4/isisd.conf (renamed from tests/topotests/isis-topo1/r4/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1/r4/r4_route.json (renamed from tests/topotests/isis-topo1/r4/r4_route.json)0
-rw-r--r--tests/topotests/isis_topo1/r4/r4_route6.json (renamed from tests/topotests/isis-topo1/r4/r4_route6.json)0
-rw-r--r--tests/topotests/isis_topo1/r4/r4_route6_linux.json (renamed from tests/topotests/isis-topo1/r4/r4_route6_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r4/r4_route_linux.json (renamed from tests/topotests/isis-topo1/r4/r4_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r4/r4_topology.json (renamed from tests/topotests/isis-topo1/r4/r4_topology.json)139
-rw-r--r--tests/topotests/isis_topo1/r4/zebra.conf (renamed from tests/topotests/isis-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/isis_topo1/r5/isisd.conf (renamed from tests/topotests/isis-topo1/r5/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1/r5/r5_route.json (renamed from tests/topotests/isis-topo1/r5/r5_route.json)0
-rw-r--r--tests/topotests/isis_topo1/r5/r5_route6.json (renamed from tests/topotests/isis-topo1/r5/r5_route6.json)0
-rw-r--r--tests/topotests/isis_topo1/r5/r5_route6_linux.json (renamed from tests/topotests/isis-topo1/r5/r5_route6_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r5/r5_route_linux.json (renamed from tests/topotests/isis-topo1/r5/r5_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1/r5/r5_topology.json156
-rw-r--r--tests/topotests/isis_topo1/r5/zebra.conf (renamed from tests/topotests/isis-topo1/r5/zebra.conf)0
-rw-r--r--tests/topotests/isis_topo1/test_isis_topo1.dot (renamed from tests/topotests/isis-topo1/test_isis_topo1.dot)0
-rw-r--r--tests/topotests/isis_topo1/test_isis_topo1.jpg (renamed from tests/topotests/isis-topo1/test_isis_topo1.jpg)bin74340 -> 74340 bytes
-rw-r--r--tests/topotests/isis_topo1/test_isis_topo1.py (renamed from tests/topotests/isis-topo1/test_isis_topo1.py)62
-rw-r--r--tests/topotests/isis_topo1_vrf/__init__.py (renamed from tests/topotests/isis-topo1/__init__.py)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r1/isisd.conf (renamed from tests/topotests/isis-topo1-vrf/r1/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r1/r1_route.json (renamed from tests/topotests/isis-topo1-vrf/r1/r1_route.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r1/r1_route6.json (renamed from tests/topotests/isis-topo1-vrf/r1/r1_route6.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r1/r1_route6_linux.json (renamed from tests/topotests/isis-topo1-vrf/r1/r1_route6_linux.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r1/r1_route_linux.json (renamed from tests/topotests/isis-topo1-vrf/r1/r1_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r1/r1_topology.json (renamed from tests/topotests/isis-topo1-vrf/r1/r1_topology.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r1/zebra.conf (renamed from tests/topotests/isis-topo1-vrf/r1/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r2/isisd.conf (renamed from tests/topotests/isis-topo1-vrf/r2/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r2/r2_route.json (renamed from tests/topotests/isis-topo1-vrf/r2/r2_route.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r2/r2_route6.json (renamed from tests/topotests/isis-topo1-vrf/r2/r2_route6.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r2/r2_route6_linux.json (renamed from tests/topotests/isis-topo1-vrf/r2/r2_route6_linux.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r2/r2_route_linux.json (renamed from tests/topotests/isis-topo1-vrf/r2/r2_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r2/r2_topology.json (renamed from tests/topotests/isis-topo1-vrf/r2/r2_topology.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r2/zebra.conf (renamed from tests/topotests/isis-topo1-vrf/r2/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r3/isisd.conf (renamed from tests/topotests/isis-topo1-vrf/r3/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r3/r3_route.json (renamed from tests/topotests/isis-topo1-vrf/r3/r3_route.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r3/r3_route6.json (renamed from tests/topotests/isis-topo1-vrf/r3/r3_route6.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r3/r3_route6_linux.json (renamed from tests/topotests/isis-topo1-vrf/r3/r3_route6_linux.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r3/r3_route_linux.json (renamed from tests/topotests/isis-topo1-vrf/r3/r3_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r3/r3_topology.json (renamed from tests/topotests/isis-topo1-vrf/r3/r3_topology.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r3/zebra.conf (renamed from tests/topotests/isis-topo1-vrf/r3/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r4/isisd.conf (renamed from tests/topotests/isis-topo1-vrf/r4/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r4/r4_route.json (renamed from tests/topotests/isis-topo1-vrf/r4/r4_route.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r4/r4_route6.json (renamed from tests/topotests/isis-topo1-vrf/r4/r4_route6.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r4/r4_route6_linux.json (renamed from tests/topotests/isis-topo1-vrf/r4/r4_route6_linux.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r4/r4_route_linux.json (renamed from tests/topotests/isis-topo1-vrf/r4/r4_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r4/r4_topology.json (renamed from tests/topotests/isis-topo1-vrf/r4/r4_topology.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r4/zebra.conf (renamed from tests/topotests/isis-topo1-vrf/r4/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r5/isisd.conf (renamed from tests/topotests/isis-topo1-vrf/r5/isisd.conf)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r5/r5_route.json (renamed from tests/topotests/isis-topo1-vrf/r5/r5_route.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r5/r5_route6.json (renamed from tests/topotests/isis-topo1-vrf/r5/r5_route6.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r5/r5_route6_linux.json (renamed from tests/topotests/isis-topo1-vrf/r5/r5_route6_linux.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r5/r5_route_linux.json (renamed from tests/topotests/isis-topo1-vrf/r5/r5_route_linux.json)0
-rw-r--r--tests/topotests/isis_topo1_vrf/r5/r5_topology.json (renamed from tests/topotests/isis-topo1-vrf/r5/r5_topology.json)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/r5/zebra.conf (renamed from tests/topotests/isis-topo1-vrf/r5/zebra.conf)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.dot (renamed from tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.dot)0
-rwxr-xr-xtests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.jpg (renamed from tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.jpg)bin74340 -> 74340 bytes
-rw-r--r--tests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.py (renamed from tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.py)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/ldpd.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r1/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/ospfd.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-oc-acl-topo1/r1/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/show_ip_route.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_all_binding.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_all_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_binding.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_discovery.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r1/zebra.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/ldpd.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r2/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/ospfd.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-oc-acl-topo1/r2/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/show_ip_route.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_all_binding.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_all_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_binding.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_discovery.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r2/zebra.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/ldpd.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r3/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/ospfd.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r3/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-oc-acl-topo1/r3/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/show_ip_route.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_all_binding.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_all_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_binding.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_discovery.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r3/zebra.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/ldpd.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r4/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/ospfd.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r4/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-oc-acl-topo1/r4/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/show_ip_route.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r4/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_all_binding.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_all_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_binding.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_discovery.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/r4/zebra.conf (renamed from tests/topotests/ldp-oc-acl-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/test_ldp_oc_acl_topo1.dot (renamed from tests/topotests/ldp-oc-acl-topo1/test_ldp_oc_acl_topo1.dot)0
-rw-r--r--tests/topotests/ldp_oc_acl_topo1/test_ldp_oc_acl_topo1.py (renamed from tests/topotests/ldp-oc-acl-topo1/test_ldp_oc_acl_topo1.py)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r1/ldpd.conf (renamed from tests/topotests/ldp-oc-topo1/r1/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r1/ospfd.conf (renamed from tests/topotests/ldp-oc-topo1/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r1/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-oc-topo1/r1/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r1/show_ip_route.ref (renamed from tests/topotests/ldp-oc-topo1/r1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r1/show_ldp_binding.ref (renamed from tests/topotests/ldp-oc-topo1/r1/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r1/show_ldp_discovery.ref (renamed from tests/topotests/ldp-oc-topo1/r1/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r1/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-oc-topo1/r1/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r1/zebra.conf (renamed from tests/topotests/ldp-oc-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r2/ldpd.conf (renamed from tests/topotests/ldp-oc-topo1/r2/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r2/ospfd.conf (renamed from tests/topotests/ldp-oc-topo1/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r2/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-oc-topo1/r2/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r2/show_ip_route.ref (renamed from tests/topotests/ldp-oc-topo1/r2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r2/show_ldp_binding.ref (renamed from tests/topotests/ldp-oc-topo1/r2/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r2/show_ldp_discovery.ref (renamed from tests/topotests/ldp-oc-topo1/r2/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r2/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-oc-topo1/r2/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r2/zebra.conf (renamed from tests/topotests/ldp-oc-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r3/ldpd.conf (renamed from tests/topotests/ldp-oc-topo1/r3/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r3/ospfd.conf (renamed from tests/topotests/ldp-oc-topo1/r3/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r3/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-oc-topo1/r3/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r3/show_ip_route.ref (renamed from tests/topotests/ldp-oc-topo1/r3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r3/show_ldp_binding.ref (renamed from tests/topotests/ldp-oc-topo1/r3/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r3/show_ldp_discovery.ref (renamed from tests/topotests/ldp-oc-topo1/r3/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r3/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-oc-topo1/r3/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r3/zebra.conf (renamed from tests/topotests/ldp-oc-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r4/ldpd.conf (renamed from tests/topotests/ldp-oc-topo1/r4/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r4/ospfd.conf (renamed from tests/topotests/ldp-oc-topo1/r4/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r4/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-oc-topo1/r4/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r4/show_ip_route.ref (renamed from tests/topotests/ldp-oc-topo1/r4/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r4/show_ldp_binding.ref (renamed from tests/topotests/ldp-oc-topo1/r4/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r4/show_ldp_discovery.ref (renamed from tests/topotests/ldp-oc-topo1/r4/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r4/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-oc-topo1/r4/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_oc_topo1/r4/zebra.conf (renamed from tests/topotests/ldp-oc-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/ldp_oc_topo1/test_ldp_oc_topo1.dot (renamed from tests/topotests/ldp-oc-topo1/test_ldp_oc_topo1.dot)0
-rw-r--r--tests/topotests/ldp_oc_topo1/test_ldp_oc_topo1.py (renamed from tests/topotests/ldp-oc-topo1/test_ldp_oc_topo1.py)0
-rw-r--r--tests/topotests/ldp_snmp/ce1/zebra.conf (renamed from tests/topotests/ldp-snmp/ce1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_snmp/ce2/zebra.conf (renamed from tests/topotests/ldp-snmp/ce2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_snmp/ce3/zebra.conf (renamed from tests/topotests/ldp-snmp/ce3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r1/isisd.conf (renamed from tests/topotests/ldp-snmp/r1/isisd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r1/ldpd.conf (renamed from tests/topotests/ldp-snmp/r1/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_ip_route.ref (renamed from tests/topotests/ldp-snmp/r1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_isis_interface_detail.ref (renamed from tests/topotests/ldp-snmp/r1/show_isis_interface_detail.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_isis_interface_detail_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r1/show_isis_interface_detail_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_isis_interface_detail_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r1/show_isis_interface_detail_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_isis_ldp_sync.ref (renamed from tests/topotests/ldp-snmp/r1/show_isis_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-snmp/r1/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-snmp/r1/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_ldp_binding.ref (renamed from tests/topotests/ldp-snmp/r1/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_ldp_discovery.ref (renamed from tests/topotests/ldp-snmp/r1/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-snmp/r1/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-snmp/r1/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/ldp-snmp/r1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r1/snmpd.conf (renamed from tests/topotests/ldp-snmp/r1/snmpd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r1/zebra.conf (renamed from tests/topotests/ldp-snmp/r1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r2/isisd.conf (renamed from tests/topotests/ldp-snmp/r2/isisd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r2/ldpd.conf (renamed from tests/topotests/ldp-snmp/r2/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r2/ospfd.conf (renamed from tests/topotests/ldp-snmp/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_ip_route.ref (renamed from tests/topotests/ldp-snmp/r2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_isis_interface_detail.ref (renamed from tests/topotests/ldp-snmp/r2/show_isis_interface_detail.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_isis_interface_detail_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r2/show_isis_interface_detail_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_isis_interface_detail_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r2/show_isis_interface_detail_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_isis_ldp_sync.ref (renamed from tests/topotests/ldp-snmp/r2/show_isis_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-snmp/r2/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-snmp/r2/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_ldp_binding.ref (renamed from tests/topotests/ldp-snmp/r2/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_ldp_discovery.ref (renamed from tests/topotests/ldp-snmp/r2/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-snmp/r2/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-snmp/r2/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/ldp-snmp/r2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r2/snmpd.conf (renamed from tests/topotests/ldp-snmp/r2/snmpd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r2/zebra.conf (renamed from tests/topotests/ldp-snmp/r2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r3/isisd.conf (renamed from tests/topotests/ldp-snmp/r3/isisd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r3/ldpd.conf (renamed from tests/topotests/ldp-snmp/r3/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_ip_route.ref (renamed from tests/topotests/ldp-snmp/r3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_isis_interface_detail.ref (renamed from tests/topotests/ldp-snmp/r3/show_isis_interface_detail.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_isis_interface_detail_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r3/show_isis_interface_detail_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_isis_interface_detail_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r3/show_isis_interface_detail_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_isis_ldp_sync.ref (renamed from tests/topotests/ldp-snmp/r3/show_isis_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-snmp/r3/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-snmp/r3/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_ldp_binding.ref (renamed from tests/topotests/ldp-snmp/r3/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_ldp_discovery.ref (renamed from tests/topotests/ldp-snmp/r3/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-snmp/r3/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-snmp/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-snmp/r3/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/ldp-snmp/r3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/ldp_snmp/r3/zebra.conf (renamed from tests/topotests/ldp-snmp/r3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_snmp/test_ldp_snmp_topo1.py (renamed from tests/topotests/ldp-snmp/test_ldp_snmp_topo1.py)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/ce1/zebra.conf (renamed from tests/topotests/ldp-sync-isis-topo1/ce1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/ce2/zebra.conf (renamed from tests/topotests/ldp-sync-isis-topo1/ce2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/ce3/zebra.conf (renamed from tests/topotests/ldp-sync-isis-topo1/ce3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/isisd.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r1/isisd.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/ldpd.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r1/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_ip_route.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_binding.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_discovery.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r1/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r1/zebra.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/isisd.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r2/isisd.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/ldpd.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r2/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_ip_route.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_binding.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_discovery.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r2/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r2/zebra.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/isisd.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r3/isisd.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/ldpd.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r3/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_ip_route.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_binding.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_discovery.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/show_yang_interface_isis_adjacencies.ref (renamed from tests/topotests/ldp-sync-isis-topo1/r3/show_yang_interface_isis_adjacencies.ref)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/r3/zebra.conf (renamed from tests/topotests/ldp-sync-isis-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/test_ldp_sync_isis_topo1.dot (renamed from tests/topotests/ldp-sync-isis-topo1/test_ldp_sync_isis_topo1.dot)0
-rw-r--r--tests/topotests/ldp_sync_isis_topo1/test_ldp_sync_isis_topo1.py (renamed from tests/topotests/ldp-sync-isis-topo1/test_ldp_sync_isis_topo1.py)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/ce1/zebra.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/ce1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/ce2/zebra.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/ce2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/ce3/zebra.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/ce3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/ldpd.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/ospf-nbrs.txt (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/ospf-nbrs.txt)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/ospfd.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_route.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_binding.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_discovery.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r1/zebra.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/ldpd.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/ospfd.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_route.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_binding.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_discovery.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r2/zebra.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/ldpd.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/ospfd.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_route.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_binding.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_discovery.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_igp_sync.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_igp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync_r1_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync_r1_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync_r2_eth1_shutdown.ref (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync_r2_eth1_shutdown.ref)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/r3/zebra.conf (renamed from tests/topotests/ldp-sync-ospf-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/test_ldp_sync_ospf_topo1.dot (renamed from tests/topotests/ldp-sync-ospf-topo1/test_ldp_sync_ospf_topo1.dot)0
-rw-r--r--tests/topotests/ldp_sync_ospf_topo1/test_ldp_sync_ospf_topo1.py (renamed from tests/topotests/ldp-sync-ospf-topo1/test_ldp_sync_ospf_topo1.py)0
-rw-r--r--tests/topotests/ldp_topo1/r1/ip_mpls_route.ref (renamed from tests/topotests/ldp-topo1/r1/ip_mpls_route.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r1/ldpd.conf (renamed from tests/topotests/ldp-topo1/r1/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r1/ospfd.conf (renamed from tests/topotests/ldp-topo1/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r1/show_ipv4_route.ref (renamed from tests/topotests/ldp-topo1/r1/show_ipv4_route.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r1/show_mpls_ldp_binding.ref (renamed from tests/topotests/ldp-topo1/r1/show_mpls_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r1/show_mpls_ldp_discovery.ref (renamed from tests/topotests/ldp-topo1/r1/show_mpls_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r1/show_mpls_ldp_interface.ref (renamed from tests/topotests/ldp-topo1/r1/show_mpls_ldp_interface.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r1/show_mpls_ldp_neighbor.ref (renamed from tests/topotests/ldp-topo1/r1/show_mpls_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r1/show_mpls_table.ref (renamed from tests/topotests/ldp-topo1/r1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r1/zebra.conf (renamed from tests/topotests/ldp-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r2/ip_mpls_route.ref (renamed from tests/topotests/ldp-topo1/r2/ip_mpls_route.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r2/ldpd.conf (renamed from tests/topotests/ldp-topo1/r2/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r2/ospfd.conf (renamed from tests/topotests/ldp-topo1/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r2/show_ipv4_route.ref (renamed from tests/topotests/ldp-topo1/r2/show_ipv4_route.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r2/show_mpls_ldp_binding.ref (renamed from tests/topotests/ldp-topo1/r2/show_mpls_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r2/show_mpls_ldp_discovery.ref (renamed from tests/topotests/ldp-topo1/r2/show_mpls_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r2/show_mpls_ldp_interface.ref (renamed from tests/topotests/ldp-topo1/r2/show_mpls_ldp_interface.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r2/show_mpls_ldp_neighbor.ref (renamed from tests/topotests/ldp-topo1/r2/show_mpls_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r2/show_mpls_table.ref (renamed from tests/topotests/ldp-topo1/r2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r2/zebra.conf (renamed from tests/topotests/ldp-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r3/ip_mpls_route.ref (renamed from tests/topotests/ldp-topo1/r3/ip_mpls_route.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r3/ldpd.conf (renamed from tests/topotests/ldp-topo1/r3/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r3/ospfd.conf (renamed from tests/topotests/ldp-topo1/r3/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r3/show_ipv4_route.ref (renamed from tests/topotests/ldp-topo1/r3/show_ipv4_route.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r3/show_mpls_ldp_binding.ref (renamed from tests/topotests/ldp-topo1/r3/show_mpls_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r3/show_mpls_ldp_discovery.ref (renamed from tests/topotests/ldp-topo1/r3/show_mpls_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r3/show_mpls_ldp_interface.ref (renamed from tests/topotests/ldp-topo1/r3/show_mpls_ldp_interface.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r3/show_mpls_ldp_neighbor.ref (renamed from tests/topotests/ldp-topo1/r3/show_mpls_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r3/show_mpls_table.ref (renamed from tests/topotests/ldp-topo1/r3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r3/zebra.conf (renamed from tests/topotests/ldp-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r4/ip_mpls_route.ref (renamed from tests/topotests/ldp-topo1/r4/ip_mpls_route.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r4/ldpd.conf (renamed from tests/topotests/ldp-topo1/r4/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r4/ospfd.conf (renamed from tests/topotests/ldp-topo1/r4/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_topo1/r4/show_ipv4_route.ref (renamed from tests/topotests/ldp-topo1/r4/show_ipv4_route.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r4/show_mpls_ldp_binding.ref (renamed from tests/topotests/ldp-topo1/r4/show_mpls_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r4/show_mpls_ldp_discovery.ref (renamed from tests/topotests/ldp-topo1/r4/show_mpls_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r4/show_mpls_ldp_interface.ref (renamed from tests/topotests/ldp-topo1/r4/show_mpls_ldp_interface.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r4/show_mpls_ldp_neighbor.ref (renamed from tests/topotests/ldp-topo1/r4/show_mpls_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r4/show_mpls_table.ref (renamed from tests/topotests/ldp-topo1/r4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ldp_topo1/r4/zebra.conf (renamed from tests/topotests/ldp-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/ldp_topo1/test_ldp_topo1.py (renamed from tests/topotests/ldp-topo1/test_ldp_topo1.py)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/__init__.py (renamed from tests/topotests/ldp-vpls-topo1/__init__.py)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/ce1/zebra.conf (renamed from tests/topotests/ldp-vpls-topo1/ce1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/ce2/zebra.conf (renamed from tests/topotests/ldp-vpls-topo1/ce2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/ce3/zebra.conf (renamed from tests/topotests/ldp-vpls-topo1/ce3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/ldpd.conf (renamed from tests/topotests/ldp-vpls-topo1/r1/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/ospf-nbrs.txt (renamed from tests/topotests/ldp-vpls-topo1/r1/ospf-nbrs.txt)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/ospfd.conf (renamed from tests/topotests/ldp-vpls-topo1/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-vpls-topo1/r1/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/show_ip_route.ref (renamed from tests/topotests/ldp-vpls-topo1/r1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-vpls-topo1/r1/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-vpls-topo1/r1/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/show_ldp_binding.ref (renamed from tests/topotests/ldp-vpls-topo1/r1/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/show_ldp_discovery.ref (renamed from tests/topotests/ldp-vpls-topo1/r1/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-vpls-topo1/r1/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r1/zebra.conf (renamed from tests/topotests/ldp-vpls-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/ldpd.conf (renamed from tests/topotests/ldp-vpls-topo1/r2/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/ospfd.conf (renamed from tests/topotests/ldp-vpls-topo1/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-vpls-topo1/r2/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/show_ip_route.ref (renamed from tests/topotests/ldp-vpls-topo1/r2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-vpls-topo1/r2/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-vpls-topo1/r2/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/show_ldp_binding.ref (renamed from tests/topotests/ldp-vpls-topo1/r2/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/show_ldp_discovery.ref (renamed from tests/topotests/ldp-vpls-topo1/r2/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-vpls-topo1/r2/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r2/zebra.conf (renamed from tests/topotests/ldp-vpls-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/ldpd.conf (renamed from tests/topotests/ldp-vpls-topo1/r3/ldpd.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/ospfd.conf (renamed from tests/topotests/ldp-vpls-topo1/r3/ospfd.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/show_ip_ospf_neighbor.json (renamed from tests/topotests/ldp-vpls-topo1/r3/show_ip_ospf_neighbor.json)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/show_ip_route.ref (renamed from tests/topotests/ldp-vpls-topo1/r3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/show_l2vpn_binding.ref (renamed from tests/topotests/ldp-vpls-topo1/r3/show_l2vpn_binding.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/show_l2vpn_vc.ref (renamed from tests/topotests/ldp-vpls-topo1/r3/show_l2vpn_vc.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/show_ldp_binding.ref (renamed from tests/topotests/ldp-vpls-topo1/r3/show_ldp_binding.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/show_ldp_discovery.ref (renamed from tests/topotests/ldp-vpls-topo1/r3/show_ldp_discovery.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/show_ldp_neighbor.ref (renamed from tests/topotests/ldp-vpls-topo1/r3/show_ldp_neighbor.ref)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/r3/zebra.conf (renamed from tests/topotests/ldp-vpls-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/test_ldp_vpls_topo1.dot (renamed from tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.dot)0
-rw-r--r--tests/topotests/ldp_vpls_topo1/test_ldp_vpls_topo1.pdf (renamed from tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.pdf)bin16693 -> 16693 bytes
-rw-r--r--tests/topotests/ldp_vpls_topo1/test_ldp_vpls_topo1.py (renamed from tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.py)0
-rw-r--r--tests/topotests/multicast_pim_bsm_topo1/mcast_pim_bsmp_01.json (renamed from tests/topotests/multicast-pim-bsm-topo1/mcast_pim_bsmp_01.json)0
-rw-r--r--tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py (renamed from tests/topotests/multicast-pim-bsm-topo1/test_mcast_pim_bsmp_01.py)0
-rw-r--r--tests/topotests/multicast_pim_bsm_topo2/mcast_pim_bsmp_02.json (renamed from tests/topotests/multicast-pim-bsm-topo2/mcast_pim_bsmp_02.json)0
-rw-r--r--tests/topotests/multicast_pim_bsm_topo2/test_mcast_pim_bsmp_02.py (renamed from tests/topotests/multicast-pim-bsm-topo2/test_mcast_pim_bsmp_02.py)0
-rw-r--r--tests/topotests/multicast_pim_sm_topo1/multicast_pim_sm_topo1.json (renamed from tests/topotests/multicast-pim-sm-topo1/multicast_pim_sm_topo1.json)0
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py (renamed from tests/topotests/multicast-pim-sm-topo1/test_multicast_pim_sm_topo1.py)0
-rw-r--r--tests/topotests/multicast_pim_sm_topo2/multicast_pim_sm_topo2.json (renamed from tests/topotests/multicast-pim-sm-topo2/multicast_pim_sm_topo2.json)0
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py (renamed from tests/topotests/multicast-pim-sm-topo2/test_multicast_pim_sm_topo2.py)0
-rw-r--r--tests/topotests/multicast_pim_sm_topo3/multicast_pim_sm_topo3.json (renamed from tests/topotests/multicast-pim-sm-topo3/multicast_pim_sm_topo3.json)0
-rw-r--r--tests/topotests/multicast_pim_sm_topo3/multicast_pim_sm_topo4.json (renamed from tests/topotests/multicast-pim-sm-topo3/multicast_pim_sm_topo4.json)0
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo3.py (renamed from tests/topotests/multicast-pim-sm-topo3/test_multicast_pim_sm_topo3.py)0
-rwxr-xr-xtests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py (renamed from tests/topotests/multicast-pim-sm-topo3/test_multicast_pim_sm_topo4.py)0
-rw-r--r--tests/topotests/multicast_pim_static_rp_topo1/__init__.py (renamed from tests/topotests/multicast-pim-static-rp-topo1/__init__.py)0
-rw-r--r--tests/topotests/multicast_pim_static_rp_topo1/multicast_pim_static_rp.json (renamed from tests/topotests/multicast-pim-static-rp-topo1/multicast_pim_static_rp.json)0
-rwxr-xr-xtests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py (renamed from tests/topotests/multicast-pim-static-rp-topo1/test_multicast_pim_static_rp.py)430
-rw-r--r--tests/topotests/nhrp_topo/r1/nhrp4_cache.json (renamed from tests/topotests/nhrp-topo/r1/nhrp4_cache.json)0
-rw-r--r--tests/topotests/nhrp_topo/r1/nhrp_route4.json (renamed from tests/topotests/nhrp-topo/r1/nhrp_route4.json)0
-rw-r--r--tests/topotests/nhrp_topo/r1/nhrpd.conf (renamed from tests/topotests/nhrp-topo/r1/nhrpd.conf)0
-rw-r--r--tests/topotests/nhrp_topo/r1/zebra.conf (renamed from tests/topotests/nhrp-topo/r1/zebra.conf)0
-rw-r--r--tests/topotests/nhrp_topo/r2/nhrp4_cache.json (renamed from tests/topotests/nhrp-topo/r2/nhrp4_cache.json)0
-rw-r--r--tests/topotests/nhrp_topo/r2/nhrp_route4.json (renamed from tests/topotests/nhrp-topo/r2/nhrp_route4.json)0
-rw-r--r--tests/topotests/nhrp_topo/r2/nhrpd.conf (renamed from tests/topotests/nhrp-topo/r2/nhrpd.conf)0
-rw-r--r--tests/topotests/nhrp_topo/r2/zebra.conf (renamed from tests/topotests/nhrp-topo/r2/zebra.conf)0
-rw-r--r--tests/topotests/nhrp_topo/r3/zebra.conf (renamed from tests/topotests/nhrp-topo/r3/zebra.conf)0
-rw-r--r--tests/topotests/nhrp_topo/test_nhrp_topo.dot (renamed from tests/topotests/nhrp-topo/test_nhrp_topo.dot)0
-rw-r--r--tests/topotests/nhrp_topo/test_nhrp_topo.py (renamed from tests/topotests/nhrp-topo/test_nhrp_topo.py)0
-rw-r--r--tests/topotests/ospf-sr-te-topo1/dst/zebra.conf23
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt1/bgpd.conf16
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt1/ospfd.conf36
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt1/pathd.conf27
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt1/step2/show_operational_data.ref13
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt1/step2/show_operational_data_with_candidate.ref20
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt1/step3/show_operational_data_with_single_candidate.ref20
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt1/step3/show_operational_data_with_two_candidates.ref25
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt1/zebra.conf21
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt2/ospfd.conf47
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt2/zebra.conf35
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt3/ospfd.conf46
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt3/zebra.conf33
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt4/ospfd.conf53
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt4/zebra.conf43
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt5/ospfd.conf53
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt5/zebra.conf43
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt6/bgpd.conf12
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt6/ospfd.conf41
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt6/pathd.conf25
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt6/step2/show_operational_data.ref13
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt6/step2/show_operational_data_with_candidate.ref19
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt6/step3/show_operational_data_with_single_candidate.ref19
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt6/step3/show_operational_data_with_two_candidates.ref23
-rw-r--r--tests/topotests/ospf-sr-te-topo1/rt6/zebra.conf38
-rwxr-xr-xtests/topotests/ospf-sr-te-topo1/test_ospf_sr_te_topo1.py640
-rw-r--r--tests/topotests/ospf6_topo1/README.md (renamed from tests/topotests/ospf6-topo1/README.md)0
-rw-r--r--tests/topotests/ospf6_topo1/r1/ip_6_address.nhg.ref (renamed from tests/topotests/ospf6-topo1-vrf/r1/ip_6_address.nhg.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r1/ip_6_address.ref (renamed from tests/topotests/ospf6-topo1/r1/ip_6_address.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r1/ospf6d.conf (renamed from tests/topotests/ospf6-topo1/r1/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo1/r1/show_ipv6_route.ref (renamed from tests/topotests/ospf6-topo1/r1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r1/zebra.conf (renamed from tests/topotests/ospf6-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo1/r2/ip_6_address.nhg.ref (renamed from tests/topotests/ospf6-topo1/r2/ip_6_address.nhg.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r2/ip_6_address.ref (renamed from tests/topotests/ospf6-topo1/r2/ip_6_address.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r2/ospf6d.conf (renamed from tests/topotests/ospf6-topo1/r2/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo1/r2/show_ipv6_route.ref (renamed from tests/topotests/ospf6-topo1/r2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r2/zebra.conf (renamed from tests/topotests/ospf6-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo1/r3/ip_6_address.nhg.ref (renamed from tests/topotests/ospf6-topo1/r3/ip_6_address.nhg.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r3/ip_6_address.ref (renamed from tests/topotests/ospf6-topo1/r3/ip_6_address.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r3/ospf6d.conf (renamed from tests/topotests/ospf6-topo1/r3/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo1/r3/show_ipv6_route.ref (renamed from tests/topotests/ospf6-topo1/r3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r3/zebra.conf (renamed from tests/topotests/ospf6-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo1/r4/ip_6_address.nhg.ref (renamed from tests/topotests/ospf6-topo1/r4/ip_6_address.nhg.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r4/ip_6_address.ref (renamed from tests/topotests/ospf6-topo1/r4/ip_6_address.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r4/ospf6d.conf (renamed from tests/topotests/ospf6-topo1/r4/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo1/r4/show_ipv6_route.ref (renamed from tests/topotests/ospf6-topo1/r4/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/ospf6_topo1/r4/zebra.conf (renamed from tests/topotests/ospf6-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo1/test_ospf6_topo1.py (renamed from tests/topotests/ospf6-topo1/test_ospf6_topo1.py)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/README.md (renamed from tests/topotests/ospf6-topo1-vrf/README.md)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r1/ip_6_address.nhg.ref (renamed from tests/topotests/ospf6-topo1/r1/ip_6_address.nhg.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r1/ip_6_address.ref (renamed from tests/topotests/ospf6-topo1-vrf/r1/ip_6_address.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r1/ospf6d.conf (renamed from tests/topotests/ospf6-topo1-vrf/r1/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r1/show_ipv6_vrf_route.ref (renamed from tests/topotests/ospf6-topo1-vrf/r1/show_ipv6_vrf_route.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r1/zebra.conf (renamed from tests/topotests/ospf6-topo1-vrf/r1/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r2/ip_6_address.ref (renamed from tests/topotests/ospf6-topo1-vrf/r2/ip_6_address.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r2/ospf6d.conf (renamed from tests/topotests/ospf6-topo1-vrf/r2/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r2/show_ipv6_vrf_route.ref (renamed from tests/topotests/ospf6-topo1-vrf/r2/show_ipv6_vrf_route.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r2/zebra.conf (renamed from tests/topotests/ospf6-topo1-vrf/r2/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r3/ip_6_address.ref (renamed from tests/topotests/ospf6-topo1-vrf/r3/ip_6_address.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r3/ospf6d.conf (renamed from tests/topotests/ospf6-topo1-vrf/r3/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r3/show_ipv6_vrf_route.ref (renamed from tests/topotests/ospf6-topo1-vrf/r3/show_ipv6_vrf_route.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r3/zebra.conf (renamed from tests/topotests/ospf6-topo1-vrf/r3/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r4/ip_6_address.ref (renamed from tests/topotests/ospf6-topo1-vrf/r4/ip_6_address.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r4/ospf6d.conf (renamed from tests/topotests/ospf6-topo1-vrf/r4/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r4/show_ipv6_vrf_route.ref (renamed from tests/topotests/ospf6-topo1-vrf/r4/show_ipv6_vrf_route.ref)0
-rw-r--r--tests/topotests/ospf6_topo1_vrf/r4/zebra.conf (renamed from tests/topotests/ospf6-topo1-vrf/r4/zebra.conf)0
-rwxr-xr-xtests/topotests/ospf6_topo1_vrf/test_ospf6_topo1_vrf.py (renamed from tests/topotests/ospf6-topo1-vrf/test_ospf6_topo1_vrf.py)0
-rw-r--r--tests/topotests/ospf6_topo2/r1/ospf6d.conf (renamed from tests/topotests/ospf6-topo2/r1/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo2/r1/zebra.conf (renamed from tests/topotests/ospf6-topo2/r1/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo2/r2/ospf6d.conf (renamed from tests/topotests/ospf6-topo2/r2/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo2/r2/zebra.conf (renamed from tests/topotests/ospf6-topo2/r2/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo2/r3/ospf6d.conf (renamed from tests/topotests/ospf6-topo2/r3/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf6_topo2/r3/zebra.conf (renamed from tests/topotests/ospf6-topo2/r3/zebra.conf)0
-rw-r--r--tests/topotests/ospf6_topo2/test_ospf6_topo2.dot (renamed from tests/topotests/ospf6-topo2/test_ospf6_topo2.dot)0
-rw-r--r--tests/topotests/ospf6_topo2/test_ospf6_topo2.png (renamed from tests/topotests/ospf6-topo2/test_ospf6_topo2.png)bin31523 -> 31523 bytes
-rw-r--r--tests/topotests/ospf6_topo2/test_ospf6_topo2.py (renamed from tests/topotests/ospf6-topo2/test_ospf6_topo2.py)0
-rw-r--r--tests/topotests/ospf_dual_stack/test_ospf_dual_stack.dot (renamed from tests/topotests/ospf-dual-stack/test_ospf_dual_stack.dot)0
-rw-r--r--tests/topotests/ospf_dual_stack/test_ospf_dual_stack.jpg (renamed from tests/topotests/ospf-dual-stack/test_ospf_dual_stack.jpg)bin98314 -> 98314 bytes
-rw-r--r--tests/topotests/ospf_dual_stack/test_ospf_dual_stack.json (renamed from tests/topotests/ospf-dual-stack/test_ospf_dual_stack.json)0
-rw-r--r--tests/topotests/ospf_dual_stack/test_ospf_dual_stack.py (renamed from tests/topotests/ospf-dual-stack/test_ospf_dual_stack.py)0
-rw-r--r--tests/topotests/ospf_sr_topo1/__init__.py (renamed from tests/topotests/ospf-sr-topo1/__init__.py)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/ospfd.conf (renamed from tests/topotests/ospf-sr-topo1/rt1/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step1/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step1/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step10/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step10/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step10/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step2/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step2/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step3/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step3/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step4/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step4/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step5/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step5/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step5/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step6/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step6/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step6/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step7/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step7/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step7/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step8/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step8/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step8/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step9/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/step9/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt1/step9/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt1/zebra.conf (renamed from tests/topotests/ospf-sr-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/ospfd.conf (renamed from tests/topotests/ospf-sr-topo1/rt2/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step1/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step1/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step10/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step10/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step10/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step2/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step2/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step3/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step3/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step4/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step4/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step5/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step5/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step5/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step6/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step6/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step6/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step7/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step7/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step7/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step8/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step8/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step8/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step9/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/step9/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt2/step9/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt2/zebra.conf (renamed from tests/topotests/ospf-sr-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/ospfd.conf (renamed from tests/topotests/ospf-sr-topo1/rt3/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step1/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step1/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step10/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step10/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step10/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step2/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step2/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step3/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step3/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step4/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step4/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step5/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step5/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step5/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step6/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step6/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step6/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step7/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step7/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step7/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step8/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step8/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step8/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step9/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/step9/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt3/step9/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt3/zebra.conf (renamed from tests/topotests/ospf-sr-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/ospfd.conf (renamed from tests/topotests/ospf-sr-topo1/rt4/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step1/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step1/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step10/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step10/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step10/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step2/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step2/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step3/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step3/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step4/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step4/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step5/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step5/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step5/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step6/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step6/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step6/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step7/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step7/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step7/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step8/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step8/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step8/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step9/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/step9/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt4/step9/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt4/zebra.conf (renamed from tests/topotests/ospf-sr-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/ospfd.conf (renamed from tests/topotests/ospf-sr-topo1/rt5/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step1/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step1/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step10/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step10/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step10/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step2/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step2/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step3/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step3/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step4/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step4/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step5/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step5/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step5/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step6/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step6/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step6/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step7/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step7/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step7/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step8/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step8/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step8/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step9/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/step9/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt5/step9/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt5/zebra.conf (renamed from tests/topotests/ospf-sr-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/ospfd.conf (renamed from tests/topotests/ospf-sr-topo1/rt6/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step1/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step1/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step1/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step1/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step10/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step10/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step10/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step10/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step2/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step2/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step2/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step2/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step3/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step3/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step3/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step3/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step4/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step4/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step4/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step4/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step5/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step5/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step5/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step5/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step6/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step6/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step6/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step6/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step7/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step7/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step7/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step7/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step8/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step8/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step8/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step8/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step9/show_ip_route.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step9/show_ip_route.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/step9/show_mpls_table.ref (renamed from tests/topotests/ospf-sr-topo1/rt6/step9/show_mpls_table.ref)0
-rw-r--r--tests/topotests/ospf_sr_topo1/rt6/zebra.conf (renamed from tests/topotests/ospf-sr-topo1/rt6/zebra.conf)0
-rw-r--r--tests/topotests/ospf_sr_topo1/test_ospf_sr_topo1.py (renamed from tests/topotests/ospf-sr-topo1/test_ospf_sr_topo1.py)0
-rwxr-xr-xtests/topotests/ospf_te_topo1/__init__.py (renamed from tests/topotests/ospf-te-topo1/__init__.py)0
-rw-r--r--tests/topotests/ospf_te_topo1/r1/ospfd.conf (renamed from tests/topotests/ospf-te-topo1/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_te_topo1/r1/zebra.conf (renamed from tests/topotests/ospf-te-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ospf_te_topo1/r2/ospfd.conf (renamed from tests/topotests/ospf-te-topo1/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_te_topo1/r2/zebra.conf (renamed from tests/topotests/ospf-te-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ospf_te_topo1/r3/ospfd.conf (renamed from tests/topotests/ospf-te-topo1/r3/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_te_topo1/r3/zebra.conf (renamed from tests/topotests/ospf-te-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ospf_te_topo1/r4/ospfd.conf (renamed from tests/topotests/ospf-te-topo1/r4/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_te_topo1/r4/zebra.conf (renamed from tests/topotests/ospf-te-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/ospf_te_topo1/reference/ted_step1.json (renamed from tests/topotests/ospf-te-topo1/reference/ted_step1.json)0
-rw-r--r--tests/topotests/ospf_te_topo1/reference/ted_step2.json (renamed from tests/topotests/ospf-te-topo1/reference/ted_step2.json)0
-rw-r--r--tests/topotests/ospf_te_topo1/reference/ted_step3.json (renamed from tests/topotests/ospf-te-topo1/reference/ted_step3.json)0
-rw-r--r--tests/topotests/ospf_te_topo1/reference/ted_step4.json (renamed from tests/topotests/ospf-te-topo1/reference/ted_step4.json)0
-rw-r--r--tests/topotests/ospf_te_topo1/reference/ted_step5.json (renamed from tests/topotests/ospf-te-topo1/reference/ted_step5.json)0
-rw-r--r--tests/topotests/ospf_te_topo1/reference/ted_step6.json (renamed from tests/topotests/ospf-te-topo1/reference/ted_step6.json)0
-rw-r--r--tests/topotests/ospf_te_topo1/reference/ted_step7.json (renamed from tests/topotests/ospf-te-topo1/reference/ted_step7.json)0
-rw-r--r--tests/topotests/ospf_te_topo1/test_ospf_te_topo1.py (renamed from tests/topotests/ospf-te-topo1/test_ospf_te_topo1.py)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/__init__.py (renamed from tests/topotests/ospf-tilfa-topo1/__init__.py)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt1/ospfd.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt1/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt1/step1/show_ip_route_initial.ref (renamed from tests/topotests/ospf-tilfa-topo1/rt1/step1/show_ip_route_initial.ref)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt1/step2/show_ip_route_initial.ref (renamed from tests/topotests/ospf-tilfa-topo1/rt1/step2/show_ip_route_initial.ref)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt1/step2/show_ip_route_link_protection.ref (renamed from tests/topotests/ospf-tilfa-topo1/rt1/step2/show_ip_route_link_protection.ref)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt1/step3/show_ip_route_initial.ref (renamed from tests/topotests/ospf-tilfa-topo1/rt1/step3/show_ip_route_initial.ref)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt1/step3/show_ip_route_node_protection.ref (renamed from tests/topotests/ospf-tilfa-topo1/rt1/step3/show_ip_route_node_protection.ref)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt1/zebra.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt1/zebra.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt2/ospfd.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt2/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt2/zebra.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt2/zebra.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt3/ospfd.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt3/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt3/zebra.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt3/zebra.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt4/ospfd.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt4/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt4/zebra.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt4/zebra.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt5/ospfd.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt5/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/rt5/zebra.conf (renamed from tests/topotests/ospf-tilfa-topo1/rt5/zebra.conf)0
-rw-r--r--tests/topotests/ospf_tilfa_topo1/test_ospf_tilfa_topo1.py (renamed from tests/topotests/ospf-tilfa-topo1/test_ospf_tilfa_topo1.py)0
-rwxr-xr-xtests/topotests/ospf_topo1/__init__.py (renamed from tests/topotests/ospf-topo1-vrf/__init__.py)0
-rw-r--r--tests/topotests/ospf_topo1/r1/ospf6d.conf (renamed from tests/topotests/ospf-topo1/r1/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r1/ospf6route.txt (renamed from tests/topotests/ospf-topo1/r1/ospf6route.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r1/ospf6route_down.txt (renamed from tests/topotests/ospf-topo1/r1/ospf6route_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r1/ospf6route_ecmp.txt (renamed from tests/topotests/ospf-topo1/r1/ospf6route_ecmp.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r1/ospfd.conf (renamed from tests/topotests/ospf-topo1/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r1/ospfroute.txt (renamed from tests/topotests/ospf-topo1/r1/ospfroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r1/ospfroute_down.txt (renamed from tests/topotests/ospf-topo1/r1/ospfroute_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r1/zebra.conf (renamed from tests/topotests/ospf-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r2/ospf6d.conf (renamed from tests/topotests/ospf-topo1/r2/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r2/ospf6route.txt (renamed from tests/topotests/ospf-topo1/r2/ospf6route.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r2/ospf6route_down.txt (renamed from tests/topotests/ospf-topo1/r2/ospf6route_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r2/ospf6route_ecmp.txt (renamed from tests/topotests/ospf-topo1/r2/ospf6route_ecmp.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r2/ospfd.conf (renamed from tests/topotests/ospf-topo1/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r2/ospfroute.txt (renamed from tests/topotests/ospf-topo1/r2/ospfroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r2/ospfroute_down.txt (renamed from tests/topotests/ospf-topo1/r2/ospfroute_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r2/zebra.conf (renamed from tests/topotests/ospf-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r3/ospf6d.conf (renamed from tests/topotests/ospf-topo1/r3/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r3/ospf6route.txt (renamed from tests/topotests/ospf-topo1/r3/ospf6route.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r3/ospf6route_down.txt (renamed from tests/topotests/ospf-topo1/r3/ospf6route_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r3/ospf6route_ecmp.txt (renamed from tests/topotests/ospf-topo1/r3/ospf6route_ecmp.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r3/ospfd.conf (renamed from tests/topotests/ospf-topo1/r3/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r3/ospfroute.txt (renamed from tests/topotests/ospf-topo1/r3/ospfroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r3/ospfroute_down.txt (renamed from tests/topotests/ospf-topo1/r3/ospfroute_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r3/zebra.conf (renamed from tests/topotests/ospf-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r4/ospf6d.conf (renamed from tests/topotests/ospf-topo1/r4/ospf6d.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r4/ospf6route.txt (renamed from tests/topotests/ospf-topo1/r4/ospf6route.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r4/ospf6route_down.txt (renamed from tests/topotests/ospf-topo1/r4/ospf6route_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r4/ospf6route_ecmp.txt (renamed from tests/topotests/ospf-topo1/r4/ospf6route_ecmp.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r4/ospfd.conf (renamed from tests/topotests/ospf-topo1/r4/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo1/r4/ospfroute.txt (renamed from tests/topotests/ospf-topo1/r4/ospfroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r4/ospfroute_down.txt (renamed from tests/topotests/ospf-topo1/r4/ospfroute_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1/r4/zebra.conf (renamed from tests/topotests/ospf-topo1/r4/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo1/test_ospf_topo1.dot (renamed from tests/topotests/ospf-topo1/test_ospf_topo1.dot)0
-rw-r--r--tests/topotests/ospf_topo1/test_ospf_topo1.jpg (renamed from tests/topotests/ospf-topo1/test_ospf_topo1.jpg)bin123663 -> 123663 bytes
-rw-r--r--tests/topotests/ospf_topo1/test_ospf_topo1.py (renamed from tests/topotests/ospf-topo1/test_ospf_topo1.py)0
-rwxr-xr-xtests/topotests/ospf_topo1_vrf/__init__.py (renamed from tests/topotests/ospf-topo1/__init__.py)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r1/ospfd.conf (renamed from tests/topotests/ospf-topo1-vrf/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r1/ospfroute.txt (renamed from tests/topotests/ospf-topo1-vrf/r1/ospfroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r1/ospfroute_down.txt (renamed from tests/topotests/ospf-topo1-vrf/r1/ospfroute_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r1/zebra.conf (renamed from tests/topotests/ospf-topo1-vrf/r1/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r1/zebraroute.txt (renamed from tests/topotests/ospf-topo1-vrf/r1/zebraroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r1/zebraroutedown.txt (renamed from tests/topotests/ospf-topo1-vrf/r1/zebraroutedown.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r2/ospfd.conf (renamed from tests/topotests/ospf-topo1-vrf/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r2/ospfroute.txt (renamed from tests/topotests/ospf-topo1-vrf/r2/ospfroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r2/ospfroute_down.txt (renamed from tests/topotests/ospf-topo1-vrf/r2/ospfroute_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r2/zebra.conf (renamed from tests/topotests/ospf-topo1-vrf/r2/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r2/zebraroute.txt (renamed from tests/topotests/ospf-topo1-vrf/r2/zebraroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r2/zebraroutedown.txt (renamed from tests/topotests/ospf-topo1-vrf/r2/zebraroutedown.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r3/ospfd.conf (renamed from tests/topotests/ospf-topo1-vrf/r3/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r3/ospfroute.txt (renamed from tests/topotests/ospf-topo1-vrf/r3/ospfroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r3/ospfroute_down.txt (renamed from tests/topotests/ospf-topo1-vrf/r3/ospfroute_down.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r3/zebra.conf (renamed from tests/topotests/ospf-topo1-vrf/r3/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r3/zebraroute.txt (renamed from tests/topotests/ospf-topo1-vrf/r3/zebraroute.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/r3/zebraroutedown.txt (renamed from tests/topotests/ospf-topo1-vrf/r3/zebraroutedown.txt)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/test_ospf_topo1-vrf.dot (renamed from tests/topotests/ospf-topo1-vrf/test_ospf_topo1-vrf.dot)0
-rw-r--r--tests/topotests/ospf_topo1_vrf/test_ospf_topo1_vrf.jpg (renamed from tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.jpg)bin65859 -> 65859 bytes
-rw-r--r--tests/topotests/ospf_topo1_vrf/test_ospf_topo1_vrf.py (renamed from tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.py)0
-rw-r--r--tests/topotests/ospf_topo2/r1/ospf-route.json (renamed from tests/topotests/ospf-topo2/r1/ospf-route.json)0
-rw-r--r--tests/topotests/ospf_topo2/r1/ospfd.conf (renamed from tests/topotests/ospf-topo2/r1/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo2/r1/v4_route.json (renamed from tests/topotests/ospf-topo2/r1/v4_route.json)0
-rw-r--r--tests/topotests/ospf_topo2/r1/zebra.conf (renamed from tests/topotests/ospf-topo2/r1/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo2/r2/ospf-route.json (renamed from tests/topotests/ospf-topo2/r2/ospf-route.json)0
-rw-r--r--tests/topotests/ospf_topo2/r2/ospfd.conf (renamed from tests/topotests/ospf-topo2/r2/ospfd.conf)0
-rw-r--r--tests/topotests/ospf_topo2/r2/v4_route.json (renamed from tests/topotests/ospf-topo2/r2/v4_route.json)0
-rw-r--r--tests/topotests/ospf_topo2/r2/zebra.conf (renamed from tests/topotests/ospf-topo2/r2/zebra.conf)0
-rw-r--r--tests/topotests/ospf_topo2/test_ospf_topo2.py (renamed from tests/topotests/ospf-topo2/test_ospf_topo2.py)0
-rw-r--r--tests/topotests/pbr_topo1/__init__.py (renamed from tests/topotests/pbr-topo1/__init__.py)0
-rw-r--r--tests/topotests/pbr_topo1/r1/linux-rules.json (renamed from tests/topotests/pbr-topo1/r1/linux-rules.json)0
-rw-r--r--tests/topotests/pbr_topo1/r1/pbr-interface.json (renamed from tests/topotests/pbr-topo1/r1/pbr-interface.json)0
-rw-r--r--tests/topotests/pbr_topo1/r1/pbr-map.json (renamed from tests/topotests/pbr-topo1/r1/pbr-map.json)0
-rw-r--r--tests/topotests/pbr_topo1/r1/pbr-nexthop-groups.json (renamed from tests/topotests/pbr-topo1/r1/pbr-nexthop-groups.json)0
-rw-r--r--tests/topotests/pbr_topo1/r1/pbrd.conf (renamed from tests/topotests/pbr-topo1/r1/pbrd.conf)0
-rw-r--r--tests/topotests/pbr_topo1/r1/zebra.conf (renamed from tests/topotests/pbr-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/pbr_topo1/test_pbr_topo1.py (renamed from tests/topotests/pbr-topo1/test_pbr_topo1.py)0
-rwxr-xr-xtests/topotests/pim_basic/mcast-rx.py (renamed from tests/topotests/pim-basic/mcast-rx.py)0
-rwxr-xr-xtests/topotests/pim_basic/mcast-tx.py (renamed from tests/topotests/pim-basic/mcast-tx.py)0
-rw-r--r--tests/topotests/pim_basic/r1/bgpd.conf (renamed from tests/topotests/pim-basic/r1/bgpd.conf)0
-rw-r--r--tests/topotests/pim_basic/r1/pimd.conf (renamed from tests/topotests/pim-basic/r1/pimd.conf)0
-rw-r--r--tests/topotests/pim_basic/r1/rp-info.json (renamed from tests/topotests/pim-basic/r1/rp-info.json)0
-rw-r--r--tests/topotests/pim_basic/r1/zebra.conf (renamed from tests/topotests/pim-basic/r1/zebra.conf)0
-rw-r--r--tests/topotests/pim_basic/r2/pimd.conf (renamed from tests/topotests/pim-basic/r2/pimd.conf)0
-rw-r--r--tests/topotests/pim_basic/r2/zebra.conf (renamed from tests/topotests/pim-basic/r2/zebra.conf)0
-rw-r--r--tests/topotests/pim_basic/r3/pimd.conf (renamed from tests/topotests/pim-basic/r3/pimd.conf)0
-rw-r--r--tests/topotests/pim_basic/r3/zebra.conf (renamed from tests/topotests/pim-basic/r3/zebra.conf)0
-rw-r--r--tests/topotests/pim_basic/rp/bgpd.conf (renamed from tests/topotests/pim-basic/rp/bgpd.conf)0
-rw-r--r--tests/topotests/pim_basic/rp/pimd.conf (renamed from tests/topotests/pim-basic/rp/pimd.conf)0
-rw-r--r--tests/topotests/pim_basic/rp/upstream.json (renamed from tests/topotests/pim-basic/rp/upstream.json)0
-rw-r--r--tests/topotests/pim_basic/rp/zebra.conf (renamed from tests/topotests/pim-basic/rp/zebra.conf)0
-rw-r--r--tests/topotests/pim_basic/test_pim.py (renamed from tests/topotests/pim-basic/test_pim.py)0
-rw-r--r--tests/topotests/pim_basic_topo2/__init__.py (renamed from tests/topotests/pim-basic-topo2/__init__.py)0
-rw-r--r--tests/topotests/pim_basic_topo2/r1/bfdd.conf (renamed from tests/topotests/pim-basic-topo2/r1/bfdd.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r1/pimd.conf (renamed from tests/topotests/pim-basic-topo2/r1/pimd.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r1/zebra.conf (renamed from tests/topotests/pim-basic-topo2/r1/zebra.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r2/bfdd.conf (renamed from tests/topotests/pim-basic-topo2/r2/bfdd.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r2/pimd.conf (renamed from tests/topotests/pim-basic-topo2/r2/pimd.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r2/zebra.conf (renamed from tests/topotests/pim-basic-topo2/r2/zebra.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r3/bfdd.conf (renamed from tests/topotests/pim-basic-topo2/r3/bfdd.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r3/pimd.conf (renamed from tests/topotests/pim-basic-topo2/r3/pimd.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r3/zebra.conf (renamed from tests/topotests/pim-basic-topo2/r3/zebra.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r4/bfdd.conf (renamed from tests/topotests/pim-basic-topo2/r4/bfdd.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r4/pimd.conf (renamed from tests/topotests/pim-basic-topo2/r4/pimd.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/r4/zebra.conf (renamed from tests/topotests/pim-basic-topo2/r4/zebra.conf)0
-rw-r--r--tests/topotests/pim_basic_topo2/test_pim_basic_topo2.dot (renamed from tests/topotests/pim-basic-topo2/test_pim_basic_topo2.dot)0
-rw-r--r--tests/topotests/pim_basic_topo2/test_pim_basic_topo2.png (renamed from tests/topotests/pim-basic-topo2/test_pim_basic_topo2.png)bin33496 -> 33496 bytes
-rw-r--r--tests/topotests/pim_basic_topo2/test_pim_basic_topo2.py (renamed from tests/topotests/pim-basic-topo2/test_pim_basic_topo2.py)0
-rw-r--r--tests/topotests/pytest.ini2
-rw-r--r--tests/topotests/rip_topo1/r1/rip_status.ref (renamed from tests/topotests/rip-topo1/r1/rip_status.ref)0
-rw-r--r--tests/topotests/rip_topo1/r1/ripd.conf (renamed from tests/topotests/rip-topo1/r1/ripd.conf)0
-rw-r--r--tests/topotests/rip_topo1/r1/show_ip_rip.ref (renamed from tests/topotests/rip-topo1/r1/show_ip_rip.ref)0
-rw-r--r--tests/topotests/rip_topo1/r1/show_ip_route.ref (renamed from tests/topotests/rip-topo1/r1/show_ip_route.ref)0
-rw-r--r--tests/topotests/rip_topo1/r1/zebra.conf (renamed from tests/topotests/rip-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/rip_topo1/r2/rip_status.ref (renamed from tests/topotests/rip-topo1/r2/rip_status.ref)0
-rw-r--r--tests/topotests/rip_topo1/r2/ripd.conf (renamed from tests/topotests/rip-topo1/r2/ripd.conf)0
-rw-r--r--tests/topotests/rip_topo1/r2/show_ip_rip.ref (renamed from tests/topotests/rip-topo1/r2/show_ip_rip.ref)0
-rw-r--r--tests/topotests/rip_topo1/r2/show_ip_route.ref (renamed from tests/topotests/rip-topo1/r2/show_ip_route.ref)0
-rw-r--r--tests/topotests/rip_topo1/r2/zebra.conf (renamed from tests/topotests/rip-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/rip_topo1/r3/rip_status.ref (renamed from tests/topotests/rip-topo1/r3/rip_status.ref)0
-rw-r--r--tests/topotests/rip_topo1/r3/ripd.conf (renamed from tests/topotests/rip-topo1/r3/ripd.conf)0
-rw-r--r--tests/topotests/rip_topo1/r3/show_ip_rip.ref (renamed from tests/topotests/rip-topo1/r3/show_ip_rip.ref)0
-rw-r--r--tests/topotests/rip_topo1/r3/show_ip_route.ref (renamed from tests/topotests/rip-topo1/r3/show_ip_route.ref)0
-rw-r--r--tests/topotests/rip_topo1/r3/zebra.conf (renamed from tests/topotests/rip-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/rip_topo1/test_rip_topo1.dot (renamed from tests/topotests/rip-topo1/test_rip_topo1.dot)0
-rw-r--r--tests/topotests/rip_topo1/test_rip_topo1.pdf (renamed from tests/topotests/rip-topo1/test_rip_topo1.pdf)bin18433 -> 18433 bytes
-rw-r--r--tests/topotests/rip_topo1/test_rip_topo1.py (renamed from tests/topotests/rip-topo1/test_rip_topo1.py)0
-rw-r--r--tests/topotests/ripng_topo1/r1/ripng_status.ref (renamed from tests/topotests/ripng-topo1/r1/ripng_status.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r1/ripngd.conf (renamed from tests/topotests/ripng-topo1/r1/ripngd.conf)0
-rw-r--r--tests/topotests/ripng_topo1/r1/show_ipv6_ripng.ref (renamed from tests/topotests/ripng-topo1/r1/show_ipv6_ripng.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r1/show_ipv6_route.ref (renamed from tests/topotests/ripng-topo1/r1/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r1/zebra.conf (renamed from tests/topotests/ripng-topo1/r1/zebra.conf)0
-rw-r--r--tests/topotests/ripng_topo1/r2/ripng_status.ref (renamed from tests/topotests/ripng-topo1/r2/ripng_status.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r2/ripngd.conf (renamed from tests/topotests/ripng-topo1/r2/ripngd.conf)0
-rw-r--r--tests/topotests/ripng_topo1/r2/show_ipv6_ripng.ref (renamed from tests/topotests/ripng-topo1/r2/show_ipv6_ripng.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r2/show_ipv6_route.ref (renamed from tests/topotests/ripng-topo1/r2/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r2/zebra.conf (renamed from tests/topotests/ripng-topo1/r2/zebra.conf)0
-rw-r--r--tests/topotests/ripng_topo1/r3/ripng_status.ref (renamed from tests/topotests/ripng-topo1/r3/ripng_status.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r3/ripngd.conf (renamed from tests/topotests/ripng-topo1/r3/ripngd.conf)0
-rw-r--r--tests/topotests/ripng_topo1/r3/show_ipv6_ripng.ref (renamed from tests/topotests/ripng-topo1/r3/show_ipv6_ripng.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r3/show_ipv6_route.ref (renamed from tests/topotests/ripng-topo1/r3/show_ipv6_route.ref)0
-rw-r--r--tests/topotests/ripng_topo1/r3/zebra.conf (renamed from tests/topotests/ripng-topo1/r3/zebra.conf)0
-rw-r--r--tests/topotests/ripng_topo1/test_ripng_topo1.dot (renamed from tests/topotests/ripng-topo1/test_ripng_topo1.dot)0
-rw-r--r--tests/topotests/ripng_topo1/test_ripng_topo1.pdf (renamed from tests/topotests/ripng-topo1/test_ripng_topo1.pdf)bin18609 -> 18609 bytes
-rw-r--r--tests/topotests/ripng_topo1/test_ripng_topo1.py (renamed from tests/topotests/ripng-topo1/test_ripng_topo1.py)0
-rw-r--r--tests/topotests/route_scale/r1/installed.routes.json (renamed from tests/topotests/route-scale/r1/installed.routes.json)0
-rw-r--r--tests/topotests/route_scale/r1/no.routes.json (renamed from tests/topotests/route-scale/r1/no.routes.json)0
-rw-r--r--tests/topotests/route_scale/r1/sharpd.conf (renamed from tests/topotests/route-scale/r1/sharpd.conf)0
-rw-r--r--tests/topotests/route_scale/r1/zebra.conf (renamed from tests/topotests/route-scale/r1/zebra.conf)0
-rw-r--r--tests/topotests/route_scale/test_route_scale.py (renamed from tests/topotests/route-scale/test_route_scale.py)0
-rw-r--r--tests/topotests/simple_snmp_test/r1/bgpd.conf (renamed from tests/topotests/simple-snmp-test/r1/bgpd.conf)0
-rw-r--r--tests/topotests/simple_snmp_test/r1/isisd.conf (renamed from tests/topotests/simple-snmp-test/r1/isisd.conf)0
-rw-r--r--tests/topotests/simple_snmp_test/r1/snmpd.conf (renamed from tests/topotests/simple-snmp-test/r1/snmpd.conf)0
-rw-r--r--tests/topotests/simple_snmp_test/r1/zebra.conf (renamed from tests/topotests/simple-snmp-test/r1/zebra.conf)0
-rwxr-xr-xtests/topotests/simple_snmp_test/test_simple_snmp.py (renamed from tests/topotests/simple-snmp-test/test_simple_snmp.py)0
-rw-r--r--tests/topotests/static_routing_with_ebgp/test_static_routes_topo1_ebgp.py404
-rw-r--r--tests/topotests/static_routing_with_ebgp/test_static_routes_topo2_ebgp.py196
-rw-r--r--tests/topotests/static_routing_with_ebgp/test_static_routes_topo3_ebgp.py170
-rw-r--r--tests/topotests/static_routing_with_ebgp/test_static_routes_topo4_ebgp.py39
-rw-r--r--tests/topotests/static_routing_with_ibgp/test_static_routes_topo1_ibgp.py238
-rw-r--r--tests/topotests/static_routing_with_ibgp/test_static_routes_topo2_ibgp.py251
-rw-r--r--tests/topotests/static_routing_with_ibgp/test_static_routes_topo3_ibgp.py120
-rw-r--r--tests/topotests/static_routing_with_ibgp/test_static_routes_topo4_ibgp.py30
-rw-r--r--tools/gen_northbound_callbacks.c29
-rw-r--r--tools/gen_yang_deviations.c7
-rw-r--r--tools/valgrind.supp (renamed from bgpd/valgrind.supp)14
-rw-r--r--vrrpd/vrrp_vty.c2
-rwxr-xr-xvtysh/extract.pl.in2
-rw-r--r--vtysh/vtysh.c33
-rw-r--r--watchfrr/subdir.am2
-rw-r--r--yang/embedmodel.py2
-rw-r--r--yang/frr-bgp-bmp.yang2
-rw-r--r--yang/frr-bgp-common-multiprotocol.yang30
-rw-r--r--yang/frr-bgp-common-structure.yang3
-rw-r--r--yang/frr-bgp-common.yang7
-rw-r--r--yang/frr-bgp-neighbor.yang3
-rw-r--r--yang/frr-bgp-peer-group.yang3
-rw-r--r--yang/frr-bgp-route-map.yang88
-rw-r--r--yang/frr-bgp.yang4
-rw-r--r--yang/frr-isisd.yang18
-rw-r--r--yang/frr-ospfd.yang6
-rw-r--r--yang/frr-pathd.yang109
-rw-r--r--yang/frr-pim.yang4
-rw-r--r--yang/frr-ripd.yang12
-rw-r--r--yang/frr-zebra-route-map.yang26
-rw-r--r--yang/frr-zebra.yang2
-rw-r--r--zebra/connected.c28
-rw-r--r--zebra/if_netlink.c39
-rw-r--r--zebra/kernel_netlink.c2
-rw-r--r--zebra/redistribute.c17
-rw-r--r--zebra/rt_netlink.c7
-rw-r--r--zebra/zapi_msg.c12
-rw-r--r--zebra/zebra_evpn.c8
-rw-r--r--zebra/zebra_evpn_mac.c2
-rw-r--r--zebra/zebra_evpn_mh.c4
-rw-r--r--zebra/zebra_evpn_neigh.c2
-rw-r--r--zebra/zebra_mpls.c13
-rw-r--r--zebra/zebra_pbr.c2
-rw-r--r--zebra/zebra_rib.c69
-rw-r--r--zebra/zebra_vrf.c9
-rw-r--r--zebra/zebra_vrf.h2
-rw-r--r--zebra/zebra_vxlan.c17
2288 files changed, 7248 insertions, 3770 deletions
diff --git a/.clang-format b/.clang-format
index 47d681e0e2..e1897bfa99 100644
--- a/.clang-format
+++ b/.clang-format
@@ -50,8 +50,11 @@ ForEachMacros:
- FOR_ALL_INTERFACES_ADDRESSES
- JSON_FOREACH
# libyang
+ - LY_FOR_KEYS
+ - LY_LIST_FOR
- LY_TREE_FOR
- LY_TREE_DFS_BEGIN
+ - LYD_TREE_DFS_BEGIN
# zebra
- RE_DEST_FOREACH_ROUTE
- RE_DEST_FOREACH_ROUTE_SAFE
diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs
index 837ec75b8d..1ecdfd2fb3 100644
--- a/.git-blame-ignore-revs
+++ b/.git-blame-ignore-revs
@@ -19,3 +19,4 @@ c14777c6bfd0a446c85243d3a9835054a259c276
96244aca23adec551c29b78f26605f8af8eea53e
8451921b70044a2c1075e7ba391f095fabee2550
bf8d3d6aca3f20255a621ed1c148fd05b3a8ae5c
+96941f80927ce31a41f7d1905717f099187be723
diff --git a/.travis.yml b/.travis.yml
index d8e450a646..010292bb6a 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,14 +5,14 @@ services:
- docker
jobs:
include:
- - script:
- - docker/centos-7/build.sh
- - docker images
- name: centos7
- - script:
- - docker/centos-8/build.sh
- - docker images
- name: centos8
+ # - script:
+ # - docker/centos-7/build.sh
+ # - docker images
+ # name: centos7
+ # - script:
+ # - docker/centos-8/build.sh
+ # - docker images
+ # name: centos8
- script:
- sudo apt install -y linux-modules-extra-$(uname -r)
- docker build -t frr-ubuntu18:latest -f docker/ubuntu18-ci/Dockerfile .
@@ -22,7 +22,7 @@ jobs:
- docker ps
- docker exec frr-ubuntu18 bash -c 'cd ~/frr ; make check'
- docker exec frr-ubuntu18 bash -c 'ps agxu ; lsmod | grep mpls || true'
- - docker exec frr-ubuntu18 bash -c 'cd ~/frr/tests/topotests/ospf-topo1 ; sudo pytest test_ospf_topo1.py'
+ - docker exec frr-ubuntu18 bash -c 'cd ~/frr/tests/topotests/ospf_topo1 ; sudo pytest test_ospf_topo1.py'
- docker exec frr-ubuntu18 bash -c 'cd ~/frr/tests/topotests/bgp_l3vpn_to_bgp_vrf ; sudo pytest test_bgp_l3vpn_to_bgp_vrf.py'
name: ubuntu18+minimalCI
- script:
@@ -34,7 +34,7 @@ jobs:
- docker ps
- docker exec frr-ubuntu20 bash -c 'cd ~/frr ; make check'
- docker exec frr-ubuntu20 bash -c 'ps agxu ; lsmod | grep mpls || true'
- - docker exec frr-ubuntu20 bash -c 'cd ~/frr/tests/topotests/ospf-topo1 ; sudo pytest test_ospf_topo1.py'
+ - docker exec frr-ubuntu20 bash -c 'cd ~/frr/tests/topotests/ospf_topo1 ; sudo pytest test_ospf_topo1.py'
- docker exec frr-ubuntu20 bash -c 'cd ~/frr/tests/topotests/bgp_l3vpn_to_bgp_vrf ; sudo pytest test_bgp_l3vpn_to_bgp_vrf.py'
name: ubuntu20+minimalCI
diff --git a/bfdd/bfd.c b/bfdd/bfd.c
index 18f331e201..c66fccb853 100644
--- a/bfdd/bfd.c
+++ b/bfdd/bfd.c
@@ -2195,13 +2195,13 @@ void bfd_session_update_vrf_name(struct bfd_session *bs, struct vrf *vrf)
snprintf(xpath + slen, sizeof(xpath) - slen, "[vrf='%s']/vrf",
bs->key.vrfname);
- bfd_dnode = yang_dnode_get(running_config->dnode, xpath,
- bs->key.vrfname);
+ bfd_dnode = yang_dnode_getf(running_config->dnode, xpath,
+ bs->key.vrfname);
if (bfd_dnode) {
- yang_dnode_get_path(bfd_dnode->parent, oldpath,
+ yang_dnode_get_path(lyd_parent(bfd_dnode), oldpath,
sizeof(oldpath));
yang_dnode_change_leaf(bfd_dnode, vrf->name);
- yang_dnode_get_path(bfd_dnode->parent, newpath,
+ yang_dnode_get_path(lyd_parent(bfd_dnode), newpath,
sizeof(newpath));
nb_running_move_tree(oldpath, newpath);
running_config->version++;
diff --git a/bgpd/bgp_evpn.c b/bgpd/bgp_evpn.c
index fae3f1000f..d8e57419ee 100644
--- a/bgpd/bgp_evpn.c
+++ b/bgpd/bgp_evpn.c
@@ -3562,8 +3562,12 @@ static int update_advertise_vni_routes(struct bgp *bgp, struct bgpevpn *vpn)
const struct prefix_evpn *evp =
(const struct prefix_evpn *)bgp_dest_get_prefix(dest);
- /* Identify MAC-IP local routes. */
- if (evp->prefix.route_type != BGP_EVPN_MAC_IP_ROUTE)
+ /*
+ * We have already processed type-3 routes.
+ * Process only type-1 and type-2 routes here.
+ */
+ if (evp->prefix.route_type != BGP_EVPN_MAC_IP_ROUTE
+ && evp->prefix.route_type != BGP_EVPN_AD_ROUTE)
continue;
for (pi = bgp_dest_get_bgp_path_info(dest); pi; pi = pi->next)
@@ -3581,10 +3585,23 @@ static int update_advertise_vni_routes(struct bgp *bgp, struct bgpevpn *vpn)
global_dest = bgp_global_evpn_node_get(bgp->rib[afi][safi], afi, safi,
evp, &vpn->prd);
assert(global_dest);
- update_evpn_route_entry(bgp, vpn, afi, safi, global_dest, attr, 1,
- &global_pi, 0,
- mac_mobility_seqnum(attr),
+
+ if (evp->prefix.route_type == BGP_EVPN_MAC_IP_ROUTE) {
+ /* Type-2 route */
+ update_evpn_route_entry(
+ bgp, vpn, afi, safi, global_dest, attr, 1,
+ &global_pi, 0, mac_mobility_seqnum(attr),
false /* setup_sync */, NULL /* old_is_sync */);
+ } else {
+ /* Type-1 route */
+ struct bgp_evpn_es *es;
+ int route_changed = 0;
+
+ es = bgp_evpn_es_find(&evp->prefix.ead_addr.esi);
+ bgp_evpn_mh_route_update(bgp, es, vpn, afi, safi,
+ global_dest, attr, 1,
+ &global_pi, &route_changed);
+ }
/* Schedule for processing and unlock node. */
bgp_process(bgp, global_dest, afi, safi);
@@ -3630,6 +3647,8 @@ static int delete_withdraw_vni_routes(struct bgp *bgp, struct bgpevpn *vpn)
bgp_dest_unlock_node(global_dest);
}
+
+ delete_global_ead_evi_routes(bgp, vpn);
return 0;
}
diff --git a/bgpd/bgp_evpn_mh.c b/bgpd/bgp_evpn_mh.c
index 6467ff8a28..59bced6f93 100644
--- a/bgpd/bgp_evpn_mh.c
+++ b/bgpd/bgp_evpn_mh.c
@@ -347,11 +347,10 @@ static void bgp_evpn_es_route_del_all(struct bgp *bgp, struct bgp_evpn_es *es)
* Note: vpn is applicable only to EAD-EVI routes (NULL for EAD-ES and
* ESR).
*/
-static int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,
- struct bgpevpn *vpn, afi_t afi, safi_t safi,
- struct bgp_dest *dest, struct attr *attr,
- int add, struct bgp_path_info **ri,
- int *route_changed)
+int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,
+ struct bgpevpn *vpn, afi_t afi, safi_t safi,
+ struct bgp_dest *dest, struct attr *attr, int add,
+ struct bgp_path_info **ri, int *route_changed)
{
struct bgp_path_info *tmp_pi = NULL;
struct bgp_path_info *local_pi = NULL; /* local route entry if any */
@@ -384,7 +383,8 @@ static int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,
flog_err(
EC_BGP_ES_INVALID,
"%u ERROR: local es route for ESI: %s Vtep %pI4 also learnt from remote",
- bgp->vrf_id, es->esi_str, &es->originator_ip);
+ bgp->vrf_id, es ? es->esi_str : "Null",
+ &es->originator_ip);
return -1;
}
@@ -441,7 +441,7 @@ static int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,
if (BGP_DEBUG(evpn_mh, EVPN_MH_RT))
zlog_debug(
"local ES %s vni %u route-type %s nexthop %pI4 updated",
- es->esi_str, vpn ? vpn->vni : 0,
+ es ? es->esi_str : "Null", vpn ? vpn->vni : 0,
evp->prefix.route_type == BGP_EVPN_ES_ROUTE
? "esr"
: (vpn ? "ead-evi" : "ead-es"),
@@ -524,6 +524,50 @@ static int bgp_evpn_mh_route_delete(struct bgp *bgp, struct bgp_evpn_es *es,
return 0;
}
+/*
+ * This function is called when the VNI RD changes.
+ * Delete all EAD/EVI local routes for this VNI from the global routing table.
+ * These routes are scheduled for withdraw from peers.
+ */
+int delete_global_ead_evi_routes(struct bgp *bgp, struct bgpevpn *vpn)
+{
+ afi_t afi;
+ safi_t safi;
+ struct bgp_dest *rdrn, *rn;
+ struct bgp_table *table;
+ struct bgp_path_info *pi;
+
+ afi = AFI_L2VPN;
+ safi = SAFI_EVPN;
+
+ /* Find the RD node for the VNI in the global table */
+ rdrn = bgp_node_lookup(bgp->rib[afi][safi], (struct prefix *)&vpn->prd);
+ if (rdrn && bgp_dest_has_bgp_path_info_data(rdrn)) {
+ table = bgp_dest_get_bgp_table_info(rdrn);
+
+ /*
+ * Iterate over all the routes in this table and delete EAD/EVI
+ * routes
+ */
+ for (rn = bgp_table_top(table); rn; rn = bgp_route_next(rn)) {
+ struct prefix_evpn *evp = (struct prefix_evpn *)&rn->p;
+
+ if (evp->prefix.route_type != BGP_EVPN_AD_ROUTE)
+ continue;
+
+ delete_evpn_route_entry(bgp, afi, safi, rn, &pi);
+ if (pi)
+ bgp_process(bgp, rn, afi, safi);
+ }
+ }
+
+ /* Unlock RD node. */
+ if (rdrn)
+ bgp_dest_unlock_node(rdrn);
+
+ return 0;
+}
+
/*****************************************************************************
* Ethernet Segment (Type-4) Routes
* ESRs are used for DF election. Currently service-carving described in
diff --git a/bgpd/bgp_evpn_mh.h b/bgpd/bgp_evpn_mh.h
index c96de86871..22a4215664 100644
--- a/bgpd/bgp_evpn_mh.h
+++ b/bgpd/bgp_evpn_mh.h
@@ -377,6 +377,12 @@ extern int bgp_evpn_es_route_install_uninstall(struct bgp *bgp,
struct prefix_evpn *evp, struct bgp_path_info *pi,
int install);
extern void update_type1_routes_for_evi(struct bgp *bgp, struct bgpevpn *vpn);
+extern int delete_global_ead_evi_routes(struct bgp *bgp, struct bgpevpn *vpn);
+extern int bgp_evpn_mh_route_update(struct bgp *bgp, struct bgp_evpn_es *es,
+ struct bgpevpn *vpn, afi_t afi, safi_t safi,
+ struct bgp_dest *dest, struct attr *attr,
+ int add, struct bgp_path_info **ri,
+ int *route_changed);
int bgp_evpn_type1_route_process(struct peer *peer, afi_t afi, safi_t safi,
struct attr *attr, uint8_t *pfx, int psize,
uint32_t addpath_id);
diff --git a/bgpd/bgp_main.c b/bgpd/bgp_main.c
index 995917b6bd..d545becded 100644
--- a/bgpd/bgp_main.c
+++ b/bgpd/bgp_main.c
@@ -197,8 +197,6 @@ static __attribute__((__noreturn__)) void bgp_exit(int status)
frr_early_fini();
- bfd_gbl_exit();
-
bgp_close();
bgp_default = bgp_get_default();
@@ -316,9 +314,6 @@ static int bgp_vrf_enable(struct vrf *vrf)
bgp_vrf_link(bgp, vrf);
bgp_handle_socket(bgp, vrf, old_vrf_id, true);
- /* Update any redistribution if vrf_id changed */
- if (old_vrf_id != bgp->vrf_id)
- bgp_redistribute_redo(bgp);
bgp_instance_up(bgp);
vpn_leak_zebra_vrf_label_update(bgp, AFI_IP);
vpn_leak_zebra_vrf_label_update(bgp, AFI_IP6);
@@ -338,7 +333,6 @@ static int bgp_vrf_enable(struct vrf *vrf)
static int bgp_vrf_disable(struct vrf *vrf)
{
struct bgp *bgp;
- vrf_id_t old_vrf_id;
if (vrf->vrf_id == VRF_DEFAULT)
return 0;
@@ -360,15 +354,11 @@ static int bgp_vrf_disable(struct vrf *vrf)
vpn_leak_prechange(BGP_VPN_POLICY_DIR_FROMVPN, AFI_IP6,
bgp_get_default(), bgp);
- old_vrf_id = bgp->vrf_id;
bgp_handle_socket(bgp, vrf, VRF_UNKNOWN, false);
/* We have instance configured, unlink from VRF and make it
* "down". */
- bgp_vrf_unlink(bgp, vrf);
- /* Delete any redistribute vrf bitmaps if the vrf_id changed */
- if (old_vrf_id != bgp->vrf_id)
- bgp_unset_redist_vrf_bitmaps(bgp, old_vrf_id);
bgp_instance_down(bgp);
+ bgp_vrf_unlink(bgp, vrf);
}
/* Note: This is a callback, the VRF will be deleted by the caller. */
diff --git a/bgpd/bgp_nb.c b/bgpd/bgp_nb.c
index 21810b634d..71824cd6d3 100644
--- a/bgpd/bgp_nb.c
+++ b/bgpd/bgp_nb.c
@@ -632,7 +632,6 @@ const struct frr_yang_module_info frr_bgp_info = {
.xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/local-as/no-prepend",
.cbs = {
.modify = bgp_neighbors_neighbor_local_as_no_prepend_modify,
- .destroy = bgp_neighbors_neighbor_local_as_no_prepend_destroy,
}
},
{
@@ -923,7 +922,6 @@ const struct frr_yang_module_info frr_bgp_info = {
.xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/local-as/no-prepend",
.cbs = {
.modify = bgp_neighbors_unnumbered_neighbor_local_as_no_prepend_modify,
- .destroy = bgp_neighbors_unnumbered_neighbor_local_as_no_prepend_destroy,
}
},
{
@@ -1215,7 +1213,6 @@ const struct frr_yang_module_info frr_bgp_info = {
.xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/local-as/no-prepend",
.cbs = {
.modify = bgp_peer_groups_peer_group_local_as_no_prepend_modify,
- .destroy = bgp_peer_groups_peer_group_local_as_no_prepend_destroy,
}
},
{
diff --git a/bgpd/bgp_nb.h b/bgpd/bgp_nb.h
index 57f379b6cc..f8bb31aad6 100644
--- a/bgpd/bgp_nb.h
+++ b/bgpd/bgp_nb.h
@@ -233,8 +233,6 @@ int bgp_neighbors_neighbor_local_as_local_as_destroy(
struct nb_cb_destroy_args *args);
int bgp_neighbors_neighbor_local_as_no_prepend_modify(
struct nb_cb_modify_args *args);
-int bgp_neighbors_neighbor_local_as_no_prepend_destroy(
- struct nb_cb_destroy_args *args);
int bgp_neighbors_neighbor_local_as_no_replace_as_modify(
struct nb_cb_modify_args *args);
int bgp_neighbors_neighbor_bfd_options_enable_modify(
@@ -367,8 +365,6 @@ int bgp_neighbors_unnumbered_neighbor_local_as_local_as_destroy(
struct nb_cb_destroy_args *args);
int bgp_neighbors_unnumbered_neighbor_local_as_no_prepend_modify(
struct nb_cb_modify_args *args);
-int bgp_neighbors_unnumbered_neighbor_local_as_no_prepend_destroy(
- struct nb_cb_destroy_args *args);
int bgp_neighbors_unnumbered_neighbor_local_as_no_replace_as_modify(
struct nb_cb_modify_args *args);
int bgp_neighbors_unnumbered_neighbor_bfd_options_enable_modify(
@@ -501,8 +497,6 @@ int bgp_peer_groups_peer_group_local_as_local_as_destroy(
struct nb_cb_destroy_args *args);
int bgp_peer_groups_peer_group_local_as_no_prepend_modify(
struct nb_cb_modify_args *args);
-int bgp_peer_groups_peer_group_local_as_no_prepend_destroy(
- struct nb_cb_destroy_args *args);
int bgp_peer_groups_peer_group_local_as_no_replace_as_modify(
struct nb_cb_modify_args *args);
int bgp_peer_groups_peer_group_bfd_options_enable_modify(
diff --git a/bgpd/bgp_nb_config.c b/bgpd/bgp_nb_config.c
index ff2c8ce93e..a430124b51 100644
--- a/bgpd/bgp_nb_config.c
+++ b/bgpd/bgp_nb_config.c
@@ -111,15 +111,24 @@ int bgp_router_create(struct nb_cb_create_args *args)
is_new_bgp = (bgp_lookup_by_name(name) == NULL);
ret = bgp_get_vty(&bgp, &as, name, inst_type);
- switch (ret) {
- case BGP_ERR_AS_MISMATCH:
- snprintf(args->errmsg, args->errmsg_len,
- "BGP instance is already running; AS is %u",
- as);
- return NB_ERR_INCONSISTENCY;
- case BGP_ERR_INSTANCE_MISMATCH:
- snprintf(args->errmsg, args->errmsg_len,
- "BGP instance type mismatch");
+ if (ret) {
+ switch (ret) {
+ case BGP_ERR_AS_MISMATCH:
+ snprintf(
+ args->errmsg, args->errmsg_len,
+ "BGP instance is already running; AS is %u",
+ as);
+ break;
+ case BGP_ERR_INSTANCE_MISMATCH:
+ snprintf(args->errmsg, args->errmsg_len,
+ "BGP instance type mismatch");
+ break;
+ }
+
+ UNSET_FLAG(bgp->vrf_flags, BGP_VRF_AUTO);
+
+ nb_running_set_entry(args->dnode, bgp);
+
return NB_ERR_INCONSISTENCY;
}
@@ -221,64 +230,26 @@ int bgp_router_destroy(struct nb_cb_destroy_args *args)
int bgp_global_local_as_modify(struct nb_cb_modify_args *args)
{
struct bgp *bgp;
- as_t as;
- const struct lyd_node *vrf_dnode;
- const char *vrf_name;
- const char *name = NULL;
- enum bgp_instance_type inst_type;
- int ret;
- bool is_view_inst = false;
switch (args->event) {
case NB_EV_VALIDATE:
- as = yang_dnode_get_uint32(args->dnode, NULL);
-
- inst_type = BGP_INSTANCE_TYPE_DEFAULT;
-
- vrf_dnode = yang_dnode_get_parent(args->dnode,
- "control-plane-protocol");
- vrf_name = yang_dnode_get_string(vrf_dnode, "./vrf");
-
- if (strmatch(vrf_name, VRF_DEFAULT_NAME)) {
- name = NULL;
- } else {
- name = vrf_name;
- inst_type = BGP_INSTANCE_TYPE_VRF;
- }
-
- is_view_inst = yang_dnode_get_bool(args->dnode,
- "../instance-type-view");
- if (is_view_inst)
- inst_type = BGP_INSTANCE_TYPE_VIEW;
-
- ret = bgp_lookup_by_as_name_type(&bgp, &as, name, inst_type);
- switch (ret) {
- case BGP_ERR_AS_MISMATCH:
- snprintf(args->errmsg, args->errmsg_len,
- "BGP instance is already running; AS is %u",
- as);
- return NB_ERR_VALIDATION;
- case BGP_ERR_INSTANCE_MISMATCH:
+ /*
+ * Changing AS number is not allowed, but we must allow it
+ * once, when the BGP instance is created the first time.
+ * If the instance already exists - return the validation
+ * error.
+ */
+ bgp = nb_running_get_entry_non_rec(
+ lyd_parent(lyd_parent(args->dnode)), NULL, false);
+ if (bgp) {
snprintf(args->errmsg, args->errmsg_len,
- "BGP instance type mismatch");
+ "Changing AS number is not allowed");
return NB_ERR_VALIDATION;
}
break;
case NB_EV_PREPARE:
case NB_EV_ABORT:
- return NB_OK;
case NB_EV_APPLY:
- /* NOTE: handled in bgp_global_create callback, the as change
- * will be rejected in validate phase.
- */
- as = yang_dnode_get_uint32(args->dnode, NULL);
- bgp = nb_running_get_entry(args->dnode, NULL, true);
- if (bgp->as != as) {
- snprintf(args->errmsg, args->errmsg_len,
- "BGP instance is already running; AS is %u",
- bgp->as);
- return NB_ERR_INCONSISTENCY;
- }
break;
}
@@ -609,16 +580,11 @@ int bgp_global_route_reflector_route_reflector_cluster_id_modify(
struct bgp *bgp;
struct in_addr cluster_id;
- const struct lyd_node_leaf_list *dleaf;
bgp = nb_running_get_entry(args->dnode, NULL, true);
- dleaf = (const struct lyd_node_leaf_list *)args->dnode;
- if (dleaf->value_type == LY_TYPE_STRING)
- yang_dnode_get_ipv4(&cluster_id, args->dnode, NULL);
- else
- (void)inet_aton(dleaf->value_str, &cluster_id);
-
+ /* cluster-id is either dotted-quad or a uint32 */
+ (void)inet_aton(lyd_get_value(args->dnode), &cluster_id);
bgp_cluster_id_set(bgp, &cluster_id);
if (bgp_clear_star_soft_out(bgp->name, args->errmsg, args->errmsg_len))
@@ -1514,12 +1480,27 @@ int bgp_global_global_config_timers_keepalive_modify(
*/
int bgp_global_instance_type_view_modify(struct nb_cb_modify_args *args)
{
+ struct bgp *bgp;
+
switch (args->event) {
case NB_EV_VALIDATE:
+ /*
+ * Changing instance type is not allowed, but we must allow it
+ * once, when the BGP instance is created the first time.
+ * If the instance already exists - return the validation
+ * error.
+ */
+ bgp = nb_running_get_entry_non_rec(
+ lyd_parent(lyd_parent(args->dnode)), NULL, false);
+ if (bgp) {
+ snprintf(args->errmsg, args->errmsg_len,
+ "Changing instance type is not allowed");
+ return NB_ERR_VALIDATION;
+ }
+ break;
case NB_EV_PREPARE:
case NB_EV_ABORT:
case NB_EV_APPLY:
- /* TODO: implement me. */
break;
}
@@ -3574,21 +3555,6 @@ int bgp_neighbors_neighbor_local_as_no_prepend_modify(
return NB_OK;
}
-int bgp_neighbors_neighbor_local_as_no_prepend_destroy(
- struct nb_cb_destroy_args *args)
-{
- switch (args->event) {
- case NB_EV_VALIDATE:
- case NB_EV_PREPARE:
- case NB_EV_ABORT:
- case NB_EV_APPLY:
- /* TODO: implement me. */
- break;
- }
-
- return NB_OK;
-}
-
/*
* XPath:
* /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/neighbor/local-as/no-replace-as
@@ -5590,21 +5556,6 @@ int bgp_neighbors_unnumbered_neighbor_local_as_no_prepend_modify(
return NB_OK;
}
-int bgp_neighbors_unnumbered_neighbor_local_as_no_prepend_destroy(
- struct nb_cb_destroy_args *args)
-{
- switch (args->event) {
- case NB_EV_VALIDATE:
- case NB_EV_PREPARE:
- case NB_EV_ABORT:
- case NB_EV_APPLY:
- /* TODO: implement me. */
- break;
- }
-
- return NB_OK;
-}
-
/*
* XPath:
* /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/neighbors/unnumbered-neighbor/local-as/no-replace-as
@@ -7507,21 +7458,6 @@ int bgp_peer_groups_peer_group_local_as_no_prepend_modify(
return NB_OK;
}
-int bgp_peer_groups_peer_group_local_as_no_prepend_destroy(
- struct nb_cb_destroy_args *args)
-{
- switch (args->event) {
- case NB_EV_VALIDATE:
- case NB_EV_PREPARE:
- case NB_EV_ABORT:
- case NB_EV_APPLY:
- /* TODO: implement me. */
- break;
- }
-
- return NB_OK;
-}
-
/*
* XPath:
* /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-bgp:bgp/peer-groups/peer-group/local-as/no-replace-as
diff --git a/bgpd/bgp_nht.c b/bgpd/bgp_nht.c
index dc2b0b679b..e94f63541d 100644
--- a/bgpd/bgp_nht.c
+++ b/bgpd/bgp_nht.c
@@ -620,8 +620,8 @@ void bgp_parse_nexthop_update(int command, vrf_id_t vrf_id)
}
if (!zapi_nexthop_update_decode(zclient->ibuf, &nhr)) {
- zlog_err("%s[%s]: Failure to decode nexthop update",
- __PRETTY_FUNCTION__, bgp->name_pretty);
+ zlog_err("%s[%s]: Failure to decode nexthop update", __func__,
+ bgp->name_pretty);
return;
}
diff --git a/bgpd/bgp_pbr.c b/bgpd/bgp_pbr.c
index 01443c778f..27d868afa1 100644
--- a/bgpd/bgp_pbr.c
+++ b/bgpd/bgp_pbr.c
@@ -1072,22 +1072,31 @@ static void *bgp_pbr_rule_alloc_intern(void *arg)
return new;
}
+static void bgp_pbr_bpa_remove(struct bgp_pbr_action *bpa)
+{
+ if ((bpa->refcnt == 0) && bpa->installed && bpa->table_id != 0) {
+ bgp_send_pbr_rule_action(bpa, NULL, false);
+ bgp_zebra_announce_default(bpa->bgp, &bpa->nh, bpa->afi,
+ bpa->table_id, false);
+ bpa->installed = false;
+ }
+}
+
+static void bgp_pbr_bpa_add(struct bgp_pbr_action *bpa)
+{
+ if (!bpa->installed && !bpa->install_in_progress) {
+ bgp_send_pbr_rule_action(bpa, NULL, true);
+ bgp_zebra_announce_default(bpa->bgp, &bpa->nh, bpa->afi,
+ bpa->table_id, true);
+ }
+}
+
static void bgp_pbr_action_free(void *arg)
{
- struct bgp_pbr_action *bpa;
+ struct bgp_pbr_action *bpa = arg;
- bpa = (struct bgp_pbr_action *)arg;
+ bgp_pbr_bpa_remove(bpa);
- if (bpa->refcnt == 0) {
- if (bpa->installed && bpa->table_id != 0) {
- bgp_send_pbr_rule_action(bpa, NULL, false);
- bgp_zebra_announce_default(bpa->bgp, &(bpa->nh),
- AFI_IP,
- bpa->table_id,
- false);
- bpa->installed = false;
- }
- }
XFREE(MTYPE_PBR_ACTION, bpa);
}
@@ -1691,16 +1700,7 @@ static void bgp_pbr_flush_iprule(struct bgp *bgp, struct bgp_pbr_action *bpa,
}
}
hash_release(bgp->pbr_rule_hash, bpr);
- if (bpa->refcnt == 0) {
- if (bpa->installed && bpa->table_id != 0) {
- bgp_send_pbr_rule_action(bpa, NULL, false);
- bgp_zebra_announce_default(bpa->bgp, &(bpa->nh),
- AFI_IP,
- bpa->table_id,
- false);
- bpa->installed = false;
- }
- }
+ bgp_pbr_bpa_remove(bpa);
}
static void bgp_pbr_flush_entry(struct bgp *bgp, struct bgp_pbr_action *bpa,
@@ -1748,16 +1748,7 @@ static void bgp_pbr_flush_entry(struct bgp *bgp, struct bgp_pbr_action *bpa,
* note that drop does not need to call send_pbr_action
*/
}
- if (bpa->refcnt == 0) {
- if (bpa->installed && bpa->table_id != 0) {
- bgp_send_pbr_rule_action(bpa, NULL, false);
- bgp_zebra_announce_default(bpa->bgp, &(bpa->nh),
- bpa->afi,
- bpa->table_id,
- false);
- bpa->installed = false;
- }
- }
+ bgp_pbr_bpa_remove(bpa);
}
struct bgp_pbr_match_entry_remain {
@@ -2374,12 +2365,9 @@ static void bgp_pbr_policyroute_add_to_zebra_unit(struct bgp *bgp,
return;
}
}
- if (!bpa->installed && !bpa->install_in_progress) {
- bgp_send_pbr_rule_action(bpa, NULL, true);
- bgp_zebra_announce_default(bgp, nh,
- bpa->afi,
- bpa->table_id, true);
- }
+
+ bgp_pbr_bpa_add(bpa);
+
/* ip rule add */
if (bpr && !bpr->installed)
bgp_send_pbr_rule_action(bpa, bpr, true);
@@ -2547,11 +2535,7 @@ static void bgp_pbr_policyroute_add_to_zebra_unit(struct bgp *bgp,
* it will be suppressed subsequently
*/
/* ip rule add */
- if (!bpa->installed && !bpa->install_in_progress) {
- bgp_send_pbr_rule_action(bpa, NULL, true);
- bgp_zebra_announce_default(bgp, nh,
- bpa->afi, bpa->table_id, true);
- }
+ bgp_pbr_bpa_add(bpa);
/* ipset create */
if (!bpm->installed)
diff --git a/bgpd/bgp_route.c b/bgpd/bgp_route.c
index 77a0b5fea7..2c792b7abf 100644
--- a/bgpd/bgp_route.c
+++ b/bgpd/bgp_route.c
@@ -550,6 +550,7 @@ static int bgp_path_info_cmp(struct bgp *bgp, struct bgp_path_info *new,
char *pfx_buf, afi_t afi, safi_t safi,
enum bgp_path_selection_reason *reason)
{
+ const struct prefix *new_p;
struct attr *newattr, *existattr;
bgp_peer_sort_t new_sort;
bgp_peer_sort_t exist_sort;
@@ -614,10 +615,13 @@ static int bgp_path_info_cmp(struct bgp *bgp, struct bgp_path_info *new,
newattr = new->attr;
existattr = exist->attr;
+ new_p = bgp_dest_get_prefix(new->net);
+
/* For EVPN routes, we cannot just go by local vs remote, we have to
* look at the MAC mobility sequence number, if present.
*/
- if (safi == SAFI_EVPN) {
+ if ((safi == SAFI_EVPN)
+ && (new_p->u.prefix_evpn.route_type == BGP_EVPN_MAC_IP_ROUTE)) {
/* This is an error condition described in RFC 7432 Section
* 15.2. The RFC
* states that in this scenario "the PE MUST alert the operator"
@@ -630,9 +634,9 @@ static int bgp_path_info_cmp(struct bgp *bgp, struct bgp_path_info *new,
*/
if (newattr->sticky != existattr->sticky) {
if (!debug) {
- prefix2str(
- bgp_dest_get_prefix(new->net), pfx_buf,
- sizeof(*pfx_buf) * PREFIX2STR_BUFFER);
+ prefix2str(new_p, pfx_buf,
+ sizeof(*pfx_buf)
+ * PREFIX2STR_BUFFER);
bgp_path_info_path_with_addpath_rx_str(
new, new_buf, sizeof(new_buf));
bgp_path_info_path_with_addpath_rx_str(
diff --git a/bgpd/bgp_vty.c b/bgpd/bgp_vty.c
index 7cd36ef538..1fa6d4f002 100644
--- a/bgpd/bgp_vty.c
+++ b/bgpd/bgp_vty.c
@@ -132,10 +132,6 @@ DEFINE_HOOK(bgp_inst_config_write,
(bgp, vty));
DEFINE_HOOK(bgp_snmp_update_last_changed, (struct bgp *bgp), (bgp));
-#define GR_NO_OPER \
- "The Graceful Restart No Operation was executed as cmd same as previous one."
-#define GR_INVALID \
- "The Graceful Restart command used is not valid at this moment."
static struct peer_group *listen_range_exists(struct bgp *bgp,
struct prefix *range, int exact);
@@ -750,9 +746,6 @@ int bgp_nb_errmsg_return(char *errmsg, size_t errmsg_len, int ret)
case BGP_ERR_GR_OPERATION_FAILED:
str = "The Graceful Restart Operation failed due to an err.";
break;
- case BGP_GR_NO_OPERATION:
- str = GR_NO_OPER;
- break;
case BGP_ERR_PEER_GROUP_MEMBER:
str = "Peer-group member cannot override remote-as of peer-group";
break;
@@ -1387,6 +1380,10 @@ DEFUN_YANG_NOSH(router_bgp,
nb_cli_enqueue_change(vty,
"./global/instance-type-view",
NB_OP_MODIFY, "true");
+ } else {
+ nb_cli_enqueue_change(vty,
+ "./global/instance-type-view",
+ NB_OP_MODIFY, "false");
}
ret = nb_cli_apply_changes(vty, base_xpath);
@@ -4375,12 +4372,12 @@ DEFUN_YANG(neighbor_remote_as,
snprintf(prgrp_xpath, sizeof(prgrp_xpath),
FRR_BGP_PEER_GROUP_XPATH, argv[idx_peer]->arg, "");
- if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH, unnbr_xpath + 1)) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH, unnbr_xpath + 1)) {
strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath));
- } else if (yang_dnode_exists(vty->candidate_config->dnode,
- "%s%s", VTY_CURR_XPATH,
- prgrp_xpath + 1)) {
+ } else if (yang_dnode_existsf(vty->candidate_config->dnode,
+ "%s%s", VTY_CURR_XPATH,
+ prgrp_xpath + 1)) {
snprintf(base_xpath, sizeof(base_xpath),
FRR_BGP_PEER_GROUP_XPATH, argv[idx_peer]->arg,
"");
@@ -4651,8 +4648,8 @@ DEFUN_YANG(no_neighbor,
if (str2sockunion(argv[idx_peer]->arg, &su) == 0) {
snprintf(num_xpath, sizeof(num_xpath),
FRR_BGP_NEIGHBOR_NUM_XPATH, argv[idx_peer]->arg, "");
- if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH, num_xpath + 1)) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH, num_xpath + 1)) {
strlcpy(base_xpath, num_xpath, sizeof(base_xpath));
}
} else {
@@ -4662,12 +4659,12 @@ DEFUN_YANG(no_neighbor,
snprintf(prgrp_xpath, sizeof(prgrp_xpath),
FRR_BGP_PEER_GROUP_XPATH, argv[idx_peer]->arg, "");
- if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH, unnbr_xpath + 1)) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH, unnbr_xpath + 1)) {
strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath));
- } else if (yang_dnode_exists(vty->candidate_config->dnode,
- "%s%s", VTY_CURR_XPATH,
- prgrp_xpath + 1)) {
+ } else if (yang_dnode_existsf(vty->candidate_config->dnode,
+ "%s%s", VTY_CURR_XPATH,
+ prgrp_xpath + 1)) {
strlcpy(base_xpath, prgrp_xpath, sizeof(base_xpath));
} else {
vty_out(vty,
@@ -4743,11 +4740,11 @@ DEFUN_YANG(no_neighbor_interface_peer_group_remote_as,
snprintf(prgrp_xpath, sizeof(prgrp_xpath), FRR_BGP_PEER_GROUP_XPATH,
argv[idx_peer]->arg, "");
- if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH, unnbr_xpath + 1)) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH, unnbr_xpath + 1)) {
strlcpy(base_xpath, unnbr_xpath, sizeof(base_xpath));
- } else if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH, prgrp_xpath + 1)) {
+ } else if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH, prgrp_xpath + 1)) {
strlcpy(base_xpath, prgrp_xpath, sizeof(base_xpath));
} else {
vty_out(vty, "%% Create the peer-group or interface first\n");
@@ -7039,8 +7036,8 @@ static int peer_and_group_lookup_nb(struct vty *vty, const char *peer_str,
if (str2sockunion(peer_str, &su) == 0) {
snprintf(num_xpath, sizeof(num_xpath),
"/neighbors/neighbor[remote-address='%s']", peer_str);
- if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH, num_xpath)) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH, num_xpath)) {
snprintf(base_xpath, xpath_len,
FRR_BGP_NEIGHBOR_NUM_XPATH, peer_str,
xpath ? xpath : "");
@@ -7059,14 +7056,14 @@ static int peer_and_group_lookup_nb(struct vty *vty, const char *peer_str,
"/peer-groups/peer-group[peer-group-name='%s']",
peer_str);
- if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH, unnbr_xpath)) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH, unnbr_xpath)) {
snprintf(base_xpath, xpath_len,
FRR_BGP_NEIGHBOR_UNNUM_XPATH, peer_str,
xpath ? xpath : "");
- } else if (yang_dnode_exists(vty->candidate_config->dnode,
- "%s%s", VTY_CURR_XPATH,
- prgrp_xpath)) {
+ } else if (yang_dnode_existsf(vty->candidate_config->dnode,
+ "%s%s", VTY_CURR_XPATH,
+ prgrp_xpath)) {
snprintf(base_xpath, xpath_len,
FRR_BGP_PEER_GROUP_XPATH, peer_str,
xpath ? xpath : "");
@@ -8088,7 +8085,7 @@ DEFPY_YANG(
bgp_afi_safi_get_container_str(afi, safi));
if (!no) {
- if (!yang_dnode_exists(
+ if (!yang_dnode_existsf(
vty->candidate_config->dnode,
"/frr-route-map:lib/route-map[name='%s']",
rmap_str)) {
@@ -17757,7 +17754,7 @@ int bgp_config_write(struct vty *vty)
/* BGP timers configuration. */
if (bgp->default_keepalive != SAVE_BGP_KEEPALIVE
- && bgp->default_holdtime != SAVE_BGP_HOLDTIME)
+ || bgp->default_holdtime != SAVE_BGP_HOLDTIME)
vty_out(vty, " timers bgp %u %u\n",
bgp->default_keepalive, bgp->default_holdtime);
diff --git a/bgpd/bgp_zebra.c b/bgpd/bgp_zebra.c
index 288c2851b3..63214c5676 100644
--- a/bgpd/bgp_zebra.c
+++ b/bgpd/bgp_zebra.c
@@ -1180,7 +1180,6 @@ void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix *p,
route_tag_t tag;
mpls_label_t label;
int nh_othervrf = 0;
- char buf_prefix[PREFIX_STRLEN]; /* filled in if we are debugging */
bool is_evpn;
bool nh_updated = false;
bool do_wt_ecmp;
@@ -1197,9 +1196,6 @@ void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix *p,
if (bgp->main_zebra_update_hold)
return;
- if (bgp_debug_zebra(p))
- prefix2str(p, buf_prefix, sizeof(buf_prefix));
-
if (safi == SAFI_FLOWSPEC) {
bgp_pbr_update_entry(bgp, bgp_dest_get_prefix(dest), info, afi,
safi, true);
@@ -1312,13 +1308,14 @@ void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix *p,
if (bgp_debug_zebra(&api.prefix)) {
if (mpinfo->extra) {
- zlog_debug("%s: p=%s, bgp_is_valid_label: %d",
- __func__, buf_prefix,
+ zlog_debug("%s: p=%pFX, bgp_is_valid_label: %d",
+ __func__, p,
bgp_is_valid_label(
&mpinfo->extra->label[0]));
} else {
- zlog_debug("%s: p=%s, extra is NULL, no label",
- __func__, buf_prefix);
+ zlog_debug(
+ "%s: p=%pFX, extra is NULL, no label",
+ __func__, p);
}
}
@@ -1500,9 +1497,8 @@ void bgp_zebra_announce(struct bgp_dest *dest, const struct prefix *p,
if (CHECK_FLAG(api.flags, ZEBRA_FLAG_ALLOW_RECURSION))
recursion_flag = 1;
- zlog_debug("%s: %s: announcing to zebra (recursion %sset)",
- __func__, buf_prefix,
- (recursion_flag ? "" : "NOT "));
+ zlog_debug("%s: %pFX: announcing to zebra (recursion %sset)",
+ __func__, p, (recursion_flag ? "" : "NOT "));
}
zclient_route_send(is_add ? ZEBRA_ROUTE_ADD : ZEBRA_ROUTE_DELETE,
zclient, &api);
@@ -1700,6 +1696,9 @@ int bgp_redistribute_set(struct bgp *bgp, afi_t afi, int type,
redist_add_instance(&zclient->mi_redist[afi][type], instance);
} else {
+ if (vrf_bitmap_check(zclient->redist[afi][type], bgp->vrf_id))
+ return CMD_WARNING;
+
#ifdef ENABLE_BGP_VNC
if (EVPN_ENABLED(bgp) && type == ZEBRA_ROUTE_VNC_DIRECT) {
vnc_export_bgp_enable(
@@ -1909,22 +1908,6 @@ void bgp_redistribute_redo(struct bgp *bgp)
}
}
-/* Unset redistribute vrf bitmap during triggers like
- restart networking or delete VRFs */
-void bgp_unset_redist_vrf_bitmaps(struct bgp *bgp, vrf_id_t old_vrf_id)
-{
- int i;
- afi_t afi;
-
- for (afi = AFI_IP; afi < AFI_MAX; afi++)
- for (i = 0; i < ZEBRA_ROUTE_MAX; i++)
- if (vrf_bitmap_check(zclient->redist[afi][i],
- old_vrf_id))
- vrf_bitmap_unset(zclient->redist[afi][i],
- old_vrf_id);
- return;
-}
-
void bgp_zclient_reset(void)
{
zclient_reset(zclient);
@@ -2407,7 +2390,7 @@ static int bgp_zebra_route_notify_owner(int command, struct zclient *zclient,
if (!zapi_route_notify_decode(zclient->ibuf, &p, &table_id, &note,
&afi, &safi)) {
- zlog_err("%s : error in msg decode", __PRETTY_FUNCTION__);
+ zlog_err("%s : error in msg decode", __func__);
return -1;
}
@@ -2415,8 +2398,8 @@ static int bgp_zebra_route_notify_owner(int command, struct zclient *zclient,
bgp = bgp_lookup_by_vrf_id(vrf_id);
if (!bgp) {
flog_err(EC_BGP_INVALID_BGP_INSTANCE,
- "%s : bgp instance not found vrf %d",
- __PRETTY_FUNCTION__, vrf_id);
+ "%s : bgp instance not found vrf %d", __func__,
+ vrf_id);
return -1;
}
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c
index 21abfeb001..5991bff752 100644
--- a/bgpd/bgpd.c
+++ b/bgpd/bgpd.c
@@ -3378,13 +3378,13 @@ int bgp_lookup_by_as_name_type(struct bgp **bgp_val, as_t *as, const char *name,
bgp = bgp_get_default();
if (bgp) {
+ *bgp_val = bgp;
if (bgp->as != *as) {
*as = bgp->as;
return BGP_ERR_AS_MISMATCH;
}
if (bgp->inst_type != inst_type)
return BGP_ERR_INSTANCE_MISMATCH;
- *bgp_val = bgp;
return BGP_SUCCESS;
}
*bgp_val = NULL;
@@ -3438,6 +3438,46 @@ int bgp_get(struct bgp **bgp_val, as_t *as, const char *name,
return BGP_CREATED;
}
+static void bgp_zclient_set_redist(afi_t afi, int type, unsigned short instance,
+ vrf_id_t vrf_id, bool set)
+{
+ if (instance) {
+ if (set)
+ redist_add_instance(&zclient->mi_redist[afi][type],
+ instance);
+ else
+ redist_del_instance(&zclient->mi_redist[afi][type],
+ instance);
+ } else {
+ if (set)
+ vrf_bitmap_set(zclient->redist[afi][type], vrf_id);
+ else
+ vrf_bitmap_unset(zclient->redist[afi][type], vrf_id);
+ }
+}
+
+static void bgp_set_redist_vrf_bitmaps(struct bgp *bgp, bool set)
+{
+ afi_t afi;
+ int i;
+ struct list *red_list;
+ struct listnode *node;
+ struct bgp_redist *red;
+
+ for (afi = AFI_IP; afi < AFI_MAX; afi++) {
+ for (i = 0; i < ZEBRA_ROUTE_MAX; i++) {
+
+ red_list = bgp->redist[afi][i];
+ if (!red_list)
+ continue;
+
+ for (ALL_LIST_ELEMENTS_RO(red_list, node, red))
+ bgp_zclient_set_redist(afi, i, red->instance,
+ bgp->vrf_id, set);
+ }
+ }
+}
+
/*
* Make BGP instance "up". Applies only to VRFs (non-default) and
* implies the VRF has been learnt from Zebra.
@@ -3447,6 +3487,8 @@ void bgp_instance_up(struct bgp *bgp)
struct peer *peer;
struct listnode *node, *next;
+ bgp_set_redist_vrf_bitmaps(bgp, true);
+
/* Register with zebra. */
bgp_zebra_instance_register(bgp);
@@ -3491,6 +3533,10 @@ void bgp_instance_down(struct bgp *bgp)
/* Cleanup registered nexthops (flags) */
bgp_cleanup_nexthops(bgp);
+
+ bgp_zebra_instance_deregister(bgp);
+
+ bgp_set_redist_vrf_bitmaps(bgp, false);
}
/* Delete BGP instance. */
@@ -6891,7 +6937,7 @@ static void peer_advertise_map_filter_update(struct peer *peer, afi_t afi,
/* Removed advertise-map configuration */
if (!set) {
- memset(filter, 0, sizeof(struct bgp_filter));
+ memset(&filter->advmap, 0, sizeof(filter->advmap));
/* decrement condition_filter_count delete timer if
* this is the last advertise-map to be removed.
diff --git a/bgpd/bgpd.h b/bgpd/bgpd.h
index 38c6a70b8b..4a17b72b7f 100644
--- a/bgpd/bgpd.h
+++ b/bgpd/bgpd.h
@@ -2386,8 +2386,6 @@ static inline bool bgp_in_graceful_shutdown(struct bgp *bgp)
!!CHECK_FLAG(bm->flags, BM_FLAG_GRACEFUL_SHUTDOWN));
}
-extern void bgp_unset_redist_vrf_bitmaps(struct bgp *, vrf_id_t);
-
/* For benefit of rfapi */
extern struct peer *peer_new(struct bgp *bgp);
diff --git a/bgpd/subdir.am b/bgpd/subdir.am
index b54c41cabe..53225192f2 100644
--- a/bgpd/subdir.am
+++ b/bgpd/subdir.am
@@ -214,8 +214,8 @@ bgpd_bgpd_SOURCES = bgpd/bgp_main.c
bgpd_bgp_btoa_SOURCES = bgpd/bgp_btoa.c
# RFPLDADD is set in bgpd/rfp-example/librfp/subdir.am
-bgpd_bgpd_LDADD = bgpd/libbgp.a $(RFPLDADD) lib/libfrr.la $(LIBCAP) $(LIBM) $(UST_LIBS)
-bgpd_bgp_btoa_LDADD = bgpd/libbgp.a $(RFPLDADD) lib/libfrr.la $(LIBCAP) $(LIBM) $(UST_LIBS)
+bgpd_bgpd_LDADD = bgpd/libbgp.a $(RFPLDADD) lib/libfrr.la $(LIBYANG_LIBS) $(LIBCAP) $(LIBM) $(UST_LIBS)
+bgpd_bgp_btoa_LDADD = bgpd/libbgp.a $(RFPLDADD) lib/libfrr.la $(LIBYANG_LIBS) $(LIBCAP) $(LIBM) $(UST_LIBS)
bgpd_bgpd_snmp_la_SOURCES = bgpd/bgp_snmp.c bgpd/bgp_mplsvpn_snmp.c
bgpd_bgpd_snmp_la_CFLAGS = $(AM_CFLAGS) $(SNMP_CFLAGS) -std=gnu11
diff --git a/configure.ac b/configure.ac
index c082a9e527..f84a3d3c5e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1866,8 +1866,8 @@ AC_SUBST([SNMP_CFLAGS])
dnl ---------------
dnl libyang
dnl ---------------
-PKG_CHECK_MODULES([LIBYANG], [libyang >= 1.0.184 libyang < 2.0], , [
- AC_MSG_ERROR([libyang (>= 1.0.184) was not found on your system.])
+PKG_CHECK_MODULES([LIBYANG], [libyang >= 2.0.0], , [
+ AC_MSG_ERROR([libyang (>= 2.0.0) was not found on your system.])
])
ac_cflags_save="$CFLAGS"
CFLAGS="$CFLAGS $LIBYANG_CFLAGS"
diff --git a/debian/control b/debian/control
index 7a08cbbdb0..0bbe99b312 100644
--- a/debian/control
+++ b/debian/control
@@ -16,14 +16,14 @@ Build-Depends: bison,
libelf-dev,
libjson-c-dev | libjson0-dev,
libpam0g-dev | libpam-dev,
- libpcre3-dev,
+ libpcre2-dev,
libpython3-dev,
libreadline-dev,
librtr-dev <!pkg.frr.nortrlib>,
libsnmp-dev,
libssh-dev <!pkg.frr.nortrlib>,
libsystemd-dev <!pkg.frr.nosystemd>,
- libyang-dev (>= 1.0.184),
+ libyang2-dev,
lsb-base,
pkg-config,
python3,
diff --git a/doc/developer/building-libyang.rst b/doc/developer/building-libyang.rst
index 5f82447d74..a447f58309 100644
--- a/doc/developer/building-libyang.rst
+++ b/doc/developer/building-libyang.rst
@@ -10,11 +10,12 @@ The FRR project builds some binary ``libyang`` packages.
RPM packages are at our `RPM repository <https://rpm.frrouting.org>`_.
DEB packages are available as CI artifacts `here
-<https://ci1.netdef.org/browse/LIBYANG-LY1REL-DEB10AMD64-4/artifact>`_.
+<https://ci1.netdef.org/browse/LIBYANG-LIBYANG-V2/latestSuccessful/artifact>`_.
.. warning::
- ``libyang`` version 1.0.184 or newer is required to build FRR.
+ ``libyang`` version 2.0.0 or newer is required to build FRR. Currently a tag
+ (``v2.0.0``) is used from the libyang2 branch.
.. note::
@@ -26,31 +27,22 @@ DEB packages are available as CI artifacts `here
Depending on your platform, you may also need to install the PCRE
development package. Typically this is ``libpcre-dev`` or ``pcre-devel``.
-.. note::
-
- For Debian-based systems, the official ``libyang`` package requires recent
- versions of ``swig`` (3.0.12) and ``debhelper`` (11) which are only
- available in Debian buster (10). However, ``libyang`` packages built on
- Debian buster can be installed on both Debian jessie (8) and Debian stretch
- (9), as well as various Ubuntu systems. The ``python3-yang`` package will
- not work, but the other packages (``libyang-dev`` is the one needed for FRR)
- will.
-
**Option 2: Source Install**
.. note::
Ensure that the `libyang build requirements
- <https://github.com/CESNET/libyang/blob/master/README.md#build-requirements>`_
+ <https://github.com/CESNET/libyang/tree/libyang2#build-requirements>`_
are met before continuing. Usually this entails installing ``cmake`` and
``libpcre-dev`` or ``pcre-devel``.
.. code-block:: console
- git clone https://github.com/CESNET/libyang.git
+ git clone https://github.com/CESNET/libyang.git -b libyang2
cd libyang
+ git checkout v2.0.0
mkdir build; cd build
- cmake -DENABLE_LYD_PRIV=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ cmake -D CMAKE_INSTALL_PREFIX:PATH=/usr \
-D CMAKE_BUILD_TYPE:String="Release" ..
make
sudo make install
diff --git a/doc/developer/topotests.rst b/doc/developer/topotests.rst
index a86566dbb0..dd797a6949 100644
--- a/doc/developer/topotests.rst
+++ b/doc/developer/topotests.rst
@@ -59,7 +59,7 @@ there are some errors in the upstream MIBS which need to be patched up. The
following steps will get you there on Ubuntu 20.04.
.. code:: shell
-
+
apt install libsnmp-dev
apt install snmpd snmp
apt install snmp-mibs-downloader
@@ -68,9 +68,9 @@ following steps will get you there on Ubuntu 20.04.
wget http://pastebin.com/raw.php?i=p3QyuXzZ -O /usr/share/snmp/mibs/ietf/SNMPv2-PDU
wget http://pastebin.com/raw.php?i=gG7j8nyk -O /usr/share/snmp/mibs/ietf/IPATM-IPMC-MIB
edit /etc/snmp/snmp.conf to look like this
- # As the snmp packages come without MIB files due to license reasons, loading
- # of MIBs is disabled by default. If you added the MIBs you can reenable
- # loading them by commenting out the following line.
+ # As the snmp packages come without MIB files due to license reasons, loading
+ # of MIBs is disabled by default. If you added the MIBs you can reenable
+ # loading them by commenting out the following line.
mibs +ALL
@@ -485,7 +485,7 @@ Some things to keep in mind:
in BGP, the test should look for the peers reconverging instead of just
sleeping an arbitrary amount of time and continuing on. It is ok to
use sleep in a tight loop with appropriate show commands to ensure that
- the protocol reaches the desired state. This should be bounded by
+ the protocol reaches the desired state. This should be bounded by
appropriate timeouts for the protocol in question though. See
verify_bgp_convergence as a good example of this. If you are having
troubles figuring out what to look for, please do not be afraid to ask.
@@ -882,6 +882,8 @@ Example:
Requirements:
+- Directory name for a new topotest must not contain hyphen (``-``) characters.
+ To separate words, use underscores (``_``). For example, `tests/topotests/bgp_new_example`.
- Test code should always be declared inside functions that begin with the
``test_`` prefix. Functions beginning with different prefixes will not be run
by pytest.
diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
index 14b2389ca9..f6aa5d1ca0 100644
--- a/doc/user/bgp.rst
+++ b/doc/user/bgp.rst
@@ -2022,24 +2022,6 @@ expanded
attribute in BGP updates. The expanded community is only used to filter,
not `set` actions.
-.. clicmd:: bgp community alias NAME ALIAS
-
- This command creates an alias name for a community that will be used
- later in various CLI outputs in a human-readable format.
-
- .. code-block:: frr
-
- ~# show ip bgp 172.16.16.1/32
- BGP routing table entry for 172.16.16.1/32, version 21
- Paths: (2 available, best #2, table default)
- Advertised to non peer-group peers:
- 65030
- 192.168.0.2 from 192.168.0.2 (172.16.16.1)
- Origin incomplete, metric 0, valid, external, best (Neighbor IP)
- Community: 65001:12 65001:13 community-1 65001:65534
- Large Community: lcommunity-1 65001:123:2
- Last update: Fri Apr 16 12:51:27 2021
-
.. deprecated:: 5.0
It is recommended to use the more explicit versions of this command.
@@ -2097,6 +2079,38 @@ is called as named community lists.
This command defines a new expanded community list. The argument to
(100-199) defines the list identifier.
+.. _bgp-community-alias:
+
+Community alias
+^^^^^^^^^^^^^^^
+
+BGP community aliases are useful to quickly identify what communities are set
+for a specific prefix in a human-readable format. Especially handy for a huge
+amount of communities. Accurately defined aliases can help you faster spot
+things on the wire.
+
+.. clicmd:: bgp community alias NAME ALIAS
+
+ This command creates an alias name for a community that will be used
+ later in various CLI outputs in a human-readable format.
+
+ .. code-block:: frr
+
+ ~# vtysh -c 'show run' | grep 'bgp community alias'
+ bgp community alias 65001:14 community-1
+ bgp community alias 65001:123:1 lcommunity-1
+
+ ~# vtysh -c 'show ip bgp 172.16.16.1/32'
+ BGP routing table entry for 172.16.16.1/32, version 21
+ Paths: (2 available, best #2, table default)
+ Advertised to non peer-group peers:
+ 65030
+ 192.168.0.2 from 192.168.0.2 (172.16.16.1)
+ Origin incomplete, metric 0, valid, external, best (Neighbor IP)
+ Community: 65001:12 65001:13 community-1 65001:65534
+ Large Community: lcommunity-1 65001:123:2
+ Last update: Fri Apr 16 12:51:27 2021
+
.. _bgp-using-communities-in-route-map:
Using Communities in Route Maps
diff --git a/doc/user/ospf6d.rst b/doc/user/ospf6d.rst
index 573b9c8d7e..d7f4a3303e 100644
--- a/doc/user/ospf6d.rst
+++ b/doc/user/ospf6d.rst
@@ -305,3 +305,13 @@ Larger example with policy and various options set:
ipv6 access-class access6
exec-timeout 0 0
!
+
+
+Configuration Limits
+====================
+
+Ospf6d currently supports 100 interfaces addresses if MTU is set to
+default value, and 200 interface addresses if MTU is set to jumbo
+packet size or larger.
+
+
diff --git a/doc/user/pathd.rst b/doc/user/pathd.rst
index 5fc3837839..c40efffc88 100644
--- a/doc/user/pathd.rst
+++ b/doc/user/pathd.rst
@@ -28,25 +28,8 @@ documented elsewhere.
PCEP Support
============
-To build the PCC for pathd, the externall library `pceplib 1.2 <https://github.com/volta-networks/pceplib/tree/devel-1.2>`_ is required.
+A pceplib is included in the frr source tree and build by default.
-To build FRR with support for PCEP the following steps must be followed:
-
- - Checkout and build pceplib:
-
-```
-$ git clone https://github.com/volta-networks/pceplib
-$ cd pceplib
-$ make
-$ make install
-$ export PCEPLIB_ROOT=$PWD
-```
-
- - Configure FRR with the extra parameters:
-
-```
---enable-pcep LDFLAGS="-L${PCEPLIB_ROOT}/install/lib" CPPFLAGS="-I${PCEPLIB_ROOT}/install/include"
-```
To start pathd with pcep support the extra parameter `-M pathd_pcep` should be
passed to the pathd daemon.
@@ -62,10 +45,18 @@ Example:
debug pathd pcep basic
segment-routing
traffic-eng
+ mpls-te on
+ mpls-te import ospfv2
segment-list SL1
index 10 mpls label 16010
index 20 mpls label 16030
!
+ segment-list SL2
+ index 10 nai prefix 10.1.2.1/32 iface 1
+ index 20 nai adjacency 10.1.20.1 10.1.20.2
+ index 30 nai prefix 10.10.10.5/32 algorithm 0
+ index 40 mpls label 18001
+ !
policy color 1 endpoint 1.1.1.1
name default
binding-sid 4000
@@ -113,11 +104,22 @@ Configuration Commands
Configure segment routing traffic engineering.
+.. clicmd:: [no] mpls-te <on|off>
+
+ Activate/Deactivate use of internal Traffic Engineering Database
+
+.. clicmd:: [no] mpls-te import <ospfv2|ospfv3|isis>
+
+ Load data from the selected igp
+
.. clicmd:: segment-list NAME
Delete or start a segment list definition.
-.. clicmd:: index INDEX mpls label LABEL [nai node ADDRESS]
+.. clicmd:: index INDEX mpls label LABEL
+.. clicmd:: index INDEX nai adjacency A.B.C.D A.B.C.D
+.. clicmd:: index INDEX nai prefix A.B.C.D/M algorithm <0|1>
+.. clicmd:: index INDEX nai prefix A.B.C.D/M iface (0-65535)
Delete or specify a segment in a segment list definition.
diff --git a/docker/ubuntu18-ci/Dockerfile b/docker/ubuntu18-ci/Dockerfile
index f6fa910381..86fbe4f49c 100644
--- a/docker/ubuntu18-ci/Dockerfile
+++ b/docker/ubuntu18-ci/Dockerfile
@@ -26,19 +26,19 @@ RUN groupadd -r -g 92 frr && \
echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
mkdir -p /home/frr && chown frr.frr /home/frr
-#for libyang 1
-RUN apt-get install -y cmake libpcre3-dev
+#for libyang 2
+RUN apt-get install -y cmake libpcre2-dev
USER frr:frr
# build and install libyang1
RUN cd && pwd && ls -al && \
- git clone https://github.com/CESNET/libyang.git && \
+ git clone https://github.com/CESNET/libyang.git -b libyang2 && \
cd libyang && \
- git checkout v1.0.225 && \
+ git checkout v2.0.0 && \
mkdir build; cd build && \
- cmake -DENABLE_LYD_PRIV=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr \
- -D CMAKE_BUILD_TYPE:String="Release" .. && \
+ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_BUILD_TYPE:String="Release" .. && \
make -j $(nproc) && \
sudo make install
@@ -47,7 +47,7 @@ COPY --chown=frr:frr . /home/frr/frr/
RUN cd && ls -al && ls -al frr
RUN cd ~/frr && \
- ./bootstrap.sh && \
+ ./bootstrap.sh && \
./configure \
--prefix=/usr \
--localstatedir=/var/run/frr \
diff --git a/docker/ubuntu20-ci/Dockerfile b/docker/ubuntu20-ci/Dockerfile
index 0b08c2f278..ead5c56c54 100644
--- a/docker/ubuntu20-ci/Dockerfile
+++ b/docker/ubuntu20-ci/Dockerfile
@@ -29,19 +29,19 @@ RUN groupadd -r -g 92 frr && \
echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
mkdir -p /home/frr && chown frr.frr /home/frr
-#for libyang 1
-RUN apt-get install -y cmake libpcre3-dev
+#for libyang 2
+RUN apt-get install -y cmake libpcre2-dev
USER frr:frr
# build and install libyang1
RUN cd && pwd && ls -al && \
- git clone https://github.com/CESNET/libyang.git && \
+ git clone https://github.com/CESNET/libyang.git -b libyang2 && \
cd libyang && \
- git checkout v1.0.225 && \
+ git checkout v2.0.0 && \
mkdir build; cd build && \
- cmake -DENABLE_LYD_PRIV=ON -DCMAKE_INSTALL_PREFIX:PATH=/usr \
- -D CMAKE_BUILD_TYPE:String="Release" .. && \
+ cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \
+ -DCMAKE_BUILD_TYPE:String="Release" .. && \
make -j $(nproc) && \
sudo make install
@@ -50,7 +50,7 @@ COPY --chown=frr:frr . /home/frr/frr/
RUN cd && ls -al && ls -al frr
RUN cd ~/frr && \
- ./bootstrap.sh && \
+ ./bootstrap.sh && \
./configure \
--prefix=/usr \
--localstatedir=/var/run/frr \
diff --git a/eigrpd/eigrp_cli.c b/eigrpd/eigrp_cli.c
index ae15e97d4a..cf3999b457 100644
--- a/eigrpd/eigrp_cli.c
+++ b/eigrpd/eigrp_cli.c
@@ -880,7 +880,7 @@ static int eigrp_write_interface(struct vty *vty)
RB_FOREACH(vrf, vrf_name_head, &vrfs_by_name) {
FOR_ALL_INTERFACES(vrf, ifp) {
- dnode = yang_dnode_get(
+ dnode = yang_dnode_getf(
running_config->dnode,
"/frr-interface:lib/interface[name='%s'][vrf='%s']",
ifp->name, vrf->name);
diff --git a/isisd/isis_adjacency.h b/isisd/isis_adjacency.h
index 754345c008..b7fab7ae1e 100644
--- a/isisd/isis_adjacency.h
+++ b/isisd/isis_adjacency.h
@@ -105,7 +105,7 @@ struct isis_adjacency {
struct isis_circuit *circuit; /* back pointer */
uint16_t *mt_set; /* Topologies this adjacency is valid for */
unsigned int mt_count; /* Number of entries in mt_set */
- struct bfd_session *bfd_session;
+ struct bfd_session_params *bfd_session;
struct list *adj_sids; /* Segment Routing Adj-SIDs. */
uint32_t snmp_idx;
struct listnode *snmp_list_node;
diff --git a/isisd/isis_bfd.c b/isisd/isis_bfd.c
index 89f1ed0ba3..ed4d2c6539 100644
--- a/isisd/isis_bfd.c
+++ b/isisd/isis_bfd.c
@@ -34,319 +34,32 @@
DEFINE_MTYPE_STATIC(ISISD, BFD_SESSION, "ISIS BFD Session");
-struct bfd_session {
- int family;
- union g_addr dst_ip;
- union g_addr src_ip;
- int status;
-};
-
-static struct bfd_session *bfd_session_new(int family, union g_addr *dst_ip,
- union g_addr *src_ip)
-{
- struct bfd_session *rv;
-
- rv = XCALLOC(MTYPE_BFD_SESSION, sizeof(*rv));
- rv->family = family;
- rv->dst_ip = *dst_ip;
- rv->src_ip = *src_ip;
- return rv;
-}
-
-static void bfd_session_free(struct bfd_session **session)
-{
- if (!*session)
- return;
-
- XFREE(MTYPE_BFD_SESSION, *session);
-}
-
-static bool bfd_session_same(const struct bfd_session *session, int family,
- const union g_addr *src, const union g_addr *dst)
-{
- if (session->family != family)
- return false;
-
- switch (session->family) {
- case AF_INET:
- if (!IPV4_ADDR_SAME(&session->dst_ip.ipv4, &dst->ipv4))
- return false;
- if (!IPV4_ADDR_SAME(&session->src_ip.ipv4, &src->ipv4))
- return false;
- break;
- case AF_INET6:
- if (!IPV6_ADDR_SAME(&session->dst_ip.ipv6, &dst->ipv6))
- return false;
- if (!IPV6_ADDR_SAME(&session->src_ip.ipv6, &src->ipv6))
- return false;
- break;
- default:
- flog_err(EC_LIB_DEVELOPMENT, "%s: unknown address-family: %u",
- __func__, session->family);
- exit(1);
- }
-
- return true;
-}
-
-static void bfd_adj_event(struct isis_adjacency *adj, struct prefix *dst,
- int new_status)
-{
- if (!adj->bfd_session) {
- if (IS_DEBUG_BFD)
- zlog_debug(
- "ISIS-BFD: Ignoring update for adjacency with %s, could not find bfd session on the adjacency",
- isis_adj_name(adj));
- return;
- }
-
- if (adj->bfd_session->family != dst->family) {
- if (IS_DEBUG_BFD)
- zlog_debug(
- "ISIS-BFD: Ignoring update for adjacency with %s, address family does not match the family on the adjacency",
- isis_adj_name(adj));
- return;
- }
-
- switch (adj->bfd_session->family) {
- case AF_INET:
- if (!IPV4_ADDR_SAME(&adj->bfd_session->dst_ip.ipv4,
- &dst->u.prefix4)) {
- if (IS_DEBUG_BFD)
- zlog_debug(
- "ISIS-BFD: Ignoring update for adjacency with %s, IPv4 address does not match",
- isis_adj_name(adj));
- return;
- }
- break;
- case AF_INET6:
- if (!IPV6_ADDR_SAME(&adj->bfd_session->dst_ip.ipv6,
- &dst->u.prefix6)) {
- if (IS_DEBUG_BFD)
- zlog_debug(
- "ISIS-BFD: Ignoring update for adjacency with %s, IPv6 address does not match",
- isis_adj_name(adj));
- return;
- }
- break;
- default:
- flog_err(EC_LIB_DEVELOPMENT, "%s: unknown address-family: %u",
- __func__, adj->bfd_session->family);
- exit(1);
- }
-
- int old_status = adj->bfd_session->status;
-
- BFD_SET_CLIENT_STATUS(adj->bfd_session->status, new_status);
-
- if (old_status == new_status) {
- if (IS_DEBUG_BFD)
- zlog_debug(
- "ISIS-BFD: Ignoring update for adjacency with %s, new status matches current known status",
- isis_adj_name(adj));
- return;
- }
-
- if (IS_DEBUG_BFD) {
- char dst_str[INET6_ADDRSTRLEN];
-
- inet_ntop(adj->bfd_session->family, &adj->bfd_session->dst_ip,
- dst_str, sizeof(dst_str));
- zlog_debug("ISIS-BFD: Peer %s on %s changed from %s to %s",
- dst_str, adj->circuit->interface->name,
- bfd_get_status_str(old_status),
- bfd_get_status_str(new_status));
- }
-
- if (old_status != BFD_STATUS_UP
- || new_status != BFD_STATUS_DOWN) {
- return;
- }
-
- adj->circuit->area->bfd_signalled_down = true;
-
- isis_adj_state_change(&adj, ISIS_ADJ_DOWN, "bfd session went down");
-}
-
-static int isis_bfd_interface_dest_update(ZAPI_CALLBACK_ARGS)
-{
- struct interface *ifp;
- struct prefix dst_ip, src_ip;
- int status;
-
- ifp = bfd_get_peer_info(zclient->ibuf, &dst_ip, &src_ip, &status, NULL,
- vrf_id);
- if (!ifp || (dst_ip.family != AF_INET && dst_ip.family != AF_INET6))
- return 0;
-
- if (IS_DEBUG_BFD) {
- char dst_buf[INET6_ADDRSTRLEN];
-
- inet_ntop(dst_ip.family, &dst_ip.u.prefix, dst_buf,
- sizeof(dst_buf));
-
- zlog_debug("ISIS-BFD: Received update for %s on %s: Changed state to %s",
- dst_buf, ifp->name, bfd_get_status_str(status));
- }
-
- struct isis_circuit *circuit = circuit_scan_by_ifp(ifp);
-
- if (!circuit) {
- if (IS_DEBUG_BFD)
- zlog_debug(
- "ISIS-BFD: Ignoring update, could not find circuit");
- return 0;
- }
-
- if (circuit->circ_type == CIRCUIT_T_BROADCAST) {
- for (int level = ISIS_LEVEL1; level <= ISIS_LEVEL2; level++) {
- struct list *adjdb = circuit->u.bc.adjdb[level - 1];
-
- struct listnode *node, *nnode;
- struct isis_adjacency *adj;
-
- for (ALL_LIST_ELEMENTS(adjdb, node, nnode, adj))
- bfd_adj_event(adj, &dst_ip, status);
- }
- } else if (circuit->circ_type == CIRCUIT_T_P2P) {
- if (circuit->u.p2p.neighbor) {
- bfd_adj_event(circuit->u.p2p.neighbor,
- &dst_ip, status);
- }
- }
-
- return 0;
-}
-
-static int isis_bfd_nbr_replay(ZAPI_CALLBACK_ARGS)
+static void adj_bfd_cb(struct bfd_session_params *bsp,
+ const struct bfd_session_status *bss, void *arg)
{
- bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER, vrf_id);
-
- struct listnode *anode;
- struct isis_area *area;
- struct isis *isis = NULL;
-
- isis = isis_lookup_by_vrfid(vrf_id);
-
- if (isis == NULL) {
- zlog_warn(" %s : ISIS routing instance not found", __func__);
- return -1;
- }
-
- if (IS_DEBUG_BFD)
- zlog_debug("ISIS-BFD: Got neighbor replay request, resending neighbors.");
-
- for (ALL_LIST_ELEMENTS_RO(isis->area_list, anode, area)) {
- struct listnode *cnode;
- struct isis_circuit *circuit;
-
- for (ALL_LIST_ELEMENTS_RO(area->circuit_list, cnode, circuit))
- isis_bfd_circuit_cmd(circuit, ZEBRA_BFD_DEST_UPDATE);
- }
+ struct isis_adjacency *adj = arg;
if (IS_DEBUG_BFD)
- zlog_debug("ISIS-BFD: Done with replay.");
-
- return 0;
-}
-
-static void (*orig_zebra_connected)(struct zclient *);
-static void isis_bfd_zebra_connected(struct zclient *zclient)
-{
- if (orig_zebra_connected)
- orig_zebra_connected(zclient);
-
- bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER, VRF_DEFAULT);
-}
-
-static void bfd_debug(int family, union g_addr *dst, union g_addr *src,
- const char *interface, int command)
-{
- if (!(IS_DEBUG_BFD))
- return;
-
- char dst_str[INET6_ADDRSTRLEN];
- char src_str[INET6_ADDRSTRLEN];
-
- inet_ntop(family, dst, dst_str, sizeof(dst_str));
- inet_ntop(family, src, src_str, sizeof(src_str));
-
- const char *command_str;
-
- switch (command) {
- case ZEBRA_BFD_DEST_REGISTER:
- command_str = "Register";
- break;
- case ZEBRA_BFD_DEST_DEREGISTER:
- command_str = "Deregister";
- break;
- case ZEBRA_BFD_DEST_UPDATE:
- command_str = "Update";
- break;
- default:
- command_str = "Unknown-Cmd";
- break;
- }
-
- zlog_debug("ISIS-BFD: %s peer %s on %s (src %s)",
- command_str, dst_str, interface, src_str);
-}
-
-static void bfd_command(int command, struct bfd_info *bfd_info, int family,
- const void *dst_ip, const void *src_ip,
- const char *if_name)
-{
- struct bfd_session_arg args = {};
- size_t addrlen;
-
- args.cbit = 1;
- args.family = family;
- args.vrf_id = VRF_DEFAULT;
- args.command = command;
- args.bfd_info = bfd_info;
- if (args.bfd_info) {
- args.min_rx = bfd_info->required_min_rx;
- args.min_tx = bfd_info->desired_min_tx;
- args.detection_multiplier = bfd_info->detect_mult;
- if (bfd_info->profile[0]) {
- args.profilelen = strlen(bfd_info->profile);
- strlcpy(args.profile, bfd_info->profile,
- sizeof(args.profile));
- }
- }
-
- addrlen = family == AF_INET ? sizeof(struct in_addr)
- : sizeof(struct in6_addr);
- memcpy(&args.dst, dst_ip, addrlen);
- if (src_ip)
- memcpy(&args.src, src_ip, addrlen);
+ zlog_debug(
+ "ISIS-BFD: BFD changed status for adjacency %s old %s new %s",
+ isis_adj_name(adj),
+ bfd_get_status_str(bss->previous_state),
+ bfd_get_status_str(bss->state));
- if (if_name) {
- strlcpy(args.ifname, if_name, sizeof(args.ifname));
- args.ifnamelen = strlen(args.ifname);
+ if (bss->state == BFD_STATUS_DOWN
+ && bss->previous_state == BFD_STATUS_UP) {
+ adj->circuit->area->bfd_signalled_down = true;
+ isis_adj_state_change(&adj, ISIS_ADJ_DOWN,
+ "bfd session went down");
}
-
- zclient_bfd_command(zclient, &args);
}
static void bfd_handle_adj_down(struct isis_adjacency *adj)
{
- if (!adj->bfd_session)
- return;
-
- bfd_debug(adj->bfd_session->family, &adj->bfd_session->dst_ip,
- &adj->bfd_session->src_ip, adj->circuit->interface->name,
- ZEBRA_BFD_DEST_DEREGISTER);
-
- bfd_command(ZEBRA_BFD_DEST_DEREGISTER, NULL, adj->bfd_session->family,
- &adj->bfd_session->dst_ip, &adj->bfd_session->src_ip,
- (adj->circuit->interface) ? adj->circuit->interface->name
- : NULL);
-
- bfd_session_free(&adj->bfd_session);
+ bfd_sess_free(&adj->bfd_session);
}
-static void bfd_handle_adj_up(struct isis_adjacency *adj, int command)
+static void bfd_handle_adj_up(struct isis_adjacency *adj)
{
struct isis_circuit *circuit = adj->circuit;
int family;
@@ -355,10 +68,10 @@ static void bfd_handle_adj_up(struct isis_adjacency *adj, int command)
struct list *local_ips;
struct prefix *local_ip;
- if (!circuit->bfd_info) {
+ if (!circuit->bfd_config.enabled) {
if (IS_DEBUG_BFD)
zlog_debug(
- "ISIS-BFD: skipping BFD initialization on adjacency with %s because there is no bfd_info in the circuit",
+ "ISIS-BFD: skipping BFD initialization on adjacency with %s because BFD is not enabled for the circuit",
isis_adj_name(adj));
goto out;
}
@@ -407,28 +120,20 @@ static void bfd_handle_adj_up(struct isis_adjacency *adj, int command)
} else
goto out;
- if (adj->bfd_session) {
- if (bfd_session_same(adj->bfd_session, family, &src_ip,
- &dst_ip))
- bfd_handle_adj_down(adj);
- }
-
- if (!adj->bfd_session) {
- if (IS_DEBUG_BFD)
- zlog_debug(
- "ISIS-BFD: creating BFD session for adjacency with %s",
- isis_adj_name(adj));
- adj->bfd_session = bfd_session_new(family, &dst_ip, &src_ip);
- }
-
- bfd_debug(adj->bfd_session->family, &adj->bfd_session->dst_ip,
- &adj->bfd_session->src_ip, circuit->interface->name, command);
-
- bfd_command(command, circuit->bfd_info, family,
- &adj->bfd_session->dst_ip, &adj->bfd_session->src_ip,
- (adj->circuit->interface) ? adj->circuit->interface->name
- : NULL);
+ if (adj->bfd_session == NULL)
+ adj->bfd_session = bfd_sess_new(adj_bfd_cb, adj);
+ bfd_sess_set_timers(adj->bfd_session, BFD_DEF_DETECT_MULT,
+ BFD_DEF_MIN_RX, BFD_DEF_MIN_TX);
+ if (family == AF_INET)
+ bfd_sess_set_ipv4_addrs(adj->bfd_session, &src_ip.ipv4,
+ &dst_ip.ipv4);
+ else
+ bfd_sess_set_ipv6_addrs(adj->bfd_session, &src_ip.ipv6,
+ &dst_ip.ipv6);
+ bfd_sess_set_interface(adj->bfd_session, adj->circuit->interface->name);
+ bfd_sess_set_profile(adj->bfd_session, circuit->bfd_config.profile);
+ bfd_sess_install(adj->bfd_session);
return;
out:
bfd_handle_adj_down(adj);
@@ -437,23 +142,21 @@ out:
static int bfd_handle_adj_state_change(struct isis_adjacency *adj)
{
if (adj->adj_state == ISIS_ADJ_UP)
- bfd_handle_adj_up(adj, ZEBRA_BFD_DEST_REGISTER);
+ bfd_handle_adj_up(adj);
else
bfd_handle_adj_down(adj);
return 0;
}
-static void bfd_adj_cmd(struct isis_adjacency *adj, int command)
+static void bfd_adj_cmd(struct isis_adjacency *adj)
{
- if (adj->adj_state == ISIS_ADJ_UP
- && command != ZEBRA_BFD_DEST_DEREGISTER) {
- bfd_handle_adj_up(adj, command);
- } else {
+ if (adj->adj_state == ISIS_ADJ_UP && adj->circuit->bfd_config.enabled)
+ bfd_handle_adj_up(adj);
+ else
bfd_handle_adj_down(adj);
- }
}
-void isis_bfd_circuit_cmd(struct isis_circuit *circuit, int command)
+void isis_bfd_circuit_cmd(struct isis_circuit *circuit)
{
switch (circuit->circ_type) {
case CIRCUIT_T_BROADCAST:
@@ -464,45 +167,18 @@ void isis_bfd_circuit_cmd(struct isis_circuit *circuit, int command)
struct isis_adjacency *adj;
for (ALL_LIST_ELEMENTS_RO(adjdb, node, adj))
- bfd_adj_cmd(adj, command);
+ bfd_adj_cmd(adj);
}
break;
case CIRCUIT_T_P2P:
if (circuit->u.p2p.neighbor)
- bfd_adj_cmd(circuit->u.p2p.neighbor, command);
+ bfd_adj_cmd(circuit->u.p2p.neighbor);
break;
default:
break;
}
}
-void isis_bfd_circuit_param_set(struct isis_circuit *circuit, uint32_t min_rx,
- uint32_t min_tx, uint32_t detect_mult,
- const char *profile, int defaults)
-{
- int command = 0;
-
- bfd_set_param(&circuit->bfd_info, min_rx, min_tx, detect_mult, profile,
- defaults, &command);
-
- if (command)
- isis_bfd_circuit_cmd(circuit, command);
-}
-
-#ifdef FABRICD
-static int bfd_circuit_write_settings(struct isis_circuit *circuit,
- struct vty *vty)
-{
- struct bfd_info *bfd_info = circuit->bfd_info;
-
- if (!bfd_info)
- return 0;
-
- vty_out(vty, " %s bfd\n", PROTO_NAME);
- return 1;
-}
-#endif
-
static int bfd_handle_adj_ip_enabled(struct isis_adjacency *adj, int family)
{
@@ -515,7 +191,7 @@ static int bfd_handle_adj_ip_enabled(struct isis_adjacency *adj, int family)
if (adj->adj_state != ISIS_ADJ_UP)
return 0;
- bfd_handle_adj_up(adj, ZEBRA_BFD_DEST_REGISTER);
+ bfd_handle_adj_up(adj);
return 0;
}
@@ -535,26 +211,17 @@ static int bfd_handle_circuit_add_addr(struct isis_circuit *circuit)
if (adj->adj_state != ISIS_ADJ_UP)
continue;
- bfd_handle_adj_up(adj, ZEBRA_BFD_DEST_REGISTER);
+ bfd_handle_adj_up(adj);
}
return 0;
}
-void isis_bfd_init(void)
+void isis_bfd_init(struct thread_master *tm)
{
- bfd_gbl_init();
-
- orig_zebra_connected = zclient->zebra_connected;
- zclient->zebra_connected = isis_bfd_zebra_connected;
- zclient->interface_bfd_dest_update = isis_bfd_interface_dest_update;
- zclient->bfd_dest_replay = isis_bfd_nbr_replay;
- hook_register(isis_adj_state_change_hook,
- bfd_handle_adj_state_change);
-#ifdef FABRICD
- hook_register(isis_circuit_config_write,
- bfd_circuit_write_settings);
-#endif
+ bfd_protocol_integration_init(zclient, tm);
+
+ hook_register(isis_adj_state_change_hook, bfd_handle_adj_state_change);
hook_register(isis_adj_ip_enabled_hook, bfd_handle_adj_ip_enabled);
hook_register(isis_circuit_add_addr_hook, bfd_handle_circuit_add_addr);
}
diff --git a/isisd/isis_bfd.h b/isisd/isis_bfd.h
index 6ce630688c..1dec7ae20f 100644
--- a/isisd/isis_bfd.h
+++ b/isisd/isis_bfd.h
@@ -20,12 +20,10 @@
#define ISIS_BFD_H
struct isis_circuit;
+struct thread_master;
-void isis_bfd_circuit_cmd(struct isis_circuit *circuit, int command);
-void isis_bfd_circuit_param_set(struct isis_circuit *circuit, uint32_t min_rx,
- uint32_t min_tx, uint32_t detect_mult,
- const char *profile, int defaults);
-void isis_bfd_init(void);
+void isis_bfd_circuit_cmd(struct isis_circuit *circuit);
+void isis_bfd_init(struct thread_master *tm);
#endif
diff --git a/isisd/isis_circuit.c b/isisd/isis_circuit.c
index 7fd9c07ed2..2a197ab2b7 100644
--- a/isisd/isis_circuit.c
+++ b/isisd/isis_circuit.c
@@ -205,6 +205,7 @@ void isis_circuit_del(struct isis_circuit *circuit)
isis_lfa_excluded_ifaces_clear(circuit, ISIS_LEVEL1);
isis_lfa_excluded_ifaces_clear(circuit, ISIS_LEVEL2);
+ XFREE(MTYPE_TMP, circuit->bfd_config.profile);
XFREE(MTYPE_ISIS_CIRCUIT, circuit->tag);
/* and lastly the circuit itself */
@@ -1282,6 +1283,10 @@ static int isis_interface_config_write(struct vty *vty)
circuit->passwd.passwd);
write++;
}
+ if (circuit->bfd_config.enabled) {
+ vty_out(vty, " " PROTO_NAME " bfd\n");
+ write++;
+ }
write += hook_call(isis_circuit_config_write,
circuit, vty);
}
@@ -1301,7 +1306,7 @@ static int isis_interface_config_write(struct vty *vty)
FOR_ALL_INTERFACES (vrf, ifp) {
struct lyd_node *dnode;
- dnode = yang_dnode_get(
+ dnode = yang_dnode_getf(
running_config->dnode,
"/frr-interface:lib/interface[name='%s'][vrf='%s']",
ifp->name, vrf->name);
diff --git a/isisd/isis_circuit.h b/isisd/isis_circuit.h
index 84c3ca3ff2..e7b7a2434d 100644
--- a/isisd/isis_circuit.h
+++ b/isisd/isis_circuit.h
@@ -70,8 +70,6 @@ struct isis_p2p_info {
struct thread *t_send_p2p_hello; /* send P2P IIHs in this thread */
};
-struct bfd_info;
-
struct isis_circuit_arg {
int level;
struct isis_circuit *circuit;
@@ -144,7 +142,10 @@ struct isis_circuit {
#define ISIS_CIRCUIT_FLAPPED_AFTER_SPF 0x01
uint8_t flags;
bool disable_threeway_adj;
- struct bfd_info *bfd_info;
+ struct {
+ bool enabled;
+ char *profile;
+ } bfd_config;
struct ldp_sync_info *ldp_sync_info;
bool lfa_protection[ISIS_LEVELS];
bool rlfa_protection[ISIS_LEVELS];
diff --git a/isisd/isis_cli.c b/isisd/isis_cli.c
index f316e0279c..5aea9f25d9 100644
--- a/isisd/isis_cli.c
+++ b/isisd/isis_cli.c
@@ -110,7 +110,7 @@ DEFPY_YANG(no_router_isis, no_router_isis_cmd,
if (!vrf_name)
vrf_name = VRF_DEFAULT_NAME;
- if (!yang_dnode_exists(
+ if (!yang_dnode_existsf(
vty->candidate_config->dnode,
"/frr-isisd:isis/instance[area-tag='%s'][vrf='%s']", tag,
vrf_name)) {
@@ -277,8 +277,8 @@ DEFPY_YANG(no_ip_router_isis, no_ip_router_isis_cmd,
{
const struct lyd_node *dnode;
- dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-isisd:isis", VTY_CURR_XPATH);
+ dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-isisd:isis", VTY_CURR_XPATH);
if (!dnode)
return CMD_SUCCESS;
@@ -345,8 +345,8 @@ DEFPY_YANG(isis_bfd,
{
const struct lyd_node *dnode;
- dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-isisd:isis", VTY_CURR_XPATH);
+ dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-isisd:isis", VTY_CURR_XPATH);
if (dnode == NULL) {
vty_out(vty, "ISIS is not enabled on this circuit\n");
return CMD_SUCCESS;
@@ -363,7 +363,7 @@ DEFPY_YANG(isis_bfd,
*/
DEFPY_YANG(isis_bfd_profile,
isis_bfd_profile_cmd,
- "[no] isis bfd profile WORD",
+ "[no] isis bfd profile BFDPROF$profile",
NO_STR PROTO_HELP
"Enable BFD support\n"
"Use a pre-configured profile\n"
@@ -371,15 +371,21 @@ DEFPY_YANG(isis_bfd_profile,
{
const struct lyd_node *dnode;
- dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-isisd:isis", VTY_CURR_XPATH);
+ dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-isisd:isis", VTY_CURR_XPATH);
if (dnode == NULL) {
vty_out(vty, "ISIS is not enabled on this circuit\n");
return CMD_SUCCESS;
}
- nb_cli_enqueue_change(vty, "./frr-isisd:isis/bfd-monitoring/profile",
- NB_OP_MODIFY, no ? NULL : profile);
+ if (no)
+ nb_cli_enqueue_change(vty,
+ "./frr-isisd:isis/bfd-monitoring/profile",
+ NB_OP_DESTROY, NULL);
+ else
+ nb_cli_enqueue_change(vty,
+ "./frr-isisd:isis/bfd-monitoring/profile",
+ NB_OP_MODIFY, profile);
return nb_cli_apply_changes(vty, NULL);
}
@@ -387,18 +393,16 @@ DEFPY_YANG(isis_bfd_profile,
void cli_show_ip_isis_bfd_monitoring(struct vty *vty, struct lyd_node *dnode,
bool show_defaults)
{
- const char *profile;
-
- if (!yang_dnode_get_bool(dnode, "./enabled"))
- vty_out(vty, " no");
-
- vty_out(vty, " isis bfd\n");
-
- if (yang_dnode_exists(dnode, "./profile")) {
- profile = yang_dnode_get_string(dnode, "./profile");
- if (profile[0] != '\0')
- vty_out(vty, " isis bfd profile %s\n", profile);
+ if (!yang_dnode_get_bool(dnode, "./enabled")) {
+ if (show_defaults)
+ vty_out(vty, " no isis bfd\n");
+ } else {
+ vty_out(vty, " isis bfd\n");
}
+
+ if (yang_dnode_exists(dnode, "./profile"))
+ vty_out(vty, " isis bfd profile %s\n",
+ yang_dnode_get_string(dnode, "./profile"));
}
/*
@@ -3088,8 +3092,8 @@ DEFPY(isis_mpls_if_ldp_sync, isis_mpls_if_ldp_sync_cmd,
{
const struct lyd_node *dnode;
- dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-isisd:isis", VTY_CURR_XPATH);
+ dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-isisd:isis", VTY_CURR_XPATH);
if (dnode == NULL) {
vty_out(vty, "ISIS is not enabled on this circuit\n");
return CMD_SUCCESS;
@@ -3119,8 +3123,8 @@ DEFPY(isis_mpls_if_ldp_sync_holddown, isis_mpls_if_ldp_sync_holddown_cmd,
{
const struct lyd_node *dnode;
- dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-isisd:isis", VTY_CURR_XPATH);
+ dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-isisd:isis", VTY_CURR_XPATH);
if (dnode == NULL) {
vty_out(vty, "ISIS is not enabled on this circuit\n");
return CMD_SUCCESS;
@@ -3139,8 +3143,8 @@ DEFPY(no_isis_mpls_if_ldp_sync_holddown, no_isis_mpls_if_ldp_sync_holddown_cmd,
{
const struct lyd_node *dnode;
- dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-isisd:isis", VTY_CURR_XPATH);
+ dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-isisd:isis", VTY_CURR_XPATH);
if (dnode == NULL) {
vty_out(vty, "ISIS is not enabled on this circuit\n");
return CMD_SUCCESS;
diff --git a/isisd/isis_main.c b/isisd/isis_main.c
index c03cedb187..c93bbb83af 100644
--- a/isisd/isis_main.c
+++ b/isisd/isis_main.c
@@ -269,7 +269,7 @@ int main(int argc, char **argv, char **envp)
isis_global_instance_create(VRF_DEFAULT_NAME);
isis_zebra_init(master, instance);
- isis_bfd_init();
+ isis_bfd_init(master);
isis_ldp_sync_init();
fabricd_init();
diff --git a/isisd/isis_nb_config.c b/isisd/isis_nb_config.c
index 5ca2329dd3..68a4581a46 100644
--- a/isisd/isis_nb_config.c
+++ b/isisd/isis_nb_config.c
@@ -2509,10 +2509,10 @@ int lib_interface_isis_area_tag_modify(struct nb_cb_modify_args *args)
if (args->event == NB_EV_VALIDATE) {
/* libyang doesn't like relative paths across module boundaries
*/
- ifname = yang_dnode_get_string(args->dnode->parent->parent,
- "./name");
- vrfname = yang_dnode_get_string(args->dnode->parent->parent,
- "./vrf");
+ ifname = yang_dnode_get_string(
+ lyd_parent(lyd_parent(args->dnode)), "./name");
+ vrfname = yang_dnode_get_string(
+ lyd_parent(lyd_parent(args->dnode)), "./vrf");
vrf = vrf_lookup_by_name(vrfname);
assert(vrf);
ifp = if_lookup_by_name(ifname, vrf->vrf_id);
@@ -2549,10 +2549,10 @@ int lib_interface_isis_circuit_type_modify(struct nb_cb_modify_args *args)
case NB_EV_VALIDATE:
/* libyang doesn't like relative paths across module boundaries
*/
- ifname = yang_dnode_get_string(args->dnode->parent->parent,
- "./name");
- vrfname = yang_dnode_get_string(args->dnode->parent->parent,
- "./vrf");
+ ifname = yang_dnode_get_string(
+ lyd_parent(lyd_parent(args->dnode)), "./name");
+ vrfname = yang_dnode_get_string(
+ lyd_parent(lyd_parent(args->dnode)), "./vrf");
vrf = vrf_lookup_by_name(vrfname);
assert(vrf);
ifp = if_lookup_by_name(ifname, vrf->vrf_id);
@@ -2626,23 +2626,9 @@ void lib_interface_isis_bfd_monitoring_apply_finish(
struct nb_cb_apply_finish_args *args)
{
struct isis_circuit *circuit;
- bool enabled;
- const char *profile = NULL;
circuit = nb_running_get_entry(args->dnode, NULL, true);
- enabled = yang_dnode_get_bool(args->dnode, "./enabled");
-
- if (yang_dnode_exists(args->dnode, "./profile"))
- profile = yang_dnode_get_string(args->dnode, "./profile");
-
- if (enabled) {
- isis_bfd_circuit_param_set(circuit, BFD_DEF_MIN_RX,
- BFD_DEF_MIN_TX, BFD_DEF_DETECT_MULT,
- profile, true);
- } else {
- isis_bfd_circuit_cmd(circuit, ZEBRA_BFD_DEST_DEREGISTER);
- bfd_info_free(&circuit->bfd_info);
- }
+ isis_bfd_circuit_cmd(circuit);
}
/*
@@ -2651,7 +2637,14 @@ void lib_interface_isis_bfd_monitoring_apply_finish(
int lib_interface_isis_bfd_monitoring_enabled_modify(
struct nb_cb_modify_args *args)
{
- /* Everything done in apply_finish */
+ struct isis_circuit *circuit;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ circuit = nb_running_get_entry(args->dnode, NULL, true);
+ circuit->bfd_config.enabled = yang_dnode_get_bool(args->dnode, NULL);
+
return NB_OK;
}
@@ -2661,14 +2654,30 @@ int lib_interface_isis_bfd_monitoring_enabled_modify(
int lib_interface_isis_bfd_monitoring_profile_modify(
struct nb_cb_modify_args *args)
{
- /* Everything done in apply_finish */
+ struct isis_circuit *circuit;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ circuit = nb_running_get_entry(args->dnode, NULL, true);
+ XFREE(MTYPE_TMP, circuit->bfd_config.profile);
+ circuit->bfd_config.profile =
+ XSTRDUP(MTYPE_TMP, yang_dnode_get_string(args->dnode, NULL));
+
return NB_OK;
}
int lib_interface_isis_bfd_monitoring_profile_destroy(
struct nb_cb_destroy_args *args)
{
- /* Everything done in apply_finish */
+ struct isis_circuit *circuit;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ circuit = nb_running_get_entry(args->dnode, NULL, true);
+ XFREE(MTYPE_TMP, circuit->bfd_config.profile);
+
return NB_OK;
}
@@ -3175,8 +3184,9 @@ int lib_interface_isis_mpls_ldp_sync_modify(struct nb_cb_modify_args *args)
switch (args->event) {
case NB_EV_VALIDATE:
- ifp = nb_running_get_entry(args->dnode->parent->parent->parent,
- NULL, false);
+ ifp = nb_running_get_entry(
+ lyd_parent(lyd_parent(lyd_parent(args->dnode))), NULL,
+ false);
if (ifp == NULL)
return NB_ERR_VALIDATION;
if (if_is_loopback(ifp)) {
@@ -3230,8 +3240,10 @@ int lib_interface_isis_mpls_holddown_modify(struct nb_cb_modify_args *args)
switch (args->event) {
case NB_EV_VALIDATE:
- ifp = nb_running_get_entry(args->dnode->parent->parent->parent,
- NULL, false);
+
+ ifp = nb_running_get_entry(
+ lyd_parent(lyd_parent(lyd_parent(args->dnode))), NULL,
+ false);
if (ifp == NULL)
return NB_ERR_VALIDATION;
if (if_is_loopback(ifp)) {
@@ -3274,8 +3286,9 @@ int lib_interface_isis_mpls_holddown_destroy(struct nb_cb_destroy_args *args)
switch (args->event) {
case NB_EV_VALIDATE:
- ifp = nb_running_get_entry(args->dnode->parent->parent->parent,
- NULL, false);
+ ifp = nb_running_get_entry(
+ lyd_parent(lyd_parent(lyd_parent(args->dnode))), NULL,
+ false);
if (ifp == NULL)
return NB_ERR_VALIDATION;
if (if_is_loopback(ifp)) {
diff --git a/isisd/isis_vty_fabricd.c b/isisd/isis_vty_fabricd.c
index 7020b6efeb..a19fcc240f 100644
--- a/isisd/isis_vty_fabricd.c
+++ b/isisd/isis_vty_fabricd.c
@@ -319,13 +319,11 @@ DEFUN (isis_bfd,
if (!circuit)
return CMD_ERR_NO_MATCH;
- if (circuit->bfd_info
- && CHECK_FLAG(circuit->bfd_info->flags, BFD_FLAG_PARAM_CFG)) {
+ if (circuit->bfd_config.enabled)
return CMD_SUCCESS;
- }
- isis_bfd_circuit_param_set(circuit, BFD_DEF_MIN_RX, BFD_DEF_MIN_TX,
- BFD_DEF_DETECT_MULT, NULL, true);
+ circuit->bfd_config.enabled = true;
+ isis_bfd_circuit_cmd(circuit);
return CMD_SUCCESS;
}
@@ -343,11 +341,12 @@ DEFUN (no_isis_bfd,
if (!circuit)
return CMD_ERR_NO_MATCH;
- if (!circuit->bfd_info)
+ if (!circuit->bfd_config.enabled)
return CMD_SUCCESS;
- isis_bfd_circuit_cmd(circuit, ZEBRA_BFD_DEST_DEREGISTER);
- bfd_info_free(&circuit->bfd_info);
+ circuit->bfd_config.enabled = false;
+ isis_bfd_circuit_cmd(circuit);
+
return CMD_SUCCESS;
}
diff --git a/isisd/isis_zebra.c b/isisd/isis_zebra.c
index 90959eb98c..4bd42ead86 100644
--- a/isisd/isis_zebra.c
+++ b/isisd/isis_zebra.c
@@ -37,6 +37,7 @@
#include "nexthop.h"
#include "vrf.h"
#include "libfrr.h"
+#include "bfd.h"
#include "isisd/isis_constants.h"
#include "isisd/isis_common.h"
@@ -730,6 +731,7 @@ static void isis_zebra_connected(struct zclient *zclient)
zclient_register_opaque(zclient, LDP_RLFA_LABELS);
zclient_register_opaque(zclient, LDP_IGP_SYNC_IF_STATE_UPDATE);
zclient_register_opaque(zclient, LDP_IGP_SYNC_ANNOUNCE_UPDATE);
+ bfd_client_sendmsg(zclient, ZEBRA_BFD_CLIENT_REGISTER, VRF_DEFAULT);
}
/*
diff --git a/isisd/isisd.c b/isisd/isisd.c
index 37416fc1a4..cb3734bd41 100644
--- a/isisd/isisd.c
+++ b/isisd/isisd.c
@@ -41,6 +41,7 @@
#include "vrf.h"
#include "spf_backoff.h"
#include "lib/northbound_cli.h"
+#include "bfd.h"
#include "isisd/isis_constants.h"
#include "isisd/isis_common.h"
@@ -664,6 +665,8 @@ void isis_terminate()
struct isis *isis;
struct listnode *node, *nnode;
+ bfd_protocol_integration_set_shutdown(true);
+
if (listcount(im->isis) == 0)
return;
diff --git a/lib/bfd.c b/lib/bfd.c
index 0974c26809..4989188e4e 100644
--- a/lib/bfd.c
+++ b/lib/bfd.c
@@ -35,190 +35,88 @@
DEFINE_MTYPE_STATIC(LIB, BFD_INFO, "BFD info");
-static int bfd_debug = 0;
-static struct bfd_gbl bfd_gbl;
-
-/*
- * bfd_gbl_init - Initialize the BFD global structure
- */
-void bfd_gbl_init(void)
-{
- memset(&bfd_gbl, 0, sizeof(struct bfd_gbl));
-}
-
-/*
- * bfd_gbl_exit - Called when daemon exits
- */
-void bfd_gbl_exit(void)
-{
- SET_FLAG(bfd_gbl.flags, BFD_GBL_FLAG_IN_SHUTDOWN);
-}
-
-/*
- * bfd_info_create - Allocate the BFD information
- */
-struct bfd_info *bfd_info_create(void)
-{
- struct bfd_info *bfd_info;
-
- bfd_info = XCALLOC(MTYPE_BFD_INFO, sizeof(struct bfd_info));
- assert(bfd_info);
-
- bfd_info->status = BFD_STATUS_UNKNOWN;
- bfd_info->type = BFD_TYPE_NOT_CONFIGURED;
- bfd_info->last_update = 0;
- return bfd_info;
-}
-
-/*
- * bfd_info_free - Free the BFD information.
+/**
+ * BFD protocol integration configuration.
*/
-void bfd_info_free(struct bfd_info **bfd_info)
-{
- XFREE(MTYPE_BFD_INFO, *bfd_info);
-}
-/*
- * bfd_validate_param - Validate the BFD paramter information.
- */
-int bfd_validate_param(struct vty *vty, const char *dm_str, const char *rx_str,
- const char *tx_str, uint8_t *dm_val, uint32_t *rx_val,
- uint32_t *tx_val)
-{
- *dm_val = strtoul(dm_str, NULL, 10);
- *rx_val = strtoul(rx_str, NULL, 10);
- *tx_val = strtoul(tx_str, NULL, 10);
- return CMD_SUCCESS;
-}
+/** Events definitions. */
+enum bfd_session_event {
+ /** Remove the BFD session configuration. */
+ BSE_UNINSTALL,
+ /** Install the BFD session configuration. */
+ BSE_INSTALL,
+};
-/*
- * bfd_set_param - Set the configured BFD paramter values
+/**
+ * Data structure to do the necessary tricks to hide the BFD protocol
+ * integration internals.
*/
-void bfd_set_param(struct bfd_info **bfd_info, uint32_t min_rx, uint32_t min_tx,
- uint8_t detect_mult, const char *profile, int defaults,
- int *command)
-{
- if (!*bfd_info) {
- *bfd_info = bfd_info_create();
- *command = ZEBRA_BFD_DEST_REGISTER;
- } else {
- if (((*bfd_info)->required_min_rx != min_rx)
- || ((*bfd_info)->desired_min_tx != min_tx)
- || ((*bfd_info)->detect_mult != detect_mult)
- || ((*bfd_info)->profile[0] == 0 && profile)
- || ((*bfd_info)->profile[0] && profile == NULL)
- || (profile && (*bfd_info)->profile[0]
- && strcmp((*bfd_info)->profile, profile)))
- *command = ZEBRA_BFD_DEST_UPDATE;
- }
-
- if (*command) {
- (*bfd_info)->required_min_rx = min_rx;
- (*bfd_info)->desired_min_tx = min_tx;
- (*bfd_info)->detect_mult = detect_mult;
- if (profile)
- strlcpy((*bfd_info)->profile, profile,
- BFD_PROFILE_NAME_LEN);
- else
- (*bfd_info)->profile[0] = '\0';
- }
-
- if (!defaults)
- SET_FLAG((*bfd_info)->flags, BFD_FLAG_PARAM_CFG);
- else
- UNSET_FLAG((*bfd_info)->flags, BFD_FLAG_PARAM_CFG);
-}
+struct bfd_session_params {
+ /** Contains the session parameters and more. */
+ struct bfd_session_arg args;
+ /** Contains the session state. */
+ struct bfd_session_status bss;
+ /** Protocol implementation status update callback. */
+ bsp_status_update updatecb;
+ /** Protocol implementation custom data pointer. */
+ void *arg;
-/*
- * bfd_peer_sendmsg - Format and send a peer register/Unregister
- * command to Zebra to be forwarded to BFD
- *
- * DEPRECATED: use zclient_bfd_command instead
- */
-void bfd_peer_sendmsg(struct zclient *zclient, struct bfd_info *bfd_info,
- int family, void *dst_ip, void *src_ip, char *if_name,
- int ttl, int multihop, int cbit, int command,
- int set_flag, vrf_id_t vrf_id)
-{
- struct bfd_session_arg args = {};
- size_t addrlen;
+ /**
+ * Next event.
+ *
+ * This variable controls what action to execute when the command batch
+ * finishes. Normally we'd use `thread_add_event` value, however since
+ * that function is going to be called multiple times and the value
+ * might be different we'll use this variable to keep track of it.
+ */
+ enum bfd_session_event lastev;
+ /**
+ * BFD session configuration event.
+ *
+ * Multiple actions might be asked during a command batch (either via
+ * configuration load or northbound batch), so we'll use this to
+ * install/uninstall the BFD session parameters only once.
+ */
+ struct thread *installev;
- /* Individual reg/dereg messages are suppressed during shutdown. */
- if (CHECK_FLAG(bfd_gbl.flags, BFD_GBL_FLAG_IN_SHUTDOWN)) {
- if (bfd_debug)
- zlog_debug(
- "%s: Suppressing BFD peer reg/dereg messages",
- __func__);
- return;
- }
+ /** BFD session installation state. */
+ bool installed;
- /* Check socket. */
- if (!zclient || zclient->sock < 0) {
- if (bfd_debug)
- zlog_debug(
- "%s: Can't send BFD peer register, Zebra client not established",
- __func__);
- return;
- }
+ /** Global BFD paramaters list. */
+ TAILQ_ENTRY(bfd_session_params) entry;
+};
- /* Fill in all arguments. */
- args.ttl = ttl;
- args.cbit = cbit;
- args.family = family;
- args.mhop = multihop;
- args.vrf_id = vrf_id;
- args.command = command;
- args.set_flag = set_flag;
- args.bfd_info = bfd_info;
- if (args.bfd_info) {
- args.min_rx = bfd_info->required_min_rx;
- args.min_tx = bfd_info->desired_min_tx;
- args.detection_multiplier = bfd_info->detect_mult;
- if (bfd_info->profile[0]) {
- args.profilelen = strlen(bfd_info->profile);
- strlcpy(args.profile, bfd_info->profile,
- sizeof(args.profile));
- }
- }
+struct bfd_sessions_global {
+ /**
+ * Global BFD session parameters list for (re)installation and update
+ * without code duplication among daemons.
+ */
+ TAILQ_HEAD(bsplist, bfd_session_params) bsplist;
- addrlen = family == AF_INET ? sizeof(struct in_addr)
- : sizeof(struct in6_addr);
- memcpy(&args.dst, dst_ip, addrlen);
- if (src_ip)
- memcpy(&args.src, src_ip, addrlen);
+ /** Pointer to FRR's event manager. */
+ struct thread_master *tm;
+ /** Pointer to zebra client data structure. */
+ struct zclient *zc;
- if (if_name)
- args.ifnamelen =
- strlcpy(args.ifname, if_name, sizeof(args.ifname));
+ /** Debugging state. */
+ bool debugging;
+ /** Is shutting down? */
+ bool shutting_down;
+};
- zclient_bfd_command(zclient, &args);
-}
+/** Global configuration variable. */
+static struct bfd_sessions_global bsglobal;
-/*
- * bfd_get_command_dbg_str - Convert command to a debug string.
- */
-const char *bfd_get_command_dbg_str(int command)
-{
- switch (command) {
- case ZEBRA_BFD_DEST_REGISTER:
- return "Register";
- case ZEBRA_BFD_DEST_DEREGISTER:
- return "Deregister";
- case ZEBRA_BFD_DEST_UPDATE:
- return "Update";
- default:
- return "Unknown";
- }
-}
+/** Global empty address for IPv4/IPv6. */
+static const struct in6_addr i6a_zero;
/*
* bfd_get_peer_info - Extract the Peer information for which the BFD session
* went down from the message sent from Zebra to clients.
*/
-struct interface *bfd_get_peer_info(struct stream *s, struct prefix *dp,
- struct prefix *sp, int *status,
- int *remote_cbit,
- vrf_id_t vrf_id)
+static struct interface *bfd_get_peer_info(struct stream *s, struct prefix *dp,
+ struct prefix *sp, int *status,
+ int *remote_cbit, vrf_id_t vrf_id)
{
unsigned int ifindex;
struct interface *ifp = NULL;
@@ -243,7 +141,7 @@ struct interface *bfd_get_peer_info(struct stream *s, struct prefix *dp,
if (ifindex != 0) {
ifp = if_lookup_by_index(ifindex, vrf_id);
if (ifp == NULL) {
- if (bfd_debug)
+ if (bsglobal.debugging)
zlog_debug(
"zebra_interface_bfd_read: Can't find interface by ifindex: %d ",
ifindex);
@@ -322,96 +220,6 @@ static void bfd_last_update(time_t last_update, char *buf, size_t len)
}
/*
- * bfd_show_param - Show the BFD parameter information.
- */
-void bfd_show_param(struct vty *vty, struct bfd_info *bfd_info, int bfd_tag,
- int extra_space, bool use_json, json_object *json_obj)
-{
- json_object *json_bfd = NULL;
-
- if (!bfd_info)
- return;
-
- if (use_json) {
- if (bfd_tag)
- json_bfd = json_object_new_object();
- else
- json_bfd = json_obj;
-
- json_object_int_add(json_bfd, "detectMultiplier",
- bfd_info->detect_mult);
- json_object_int_add(json_bfd, "rxMinInterval",
- bfd_info->required_min_rx);
- json_object_int_add(json_bfd, "txMinInterval",
- bfd_info->desired_min_tx);
- if (bfd_tag)
- json_object_object_add(json_obj, "peerBfdInfo",
- json_bfd);
- } else {
- vty_out(vty,
- " %s%sDetect Multiplier: %d, Min Rx interval: %d, Min Tx interval: %d\n",
- (extra_space) ? " " : "", (bfd_tag) ? "BFD: " : " ",
- bfd_info->detect_mult, bfd_info->required_min_rx,
- bfd_info->desired_min_tx);
- }
-}
-
-/*
- * bfd_show_status - Show the BFD status information.
- */
-static void bfd_show_status(struct vty *vty, struct bfd_info *bfd_info,
- int bfd_tag, int extra_space, bool use_json,
- json_object *json_bfd)
-{
- char time_buf[32];
-
- if (!bfd_info)
- return;
-
- bfd_last_update(bfd_info->last_update, time_buf, 32);
- if (use_json) {
- json_object_string_add(json_bfd, "status",
- bfd_get_status_str(bfd_info->status));
- json_object_string_add(json_bfd, "lastUpdate", time_buf);
- } else {
- vty_out(vty, " %s%sStatus: %s, Last update: %s\n",
- (extra_space) ? " " : "", (bfd_tag) ? "BFD: " : " ",
- bfd_get_status_str(bfd_info->status), time_buf);
- }
-}
-
-/*
- * bfd_show_info - Show the BFD information.
- */
-void bfd_show_info(struct vty *vty, struct bfd_info *bfd_info, int multihop,
- int extra_space, bool use_json, json_object *json_obj)
-{
- json_object *json_bfd = NULL;
-
- if (!bfd_info)
- return;
-
- if (use_json) {
- json_bfd = json_object_new_object();
- if (multihop)
- json_object_string_add(json_bfd, "type", "multi hop");
- else
- json_object_string_add(json_bfd, "type", "single hop");
- } else {
- vty_out(vty, " %sBFD: Type: %s\n", (extra_space) ? " " : "",
- (multihop) ? "multi hop" : "single hop");
- }
-
- bfd_show_param(vty, bfd_info, 0, extra_space, use_json, json_bfd);
- bfd_show_status(vty, bfd_info, 0, extra_space, use_json, json_bfd);
-
- if (use_json)
- json_object_object_add(json_obj, "peerBfdInfo", json_bfd);
- else
- vty_out(vty, "\n");
-}
-
-/*
* bfd_client_sendmsg - Format and send a client register
* command to Zebra to be forwarded to BFD
*/
@@ -423,7 +231,7 @@ void bfd_client_sendmsg(struct zclient *zclient, int command,
/* Check socket. */
if (!zclient || zclient->sock < 0) {
- if (bfd_debug)
+ if (bsglobal.debugging)
zlog_debug(
"%s: Can't send BFD client register, Zebra client not established",
__func__);
@@ -441,7 +249,7 @@ void bfd_client_sendmsg(struct zclient *zclient, int command,
ret = zclient_send_message(zclient);
if (ret == ZCLIENT_SEND_FAILURE) {
- if (bfd_debug)
+ if (bsglobal.debugging)
zlog_debug(
"bfd_client_sendmsg %ld: zclient_send_message() failed",
(long)getpid());
@@ -457,8 +265,8 @@ int zclient_bfd_command(struct zclient *zc, struct bfd_session_arg *args)
size_t addrlen;
/* Individual reg/dereg messages are suppressed during shutdown. */
- if (CHECK_FLAG(bfd_gbl.flags, BFD_GBL_FLAG_IN_SHUTDOWN)) {
- if (bfd_debug)
+ if (bsglobal.shutting_down) {
+ if (bsglobal.debugging)
zlog_debug(
"%s: Suppressing BFD peer reg/dereg messages",
__func__);
@@ -467,7 +275,7 @@ int zclient_bfd_command(struct zclient *zc, struct bfd_session_arg *args)
/* Check socket. */
if (!zc || zc->sock < 0) {
- if (bfd_debug)
+ if (bsglobal.debugging)
zlog_debug("%s: zclient unavailable", __func__);
return -1;
}
@@ -557,97 +365,14 @@ int zclient_bfd_command(struct zclient *zc, struct bfd_session_arg *args)
/* Send message to zebra. */
if (zclient_send_message(zc) == ZCLIENT_SEND_FAILURE) {
- if (bfd_debug)
+ if (bsglobal.debugging)
zlog_debug("%s: zclient_send_message failed", __func__);
return -1;
}
- /* Write registration indicator into data structure. */
- if (args->bfd_info && args->set_flag) {
- if (args->command == ZEBRA_BFD_DEST_REGISTER)
- SET_FLAG(args->bfd_info->flags, BFD_FLAG_BFD_REG);
- else if (args->command == ZEBRA_BFD_DEST_DEREGISTER)
- UNSET_FLAG(args->bfd_info->flags, BFD_FLAG_BFD_REG);
- }
-
return 0;
}
-/**
- * BFD protocol integration configuration.
- */
-
-/** Events definitions. */
-enum bfd_session_event {
- /** Remove the BFD session configuration. */
- BSE_UNINSTALL,
- /** Install the BFD session configuration. */
- BSE_INSTALL,
-};
-
-/**
- * Data structure to do the necessary tricks to hide the BFD protocol
- * integration internals.
- */
-struct bfd_session_params {
- /** Contains the session parameters and more. */
- struct bfd_session_arg args;
- /** Contains the session state. */
- struct bfd_session_status bss;
- /** Protocol implementation status update callback. */
- bsp_status_update updatecb;
- /** Protocol implementation custom data pointer. */
- void *arg;
-
- /**
- * Next event.
- *
- * This variable controls what action to execute when the command batch
- * finishes. Normally we'd use `thread_add_event` value, however since
- * that function is going to be called multiple times and the value
- * might be different we'll use this variable to keep track of it.
- */
- enum bfd_session_event lastev;
- /**
- * BFD session configuration event.
- *
- * Multiple actions might be asked during a command batch (either via
- * configuration load or northbound batch), so we'll use this to
- * install/uninstall the BFD session parameters only once.
- */
- struct thread *installev;
-
- /** BFD session installation state. */
- bool installed;
-
- /** Global BFD paramaters list. */
- TAILQ_ENTRY(bfd_session_params) entry;
-};
-
-struct bfd_sessions_global {
- /**
- * Global BFD session parameters list for (re)installation and update
- * without code duplication among daemons.
- */
- TAILQ_HEAD(bsplist, bfd_session_params) bsplist;
-
- /** Pointer to FRR's event manager. */
- struct thread_master *tm;
- /** Pointer to zebra client data structure. */
- struct zclient *zc;
-
- /** Debugging state. */
- bool debugging;
- /** Is shutting down? */
- bool shutting_down;
-};
-
-/** Global configuration variable. */
-static struct bfd_sessions_global bsglobal;
-
-/** Global empty address for IPv4/IPv6. */
-static const struct in6_addr i6a_zero;
-
struct bfd_session_params *bfd_sess_new(bsp_status_update updatecb, void *arg)
{
struct bfd_session_params *bsp;
diff --git a/lib/bfd.h b/lib/bfd.h
index 113f167d3b..6c0d1c177e 100644
--- a/lib/bfd.h
+++ b/lib/bfd.h
@@ -40,17 +40,6 @@ extern "C" {
#define BFD_MIN_DETECT_MULT 2
#define BFD_MAX_DETECT_MULT 255
-#define BFD_GBL_FLAG_IN_SHUTDOWN (1 << 0) /* The daemon in shutdown */
-struct bfd_gbl {
- uint16_t flags;
-};
-
-#define BFD_FLAG_PARAM_CFG (1 << 0) /* parameters have been configured */
-#define BFD_FLAG_BFD_REG (1 << 1) /* Peer registered with BFD */
-#define BFD_FLAG_BFD_TYPE_MULTIHOP (1 << 2) /* Peer registered with BFD as multihop */
-#define BFD_FLAG_BFD_CBIT_ON (1 << 3) /* Peer registered with CBIT set to on */
-#define BFD_FLAG_BFD_CHECK_CONTROLPLANE (1 << 4) /* BFD and controlplane daemon are linked */
-
#define BFD_STATUS_UNKNOWN (1 << 0) /* BFD session status never received */
#define BFD_STATUS_DOWN (1 << 1) /* BFD session status is down */
#define BFD_STATUS_UP (1 << 2) /* BFD session status is up */
@@ -58,72 +47,11 @@ struct bfd_gbl {
#define BFD_PROFILE_NAME_LEN 64
-#define BFD_SET_CLIENT_STATUS(current_status, new_status) \
- do { \
- (current_status) = \
- (((new_status) == BFD_STATUS_ADMIN_DOWN) ? \
- BFD_STATUS_DOWN : (new_status));\
- } while (0)
-
-enum bfd_sess_type {
- BFD_TYPE_NOT_CONFIGURED,
- BFD_TYPE_SINGLEHOP,
- BFD_TYPE_MULTIHOP
-};
-
-struct bfd_info {
- uint16_t flags;
- uint8_t detect_mult;
- uint32_t desired_min_tx;
- uint32_t required_min_rx;
- time_t last_update;
- uint8_t status;
- enum bfd_sess_type type;
- char profile[BFD_PROFILE_NAME_LEN];
-};
-
-extern struct bfd_info *bfd_info_create(void);
-
-extern void bfd_info_free(struct bfd_info **bfd_info);
-
-extern int bfd_validate_param(struct vty *vty, const char *dm_str,
- const char *rx_str, const char *tx_str,
- uint8_t *dm_val, uint32_t *rx_val,
- uint32_t *tx_val);
-
-extern void bfd_set_param(struct bfd_info **bfd_info, uint32_t min_rx,
- uint32_t min_tx, uint8_t detect_mult,
- const char *profile, int defaults, int *command);
-extern void bfd_peer_sendmsg(struct zclient *zclient, struct bfd_info *bfd_info,
- int family, void *dst_ip, void *src_ip,
- char *if_name, int ttl, int multihop, int cbit,
- int command, int set_flag, vrf_id_t vrf_id);
-
-extern const char *bfd_get_command_dbg_str(int command);
-
-extern struct interface *bfd_get_peer_info(struct stream *s, struct prefix *dp,
- struct prefix *sp, int *status,
- int *remote_cbit,
- vrf_id_t vrf_id);
-
const char *bfd_get_status_str(int status);
-extern void bfd_show_param(struct vty *vty, struct bfd_info *bfd_info,
- int bfd_tag, int extra_space, bool use_json,
- json_object *json_obj);
-
-extern void bfd_show_info(struct vty *vty, struct bfd_info *bfd_info,
- int multihop, int extra_space, bool use_json,
- json_object *json_obj);
-
extern void bfd_client_sendmsg(struct zclient *zclient, int command,
vrf_id_t vrf_id);
-extern void bfd_gbl_init(void);
-
-extern void bfd_gbl_exit(void);
-
-
/*
* BFD new API.
*/
@@ -519,12 +447,6 @@ struct bfd_session_arg {
uint32_t min_tx;
/** Detection multiplier. */
uint32_t detection_multiplier;
-
- /** BFD client information output. */
- struct bfd_info *bfd_info;
-
- /** Write registration indicator. */
- uint8_t set_flag;
};
/**
diff --git a/lib/grammar_sandbox_main.c b/lib/grammar_sandbox_main.c
index 2066e4c96d..6469b49262 100644
--- a/lib/grammar_sandbox_main.c
+++ b/lib/grammar_sandbox_main.c
@@ -54,7 +54,6 @@ int main(int argc, char **argv)
vty_init(master, true);
lib_cmd_init();
- yang_init(true);
nb_init(master, NULL, 0, false);
vty_stdio(vty_do_exit);
diff --git a/lib/if.c b/lib/if.c
index f8a693d8f3..de2af435f6 100644
--- a/lib/if.c
+++ b/lib/if.c
@@ -266,16 +266,16 @@ void if_update_to_new_vrf(struct interface *ifp, vrf_id_t vrf_id)
char oldpath[XPATH_MAXLEN];
char newpath[XPATH_MAXLEN];
- if_dnode = yang_dnode_get(
+ if_dnode = yang_dnode_getf(
running_config->dnode,
"/frr-interface:lib/interface[name='%s'][vrf='%s']/vrf",
ifp->name, old_vrf->name);
if (if_dnode) {
- yang_dnode_get_path(if_dnode->parent, oldpath,
+ yang_dnode_get_path(lyd_parent(if_dnode), oldpath,
sizeof(oldpath));
yang_dnode_change_leaf(if_dnode, vrf->name);
- yang_dnode_get_path(if_dnode->parent, newpath,
+ yang_dnode_get_path(lyd_parent(if_dnode), newpath,
sizeof(newpath));
nb_running_move_tree(oldpath, newpath);
running_config->version++;
diff --git a/lib/if.h b/lib/if.h
index f425ba8bce..0d689fe14b 100644
--- a/lib/if.h
+++ b/lib/if.h
@@ -393,6 +393,7 @@ struct connected {
#define ZEBRA_IFC_REAL (1 << 0)
#define ZEBRA_IFC_CONFIGURED (1 << 1)
#define ZEBRA_IFC_QUEUED (1 << 2)
+#define ZEBRA_IFC_DOWN (1 << 3)
/*
The ZEBRA_IFC_REAL flag should be set if and only if this address
exists in the kernel and is actually usable. (A case where it exists
@@ -406,6 +407,8 @@ struct connected {
in the kernel. It may and should be set although the address might
not be
usable yet. (compare with ZEBRA_IFC_REAL)
+ The ZEBRA_IFC_DOWN flag is used to record that an address is
+ present, but down/unavailable.
*/
/* Flags for connected address. */
diff --git a/lib/libfrr.c b/lib/libfrr.c
index 970e82c064..0817182f7a 100644
--- a/lib/libfrr.c
+++ b/lib/libfrr.c
@@ -765,16 +765,14 @@ struct thread_master *frr_init(void)
log_ref_vty_init();
lib_error_init();
- yang_init(true);
-
- debug_init_cli();
-
nb_init(master, di->yang_modules, di->n_yang_modules, true);
if (nb_db_init() != NB_OK)
flog_warn(EC_LIB_NB_DATABASE,
"%s: failed to initialize northbound database",
__func__);
+ debug_init_cli();
+
return master;
}
diff --git a/lib/nexthop.c b/lib/nexthop.c
index 8439398149..0ac6c0ae1b 100644
--- a/lib/nexthop.c
+++ b/lib/nexthop.c
@@ -62,7 +62,8 @@ static int _nexthop_labels_cmp(const struct nexthop *nh1,
if (nhl1->num_labels < nhl2->num_labels)
return -1;
- return memcmp(nhl1->label, nhl2->label, nhl1->num_labels);
+ return memcmp(nhl1->label, nhl2->label,
+ (nhl1->num_labels * sizeof(mpls_label_t)));
}
int nexthop_g_addr_cmp(enum nexthop_types_t type, const union g_addr *addr1,
@@ -203,6 +204,105 @@ int nexthop_cmp(const struct nexthop *next1, const struct nexthop *next2)
}
/*
+ * More-limited comparison function used to detect duplicate
+ * nexthops. This is used in places where we don't need the full
+ * comparison of 'nexthop_cmp()'.
+ */
+int nexthop_cmp_basic(const struct nexthop *nh1,
+ const struct nexthop *nh2)
+{
+ int ret = 0;
+ const struct mpls_label_stack *nhl1 = NULL;
+ const struct mpls_label_stack *nhl2 = NULL;
+
+ if (nh1 == NULL && nh2 == NULL)
+ return 0;
+
+ if (nh1 && !nh2)
+ return 1;
+
+ if (!nh1 && nh2)
+ return -1;
+
+ if (nh1->vrf_id < nh2->vrf_id)
+ return -1;
+
+ if (nh1->vrf_id > nh2->vrf_id)
+ return 1;
+
+ if (nh1->type < nh2->type)
+ return -1;
+
+ if (nh1->type > nh2->type)
+ return 1;
+
+ if (nh1->weight < nh2->weight)
+ return -1;
+
+ if (nh1->weight > nh2->weight)
+ return 1;
+
+ switch (nh1->type) {
+ case NEXTHOP_TYPE_IPV4:
+ case NEXTHOP_TYPE_IPV6:
+ ret = nexthop_g_addr_cmp(nh1->type, &nh1->gate, &nh2->gate);
+ if (ret != 0)
+ return ret;
+ break;
+ case NEXTHOP_TYPE_IPV4_IFINDEX:
+ case NEXTHOP_TYPE_IPV6_IFINDEX:
+ ret = nexthop_g_addr_cmp(nh1->type, &nh1->gate, &nh2->gate);
+ if (ret != 0)
+ return ret;
+ /* Intentional Fall-Through */
+ case NEXTHOP_TYPE_IFINDEX:
+ if (nh1->ifindex < nh2->ifindex)
+ return -1;
+
+ if (nh1->ifindex > nh2->ifindex)
+ return 1;
+ break;
+ case NEXTHOP_TYPE_BLACKHOLE:
+ if (nh1->bh_type < nh2->bh_type)
+ return -1;
+
+ if (nh1->bh_type > nh2->bh_type)
+ return 1;
+ break;
+ }
+
+ /* Compare source addr */
+ ret = nexthop_g_addr_cmp(nh1->type, &nh1->src, &nh2->src);
+ if (ret != 0)
+ goto done;
+
+ nhl1 = nh1->nh_label;
+ nhl2 = nh2->nh_label;
+
+ /* No labels is a match */
+ if (!nhl1 && !nhl2)
+ return 0;
+
+ if (nhl1 && !nhl2)
+ return 1;
+
+ if (nhl2 && !nhl1)
+ return -1;
+
+ if (nhl1->num_labels > nhl2->num_labels)
+ return 1;
+
+ if (nhl1->num_labels < nhl2->num_labels)
+ return -1;
+
+ ret = memcmp(nhl1->label, nhl2->label,
+ (nhl1->num_labels * sizeof(mpls_label_t)));
+
+done:
+ return ret;
+}
+
+/*
* nexthop_type_to_str
*/
const char *nexthop_type_to_str(enum nexthop_types_t nh_type)
diff --git a/lib/nexthop.h b/lib/nexthop.h
index f1ad195cf4..d6ea83cf06 100644
--- a/lib/nexthop.h
+++ b/lib/nexthop.h
@@ -207,6 +207,11 @@ extern int nexthop_g_addr_cmp(enum nexthop_types_t type,
const union g_addr *addr1,
const union g_addr *addr2);
+/* More-limited comparison function used to detect duplicate nexthops.
+ * Returns -1, 0, 1
+ */
+int nexthop_cmp_basic(const struct nexthop *nh1, const struct nexthop *nh2);
+
extern const char *nexthop_type_to_str(enum nexthop_types_t nh_type);
extern bool nexthop_labels_match(const struct nexthop *nh1,
const struct nexthop *nh2);
diff --git a/lib/northbound.c b/lib/northbound.c
index 34ad5dbfa9..3634fed04f 100644
--- a/lib/northbound.c
+++ b/lib/northbound.c
@@ -83,14 +83,14 @@ static int nb_transaction_process(enum nb_event event,
char *errmsg, size_t errmsg_len);
static void nb_transaction_apply_finish(struct nb_transaction *transaction,
char *errmsg, size_t errmsg_len);
-static int nb_oper_data_iter_node(const struct lys_node *snode,
+static int nb_oper_data_iter_node(const struct lysc_node *snode,
const char *xpath, const void *list_entry,
const struct yang_list_keys *list_keys,
struct yang_translator *translator,
bool first, uint32_t flags,
nb_oper_data_cb cb, void *arg);
-static int nb_node_check_config_only(const struct lys_node *snode, void *arg)
+static int nb_node_check_config_only(const struct lysc_node *snode, void *arg)
{
bool *config_only = arg;
@@ -102,10 +102,10 @@ static int nb_node_check_config_only(const struct lys_node *snode, void *arg)
return YANG_ITER_CONTINUE;
}
-static int nb_node_new_cb(const struct lys_node *snode, void *arg)
+static int nb_node_new_cb(const struct lysc_node *snode, void *arg)
{
struct nb_node *nb_node;
- struct lys_node *sparent, *sparent_list;
+ struct lysc_node *sparent, *sparent_list;
nb_node = XCALLOC(MTYPE_NB_NODE, sizeof(*nb_node));
yang_snode_get_path(snode, YANG_PATH_DATA, nb_node->xpath,
@@ -129,10 +129,7 @@ static int nb_node_new_cb(const struct lys_node *snode, void *arg)
SET_FLAG(nb_node->flags, F_NB_NODE_CONFIG_ONLY);
}
if (CHECK_FLAG(snode->nodetype, LYS_LIST)) {
- struct lys_node_list *slist;
-
- slist = (struct lys_node_list *)snode;
- if (slist->keys_size == 0)
+ if (yang_snode_num_keys(snode) == 0)
SET_FLAG(nb_node->flags, F_NB_NODE_KEYLESS_LIST);
}
@@ -142,18 +139,18 @@ static int nb_node_new_cb(const struct lys_node *snode, void *arg)
*/
nb_node->snode = snode;
assert(snode->priv == NULL);
- lys_set_private(snode, nb_node);
+ ((struct lysc_node *)snode)->priv = nb_node;
return YANG_ITER_CONTINUE;
}
-static int nb_node_del_cb(const struct lys_node *snode, void *arg)
+static int nb_node_del_cb(const struct lysc_node *snode, void *arg)
{
struct nb_node *nb_node;
nb_node = snode->priv;
if (nb_node) {
- lys_set_private(snode, NULL);
+ ((struct lysc_node *)snode)->priv = NULL;
XFREE(MTYPE_NB_NODE, nb_node);
}
@@ -170,15 +167,15 @@ void nb_nodes_delete(void)
yang_snodes_iterate(NULL, nb_node_del_cb, 0, NULL);
}
-struct nb_node *nb_node_find(const char *xpath)
+struct nb_node *nb_node_find(const char *path)
{
- const struct lys_node *snode;
+ const struct lysc_node *snode;
/*
- * Use libyang to find the schema node associated to the xpath and get
+ * Use libyang to find the schema node associated to the path and get
* the northbound node from there (snode private pointer).
*/
- snode = ly_ctx_get_node(ly_native_ctx, NULL, xpath, 0);
+ snode = lys_find_path(ly_native_ctx, NULL, path, 0);
if (!snode)
return NULL;
@@ -288,7 +285,7 @@ static unsigned int nb_node_validate_priority(const struct nb_node *nb_node)
return 0;
}
-static int nb_node_validate(const struct lys_node *snode, void *arg)
+static int nb_node_validate(const struct lysc_node *snode, void *arg)
{
struct nb_node *nb_node = snode->priv;
unsigned int *errors = arg;
@@ -339,7 +336,7 @@ int nb_config_merge(struct nb_config *config_dst, struct nb_config *config_src,
{
int ret;
- ret = lyd_merge(config_dst->dnode, config_src->dnode, LYD_OPT_EXPLICIT);
+ ret = lyd_merge_tree(&config_dst->dnode, config_src->dnode, 0);
if (ret != 0)
flog_warn(EC_LIB_LIBYANG, "%s: lyd_merge() failed", __func__);
@@ -451,7 +448,7 @@ static void nb_config_diff_created(const struct lyd_node *dnode, uint32_t *seq,
switch (dnode->schema->nodetype) {
case LYS_LEAF:
case LYS_LEAFLIST:
- if (lyd_wd_default((struct lyd_node_leaf_list *)dnode))
+ if (lyd_is_default(dnode))
break;
if (nb_operation_is_valid(NB_OP_CREATE, dnode->schema))
@@ -470,7 +467,7 @@ static void nb_config_diff_created(const struct lyd_node *dnode, uint32_t *seq,
dnode);
/* Process child nodes recursively. */
- LY_TREE_FOR (dnode->child, child) {
+ LY_LIST_FOR (lyd_child(dnode), child) {
nb_config_diff_created(child, seq, changes);
}
break;
@@ -497,52 +494,142 @@ static void nb_config_diff_deleted(const struct lyd_node *dnode, uint32_t *seq,
* do is to call the "destroy" callbacks of their child nodes
* when applicable (i.e. optional nodes).
*/
- LY_TREE_FOR (dnode->child, child) {
+ LY_LIST_FOR (lyd_child(dnode), child) {
nb_config_diff_deleted(child, seq, changes);
}
}
}
+static int nb_lyd_diff_get_op(const struct lyd_node *dnode)
+{
+ const struct lyd_meta *meta;
+ LY_LIST_FOR (dnode->meta, meta) {
+ if (strcmp(meta->name, "operation")
+ || strcmp(meta->annotation->module->name, "yang"))
+ continue;
+ return lyd_get_meta_value(meta)[0];
+ }
+ return 'n';
+}
+
+static inline void nb_config_diff_dnode_log_path(const char *context,
+ const char *path,
+ const struct lyd_node *dnode)
+{
+ if (dnode->schema->nodetype & LYD_NODE_TERM)
+ zlog_debug("nb_config_diff: %s: %s: %s", context, path,
+ lyd_get_value(dnode));
+ else
+ zlog_debug("nb_config_diff: %s: %s", context, path);
+}
+
+static inline void nb_config_diff_dnode_log(const char *context,
+ const struct lyd_node *dnode)
+{
+ if (!dnode) {
+ zlog_debug("nb_config_diff: %s: NULL", context);
+ return;
+ }
+
+ char *path = lyd_path(dnode, LYD_PATH_STD, NULL, 0);
+ nb_config_diff_dnode_log_path(context, path, dnode);
+ free(path);
+}
+
/* Calculate the delta between two different configurations. */
static void nb_config_diff(const struct nb_config *config1,
const struct nb_config *config2,
struct nb_config_cbs *changes)
{
- struct lyd_difflist *diff;
- uint32_t seq = 0;
+ struct lyd_node *diff = NULL;
+ const struct lyd_node *root, *dnode;
+ struct lyd_node *target;
+ int op;
+ LY_ERR err;
+ char *path;
+
+#if 0 /* Useful (but noisy) when debugging diff code, and for improving later \
+ */
+ if (DEBUG_MODE_CHECK(&nb_dbg_cbs_config, DEBUG_MODE_ALL)) {
+ LY_LIST_FOR(config1->dnode, root) {
+ LYD_TREE_DFS_BEGIN(root, dnode) {
+ nb_config_diff_dnode_log("from", dnode);
+ LYD_TREE_DFS_END(root, dnode);
+ }
+ }
+ LY_LIST_FOR(config2->dnode, root) {
+ LYD_TREE_DFS_BEGIN(root, dnode) {
+ nb_config_diff_dnode_log("to", dnode);
+ LYD_TREE_DFS_END(root, dnode);
+ }
+ }
+ }
+#endif
- diff = lyd_diff(config1->dnode, config2->dnode,
- LYD_DIFFOPT_WITHDEFAULTS);
- assert(diff);
+ err = lyd_diff_siblings(config1->dnode, config2->dnode,
+ LYD_DIFF_DEFAULTS, &diff);
+ assert(!err);
- for (int i = 0; diff->type[i] != LYD_DIFF_END; i++) {
- LYD_DIFFTYPE type;
- struct lyd_node *dnode;
+ if (diff && DEBUG_MODE_CHECK(&nb_dbg_cbs_config, DEBUG_MODE_ALL))
+ nb_config_diff_dnode_log("iterating diff", diff);
- type = diff->type[i];
+ uint32_t seq = 0;
+ LY_LIST_FOR (diff, root) {
+ LYD_TREE_DFS_BEGIN (root, dnode) {
+ op = nb_lyd_diff_get_op(dnode);
+
+ path = lyd_path(dnode, LYD_PATH_STD, NULL, 0);
+
+#if 0 /* Useful (but noisy) when debugging diff code, and for improving later \
+ */
+ if (DEBUG_MODE_CHECK(&nb_dbg_cbs_config, DEBUG_MODE_ALL)) {
+ char context[80];
+ snprintf(context, sizeof(context),
+ "iterating diff: oper: %c seq: %u", op, seq);
+ nb_config_diff_dnode_log_path(context, path, dnode);
+ }
+#endif
+ switch (op) {
+ case 'c': /* create */
+ /*
+ * This is rather inefficient, but when we use
+ * dnode from the diff instead of the
+ * candidate config node we get failures when
+ * looking up default values, etc, based on
+ * the diff tree.
+ */
+ target = yang_dnode_get(config2->dnode, path);
+ nb_config_diff_created(target, &seq, changes);
+
+ /* Skip rest of sub-tree, move to next sibling
+ */
+ LYD_TREE_DFS_continue = 1;
+ break;
+ case 'd': /* delete */
+ target = yang_dnode_get(config1->dnode, path);
+ nb_config_diff_deleted(target, &seq, changes);
- switch (type) {
- case LYD_DIFF_CREATED:
- dnode = diff->second[i];
- nb_config_diff_created(dnode, &seq, changes);
- break;
- case LYD_DIFF_DELETED:
- dnode = diff->first[i];
- nb_config_diff_deleted(dnode, &seq, changes);
- break;
- case LYD_DIFF_CHANGED:
- dnode = diff->second[i];
- nb_config_diff_add_change(changes, NB_OP_MODIFY, &seq,
- dnode);
- break;
- case LYD_DIFF_MOVEDAFTER1:
- case LYD_DIFF_MOVEDAFTER2:
- default:
- continue;
+ /* Skip rest of sub-tree, move to next sibling
+ */
+ LYD_TREE_DFS_continue = 1;
+ break;
+ case 'r': /* replace */
+ /* either moving an entry or changing a value */
+ target = yang_dnode_get(config2->dnode, path);
+ assert(target);
+ nb_config_diff_add_change(changes, NB_OP_MODIFY,
+ &seq, target);
+ break;
+ case 'n': /* none */
+ default:
+ break;
+ }
+ free(path);
+ LYD_TREE_DFS_END(root, dnode);
}
}
- lyd_free_diff(diff);
+ lyd_free_tree(diff);
}
int nb_candidate_edit(struct nb_config *candidate,
@@ -554,6 +641,7 @@ int nb_candidate_edit(struct nb_config *candidate,
struct lyd_node *dnode, *dep_dnode;
char xpath_edit[XPATH_MAXLEN];
char dep_xpath[XPATH_MAXLEN];
+ LY_ERR err;
/* Use special notation for leaf-lists (RFC 6020, section 9.13.5). */
if (nb_node->snode->nodetype == LYS_LEAFLIST)
@@ -565,11 +653,15 @@ int nb_candidate_edit(struct nb_config *candidate,
switch (operation) {
case NB_OP_CREATE:
case NB_OP_MODIFY:
- ly_errno = 0;
- dnode = lyd_new_path(candidate->dnode, ly_native_ctx,
- xpath_edit, (void *)data->value, 0,
- LYD_PATH_OPT_UPDATE);
- if (dnode) {
+ err = lyd_new_path(candidate->dnode, ly_native_ctx, xpath_edit,
+ (void *)data->value, LYD_NEW_PATH_UPDATE,
+ &dnode);
+ if (err) {
+ flog_warn(EC_LIB_LIBYANG,
+ "%s: lyd_new_path(%s) failed: %d", __func__,
+ xpath_edit, err);
+ return NB_ERR;
+ } else if (dnode) {
/*
* create dependency
*
@@ -581,22 +673,18 @@ int nb_candidate_edit(struct nb_config *candidate,
nb_node->dep_cbs.get_dependency_xpath(
dnode, dep_xpath);
- ly_errno = 0;
- dep_dnode = lyd_new_path(candidate->dnode,
- ly_native_ctx,
- dep_xpath, NULL, 0,
- LYD_PATH_OPT_UPDATE);
- if (!dep_dnode && ly_errno) {
- flog_warn(EC_LIB_LIBYANG,
- "%s: lyd_new_path(%s) failed",
- __func__, dep_xpath);
+ err = lyd_new_path(candidate->dnode,
+ ly_native_ctx, dep_xpath,
+ NULL, LYD_NEW_PATH_UPDATE,
+ &dep_dnode);
+ if (err) {
+ flog_warn(
+ EC_LIB_LIBYANG,
+ "%s: lyd_new_path(%s) failed: %d",
+ __func__, dep_xpath, err);
return NB_ERR;
}
}
- } else if (ly_errno) {
- flog_warn(EC_LIB_LIBYANG, "%s: lyd_new_path(%s) failed",
- __func__, xpath_edit);
- return NB_ERR;
}
break;
case NB_OP_DESTROY:
@@ -613,9 +701,9 @@ int nb_candidate_edit(struct nb_config *candidate,
dep_dnode = yang_dnode_get(candidate->dnode, dep_xpath);
if (dep_dnode)
- lyd_free(dep_dnode);
+ lyd_free_tree(dep_dnode);
}
- lyd_free(dnode);
+ lyd_free_tree(dnode);
break;
case NB_OP_MOVE:
/* TODO: update configuration. */
@@ -660,9 +748,8 @@ int nb_candidate_update(struct nb_config *candidate)
static int nb_candidate_validate_yang(struct nb_config *candidate, char *errmsg,
size_t errmsg_len)
{
- if (lyd_validate(&candidate->dnode,
- LYD_OPT_STRICT | LYD_OPT_CONFIG | LYD_OPT_WHENAUTODEL,
- ly_native_ctx)
+ if (lyd_validate_all(&candidate->dnode, ly_native_ctx,
+ LYD_VALIDATE_NO_STATE, NULL)
!= 0) {
yang_print_errors(ly_native_ctx, errmsg, errmsg_len);
return NB_ERR_VALIDATION;
@@ -678,12 +765,12 @@ static int nb_candidate_validate_code(struct nb_context *context,
char *errmsg, size_t errmsg_len)
{
struct nb_config_cb *cb;
- struct lyd_node *root, *next, *child;
+ struct lyd_node *root, *child;
int ret;
/* First validate the candidate as a whole. */
- LY_TREE_FOR (candidate->dnode, root) {
- LY_TREE_DFS_BEGIN (root, next, child) {
+ LY_LIST_FOR (candidate->dnode, root) {
+ LYD_TREE_DFS_BEGIN (root, child) {
struct nb_node *nb_node;
nb_node = child->schema->priv;
@@ -696,7 +783,7 @@ static int nb_candidate_validate_code(struct nb_context *context,
return NB_ERR_VALIDATION;
next:
- LY_TREE_DFS_END(root, next, child);
+ LYD_TREE_DFS_END(root, child);
}
}
@@ -1439,7 +1526,7 @@ static void nb_transaction_apply_finish(struct nb_transaction *transaction,
if (change->cb.operation == NB_OP_DESTROY) {
char xpath[XPATH_MAXLEN];
- dnode = dnode->parent;
+ dnode = lyd_parent(dnode);
if (!dnode)
break;
@@ -1470,7 +1557,7 @@ static void nb_transaction_apply_finish(struct nb_transaction *transaction,
nb_apply_finish_cb_new(&cbs, nb_node, dnode);
next:
- dnode = dnode->parent;
+ dnode = lyd_parent(dnode);
}
}
@@ -1487,16 +1574,16 @@ static void nb_transaction_apply_finish(struct nb_transaction *transaction,
}
}
-static int nb_oper_data_iter_children(const struct lys_node *snode,
+static int nb_oper_data_iter_children(const struct lysc_node *snode,
const char *xpath, const void *list_entry,
const struct yang_list_keys *list_keys,
struct yang_translator *translator,
bool first, uint32_t flags,
nb_oper_data_cb cb, void *arg)
{
- struct lys_node *child;
+ const struct lysc_node *child;
- LY_TREE_FOR (snode->child, child) {
+ LY_LIST_FOR (lysc_node_child(snode), child) {
int ret;
ret = nb_oper_data_iter_node(child, xpath, list_entry,
@@ -1521,7 +1608,7 @@ static int nb_oper_data_iter_leaf(const struct nb_node *nb_node,
return NB_OK;
/* Ignore list keys. */
- if (lys_is_key((struct lys_node_leaf *)nb_node->snode, NULL))
+ if (lysc_is_key(nb_node->snode))
return NB_OK;
data = nb_callback_get_elem(nb_node, xpath, list_entry);
@@ -1605,7 +1692,7 @@ static int nb_oper_data_iter_list(const struct nb_node *nb_node,
struct yang_translator *translator,
uint32_t flags, nb_oper_data_cb cb, void *arg)
{
- struct lys_node_list *slist = (struct lys_node_list *)nb_node->snode;
+ const struct lysc_node *snode = nb_node->snode;
const void *list_entry = NULL;
uint32_t position = 1;
@@ -1614,6 +1701,7 @@ static int nb_oper_data_iter_list(const struct nb_node *nb_node,
/* Iterate over all list entries. */
do {
+ const struct lysc_node_leaf *skey;
struct yang_list_keys list_keys;
char xpath[XPATH_MAXLEN * 2];
int ret;
@@ -1638,12 +1726,16 @@ static int nb_oper_data_iter_list(const struct nb_node *nb_node,
/* Build XPath of the list entry. */
strlcpy(xpath, xpath_list, sizeof(xpath));
- for (unsigned int i = 0; i < list_keys.num; i++) {
+ unsigned int i = 0;
+ LY_FOR_KEYS (snode, skey) {
+ assert(i < list_keys.num);
snprintf(xpath + strlen(xpath),
sizeof(xpath) - strlen(xpath),
- "[%s='%s']", slist->keys[i]->name,
+ "[%s='%s']", skey->name,
list_keys.key[i]);
+ i++;
}
+ assert(i == list_keys.num);
} else {
/*
* Keyless list - build XPath using a positional index.
@@ -1664,7 +1756,7 @@ static int nb_oper_data_iter_list(const struct nb_node *nb_node,
return NB_OK;
}
-static int nb_oper_data_iter_node(const struct lys_node *snode,
+static int nb_oper_data_iter_node(const struct lysc_node *snode,
const char *xpath_parent,
const void *list_entry,
const struct yang_list_keys *list_keys,
@@ -1683,18 +1775,16 @@ static int nb_oper_data_iter_node(const struct lys_node *snode,
/* Update XPath. */
strlcpy(xpath, xpath_parent, sizeof(xpath));
if (!first && snode->nodetype != LYS_USES) {
- struct lys_node *parent;
+ struct lysc_node *parent;
/* Get the real parent. */
parent = snode->parent;
- while (parent && parent->nodetype == LYS_USES)
- parent = parent->parent;
/*
* When necessary, include the namespace of the augmenting
* module.
*/
- if (parent && parent->nodetype == LYS_AUGMENT)
+ if (parent && parent->module != snode->module)
snprintf(xpath + strlen(xpath),
sizeof(xpath) - strlen(xpath), "/%s:%s",
snode->module->name, snode->name);
@@ -1769,12 +1859,14 @@ int nb_oper_data_iterate(const char *xpath, struct yang_translator *translator,
* Create a data tree from the XPath so that we can parse the keys of
* all YANG lists (if any).
*/
- ly_errno = 0;
- dnode = lyd_new_path(NULL, ly_native_ctx, xpath, NULL, 0,
- LYD_PATH_OPT_UPDATE | LYD_PATH_OPT_NOPARENTRET);
- if (!dnode) {
- flog_warn(EC_LIB_LIBYANG, "%s: lyd_new_path() failed",
- __func__);
+
+ LY_ERR err = lyd_new_path(NULL, ly_native_ctx, xpath, NULL,
+ LYD_NEW_PATH_UPDATE, &dnode);
+ if (err || !dnode) {
+ const char *errmsg =
+ err ? ly_errmsg(ly_native_ctx) : "node not found";
+ flog_warn(EC_LIB_LIBYANG, "%s: lyd_new_path() failed %s",
+ __func__, errmsg);
return NB_ERR;
}
@@ -1782,8 +1874,8 @@ int nb_oper_data_iterate(const char *xpath, struct yang_translator *translator,
* Create a linked list to sort the data nodes starting from the root.
*/
list_dnodes = list_new();
- for (dn = dnode; dn; dn = dn->parent) {
- if (dn->schema->nodetype != LYS_LIST || !dn->child)
+ for (dn = dnode; dn; dn = lyd_parent(dn)) {
+ if (dn->schema->nodetype != LYS_LIST || !lyd_child(dn))
continue;
listnode_add_head(list_dnodes, dn);
}
@@ -1798,18 +1890,16 @@ int nb_oper_data_iterate(const char *xpath, struct yang_translator *translator,
/* Obtain the list entry keys. */
memset(&list_keys, 0, sizeof(list_keys));
- LY_TREE_FOR (dn->child, child) {
- if (!lys_is_key((struct lys_node_leaf *)child->schema,
- NULL))
- continue;
+ LY_LIST_FOR (lyd_child(dn), child) {
+ if (!lysc_is_key(child->schema))
+ break;
strlcpy(list_keys.key[n],
yang_dnode_get_string(child, NULL),
sizeof(list_keys.key[n]));
n++;
}
list_keys.num = n;
- if (list_keys.num
- != ((struct lys_node_list *)dn->schema)->keys_size) {
+ if (list_keys.num != yang_snode_num_keys(dn->schema)) {
list_delete(&list_dnodes);
yang_dnode_free(dnode);
return NB_ERR_NOT_FOUND;
@@ -1837,7 +1927,7 @@ int nb_oper_data_iterate(const char *xpath, struct yang_translator *translator,
}
/* If a list entry was given, iterate over that list entry only. */
- if (dnode->schema->nodetype == LYS_LIST && dnode->child)
+ if (dnode->schema->nodetype == LYS_LIST && lyd_child(dnode))
ret = nb_oper_data_iter_children(
nb_node->snode, xpath, list_entry, &list_keys,
translator, true, flags, cb, arg);
@@ -1853,11 +1943,11 @@ int nb_oper_data_iterate(const char *xpath, struct yang_translator *translator,
}
bool nb_operation_is_valid(enum nb_operation operation,
- const struct lys_node *snode)
+ const struct lysc_node *snode)
{
struct nb_node *nb_node = snode->priv;
- struct lys_node_container *scontainer;
- struct lys_node_leaf *sleaf;
+ struct lysc_node_container *scontainer;
+ struct lysc_node_leaf *sleaf;
switch (operation) {
case NB_OP_CREATE:
@@ -1866,13 +1956,13 @@ bool nb_operation_is_valid(enum nb_operation operation,
switch (snode->nodetype) {
case LYS_LEAF:
- sleaf = (struct lys_node_leaf *)snode;
- if (sleaf->type.base != LY_TYPE_EMPTY)
+ sleaf = (struct lysc_node_leaf *)snode;
+ if (sleaf->type->basetype != LY_TYPE_EMPTY)
return false;
break;
case LYS_CONTAINER:
- scontainer = (struct lys_node_container *)snode;
- if (!scontainer->presence)
+ scontainer = (struct lysc_node_container *)snode;
+ if (!CHECK_FLAG(scontainer->flags, LYS_PRESENCE))
return false;
break;
case LYS_LIST:
@@ -1888,12 +1978,12 @@ bool nb_operation_is_valid(enum nb_operation operation,
switch (snode->nodetype) {
case LYS_LEAF:
- sleaf = (struct lys_node_leaf *)snode;
- if (sleaf->type.base == LY_TYPE_EMPTY)
+ sleaf = (struct lysc_node_leaf *)snode;
+ if (sleaf->type->basetype == LY_TYPE_EMPTY)
return false;
/* List keys can't be modified. */
- if (lys_is_key(sleaf, NULL))
+ if (lysc_is_key(sleaf))
return false;
break;
default:
@@ -1906,10 +1996,10 @@ bool nb_operation_is_valid(enum nb_operation operation,
switch (snode->nodetype) {
case LYS_LEAF:
- sleaf = (struct lys_node_leaf *)snode;
+ sleaf = (struct lysc_node_leaf *)snode;
/* List keys can't be deleted. */
- if (lys_is_key(sleaf, NULL))
+ if (lysc_is_key(sleaf))
return false;
/*
@@ -1925,8 +2015,8 @@ bool nb_operation_is_valid(enum nb_operation operation,
return false;
break;
case LYS_CONTAINER:
- scontainer = (struct lys_node_container *)snode;
- if (!scontainer->presence)
+ scontainer = (struct lysc_node_container *)snode;
+ if (!CHECK_FLAG(scontainer->flags, LYS_PRESENCE))
return false;
break;
case LYS_LIST:
@@ -1943,7 +2033,7 @@ bool nb_operation_is_valid(enum nb_operation operation,
switch (snode->nodetype) {
case LYS_LIST:
case LYS_LEAFLIST:
- if (!CHECK_FLAG(snode->flags, LYS_USERORDERED))
+ if (!CHECK_FLAG(snode->flags, LYS_ORDBY_USER))
return false;
break;
default:
@@ -1964,8 +2054,8 @@ bool nb_operation_is_valid(enum nb_operation operation,
case LYS_LEAFLIST:
break;
case LYS_CONTAINER:
- scontainer = (struct lys_node_container *)snode;
- if (!scontainer->presence)
+ scontainer = (struct lysc_node_container *)snode;
+ if (!CHECK_FLAG(scontainer->flags, LYS_PRESENCE))
return false;
break;
default:
@@ -2114,7 +2204,7 @@ static void *nb_running_unset_entry_helper(const struct lyd_node *dnode)
/* Unset user pointers from the child nodes. */
if (CHECK_FLAG(dnode->schema->nodetype, LYS_LIST | LYS_CONTAINER)) {
- LY_TREE_FOR (dnode->child, child) {
+ LY_LIST_FOR (lyd_child(dnode), child) {
(void)nb_running_unset_entry_helper(child);
}
}
@@ -2156,7 +2246,7 @@ static void *nb_running_get_entry_worker(const struct lyd_node *dnode,
rec_flag = rec_search;
- dnode = dnode->parent;
+ dnode = lyd_parent(dnode);
}
if (!abort_if_not_found)
@@ -2312,27 +2402,42 @@ void nb_validate_callbacks(void)
}
}
-void nb_load_module(const struct frr_yang_module_info *module_info)
-{
- struct yang_module *module;
-
- DEBUGD(&nb_dbg_events, "northbound: loading %s.yang",
- module_info->name);
-
- module = yang_module_load(module_info->name);
- yang_snodes_iterate(module->info, nb_node_new_cb, 0, NULL);
- nb_load_callbacks(module_info);
-}
void nb_init(struct thread_master *tm,
const struct frr_yang_module_info *const modules[],
size_t nmodules, bool db_enabled)
{
+ struct yang_module *loaded[nmodules], **loadedp = loaded;
+ bool explicit_compile;
+
+ /*
+ * Currently using this explicit compile feature in libyang2 leads to
+ * incorrect behavior in FRR. The functionality suppresses the compiling
+ * of modules until they have all been loaded into the context. This
+ * avoids multiple recompiles of the same modules as they are
+ * imported/augmented etc.
+ */
+ explicit_compile = false;
+
nb_db_enabled = db_enabled;
+ yang_init(true, explicit_compile);
+
/* Load YANG modules and their corresponding northbound callbacks. */
- for (size_t i = 0; i < nmodules; i++)
- nb_load_module(modules[i]);
+ for (size_t i = 0; i < nmodules; i++) {
+ DEBUGD(&nb_dbg_events, "northbound: loading %s.yang",
+ modules[i]->name);
+ *loadedp++ = yang_module_load(modules[i]->name);
+ }
+
+ if (explicit_compile)
+ yang_init_loading_complete();
+
+ /* Initialize the compiled nodes with northbound data */
+ for (size_t i = 0; i < nmodules; i++) {
+ yang_snodes_iterate(loaded[i]->info, nb_node_new_cb, 0, NULL);
+ nb_load_callbacks(modules[i]);
+ }
/* Validate northbound callbacks. */
nb_validate_callbacks();
diff --git a/lib/northbound.h b/lib/northbound.h
index 417ecc81ea..7ccab5cad5 100644
--- a/lib/northbound.h
+++ b/lib/northbound.h
@@ -537,7 +537,7 @@ struct nb_dependency_callbacks {
*/
struct nb_node {
/* Back pointer to the libyang schema node. */
- const struct lys_node *snode;
+ const struct lysc_node *snode;
/* Data path of this YANG node. */
char xpath[XPATH_MAXLEN];
@@ -685,7 +685,7 @@ struct nb_transaction {
};
/* Callback function used by nb_oper_data_iterate(). */
-typedef int (*nb_oper_data_cb)(const struct lys_node *snode,
+typedef int (*nb_oper_data_cb)(const struct lysc_node *snode,
struct yang_translator *translator,
struct yang_data *data, void *arg);
@@ -1114,7 +1114,7 @@ extern int nb_oper_data_iterate(const char *xpath,
* true if the operation is valid, false otherwise.
*/
extern bool nb_operation_is_valid(enum nb_operation operation,
- const struct lys_node *snode);
+ const struct lysc_node *snode);
/*
* Send a YANG notification. This is a no-op unless the 'nb_notification_send'
@@ -1285,15 +1285,6 @@ extern const char *nb_client_name(enum nb_client client);
void nb_validate_callbacks(void);
/*
- * Load a YANG module with its corresponding northbound callbacks.
- *
- * module_info
- * Pointer to structure containing the module name and its northbound
- * callbacks.
- */
-void nb_load_module(const struct frr_yang_module_info *module_info);
-
-/*
* Initialize the northbound layer. Should be called only once during the
* daemon initialization process.
*
diff --git a/lib/northbound_cli.c b/lib/northbound_cli.c
index 81e30bce49..d291a1f24d 100644
--- a/lib/northbound_cli.c
+++ b/lib/northbound_cli.c
@@ -448,6 +448,7 @@ static int nb_cli_candidate_load_file(struct vty *vty,
struct ly_ctx *ly_ctx;
int ly_format;
char buf[BUFSIZ];
+ LY_ERR err;
switch (format) {
case NB_CFG_FMT_CMDS:
@@ -465,8 +466,10 @@ static int nb_cli_candidate_load_file(struct vty *vty,
ly_format = (format == NB_CFG_FMT_JSON) ? LYD_JSON : LYD_XML;
ly_ctx = translator ? translator->ly_ctx : ly_native_ctx;
- dnode = lyd_parse_path(ly_ctx, path, ly_format, LYD_OPT_EDIT);
- if (!dnode) {
+ err = lyd_parse_data_path(ly_ctx, path, ly_format,
+ LYD_PARSE_ONLY | LYD_PARSE_NO_STATE,
+ 0, &dnode);
+ if (err || !dnode) {
flog_warn(EC_LIB_LIBYANG, "%s: lyd_parse_path() failed",
__func__);
vty_out(vty, "%% Failed to load configuration:\n\n");
@@ -536,8 +539,6 @@ void nb_cli_show_config_prepare(struct nb_config *config, bool with_defaults)
if (config->dnode == NULL)
return;
- lyd_schema_sort(config->dnode, 1);
-
/*
* Call lyd_validate() only to create default child nodes, ignoring
* any possible validation error. This doesn't need to be done when
@@ -545,9 +546,8 @@ void nb_cli_show_config_prepare(struct nb_config *config, bool with_defaults)
* validated.
*/
if (config != running_config)
- (void)lyd_validate(&config->dnode,
- LYD_OPT_CONFIG | LYD_OPT_WHENAUTODEL,
- ly_native_ctx);
+ (void)lyd_validate_all(&config->dnode, ly_native_ctx,
+ LYD_VALIDATE_NO_STATE, NULL);
}
static void show_dnode_children_cmds(struct vty *vty, struct lyd_node *root,
@@ -559,7 +559,7 @@ static void show_dnode_children_cmds(struct vty *vty, struct lyd_node *root,
struct list *sort_list;
void *data;
- LY_TREE_FOR (root->child, child) {
+ LY_LIST_FOR (lyd_child(root), child) {
nb_node = child->schema->priv;
/*
@@ -634,8 +634,9 @@ static void nb_cli_show_config_cmds(struct vty *vty, struct nb_config *config,
vty_out(vty, "frr version %s\n", FRR_VER_SHORT);
vty_out(vty, "frr defaults %s\n", frr_defaults_profile());
- LY_TREE_FOR (config->dnode, root)
+ LY_LIST_FOR (config->dnode, root) {
nb_cli_show_dnode_cmds(vty, root, with_defaults);
+ }
vty_out(vty, "!\n");
vty_out(vty, "end\n");
@@ -660,11 +661,11 @@ static int nb_cli_show_config_libyang(struct vty *vty, LYD_FORMAT format,
return CMD_WARNING;
}
- SET_FLAG(options, LYP_FORMAT | LYP_WITHSIBLINGS);
+ SET_FLAG(options, LYD_PRINT_WITHSIBLINGS);
if (with_defaults)
- SET_FLAG(options, LYP_WD_ALL);
+ SET_FLAG(options, LYD_PRINT_WD_ALL);
else
- SET_FLAG(options, LYP_WD_TRIM);
+ SET_FLAG(options, LYD_PRINT_WD_TRIM);
if (lyd_print_mem(&strp, dnode, format, options) == 0 && strp) {
vty_out(vty, "%s", strp);
@@ -1401,7 +1402,7 @@ DEFPY (show_config_transaction,
#endif /* HAVE_CONFIG_ROLLBACKS */
}
-static int nb_cli_oper_data_cb(const struct lys_node *snode,
+static int nb_cli_oper_data_cb(const struct lysc_node *snode,
struct yang_translator *translator,
struct yang_data *data, void *arg)
{
@@ -1427,12 +1428,12 @@ static int nb_cli_oper_data_cb(const struct lys_node *snode,
} else
ly_ctx = ly_native_ctx;
- ly_errno = 0;
- dnode = lyd_new_path(dnode, ly_ctx, data->xpath, (void *)data->value, 0,
- LYD_PATH_OPT_UPDATE);
- if (!dnode && ly_errno) {
- flog_warn(EC_LIB_LIBYANG, "%s: lyd_new_path() failed",
- __func__);
+ LY_ERR err =
+ lyd_new_path(dnode, ly_ctx, data->xpath, (void *)data->value,
+ LYD_NEW_PATH_UPDATE, &dnode);
+ if (err) {
+ flog_warn(EC_LIB_LIBYANG, "%s: lyd_new_path(%s) failed: %s",
+ __func__, data->xpath, ly_errmsg(ly_native_ctx));
goto error;
}
@@ -1494,11 +1495,11 @@ DEFPY (show_yang_operational_data,
yang_dnode_free(dnode);
return CMD_WARNING;
}
- lyd_validate(&dnode, LYD_OPT_GET, ly_ctx);
+ (void)lyd_validate_all(&dnode, ly_ctx, 0, NULL);
/* Display the data. */
if (lyd_print_mem(&strp, dnode, format,
- LYP_FORMAT | LYP_WITHSIBLINGS | LYP_WD_ALL)
+ LYD_PRINT_WITHSIBLINGS | LYD_PRINT_WD_ALL)
!= 0
|| !strp) {
vty_out(vty, "%% Failed to display operational data.\n");
@@ -1551,13 +1552,12 @@ DEFPY (show_yang_module,
snprintf(flags, sizeof(flags), "%c%c",
module->implemented ? 'I' : ' ',
- (module->deviated == 1) ? 'D' : ' ');
+ LY_ARRAY_COUNT(module->deviated_by) ? 'D' : ' ');
ttable_add_row(tt, "%s|%s|%s|%s|%s", module->name,
- (module->version == 2) ? "1.1" : "1.0",
- (module->rev_size > 0) ? module->rev[0].date
- : "-",
- flags, module->ns);
+ (module->parsed->version == 2) ? "1.1" : "1.0",
+ module->revision ? module->revision : "-", flags,
+ module->ns);
}
/* Dump the generated table. */
@@ -1577,21 +1577,21 @@ DEFPY (show_yang_module,
return CMD_SUCCESS;
}
-DEFPY (show_yang_module_detail,
- show_yang_module_detail_cmd,
- "show yang module\
+DEFPY(show_yang_module_detail, show_yang_module_detail_cmd,
+ "show yang module\
[module-translator WORD$translator_family]\
- WORD$module_name <summary|tree$tree|yang$yang|yin$yin>",
- SHOW_STR
- "YANG information\n"
- "Show loaded modules\n"
- "YANG module translator\n"
- "YANG module translator\n"
- "Module name\n"
- "Display summary information about the module\n"
- "Display module in the tree (RFC 8340) format\n"
- "Display module in the YANG format\n"
- "Display module in the YIN format\n")
+ WORD$module_name <compiled$compiled|summary|tree$tree|yang$yang|yin$yin>",
+ SHOW_STR
+ "YANG information\n"
+ "Show loaded modules\n"
+ "YANG module translator\n"
+ "YANG module translator\n"
+ "Module name\n"
+ "Display compiled module in YANG format\n"
+ "Display summary information about the module\n"
+ "Display module in the tree (RFC 8340) format\n"
+ "Display module in the YANG format\n"
+ "Display module in the YIN format\n")
{
struct ly_ctx *ly_ctx;
struct yang_translator *translator = NULL;
@@ -1610,7 +1610,7 @@ DEFPY (show_yang_module_detail,
} else
ly_ctx = ly_native_ctx;
- module = ly_ctx_get_module(ly_ctx, module_name, NULL, 0);
+ module = ly_ctx_get_module_latest(ly_ctx, module_name);
if (!module) {
vty_out(vty, "%% Module \"%s\" not found\n", module_name);
return CMD_WARNING;
@@ -1620,12 +1620,17 @@ DEFPY (show_yang_module_detail,
format = LYS_OUT_YANG;
else if (yin)
format = LYS_OUT_YIN;
+ else if (compiled)
+ format = LYS_OUT_YANG_COMPILED;
else if (tree)
format = LYS_OUT_TREE;
- else
- format = LYS_OUT_INFO;
+ else {
+ vty_out(vty,
+ "%% libyang v2 does not currently support summary\n");
+ return CMD_WARNING;
+ }
- if (lys_print_mem(&strp, module, format, NULL, 0, 0) == 0) {
+ if (lys_print_mem(&strp, module, format, 0) == 0) {
vty_out(vty, "%s\n", strp);
free(strp);
} else {
diff --git a/lib/northbound_confd.c b/lib/northbound_confd.c
index 403537e043..76af494e30 100644
--- a/lib/northbound_confd.c
+++ b/lib/northbound_confd.c
@@ -515,7 +515,7 @@ static int frr_confd_init_cdb(void)
/* Subscribe to all loaded YANG data modules. */
confd_spoints = list_new();
RB_FOREACH (module, yang_modules, &yang_modules) {
- struct lys_node *snode;
+ struct lysc_node *snode;
module->confd_hash = confd_str2hash(module->info->ns);
if (module->confd_hash == 0) {
@@ -531,7 +531,7 @@ static int frr_confd_init_cdb(void)
* entire YANG module. So we have to find the top level
* nodes ourselves and subscribe to their paths.
*/
- LY_TREE_FOR (module->info->data, snode) {
+ LY_LIST_FOR (module->info->data, snode) {
struct nb_node *nb_node;
int *spoint;
int ret;
@@ -762,7 +762,7 @@ static int frr_confd_data_get_object(struct confd_trans_ctx *tctx,
confd_hkeypath_t *kp)
{
struct nb_node *nb_node;
- const struct lys_node *child;
+ const struct lysc_node *child;
char xpath[XPATH_MAXLEN];
char xpath_child[XPATH_MAXLEN * 2];
struct list *elements;
@@ -789,7 +789,7 @@ static int frr_confd_data_get_object(struct confd_trans_ctx *tctx,
elements = yang_data_list_new();
/* Loop through list child nodes. */
- LY_TREE_FOR (nb_node->snode->child, child) {
+ LY_LIST_FOR (lysc_node_child(nb_node->snode), child) {
struct nb_node *nb_node_child = child->priv;
confd_value_t *v;
@@ -869,7 +869,7 @@ static int frr_confd_data_get_next_object(struct confd_trans_ctx *tctx,
memset(objects, 0, sizeof(objects));
for (int j = 0; j < CONFD_OBJECTS_PER_TIME; j++) {
struct confd_next_object *object;
- struct lys_node *child;
+ struct lysc_node *child;
struct yang_data *data;
size_t nvalues = 0;
@@ -919,7 +919,7 @@ static int frr_confd_data_get_next_object(struct confd_trans_ctx *tctx,
}
/* Loop through list child nodes. */
- LY_TREE_FOR (nb_node->snode->child, child) {
+ LY_LIST_FOR (lysc_node_child(nb_node->snode), child) {
struct nb_node *nb_node_child = child->priv;
char xpath_child[XPATH_MAXLEN * 2];
confd_value_t *v;
@@ -1187,7 +1187,7 @@ static int frr_confd_dp_read(struct thread *thread)
return 0;
}
-static int frr_confd_subscribe_state(const struct lys_node *snode, void *arg)
+static int frr_confd_subscribe_state(const struct lysc_node *snode, void *arg)
{
struct nb_node *nb_node = snode->priv;
struct confd_data_cbs *data_cbs = arg;
@@ -1391,7 +1391,7 @@ static void frr_confd_cli_init(void)
/* ------------ Main ------------ */
-static int frr_confd_calculate_snode_hash(const struct lys_node *snode,
+static int frr_confd_calculate_snode_hash(const struct lysc_node *snode,
void *arg)
{
struct nb_node *nb_node = snode->priv;
diff --git a/lib/northbound_grpc.cpp b/lib/northbound_grpc.cpp
index 58f4e42516..dc2d29c11d 100644
--- a/lib/northbound_grpc.cpp
+++ b/lib/northbound_grpc.cpp
@@ -1109,7 +1109,7 @@ class NorthboundImpl
}
}
- static int get_oper_data_cb(const struct lys_node *snode,
+ static int get_oper_data_cb(const struct lysc_node *snode,
struct yang_translator *translator,
struct yang_data *data, void *arg)
{
diff --git a/lib/northbound_sysrepo.c b/lib/northbound_sysrepo.c
index 63fd40f8d3..7c463dd61f 100644
--- a/lib/northbound_sysrepo.c
+++ b/lib/northbound_sysrepo.c
@@ -48,10 +48,10 @@ static int frr_sr_finish(void);
static int yang_data_frr2sr(struct yang_data *frr_data, sr_val_t *sr_data)
{
struct nb_node *nb_node;
- const struct lys_node *snode;
- struct lys_node_container *scontainer;
- struct lys_node_leaf *sleaf;
- struct lys_node_leaflist *sleaflist;
+ const struct lysc_node *snode;
+ struct lysc_node_container *scontainer;
+ struct lysc_node_leaf *sleaf;
+ struct lysc_node_leaflist *sleaflist;
LY_DATA_TYPE type;
sr_val_set_xpath(sr_data, frr_data->xpath);
@@ -67,8 +67,8 @@ static int yang_data_frr2sr(struct yang_data *frr_data, sr_val_t *sr_data)
snode = nb_node->snode;
switch (snode->nodetype) {
case LYS_CONTAINER:
- scontainer = (struct lys_node_container *)snode;
- if (!scontainer->presence)
+ scontainer = (struct lysc_node_container *)snode;
+ if (!CHECK_FLAG(scontainer->flags, LYS_PRESENCE))
return -1;
sr_data->type = SR_CONTAINER_PRESENCE_T;
return 0;
@@ -76,11 +76,11 @@ static int yang_data_frr2sr(struct yang_data *frr_data, sr_val_t *sr_data)
sr_data->type = SR_LIST_T;
return 0;
case LYS_LEAF:
- sleaf = (struct lys_node_leaf *)snode;
+ sleaf = (struct lysc_node_leaf *)snode;
type = sleaf->type.base;
break;
case LYS_LEAFLIST:
- sleaflist = (struct lys_node_leaflist *)snode;
+ sleaflist = (struct lysc_node_leaflist *)snode;
type = sleaflist->type.base;
break;
default:
@@ -359,7 +359,7 @@ static int frr_sr_config_change_cb(sr_session_ctx_t *session,
}
}
-static int frr_sr_state_data_iter_cb(const struct lys_node *snode,
+static int frr_sr_state_data_iter_cb(const struct lysc_node *snode,
struct yang_translator *translator,
struct yang_data *data, void *arg)
{
@@ -562,7 +562,7 @@ static void frr_sr_subscribe_config(struct yang_module *module)
sr_strerror(ret));
}
-static int frr_sr_subscribe_state(const struct lys_node *snode, void *arg)
+static int frr_sr_subscribe_state(const struct lysc_node *snode, void *arg)
{
struct yang_module *module = arg;
struct nb_node *nb_node;
@@ -591,7 +591,7 @@ static int frr_sr_subscribe_state(const struct lys_node *snode, void *arg)
return YANG_ITER_CONTINUE;
}
-static int frr_sr_subscribe_rpc(const struct lys_node *snode, void *arg)
+static int frr_sr_subscribe_rpc(const struct lysc_node *snode, void *arg)
{
struct yang_module *module = arg;
struct nb_node *nb_node;
diff --git a/lib/privs.c b/lib/privs.c
index 49761af871..b3f51267d1 100644
--- a/lib/privs.c
+++ b/lib/privs.c
@@ -159,6 +159,10 @@ static struct {
{
1, (pvalue_t[]){CAP_FOWNER},
},
+ [ZCAP_IPC_LOCK] =
+ {
+ 1, (pvalue_t[]){CAP_IPC_LOCK},
+ },
#endif /* HAVE_LCAPS */
};
diff --git a/lib/privs.h b/lib/privs.h
index 2dcdbe2e6c..9f22d28cf8 100644
--- a/lib/privs.h
+++ b/lib/privs.h
@@ -44,6 +44,7 @@ typedef enum {
ZCAP_DAC_OVERRIDE,
ZCAP_READ_SEARCH,
ZCAP_FOWNER,
+ ZCAP_IPC_LOCK,
ZCAP_MAX
} zebra_capabilities_t;
diff --git a/lib/vrf.c b/lib/vrf.c
index 7888d435f5..b6a53839cf 100644
--- a/lib/vrf.c
+++ b/lib/vrf.c
@@ -1214,7 +1214,8 @@ const struct frr_yang_module_info frr_vrf_info = {
.get_next = lib_vrf_get_next,
.get_keys = lib_vrf_get_keys,
.lookup_entry = lib_vrf_lookup_entry,
- }
+ },
+ .priority = NB_DFLT_PRIORITY - 2,
},
{
.xpath = "/frr-vrf:lib/vrf/state/id",
diff --git a/lib/yang.c b/lib/yang.c
index df3b07fb09..1e241f049e 100644
--- a/lib/yang.c
+++ b/lib/yang.c
@@ -25,8 +25,6 @@
#include "yang_translator.h"
#include "northbound.h"
-#include <libyang/user_types.h>
-
DEFINE_MTYPE_STATIC(LIB, YANG_MODULE, "YANG module");
DEFINE_MTYPE_STATIC(LIB, YANG_DATA, "YANG data structure");
@@ -42,14 +40,12 @@ void yang_module_embed(struct yang_module_embed *embed)
embedupd = &embed->next;
}
-static const char *yang_module_imp_clb(const char *mod_name,
- const char *mod_rev,
- const char *submod_name,
- const char *submod_rev,
- void *user_data,
- LYS_INFORMAT *format,
- void (**free_module_data)
- (void *, void*))
+static LY_ERR yang_module_imp_clb(const char *mod_name, const char *mod_rev,
+ const char *submod_name,
+ const char *submod_rev, void *user_data,
+ LYS_INFORMAT *format,
+ const char **module_data,
+ void (**free_module_data)(void *, void *))
{
struct yang_module_embed *e;
@@ -69,15 +65,17 @@ static const char *yang_module_imp_clb(const char *mod_name,
}
*format = e->format;
- return e->data;
+ *module_data = e->data;
+ return LY_SUCCESS;
}
- flog_warn(
- EC_LIB_YANG_MODULE_LOAD,
+ /* We get here for indirect modules like ietf-inet-types */
+ zlog_debug(
"YANG model \"%s@%s\" \"%s@%s\"not embedded, trying external file",
mod_name, mod_rev ? mod_rev : "*",
submod_name ? submod_name : "*", submod_rev ? submod_rev : "*");
- return NULL;
+
+ return LY_ENOTFOUND;
}
/* clang-format off */
@@ -111,7 +109,8 @@ struct yang_module *yang_module_load(const char *module_name)
struct yang_module *module;
const struct lys_module *module_info;
- module_info = ly_ctx_load_module(ly_native_ctx, module_name, NULL);
+ module_info =
+ ly_ctx_load_module(ly_native_ctx, module_name, NULL, NULL);
if (!module_info) {
flog_err(EC_LIB_YANG_MODULE_LOAD,
"%s: failed to load data model: %s", __func__,
@@ -147,62 +146,39 @@ struct yang_module *yang_module_find(const char *module_name)
return RB_FIND(yang_modules, &yang_modules, &s);
}
-int yang_snodes_iterate_subtree(const struct lys_node *snode,
+int yang_snodes_iterate_subtree(const struct lysc_node *snode,
const struct lys_module *module,
yang_iterate_cb cb, uint16_t flags, void *arg)
{
- struct lys_node *child;
+ const struct lysc_node *child;
int ret = YANG_ITER_CONTINUE;
if (module && snode->module != module)
goto next;
- if (CHECK_FLAG(flags, YANG_ITER_FILTER_IMPLICIT)) {
- switch (snode->nodetype) {
- case LYS_CASE:
- case LYS_INPUT:
- case LYS_OUTPUT:
- if (CHECK_FLAG(snode->flags, LYS_IMPLICIT))
- goto next;
- break;
- default:
- break;
- }
- }
-
switch (snode->nodetype) {
case LYS_CONTAINER:
if (CHECK_FLAG(flags, YANG_ITER_FILTER_NPCONTAINERS)) {
- struct lys_node_container *scontainer;
-
- scontainer = (struct lys_node_container *)snode;
- if (!scontainer->presence)
+ if (!CHECK_FLAG(snode->flags, LYS_PRESENCE))
goto next;
}
break;
case LYS_LEAF:
if (CHECK_FLAG(flags, YANG_ITER_FILTER_LIST_KEYS)) {
- struct lys_node_leaf *sleaf;
-
/* Ignore list keys. */
- sleaf = (struct lys_node_leaf *)snode;
- if (lys_is_key(sleaf, NULL))
+ if (lysc_is_key(snode))
goto next;
}
break;
- case LYS_GROUPING:
- /* Return since we're not interested in the grouping subtree. */
- return YANG_ITER_CONTINUE;
- case LYS_USES:
- case LYS_AUGMENT:
- /* Always ignore nodes of these types. */
- goto next;
case LYS_INPUT:
case LYS_OUTPUT:
if (CHECK_FLAG(flags, YANG_ITER_FILTER_INPUT_OUTPUT))
goto next;
break;
default:
+ assert(snode->nodetype != LYS_AUGMENT
+ && snode->nodetype != LYS_GROUPING
+ && snode->nodetype != LYS_USES);
break;
}
@@ -212,19 +188,17 @@ int yang_snodes_iterate_subtree(const struct lys_node *snode,
next:
/*
- * YANG leafs and leaf-lists can't have child nodes, and trying to
- * access snode->child is undefined behavior.
+ * YANG leafs and leaf-lists can't have child nodes.
*/
if (CHECK_FLAG(snode->nodetype, LYS_LEAF | LYS_LEAFLIST))
return YANG_ITER_CONTINUE;
- LY_TREE_FOR (snode->child, child) {
+ LY_LIST_FOR (lysc_node_child(snode), child) {
ret = yang_snodes_iterate_subtree(child, module, cb, flags,
arg);
if (ret == YANG_ITER_STOP)
return ret;
}
-
return ret;
}
@@ -237,12 +211,24 @@ int yang_snodes_iterate(const struct lys_module *module, yang_iterate_cb cb,
idx = ly_ctx_internal_modules_count(ly_native_ctx);
while ((module_iter = ly_ctx_get_module_iter(ly_native_ctx, &idx))) {
- struct lys_node *snode;
+ struct lysc_node *snode;
if (!module_iter->implemented)
continue;
- LY_TREE_FOR (module_iter->data, snode) {
+ LY_LIST_FOR (module_iter->compiled->data, snode) {
+ ret = yang_snodes_iterate_subtree(snode, module, cb,
+ flags, arg);
+ if (ret == YANG_ITER_STOP)
+ return ret;
+ }
+ LY_LIST_FOR (&module_iter->compiled->rpcs->node, snode) {
+ ret = yang_snodes_iterate_subtree(snode, module, cb,
+ flags, arg);
+ if (ret == YANG_ITER_STOP)
+ return ret;
+ }
+ LY_LIST_FOR (&module_iter->compiled->notifs->node, snode) {
ret = yang_snodes_iterate_subtree(snode, module, cb,
flags, arg);
if (ret == YANG_ITER_STOP)
@@ -253,38 +239,32 @@ int yang_snodes_iterate(const struct lys_module *module, yang_iterate_cb cb,
return ret;
}
-void yang_snode_get_path(const struct lys_node *snode, enum yang_path_type type,
- char *xpath, size_t xpath_len)
+void yang_snode_get_path(const struct lysc_node *snode,
+ enum yang_path_type type, char *xpath,
+ size_t xpath_len)
{
- char *xpath_ptr;
-
switch (type) {
case YANG_PATH_SCHEMA:
- xpath_ptr = lys_path(snode, 0);
+ (void)lysc_path(snode, LYSC_PATH_LOG, xpath, xpath_len);
break;
case YANG_PATH_DATA:
- xpath_ptr = lys_data_path(snode);
+ (void)lysc_path(snode, LYSC_PATH_DATA, xpath, xpath_len);
break;
default:
flog_err(EC_LIB_DEVELOPMENT, "%s: unknown yang path type: %u",
__func__, type);
exit(1);
}
- strlcpy(xpath, xpath_ptr, xpath_len);
- free(xpath_ptr);
}
-struct lys_node *yang_snode_real_parent(const struct lys_node *snode)
+struct lysc_node *yang_snode_real_parent(const struct lysc_node *snode)
{
- struct lys_node *parent = snode->parent;
+ struct lysc_node *parent = snode->parent;
while (parent) {
- struct lys_node_container *scontainer;
-
switch (parent->nodetype) {
case LYS_CONTAINER:
- scontainer = (struct lys_node_container *)parent;
- if (scontainer->presence)
+ if (CHECK_FLAG(parent->flags, LYS_PRESENCE))
return parent;
break;
case LYS_LIST:
@@ -298,9 +278,9 @@ struct lys_node *yang_snode_real_parent(const struct lys_node *snode)
return NULL;
}
-struct lys_node *yang_snode_parent_list(const struct lys_node *snode)
+struct lysc_node *yang_snode_parent_list(const struct lysc_node *snode)
{
- struct lys_node *parent = snode->parent;
+ struct lysc_node *parent = snode->parent;
while (parent) {
switch (parent->nodetype) {
@@ -315,14 +295,14 @@ struct lys_node *yang_snode_parent_list(const struct lys_node *snode)
return NULL;
}
-bool yang_snode_is_typeless_data(const struct lys_node *snode)
+bool yang_snode_is_typeless_data(const struct lysc_node *snode)
{
- struct lys_node_leaf *sleaf;
+ const struct lysc_node_leaf *sleaf;
switch (snode->nodetype) {
case LYS_LEAF:
- sleaf = (struct lys_node_leaf *)snode;
- if (sleaf->type.base == LY_TYPE_EMPTY)
+ sleaf = (struct lysc_node_leaf *)snode;
+ if (sleaf->type->basetype == LY_TYPE_EMPTY)
return true;
return false;
case LYS_LEAFLIST:
@@ -332,16 +312,16 @@ bool yang_snode_is_typeless_data(const struct lys_node *snode)
}
}
-const char *yang_snode_get_default(const struct lys_node *snode)
+const char *yang_snode_get_default(const struct lysc_node *snode)
{
- struct lys_node_leaf *sleaf;
+ const struct lysc_node_leaf *sleaf;
switch (snode->nodetype) {
case LYS_LEAF:
- sleaf = (struct lys_node_leaf *)snode;
-
- /* NOTE: this might be null. */
- return sleaf->dflt;
+ sleaf = (const struct lysc_node_leaf *)snode;
+ return sleaf->dflt ? lyd_value_get_canonical(sleaf->module->ctx,
+ sleaf->dflt)
+ : NULL;
case LYS_LEAFLIST:
/* TODO: check leaf-list default values */
return NULL;
@@ -350,29 +330,40 @@ const char *yang_snode_get_default(const struct lys_node *snode)
}
}
-const struct lys_type *yang_snode_get_type(const struct lys_node *snode)
+const struct lysc_type *yang_snode_get_type(const struct lysc_node *snode)
{
- struct lys_node_leaf *sleaf = (struct lys_node_leaf *)snode;
- struct lys_type *type;
+ struct lysc_node_leaf *sleaf = (struct lysc_node_leaf *)snode;
+ struct lysc_type *type;
if (!CHECK_FLAG(sleaf->nodetype, LYS_LEAF | LYS_LEAFLIST))
return NULL;
- type = &sleaf->type;
- while (type->base == LY_TYPE_LEAFREF)
- type = &type->info.lref.target->type;
+ type = sleaf->type;
+ while (type->basetype == LY_TYPE_LEAFREF)
+ type = ((struct lysc_type_leafref *)type)->realtype;
return type;
}
+unsigned int yang_snode_num_keys(const struct lysc_node *snode)
+{
+ const struct lysc_node_leaf *skey;
+ uint count = 0;
+
+ if (!CHECK_FLAG(snode->nodetype, LYS_LIST))
+ return 0;
+
+ /* Walk list of children */
+ LY_FOR_KEYS (snode, skey) {
+ count++;
+ }
+ return count;
+}
+
void yang_dnode_get_path(const struct lyd_node *dnode, char *xpath,
size_t xpath_len)
{
- char *xpath_ptr;
-
- xpath_ptr = lyd_path(dnode);
- strlcpy(xpath, xpath_ptr, xpath_len);
- free(xpath_ptr);
+ lyd_path(dnode, LYD_PATH_STD, xpath, xpath_len);
}
const char *yang_dnode_get_schema_name(const struct lyd_node *dnode,
@@ -398,55 +389,78 @@ const char *yang_dnode_get_schema_name(const struct lyd_node *dnode,
return dnode->schema->name;
}
-struct lyd_node *yang_dnode_get(const struct lyd_node *dnode,
- const char *xpath_fmt, ...)
+struct lyd_node *yang_dnode_get(const struct lyd_node *dnode, const char *xpath)
{
- va_list ap;
- char xpath[XPATH_MAXLEN];
- struct ly_set *set;
+ struct ly_set *set = NULL;
struct lyd_node *dnode_ret = NULL;
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
+ /*
+ * XXX a lot of the code uses this for style I guess. It shouldn't, as
+ * it adds to the xpath parsing complexity in libyang.
+ */
+ if (xpath[0] == '.' && xpath[1] == '/')
+ xpath += 2;
- set = lyd_find_path(dnode, xpath);
- assert(set);
- if (set->number == 0)
+ if (lyd_find_xpath(dnode, xpath, &set)) {
+ assert(0); /* XXX replicates old libyang1 base code */
+ goto exit;
+ }
+ if (set->count == 0)
goto exit;
- if (set->number > 1) {
+ if (set->count > 1) {
flog_warn(EC_LIB_YANG_DNODE_NOT_FOUND,
"%s: found %u elements (expected 0 or 1) [xpath %s]",
- __func__, set->number, xpath);
+ __func__, set->count, xpath);
goto exit;
}
- dnode_ret = set->set.d[0];
+ dnode_ret = set->dnodes[0];
exit:
- ly_set_free(set);
+ ly_set_free(set, NULL);
return dnode_ret;
}
-bool yang_dnode_exists(const struct lyd_node *dnode, const char *xpath_fmt, ...)
+struct lyd_node *yang_dnode_getf(const struct lyd_node *dnode,
+ const char *xpath_fmt, ...)
{
va_list ap;
char xpath[XPATH_MAXLEN];
- struct ly_set *set;
- bool found;
va_start(ap, xpath_fmt);
vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
va_end(ap);
- set = lyd_find_path(dnode, xpath);
- assert(set);
- found = (set->number > 0);
- ly_set_free(set);
+ return yang_dnode_get(dnode, xpath);
+}
+
+bool yang_dnode_exists(const struct lyd_node *dnode, const char *xpath)
+{
+ struct ly_set *set = NULL;
+ bool exists = false;
- return found;
+ if (xpath[0] == '.' && xpath[1] == '/')
+ xpath += 2;
+ if (lyd_find_xpath(dnode, xpath, &set))
+ return false;
+ exists = set->count > 0;
+ ly_set_free(set, NULL);
+ return exists;
+}
+
+bool yang_dnode_existsf(const struct lyd_node *dnode, const char *xpath_fmt,
+ ...)
+{
+ va_list ap;
+ char xpath[XPATH_MAXLEN];
+
+ va_start(ap, xpath_fmt);
+ vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
+ va_end(ap);
+
+ return yang_dnode_exists(dnode, xpath);
}
void yang_dnode_iterate(yang_dnode_iter_cb cb, void *arg,
@@ -461,52 +475,42 @@ void yang_dnode_iterate(yang_dnode_iter_cb cb, void *arg,
vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
va_end(ap);
- set = lyd_find_path(dnode, xpath);
- assert(set);
- for (unsigned int i = 0; i < set->number; i++) {
+ if (lyd_find_xpath(dnode, xpath, &set)) {
+ assert(0); /* XXX libyang2: ly1 code asserted success */
+ return;
+ }
+ for (unsigned int i = 0; i < set->count; i++) {
int ret;
- dnode = set->set.d[i];
- ret = (*cb)(dnode, arg);
+ ret = (*cb)(set->dnodes[i], arg);
if (ret == YANG_ITER_STOP)
break;
}
- ly_set_free(set);
+ ly_set_free(set, NULL);
}
-bool yang_dnode_is_default(const struct lyd_node *dnode, const char *xpath_fmt,
- ...)
+bool yang_dnode_is_default(const struct lyd_node *dnode, const char *xpath)
{
- struct lys_node *snode;
- struct lys_node_leaf *sleaf;
- struct lys_node_container *scontainer;
-
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
+ const struct lysc_node *snode;
+ struct lysc_node_leaf *sleaf;
+ if (xpath)
dnode = yang_dnode_get(dnode, xpath);
- }
assert(dnode);
snode = dnode->schema;
switch (snode->nodetype) {
case LYS_LEAF:
- sleaf = (struct lys_node_leaf *)snode;
- if (sleaf->type.base == LY_TYPE_EMPTY)
+ sleaf = (struct lysc_node_leaf *)snode;
+ if (sleaf->type->basetype == LY_TYPE_EMPTY)
return false;
- return lyd_wd_default((struct lyd_node_leaf_list *)dnode);
+ return lyd_is_default(dnode);
case LYS_LEAFLIST:
/* TODO: check leaf-list default values */
return false;
case LYS_CONTAINER:
- scontainer = (struct lys_node_container *)snode;
- if (scontainer->presence)
+ if (CHECK_FLAG(snode->flags, LYS_PRESENCE))
return false;
return true;
default:
@@ -514,24 +518,39 @@ bool yang_dnode_is_default(const struct lyd_node *dnode, const char *xpath_fmt,
}
}
-bool yang_dnode_is_default_recursive(const struct lyd_node *dnode)
+bool yang_dnode_is_defaultf(const struct lyd_node *dnode, const char *xpath_fmt,
+ ...)
{
- struct lys_node *snode;
- struct lyd_node *root, *next, *dnode_iter;
-
- snode = dnode->schema;
- if (CHECK_FLAG(snode->nodetype, LYS_LEAF | LYS_LEAFLIST))
+ if (!xpath_fmt)
return yang_dnode_is_default(dnode, NULL);
+ else {
+ va_list ap;
+ char xpath[XPATH_MAXLEN];
+
+ va_start(ap, xpath_fmt);
+ vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
+ va_end(ap);
+
+ return yang_dnode_is_default(dnode, xpath);
+ }
+}
+
+bool yang_dnode_is_default_recursive(const struct lyd_node *dnode)
+{
+ struct lyd_node *root, *dnode_iter;
if (!yang_dnode_is_default(dnode, NULL))
return false;
- LY_TREE_FOR (dnode->child, root) {
- LY_TREE_DFS_BEGIN (root, next, dnode_iter) {
+ if (CHECK_FLAG(dnode->schema->nodetype, LYS_LEAF | LYS_LEAFLIST))
+ return true;
+
+ LY_LIST_FOR (lyd_child(dnode), root) {
+ LYD_TREE_DFS_BEGIN (root, dnode_iter) {
if (!yang_dnode_is_default(dnode_iter, NULL))
return false;
- LY_TREE_DFS_END(root, next, dnode_iter);
+ LYD_TREE_DFS_END(root, dnode_iter);
}
}
@@ -541,21 +560,15 @@ bool yang_dnode_is_default_recursive(const struct lyd_node *dnode)
void yang_dnode_change_leaf(struct lyd_node *dnode, const char *value)
{
assert(dnode->schema->nodetype == LYS_LEAF);
- lyd_change_leaf((struct lyd_node_leaf_list *)dnode, value);
+ lyd_change_term(dnode, value);
}
struct lyd_node *yang_dnode_new(struct ly_ctx *ly_ctx, bool config_only)
{
- struct lyd_node *dnode;
- int options;
-
- if (config_only)
- options = LYD_OPT_CONFIG;
- else
- options = LYD_OPT_DATA | LYD_OPT_DATA_NO_YANGLIB;
+ struct lyd_node *dnode = NULL;
+ int options = config_only ? LYD_VALIDATE_NO_STATE : 0;
- dnode = NULL;
- if (lyd_validate(&dnode, options, ly_ctx) != 0) {
+ if (lyd_validate_all(&dnode, ly_ctx, options, NULL) != 0) {
/* Should never happen. */
flog_err(EC_LIB_LIBYANG, "%s: lyd_validate() failed", __func__);
exit(1);
@@ -566,14 +579,18 @@ struct lyd_node *yang_dnode_new(struct ly_ctx *ly_ctx, bool config_only)
struct lyd_node *yang_dnode_dup(const struct lyd_node *dnode)
{
- return lyd_dup_withsiblings(dnode, 1);
+ struct lyd_node *dup = NULL;
+ LY_ERR err;
+ err = lyd_dup_siblings(dnode, NULL, LYD_DUP_RECURSIVE, &dup);
+ assert(!err);
+ return dup;
}
void yang_dnode_free(struct lyd_node *dnode)
{
while (dnode->parent)
- dnode = dnode->parent;
- lyd_free_withsiblings(dnode);
+ dnode = lyd_parent(dnode);
+ lyd_free_all(dnode);
}
struct yang_data *yang_data_new(const char *xpath, const char *value)
@@ -679,18 +696,19 @@ const char *yang_print_errors(struct ly_ctx *ly_ctx, char *buf, size_t buf_len)
void yang_debugging_set(bool enable)
{
if (enable) {
- ly_verb(LY_LLDBG);
- ly_verb_dbg(0xFF);
+ ly_log_level(LY_LLDBG);
+ ly_log_dbg_groups(0xFF);
} else {
- ly_verb(LY_LLERR);
- ly_verb_dbg(0);
+ ly_log_level(LY_LLERR);
+ ly_log_dbg_groups(0);
}
}
-struct ly_ctx *yang_ctx_new_setup(bool embedded_modules)
+struct ly_ctx *yang_ctx_new_setup(bool embedded_modules, bool explicit_compile)
{
- struct ly_ctx *ctx;
+ struct ly_ctx *ctx = NULL;
const char *yang_models_path = YANG_MODELS_PATH;
+ LY_ERR err;
if (access(yang_models_path, R_OK | X_OK)) {
yang_models_path = NULL;
@@ -703,8 +721,11 @@ struct ly_ctx *yang_ctx_new_setup(bool embedded_modules)
YANG_MODELS_PATH);
}
- ctx = ly_ctx_new(yang_models_path, LY_CTX_DISABLE_SEARCHDIR_CWD);
- if (!ctx)
+ uint options = LY_CTX_NO_YANGLIBRARY | LY_CTX_DISABLE_SEARCHDIR_CWD;
+ if (explicit_compile)
+ options |= LY_CTX_EXPLICIT_COMPILE;
+ err = ly_ctx_new(yang_models_path, options, &ctx);
+ if (err)
return NULL;
if (embedded_modules)
@@ -713,14 +734,14 @@ struct ly_ctx *yang_ctx_new_setup(bool embedded_modules)
return ctx;
}
-void yang_init(bool embedded_modules)
+void yang_init(bool embedded_modules, bool defer_compile)
{
/* Initialize libyang global parameters that affect all containers. */
ly_set_log_clb(ly_log_cb, 1);
ly_log_options(LY_LOLOG | LY_LOSTORE);
/* Initialize libyang container for native models. */
- ly_native_ctx = yang_ctx_new_setup(embedded_modules);
+ ly_native_ctx = yang_ctx_new_setup(embedded_modules, defer_compile);
if (!ly_native_ctx) {
flog_err(EC_LIB_LIBYANG, "%s: ly_ctx_new() failed", __func__);
exit(1);
@@ -729,6 +750,17 @@ void yang_init(bool embedded_modules)
yang_translator_init();
}
+void yang_init_loading_complete(void)
+{
+ /* Compile everything */
+ if (ly_ctx_compile(ly_native_ctx) != LY_SUCCESS) {
+ flog_err(EC_LIB_YANG_MODULE_LOAD,
+ "%s: failed to compile loaded modules: %s", __func__,
+ ly_errmsg(ly_native_ctx));
+ exit(1);
+ }
+}
+
void yang_terminate(void)
{
struct yang_module *module;
@@ -748,7 +780,7 @@ void yang_terminate(void)
XFREE(MTYPE_YANG_MODULE, module);
}
- ly_ctx_destroy(ly_native_ctx, NULL);
+ ly_ctx_destroy(ly_native_ctx);
}
const struct lyd_node *yang_dnode_get_parent(const struct lyd_node *dnode,
@@ -767,7 +799,7 @@ const struct lyd_node *yang_dnode_get_parent(const struct lyd_node *dnode,
break;
}
- orig_dnode = orig_dnode->parent;
+ orig_dnode = lyd_parent(orig_dnode);
}
return NULL;
@@ -788,17 +820,17 @@ bool yang_is_last_list_dnode(const struct lyd_node *dnode)
bool yang_is_last_level_dnode(const struct lyd_node *dnode)
{
const struct lyd_node *parent;
- const struct lys_node_list *snode;
const struct lyd_node *key_leaf;
uint8_t keys_size;
switch (dnode->schema->nodetype) {
case LYS_LIST:
assert(dnode->parent);
- parent = dnode->parent;
- snode = (struct lys_node_list *)parent->schema;
+ parent = lyd_parent(dnode);
+ uint snode_num_keys = yang_snode_num_keys(parent->schema);
+ /* XXX libyang2: q: really don't understand this code. */
key_leaf = dnode->prev;
- for (keys_size = 1; keys_size < snode->keys_size; keys_size++)
+ for (keys_size = 1; keys_size < snode_num_keys; keys_size++)
key_leaf = key_leaf->prev;
if (key_leaf->prev == dnode)
return true;
@@ -812,13 +844,11 @@ bool yang_is_last_level_dnode(const struct lyd_node *dnode)
return false;
}
-
const struct lyd_node *
yang_get_subtree_with_no_sibling(const struct lyd_node *dnode)
{
bool parent = true;
const struct lyd_node *node;
- const struct lys_node_container *snode;
node = dnode;
if (node->schema->nodetype != LYS_LIST)
@@ -827,13 +857,11 @@ yang_get_subtree_with_no_sibling(const struct lyd_node *dnode)
while (parent) {
switch (node->schema->nodetype) {
case LYS_CONTAINER:
- snode = (struct lys_node_container *)node->schema;
- if ((!snode->presence)
- && yang_is_last_level_dnode(node)) {
+ if (!CHECK_FLAG(node->schema->flags, LYS_PRESENCE)) {
if (node->parent
&& (node->parent->schema->module
== dnode->schema->module))
- node = node->parent;
+ node = lyd_parent(node);
else
parent = false;
} else
@@ -845,7 +873,7 @@ yang_get_subtree_with_no_sibling(const struct lyd_node *dnode)
if (node->parent
&& (node->parent->schema->module
== dnode->schema->module))
- node = node->parent;
+ node = lyd_parent(node);
else
parent = false;
} else
@@ -867,7 +895,7 @@ uint32_t yang_get_list_pos(const struct lyd_node *node)
uint32_t yang_get_list_elements_count(const struct lyd_node *node)
{
unsigned int count;
- struct lys_node *schema;
+ const struct lysc_node *schema;
if (!node
|| ((node->schema->nodetype != LYS_LIST)
@@ -884,11 +912,3 @@ uint32_t yang_get_list_elements_count(const struct lyd_node *node)
} while (node);
return count;
}
-
-
-const struct lyd_node *yang_dnode_get_child(const struct lyd_node *dnode)
-{
- if (dnode)
- return dnode->child;
- return NULL;
-}
diff --git a/lib/yang.h b/lib/yang.h
index b8bf07ee7e..d4517f969a 100644
--- a/lib/yang.h
+++ b/lib/yang.h
@@ -99,13 +99,10 @@ enum yang_iter_flags {
/* Filter RPC input/output nodes. */
YANG_ITER_FILTER_INPUT_OUTPUT = (1<<2),
-
- /* Filter implicitely created nodes. */
- YANG_ITER_FILTER_IMPLICIT = (1<<3),
};
/* Callback used by the yang_snodes_iterate_*() family of functions. */
-typedef int (*yang_iterate_cb)(const struct lys_node *snode, void *arg);
+typedef int (*yang_iterate_cb)(const struct lysc_node *snode, void *arg);
/* Callback used by the yang_dnode_iterate() function. */
typedef int (*yang_dnode_iter_cb)(const struct lyd_node *dnode, void *arg);
@@ -180,7 +177,7 @@ extern void yang_module_embed(struct yang_module_embed *embed);
* Returns:
* The return value of the last called callback.
*/
-extern int yang_snodes_iterate_subtree(const struct lys_node *snode,
+extern int yang_snodes_iterate_subtree(const struct lysc_node *snode,
const struct lys_module *module,
yang_iterate_cb cb, uint16_t flags,
void *arg);
@@ -222,7 +219,7 @@ extern int yang_snodes_iterate(const struct lys_module *module,
* xpath_len
* Size of the xpath buffer.
*/
-extern void yang_snode_get_path(const struct lys_node *snode,
+extern void yang_snode_get_path(const struct lysc_node *snode,
enum yang_path_type type, char *xpath,
size_t xpath_len);
@@ -236,7 +233,7 @@ extern void yang_snode_get_path(const struct lys_node *snode,
* Returns:
* The parent libyang schema node if found, or NULL if not found.
*/
-extern struct lys_node *yang_snode_real_parent(const struct lys_node *snode);
+extern struct lysc_node *yang_snode_real_parent(const struct lysc_node *snode);
/*
* Find first parent schema node which is a list.
@@ -247,7 +244,7 @@ extern struct lys_node *yang_snode_real_parent(const struct lys_node *snode);
* Returns:
* The parent libyang schema node (list) if found, or NULL if not found.
*/
-extern struct lys_node *yang_snode_parent_list(const struct lys_node *snode);
+extern struct lysc_node *yang_snode_parent_list(const struct lysc_node *snode);
/*
* Check if the libyang schema node represents typeless data (e.g. containers,
@@ -259,7 +256,7 @@ extern struct lys_node *yang_snode_parent_list(const struct lys_node *snode);
* Returns:
* true if the schema node represents typeless data, false otherwise.
*/
-extern bool yang_snode_is_typeless_data(const struct lys_node *snode);
+extern bool yang_snode_is_typeless_data(const struct lysc_node *snode);
/*
* Get the default value associated to a YANG leaf or leaf-list.
@@ -270,7 +267,7 @@ extern bool yang_snode_is_typeless_data(const struct lys_node *snode);
* Returns:
* The default value if it exists, NULL otherwise.
*/
-extern const char *yang_snode_get_default(const struct lys_node *snode);
+extern const char *yang_snode_get_default(const struct lysc_node *snode);
/*
* Get the type structure of a leaf of leaf-list. If the type is a leafref, the
@@ -283,7 +280,27 @@ extern const char *yang_snode_get_default(const struct lys_node *snode);
* The found type if the schema node represents a leaf or a leaf-list, NULL
* otherwise.
*/
-extern const struct lys_type *yang_snode_get_type(const struct lys_node *snode);
+extern const struct lysc_type *
+yang_snode_get_type(const struct lysc_node *snode);
+
+/*
+ * Get the number of key nodes for the given list.
+ *
+ * snode
+ * libyang (LYS_LIST) schema node to operate on.
+ *
+ * Returns:
+ * The number of key LYS_LEAFs as children of this list node.
+ */
+extern unsigned int yang_snode_num_keys(const struct lysc_node *snode);
+
+#define LY_FOR_KEYS(snode, skey) \
+ for ((skey) = (const struct lysc_node_leaf *)lysc_node_child((snode)); \
+ (skey); (skey) = (const struct lysc_node_leaf *)((skey)->next)) \
+ if (!lysc_is_key(skey)) { \
+ break; \
+ } else
+
/*
* Build data path of the data node.
@@ -322,14 +339,49 @@ extern const char *yang_dnode_get_schema_name(const struct lyd_node *dnode,
* dnode
* Base libyang data node to operate on.
*
- * xpath_fmt
- * XPath expression (absolute or relative).
+ * xpath
+ * Limited XPath (absolute or relative) string. See Path in libyang
+ * documentation for restrictions.
*
* Returns:
* The libyang data node if found, or NULL if not found.
*/
extern struct lyd_node *yang_dnode_get(const struct lyd_node *dnode,
- const char *xpath_fmt, ...);
+ const char *xpath);
+
+/*
+ * Find a libyang data node by its YANG data path.
+ *
+ * dnode
+ * Base libyang data node to operate on.
+ *
+ * xpath_fmt
+ * Limited XPath (absolute or relative) format string. See Path in libyang
+ * documentation for restrictions.
+ *
+ * ...
+ * any parameters for xpath_fmt.
+ *
+ * Returns:
+ * The libyang data node if found, or NULL if not found.
+ */
+extern struct lyd_node *yang_dnode_getf(const struct lyd_node *dnode,
+ const char *path_fmt, ...);
+
+/*
+ * Check if a libyang data node exists.
+ *
+ * dnode
+ * Base libyang data node to operate on.
+ *
+ * xpath
+ * Limited XPath (absolute or relative) string. See Path in libyang
+ * documentation for restrictions.
+ *
+ * Returns:
+ * true if a libyang data node was found, false otherwise.
+ */
+extern bool yang_dnode_exists(const struct lyd_node *dnode, const char *xpath);
/*
* Check if a libyang data node exists.
@@ -338,13 +390,17 @@ extern struct lyd_node *yang_dnode_get(const struct lyd_node *dnode,
* Base libyang data node to operate on.
*
* xpath_fmt
- * XPath expression (absolute or relative).
+ * Limited XPath (absolute or relative) format string. See Path in
+ * libyang documentation for restrictions.
+ *
+ * ...
+ * any parameters for xpath_fmt.
*
* Returns:
- * true if the libyang data node was found, false otherwise.
+ * true if a libyang data node was found, false otherwise.
*/
-extern bool yang_dnode_exists(const struct lyd_node *dnode,
- const char *xpath_fmt, ...);
+extern bool yang_dnode_existsf(const struct lyd_node *dnode,
+ const char *xpath_fmt, ...);
/*
* Iterate over all libyang data nodes that satisfy an XPath query.
@@ -360,6 +416,9 @@ extern bool yang_dnode_exists(const struct lyd_node *dnode,
*
* xpath_fmt
* XPath expression (absolute or relative).
+ *
+ * ...
+ * any parameters for xpath_fmt.
*/
void yang_dnode_iterate(yang_dnode_iter_cb cb, void *arg,
const struct lyd_node *dnode, const char *xpath_fmt,
@@ -372,7 +431,7 @@ void yang_dnode_iterate(yang_dnode_iter_cb cb, void *arg,
* dnode
* Base libyang data node to operate on.
*
- * xpath_fmt
+ * xpath
* Optional XPath expression (absolute or relative) to specify a different
* data node to operate on in the same data tree.
*
@@ -380,7 +439,27 @@ void yang_dnode_iterate(yang_dnode_iter_cb cb, void *arg,
* true if the data node contains the default value, false otherwise.
*/
extern bool yang_dnode_is_default(const struct lyd_node *dnode,
- const char *xpath_fmt, ...);
+ const char *xpath);
+
+/*
+ * Check if the libyang data node contains a default value. Non-presence
+ * containers are assumed to always contain a default value.
+ *
+ * dnode
+ * Base libyang data node to operate on.
+ *
+ * xpath
+ * Optional limited XPath (absolute or relative) format string. See Path in
+ * libyang documentation for restrictions.
+ *
+ * ...
+ * any parameters for xpath_fmt.
+ *
+ * Returns:
+ * true if the data node contains the default value, false otherwise.
+ */
+extern bool yang_dnode_is_defaultf(const struct lyd_node *dnode,
+ const char *xpath_fmt, ...);
/*
* Check if the libyang data node and all of its children contain default
@@ -437,7 +516,8 @@ extern struct lyd_node *yang_dnode_dup(const struct lyd_node *dnode);
* Delete a libyang data node.
*
* dnode
- * Pointer to the libyang data node that is going to be deleted.
+ * Pointer to the libyang data node that is going to be deleted along with
+ * the entire tree it belongs to.
*/
extern void yang_dnode_free(struct lyd_node *dnode);
@@ -493,8 +573,13 @@ extern struct yang_data *yang_data_list_find(const struct list *list,
*
* embedded_modules
* Specify whether libyang should attempt to look for embedded YANG modules.
+ *
+ * explicit_compile
+ * True if the caller will later call ly_ctx_compile to compile all loaded
+ * modules at once.
*/
-extern struct ly_ctx *yang_ctx_new_setup(bool embedded_modules);
+extern struct ly_ctx *yang_ctx_new_setup(bool embedded_modules,
+ bool explicit_compile);
/*
* Enable or disable libyang verbose debugging.
@@ -528,8 +613,16 @@ extern const char *yang_print_errors(struct ly_ctx *ly_ctx, char *buf,
*
* embedded_modules
* Specify whether libyang should attempt to look for embedded YANG modules.
+ * defer_compile
+ * Hold off on compiling modules until yang_init_loading_complete is called.
*/
-extern void yang_init(bool embedded_modules);
+extern void yang_init(bool embedded_modules, bool defer_compile);
+
+/*
+ * Should be called after yang_init and all yang_module_load()s have been done,
+ * compiles all modules loaded into the yang context.
+ */
+extern void yang_init_loading_complete(void);
/*
* Finish the YANG subsystem gracefully. Should be called only when the daemon
@@ -583,10 +676,6 @@ extern uint32_t yang_get_list_pos(const struct lyd_node *node);
*/
extern uint32_t yang_get_list_elements_count(const struct lyd_node *node);
-
-/* To get the immediate child of a dnode */
-const struct lyd_node *yang_dnode_get_child(const struct lyd_node *dnode);
-
/* API to check if the given node is last node in the list */
bool yang_is_last_list_dnode(const struct lyd_node *dnode);
diff --git a/lib/yang_translator.c b/lib/yang_translator.c
index 5b1d96f24c..d562e4d29e 100644
--- a/lib/yang_translator.c
+++ b/lib/yang_translator.c
@@ -93,7 +93,7 @@ yang_mapping_lookup(const struct yang_translator *translator, int dir,
}
static void yang_mapping_add(struct yang_translator *translator, int dir,
- const struct lys_node *snode,
+ const struct lysc_node *snode,
const char *xpath_from_fmt,
const char *xpath_to_fmt)
{
@@ -135,13 +135,15 @@ struct yang_translator *yang_translator_load(const char *path)
struct lyd_node *dnode;
struct ly_set *set;
struct listnode *ln;
+ LY_ERR err;
/* Load module translator (JSON file). */
- dnode = lyd_parse_path(ly_translator_ctx, path, LYD_JSON,
- LYD_OPT_CONFIG);
- if (!dnode) {
+ err = lyd_parse_data_path(ly_translator_ctx, path, LYD_JSON,
+ LYD_PARSE_NO_STATE, LYD_VALIDATE_NO_STATE,
+ &dnode);
+ if (err) {
flog_warn(EC_LIB_YANG_TRANSLATOR_LOAD,
- "%s: lyd_parse_path() failed", __func__);
+ "%s: lyd_parse_path() failed: %d", __func__, err);
return NULL;
}
dnode = yang_dnode_get(dnode,
@@ -171,89 +173,94 @@ struct yang_translator *yang_translator_load(const char *path)
RB_INSERT(yang_translators, &yang_translators, translator);
/* Initialize the translator libyang context. */
- translator->ly_ctx = yang_ctx_new_setup(false);
+ translator->ly_ctx = yang_ctx_new_setup(false, false);
if (!translator->ly_ctx) {
flog_warn(EC_LIB_LIBYANG, "%s: ly_ctx_new() failed", __func__);
goto error;
}
- /* Load modules and deviations. */
- set = lyd_find_path(dnode, "./module");
- assert(set);
- for (size_t i = 0; i < set->number; i++) {
+ /* Load modules */
+ if (lyd_find_xpath(dnode, "./module", &set) != LY_SUCCESS)
+ assert(0); /* XXX libyang2: old ly1 code asserted success */
+
+ for (size_t i = 0; i < set->count; i++) {
const char *module_name;
tmodule =
XCALLOC(MTYPE_YANG_TRANSLATOR_MODULE, sizeof(*tmodule));
- module_name = yang_dnode_get_string(set->set.d[i], "./name");
+ module_name = yang_dnode_get_string(set->dnodes[i], "./name");
tmodule->module = ly_ctx_load_module(translator->ly_ctx,
- module_name, NULL);
+ module_name, NULL, NULL);
if (!tmodule->module) {
flog_warn(EC_LIB_YANG_TRANSLATOR_LOAD,
"%s: failed to load module: %s", __func__,
module_name);
- ly_set_free(set);
+ ly_set_free(set, NULL);
goto error;
}
+ }
- module_name =
- yang_dnode_get_string(set->set.d[i], "./deviations");
- tmodule->deviations = ly_ctx_load_module(translator->ly_ctx,
- module_name, NULL);
+ /* Count nodes in modules. */
+ for (ALL_LIST_ELEMENTS_RO(translator->modules, ln, tmodule)) {
+ tmodule->nodes_before_deviations =
+ yang_module_nodes_count(tmodule->module);
+ }
+
+ /* Load the deviations and count nodes again */
+ for (ALL_LIST_ELEMENTS_RO(translator->modules, ln, tmodule)) {
+ const char *module_name = tmodule->module->name;
+ tmodule->deviations = ly_ctx_load_module(
+ translator->ly_ctx, module_name, NULL, NULL);
if (!tmodule->deviations) {
flog_warn(EC_LIB_YANG_TRANSLATOR_LOAD,
"%s: failed to load module: %s", __func__,
module_name);
- ly_set_free(set);
+ ly_set_free(set, NULL);
goto error;
}
- lys_set_disabled(tmodule->deviations);
- listnode_add(translator->modules, tmodule);
+ tmodule->nodes_after_deviations =
+ yang_module_nodes_count(tmodule->module);
}
- ly_set_free(set);
+ ly_set_free(set, NULL);
/* Calculate the coverage. */
for (ALL_LIST_ELEMENTS_RO(translator->modules, ln, tmodule)) {
- tmodule->nodes_before_deviations =
- yang_module_nodes_count(tmodule->module);
-
- lys_set_enabled(tmodule->deviations);
-
- tmodule->nodes_after_deviations =
- yang_module_nodes_count(tmodule->module);
tmodule->coverage = ((double)tmodule->nodes_after_deviations
/ (double)tmodule->nodes_before_deviations)
* 100;
}
/* Load mappings. */
- set = lyd_find_path(dnode, "./module/mappings");
- assert(set);
- for (size_t i = 0; i < set->number; i++) {
+ if (lyd_find_xpath(dnode, "./module/mappings", &set) != LY_SUCCESS)
+ assert(0); /* XXX libyang2: old ly1 code asserted success */
+ for (size_t i = 0; i < set->count; i++) {
const char *xpath_custom, *xpath_native;
- const struct lys_node *snode_custom, *snode_native;
+ const struct lysc_node *snode_custom, *snode_native;
+
+ xpath_custom =
+ yang_dnode_get_string(set->dnodes[i], "./custom");
- xpath_custom = yang_dnode_get_string(set->set.d[i], "./custom");
- snode_custom = ly_ctx_get_node(translator->ly_ctx, NULL,
- xpath_custom, 0);
+ snode_custom = lys_find_path(translator->ly_ctx, NULL,
+ xpath_custom, 0);
if (!snode_custom) {
flog_warn(EC_LIB_YANG_TRANSLATOR_LOAD,
"%s: unknown data path: %s", __func__,
xpath_custom);
- ly_set_free(set);
+ ly_set_free(set, NULL);
goto error;
}
- xpath_native = yang_dnode_get_string(set->set.d[i], "./native");
+ xpath_native =
+ yang_dnode_get_string(set->dnodes[i], "./native");
snode_native =
- ly_ctx_get_node(ly_native_ctx, NULL, xpath_native, 0);
+ lys_find_path(ly_native_ctx, NULL, xpath_native, 0);
if (!snode_native) {
flog_warn(EC_LIB_YANG_TRANSLATOR_LOAD,
"%s: unknown data path: %s", __func__,
xpath_native);
- ly_set_free(set);
+ ly_set_free(set, NULL);
goto error;
}
@@ -262,7 +269,7 @@ struct yang_translator *yang_translator_load(const char *path)
yang_mapping_add(translator, YANG_TRANSLATE_FROM_NATIVE,
snode_native, xpath_native, xpath_custom);
}
- ly_set_free(set);
+ ly_set_free(set, NULL);
/* Validate mappings. */
if (yang_translator_validate(translator) != 0)
@@ -290,7 +297,7 @@ void yang_translator_unload(struct yang_translator *translator)
hash_clean(translator->mappings[i], yang_mapping_hash_free);
translator->modules->del = (void (*)(void *))yang_tmodule_delete;
list_delete(&translator->modules);
- ly_ctx_destroy(translator->ly_ctx, NULL);
+ ly_ctx_destroy(translator->ly_ctx);
RB_REMOVE(yang_translators, &yang_translators, translator);
XFREE(MTYPE_YANG_TRANSLATOR, translator);
}
@@ -308,7 +315,7 @@ yang_translate_xpath(const struct yang_translator *translator, int dir,
char *xpath, size_t xpath_len)
{
struct ly_ctx *ly_ctx;
- const struct lys_node *snode;
+ const struct lysc_node *snode;
struct yang_mapping_node *mapping;
char xpath_canonical[XPATH_MAXLEN];
char keys[4][LIST_MAXKEYLEN];
@@ -319,7 +326,7 @@ yang_translate_xpath(const struct yang_translator *translator, int dir,
else
ly_ctx = ly_native_ctx;
- snode = ly_ctx_get_node(ly_ctx, NULL, xpath, 0);
+ snode = lys_find_path(ly_ctx, NULL, xpath, 0);
if (!snode) {
flog_warn(EC_LIB_YANG_TRANSLATION_ERROR,
"%s: unknown data path: %s", __func__, xpath);
@@ -352,7 +359,7 @@ int yang_translate_dnode(const struct yang_translator *translator, int dir,
{
struct ly_ctx *ly_ctx;
struct lyd_node *new;
- struct lyd_node *root, *next, *dnode_iter;
+ struct lyd_node *root, *dnode_iter;
/* Create new libyang data node to hold the translated data. */
if (dir == YANG_TRANSLATE_TO_NATIVE)
@@ -362,8 +369,8 @@ int yang_translate_dnode(const struct yang_translator *translator, int dir,
new = yang_dnode_new(ly_ctx, false);
/* Iterate over all nodes from the data tree. */
- LY_TREE_FOR (*dnode, root) {
- LY_TREE_DFS_BEGIN (root, next, dnode_iter) {
+ LY_LIST_FOR (*dnode, root) {
+ LYD_TREE_DFS_BEGIN (root, dnode_iter) {
char xpath[XPATH_MAXLEN];
enum yang_translate_result ret;
@@ -380,19 +387,17 @@ int yang_translate_dnode(const struct yang_translator *translator, int dir,
}
/* Create new node in the tree of translated data. */
- ly_errno = 0;
- if (!lyd_new_path(new, ly_ctx, xpath,
- (void *)yang_dnode_get_string(
- dnode_iter, NULL),
- 0, LYD_PATH_OPT_UPDATE)
- && ly_errno) {
+ if (lyd_new_path(new, ly_ctx, xpath,
+ (void *)yang_dnode_get_string(
+ dnode_iter, NULL),
+ LYD_NEW_PATH_UPDATE, NULL)) {
flog_err(EC_LIB_LIBYANG,
"%s: lyd_new_path() failed", __func__);
goto error;
}
next:
- LY_TREE_DFS_END(root, next, dnode_iter);
+ LYD_TREE_DFS_END(root, dnode_iter);
}
}
@@ -413,13 +418,13 @@ struct translator_validate_args {
unsigned int errors;
};
-static int yang_translator_validate_cb(const struct lys_node *snode_custom,
+static int yang_translator_validate_cb(const struct lysc_node *snode_custom,
void *arg)
{
struct translator_validate_args *args = arg;
struct yang_mapping_node *mapping;
- const struct lys_node *snode_native;
- const struct lys_type *stype_custom, *stype_native;
+ const struct lysc_node *snode_native;
+ const struct lysc_type *stype_custom, *stype_native;
char xpath[XPATH_MAXLEN];
yang_snode_get_path(snode_custom, YANG_PATH_DATA, xpath, sizeof(xpath));
@@ -433,14 +438,14 @@ static int yang_translator_validate_cb(const struct lys_node *snode_custom,
}
snode_native =
- ly_ctx_get_node(ly_native_ctx, NULL, mapping->xpath_to_fmt, 0);
+ lys_find_path(ly_native_ctx, NULL, mapping->xpath_to_fmt, 0);
assert(snode_native);
/* Check if the YANG types are compatible. */
stype_custom = yang_snode_get_type(snode_custom);
stype_native = yang_snode_get_type(snode_native);
if (stype_custom && stype_native) {
- if (stype_custom->base != stype_native->base) {
+ if (stype_custom->basetype != stype_native->basetype) {
flog_warn(
EC_LIB_YANG_TRANSLATOR_LOAD,
"%s: YANG types are incompatible (xpath: \"%s\")",
@@ -486,7 +491,7 @@ static unsigned int yang_translator_validate(struct yang_translator *translator)
return args.errors;
}
-static int yang_module_nodes_count_cb(const struct lys_node *snode, void *arg)
+static int yang_module_nodes_count_cb(const struct lysc_node *snode, void *arg)
{
unsigned int *total = arg;
@@ -511,14 +516,14 @@ static unsigned int yang_module_nodes_count(const struct lys_module *module)
void yang_translator_init(void)
{
- ly_translator_ctx = yang_ctx_new_setup(true);
+ ly_translator_ctx = yang_ctx_new_setup(true, false);
if (!ly_translator_ctx) {
flog_err(EC_LIB_LIBYANG, "%s: ly_ctx_new() failed", __func__);
exit(1);
}
if (!ly_ctx_load_module(ly_translator_ctx, "frr-module-translator",
- NULL)) {
+ NULL, NULL)) {
flog_err(
EC_LIB_YANG_MODULE_LOAD,
"%s: failed to load the \"frr-module-translator\" module",
@@ -536,5 +541,5 @@ void yang_translator_terminate(void)
yang_translator_unload(translator);
}
- ly_ctx_destroy(ly_translator_ctx, NULL);
+ ly_ctx_destroy(ly_translator_ctx);
}
diff --git a/lib/yang_wrappers.c b/lib/yang_wrappers.c
index 98f8fea0fe..85aa003db7 100644
--- a/lib/yang_wrappers.c
+++ b/lib/yang_wrappers.c
@@ -26,12 +26,80 @@
#include "nexthop.h"
#include "printfrr.h"
+
+#define YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt) \
+ ({ \
+ va_list __ap; \
+ va_start(__ap, (xpath_fmt)); \
+ const struct lyd_value *__dvalue = \
+ yang_dnode_xpath_get_value(dnode, xpath_fmt, __ap); \
+ va_end(__ap); \
+ __dvalue; \
+ })
+
+#define YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt) \
+ ({ \
+ va_list __ap; \
+ va_start(__ap, (xpath_fmt)); \
+ const char *__canon = \
+ yang_dnode_xpath_get_canon(dnode, xpath_fmt, __ap); \
+ va_end(__ap); \
+ __canon; \
+ })
+
+#define YANG_DNODE_GET_ASSERT(dnode, xpath) \
+ do { \
+ if ((dnode) == NULL) { \
+ flog_err(EC_LIB_YANG_DNODE_NOT_FOUND, \
+ "%s: couldn't find %s", __func__, (xpath)); \
+ zlog_backtrace(LOG_ERR); \
+ abort(); \
+ } \
+ } while (0)
+
+static inline const char *
+yang_dnode_xpath_get_canon(const struct lyd_node *dnode, const char *xpath_fmt,
+ va_list ap)
+{
+ const struct lyd_node_term *__dleaf =
+ (const struct lyd_node_term *)dnode;
+ assert(__dleaf);
+ if (xpath_fmt) {
+ char __xpath[XPATH_MAXLEN];
+ vsnprintf(__xpath, sizeof(__xpath), xpath_fmt, ap);
+ __dleaf = (const struct lyd_node_term *)yang_dnode_get(dnode,
+ __xpath);
+ YANG_DNODE_GET_ASSERT(__dleaf, __xpath);
+ }
+ return lyd_get_value(&__dleaf->node);
+}
+
+static inline const struct lyd_value *
+yang_dnode_xpath_get_value(const struct lyd_node *dnode, const char *xpath_fmt,
+ va_list ap)
+{
+ const struct lyd_node_term *__dleaf =
+ (const struct lyd_node_term *)dnode;
+ assert(__dleaf);
+ if (xpath_fmt) {
+ char __xpath[XPATH_MAXLEN];
+ vsnprintf(__xpath, sizeof(__xpath), xpath_fmt, ap);
+ __dleaf = (const struct lyd_node_term *)yang_dnode_get(dnode,
+ __xpath);
+ YANG_DNODE_GET_ASSERT(__dleaf, __xpath);
+ }
+ const struct lyd_value *__dvalue = &__dleaf->value;
+ if (__dvalue->realtype->basetype == LY_TYPE_UNION)
+ __dvalue = &__dvalue->subvalue->value;
+ return __dvalue;
+}
+
static const char *yang_get_default_value(const char *xpath)
{
- const struct lys_node *snode;
+ const struct lysc_node *snode;
const char *value;
- snode = ly_ctx_get_node(ly_native_ctx, NULL, xpath, 0);
+ snode = lys_find_path(ly_native_ctx, NULL, xpath, 0);
if (snode == NULL) {
flog_err(EC_LIB_YANG_UNKNOWN_DATA_PATH,
"%s: unknown data path: %s", __func__, xpath);
@@ -45,16 +113,6 @@ static const char *yang_get_default_value(const char *xpath)
return value;
}
-#define YANG_DNODE_GET_ASSERT(dnode, xpath) \
- do { \
- if ((dnode) == NULL) { \
- flog_err(EC_LIB_YANG_DNODE_NOT_FOUND, \
- "%s: couldn't find %s", __func__, (xpath)); \
- zlog_backtrace(LOG_ERR); \
- abort(); \
- } \
- } while (0)
-
/*
* Primitive type: bool.
*/
@@ -71,23 +129,10 @@ struct yang_data *yang_data_new_bool(const char *xpath, bool value)
bool yang_dnode_get_bool(const struct lyd_node *dnode, const char *xpath_fmt,
...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_BOOL);
- return dleaf->value.bln;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_BOOL);
+ return dvalue->boolean;
}
bool yang_get_default_bool(const char *xpath_fmt, ...)
@@ -133,24 +178,18 @@ struct yang_data *yang_data_new_dec64(const char *xpath, double value)
double yang_dnode_get_dec64(const struct lyd_node *dnode, const char *xpath_fmt,
...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
+ const double denom[19] = {1e0, 1e-1, 1e-2, 1e-3, 1e-4,
+ 1e-5, 1e-6, 1e-7, 1e-8, 1e-9,
+ 1e-10, 1e-11, 1e-12, 1e-13, 1e-14,
+ 1e-15, 1e-16, 1e-17, 1e-18};
+ const struct lysc_type_dec *dectype;
+ const struct lyd_value *dvalue;
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_DEC64);
-
- return lyd_dec64_to_double(dnode);
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ dectype = (const struct lysc_type_dec *)dvalue->realtype;
+ assert(dectype->basetype == LY_TYPE_DEC64);
+ assert(dectype->fraction_digits < sizeof(denom) / sizeof(*denom));
+ return (double)dvalue->dec64 * denom[dectype->fraction_digits];
}
double yang_get_default_dec64(const char *xpath_fmt, ...)
@@ -172,12 +211,12 @@ double yang_get_default_dec64(const char *xpath_fmt, ...)
*/
int yang_str2enum(const char *xpath, const char *value)
{
- const struct lys_node *snode;
- const struct lys_node_leaf *sleaf;
- const struct lys_type *type;
- const struct lys_type_info_enums *enums;
+ const struct lysc_node *snode;
+ const struct lysc_node_leaf *sleaf;
+ const struct lysc_type_enum *type;
+ const struct lysc_type_bitenum_item *enums;
- snode = ly_ctx_get_node(ly_native_ctx, NULL, xpath, 0);
+ snode = lys_find_path(ly_native_ctx, NULL, xpath, 0);
if (snode == NULL) {
flog_err(EC_LIB_YANG_UNKNOWN_DATA_PATH,
"%s: unknown data path: %s", __func__, xpath);
@@ -185,18 +224,17 @@ int yang_str2enum(const char *xpath, const char *value)
abort();
}
- sleaf = (const struct lys_node_leaf *)snode;
- type = &sleaf->type;
- enums = &type->info.enums;
- while (enums->count == 0 && type->der) {
- type = &type->der->type;
- enums = &type->info.enums;
- }
- for (unsigned int i = 0; i < enums->count; i++) {
- const struct lys_type_enum *enm = &enums->enm[i];
-
- if (strmatch(value, enm->name))
- return enm->value;
+ assert(snode->nodetype == LYS_LEAF);
+ sleaf = (const struct lysc_node_leaf *)snode;
+ type = (const struct lysc_type_enum *)sleaf->type;
+ assert(type->basetype == LY_TYPE_ENUM);
+ enums = type->enums;
+ unsigned int count = LY_ARRAY_COUNT(enums);
+ for (unsigned int i = 0; i < count; i++) {
+ if (strmatch(value, enums[i].name)) {
+ assert(CHECK_FLAG(enums[i].flags, LYS_SET_VALUE));
+ return enums[i].value;
+ }
}
flog_err(EC_LIB_YANG_DATA_CONVERT,
@@ -208,12 +246,12 @@ int yang_str2enum(const char *xpath, const char *value)
struct yang_data *yang_data_new_enum(const char *xpath, int value)
{
- const struct lys_node *snode;
- const struct lys_node_leaf *sleaf;
- const struct lys_type *type;
- const struct lys_type_info_enums *enums;
+ const struct lysc_node *snode;
+ const struct lysc_node_leaf *sleaf;
+ const struct lysc_type_enum *type;
+ const struct lysc_type_bitenum_item *enums;
- snode = ly_ctx_get_node(ly_native_ctx, NULL, xpath, 0);
+ snode = lys_find_path(ly_native_ctx, NULL, xpath, 0);
if (snode == NULL) {
flog_err(EC_LIB_YANG_UNKNOWN_DATA_PATH,
"%s: unknown data path: %s", __func__, xpath);
@@ -221,18 +259,16 @@ struct yang_data *yang_data_new_enum(const char *xpath, int value)
abort();
}
- sleaf = (const struct lys_node_leaf *)snode;
- type = &sleaf->type;
- enums = &type->info.enums;
- while (enums->count == 0 && type->der) {
- type = &type->der->type;
- enums = &type->info.enums;
- }
- for (unsigned int i = 0; i < enums->count; i++) {
- const struct lys_type_enum *enm = &enums->enm[i];
-
- if (value == enm->value)
- return yang_data_new(xpath, enm->name);
+ assert(snode->nodetype == LYS_LEAF);
+ sleaf = (const struct lysc_node_leaf *)snode;
+ type = (const struct lysc_type_enum *)sleaf->type;
+ assert(type->basetype == LY_TYPE_ENUM);
+ enums = type->enums;
+ unsigned int count = LY_ARRAY_COUNT(enums);
+ for (unsigned int i = 0; i < count; i++) {
+ if (CHECK_FLAG(enums[i].flags, LYS_SET_VALUE)
+ && value == enums[i].value)
+ return yang_data_new(xpath, enums[i].name);
}
flog_err(EC_LIB_YANG_DATA_CONVERT,
@@ -245,23 +281,12 @@ struct yang_data *yang_data_new_enum(const char *xpath, int value)
int yang_dnode_get_enum(const struct lyd_node *dnode, const char *xpath_fmt,
...)
{
- const struct lyd_node_leaf_list *dleaf;
+ const struct lyd_value *dvalue;
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_ENUM);
- return dleaf->value.enm->value;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_ENUM);
+ assert(dvalue->enum_item->flags & LYS_SET_VALUE);
+ return dvalue->enum_item->value;
}
int yang_get_default_enum(const char *xpath_fmt, ...)
@@ -297,23 +322,10 @@ struct yang_data *yang_data_new_int8(const char *xpath, int8_t value)
int8_t yang_dnode_get_int8(const struct lyd_node *dnode, const char *xpath_fmt,
...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_INT8);
- return dleaf->value.int8;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_INT8);
+ return dvalue->int8;
}
int8_t yang_get_default_int8(const char *xpath_fmt, ...)
@@ -349,23 +361,10 @@ struct yang_data *yang_data_new_int16(const char *xpath, int16_t value)
int16_t yang_dnode_get_int16(const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_INT16);
- return dleaf->value.int16;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_INT16);
+ return dvalue->int16;
}
int16_t yang_get_default_int16(const char *xpath_fmt, ...)
@@ -401,23 +400,10 @@ struct yang_data *yang_data_new_int32(const char *xpath, int32_t value)
int32_t yang_dnode_get_int32(const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_INT32);
- return dleaf->value.int32;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_INT32);
+ return dvalue->int32;
}
int32_t yang_get_default_int32(const char *xpath_fmt, ...)
@@ -453,23 +439,10 @@ struct yang_data *yang_data_new_int64(const char *xpath, int64_t value)
int64_t yang_dnode_get_int64(const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_INT64);
- return dleaf->value.int64;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_INT64);
+ return dvalue->int64;
}
int64_t yang_get_default_int64(const char *xpath_fmt, ...)
@@ -505,23 +478,10 @@ struct yang_data *yang_data_new_uint8(const char *xpath, uint8_t value)
uint8_t yang_dnode_get_uint8(const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_UINT8);
- return dleaf->value.uint8;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_UINT8);
+ return dvalue->uint8;
}
uint8_t yang_get_default_uint8(const char *xpath_fmt, ...)
@@ -557,23 +517,10 @@ struct yang_data *yang_data_new_uint16(const char *xpath, uint16_t value)
uint16_t yang_dnode_get_uint16(const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_UINT16);
- return dleaf->value.uint16;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_UINT16);
+ return dvalue->uint16;
}
uint16_t yang_get_default_uint16(const char *xpath_fmt, ...)
@@ -609,23 +556,10 @@ struct yang_data *yang_data_new_uint32(const char *xpath, uint32_t value)
uint32_t yang_dnode_get_uint32(const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_UINT32);
- return dleaf->value.uint32;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_UINT32);
+ return dvalue->uint32;
}
uint32_t yang_get_default_uint32(const char *xpath_fmt, ...)
@@ -661,23 +595,10 @@ struct yang_data *yang_data_new_uint64(const char *xpath, uint64_t value)
uint64_t yang_dnode_get_uint64(const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_UINT64);
- return dleaf->value.uint64;
+ const struct lyd_value *dvalue;
+ dvalue = YANG_DNODE_XPATH_GET_VALUE(dnode, xpath_fmt);
+ assert(dvalue->realtype->basetype == LY_TYPE_UINT64);
+ return dvalue->uint64;
}
uint64_t yang_get_default_uint64(const char *xpath_fmt, ...)
@@ -707,44 +628,15 @@ struct yang_data *yang_data_new_string(const char *xpath, const char *value)
const char *yang_dnode_get_string(const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- return dleaf->value_str;
+ return YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt);
}
void yang_dnode_get_string_buf(char *buf, size_t size,
const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- if (strlcpy(buf, dleaf->value_str, size) >= size) {
+ const char *canon = YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt);
+ if (strlcpy(buf, canon, size) >= size) {
char xpath[XPATH_MAXLEN];
yang_dnode_get_path(dnode, xpath, sizeof(xpath));
@@ -797,7 +689,7 @@ bool yang_dnode_get_empty(const struct lyd_node *dnode, const char *xpath_fmt,
{
va_list ap;
char xpath[XPATH_MAXLEN];
- const struct lyd_node_leaf_list *dleaf;
+ const struct lyd_node_term *dleaf;
assert(dnode);
@@ -807,8 +699,8 @@ bool yang_dnode_get_empty(const struct lyd_node *dnode, const char *xpath_fmt,
dnode = yang_dnode_get(dnode, xpath);
if (dnode) {
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- if (dleaf->value_type == LY_TYPE_EMPTY)
+ dleaf = (const struct lyd_node_term *)dnode;
+ if (dleaf->value.realtype->basetype == LY_TYPE_EMPTY)
return true;
}
@@ -836,29 +728,16 @@ struct yang_data *yang_data_new_prefix(const char *xpath,
void yang_dnode_get_prefix(struct prefix *prefix, const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
+ const char *canon;
/*
* Initialize prefix to avoid static analyzer complaints about
* uninitialized memory.
*/
memset(prefix, 0, sizeof(*prefix));
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_STRING);
- (void)str2prefix(dleaf->value_str, prefix);
+ /* XXX ip_prefix is a native type now in ly2, leverage? */
+ canon = YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt);
+ (void)str2prefix(canon, prefix);
}
void yang_get_default_prefix(union prefixptr var, const char *xpath_fmt, ...)
@@ -895,23 +774,9 @@ struct yang_data *yang_data_new_ipv4(const char *xpath,
void yang_dnode_get_ipv4(struct in_addr *addr, const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_STRING);
- (void)inet_pton(AF_INET, dleaf->value_str, addr);
+ /* XXX libyang2 IPv4 address is a native type now in ly2 */
+ const char *canon = YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt);
+ (void)inet_pton(AF_INET, canon, addr);
}
void yang_get_default_ipv4(struct in_addr *var, const char *xpath_fmt, ...)
@@ -951,24 +816,10 @@ struct yang_data *yang_data_new_ipv4p(const char *xpath,
void yang_dnode_get_ipv4p(union prefixptr prefix, const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
struct prefix_ipv4 *prefix4 = prefix.p4;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_STRING);
- (void)str2prefix_ipv4(dleaf->value_str, prefix4);
+ /* XXX libyang2: ipv4/6 address is a native type now in ly2 */
+ const char *canon = YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt);
+ (void)str2prefix_ipv4(canon, prefix4);
}
void yang_get_default_ipv4p(union prefixptr var, const char *xpath_fmt, ...)
@@ -1005,23 +856,9 @@ struct yang_data *yang_data_new_ipv6(const char *xpath,
void yang_dnode_get_ipv6(struct in6_addr *addr, const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_STRING);
- (void)inet_pton(AF_INET6, dleaf->value_str, addr);
+ /* XXX libyang2: IPv6 address is a native type now, leverage. */
+ const char *canon = YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt);
+ (void)inet_pton(AF_INET6, canon, addr);
}
void yang_get_default_ipv6(struct in6_addr *var, const char *xpath_fmt, ...)
@@ -1061,24 +898,11 @@ struct yang_data *yang_data_new_ipv6p(const char *xpath,
void yang_dnode_get_ipv6p(union prefixptr prefix, const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
struct prefix_ipv6 *prefix6 = prefix.p6;
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_STRING);
- (void)str2prefix_ipv6(dleaf->value_str, prefix6);
+ /* XXX IPv6 address is a native type now in ly2 -- can we leverage? */
+ const char *canon = YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt);
+ (void)str2prefix_ipv6(canon, prefix6);
}
void yang_get_default_ipv6p(union prefixptr var, const char *xpath_fmt, ...)
@@ -1115,23 +939,9 @@ struct yang_data *yang_data_new_ip(const char *xpath, const struct ipaddr *addr)
void yang_dnode_get_ip(struct ipaddr *addr, const struct lyd_node *dnode,
const char *xpath_fmt, ...)
{
- const struct lyd_node_leaf_list *dleaf;
-
- assert(dnode);
- if (xpath_fmt) {
- va_list ap;
- char xpath[XPATH_MAXLEN];
-
- va_start(ap, xpath_fmt);
- vsnprintf(xpath, sizeof(xpath), xpath_fmt, ap);
- va_end(ap);
- dnode = yang_dnode_get(dnode, xpath);
- YANG_DNODE_GET_ASSERT(dnode, xpath);
- }
-
- dleaf = (const struct lyd_node_leaf_list *)dnode;
- assert(dleaf->value_type == LY_TYPE_STRING);
- (void)str2ipaddr(dleaf->value_str, addr);
+ /* XXX IPv4 address could be a plugin type now in ly2, leverage? */
+ const char *canon = YANG_DNODE_XPATH_GET_CANON(dnode, xpath_fmt);
+ (void)str2ipaddr(canon, addr);
}
void yang_get_default_ip(struct ipaddr *var, const char *xpath_fmt, ...)
diff --git a/ospf6d/ospf6_flood.c b/ospf6d/ospf6_flood.c
index 0fa6f8c779..76e81aab7b 100644
--- a/ospf6d/ospf6_flood.c
+++ b/ospf6d/ospf6_flood.c
@@ -1018,18 +1018,20 @@ void ospf6_receive_lsa(struct ospf6_neighbor *from,
if (is_debug)
zlog_debug(
"%s: Current copy of LSA %s is MAXAGE, but new has recent age, flooding/installing.",
- old->name, __PRETTY_FUNCTION__);
+ __PRETTY_FUNCTION__, old->name);
ospf6_lsa_purge(old);
ospf6_flood(from, new);
ospf6_install_lsa(new);
- } else {
- if (is_debug)
- zlog_debug(
- "%s: Current copy of self-originated LSA %s is MAXAGE, but new has recent age, ignoring new.",
- old->name, __PRETTY_FUNCTION__);
- ospf6_lsa_delete(new);
+ return;
}
- return;
+ /* For self-originated LSA, only trust
+ * ourselves. Fall through and send
+ * LS Update with our current copy.
+ */
+ if (is_debug)
+ zlog_debug(
+ "%s: Current copy of self-originated LSA %s is MAXAGE, but new has recent age, re-sending current one.",
+ __PRETTY_FUNCTION__, old->name);
}
/* XXX, MinLSArrival check !? RFC 2328 13 (8) */
diff --git a/ospf6d/ospf6_interface.c b/ospf6d/ospf6_interface.c
index 11bdd1e355..c2f9c3362e 100644
--- a/ospf6d/ospf6_interface.c
+++ b/ospf6d/ospf6_interface.c
@@ -405,6 +405,7 @@ void ospf6_interface_connected_route_update(struct interface *ifp)
struct connected *c;
struct listnode *node, *nnode;
struct in6_addr nh_addr;
+ int count = 0, max_addr_count;
oi = (struct ospf6_interface *)ifp->info;
if (oi == NULL)
@@ -423,10 +424,22 @@ void ospf6_interface_connected_route_update(struct interface *ifp)
/* update "route to advertise" interface route table */
ospf6_route_remove_all(oi->route_connected);
+ if (oi->ifmtu >= OSPF6_JUMBO_MTU)
+ max_addr_count = OSPF6_MAX_IF_ADDRS_JUMBO;
+ else
+ max_addr_count = OSPF6_MAX_IF_ADDRS;
+
for (ALL_LIST_ELEMENTS(oi->interface->connected, node, nnode, c)) {
if (c->address->family != AF_INET6)
continue;
+ /* number of interface addresses supported is based on MTU
+ * size of OSPFv3 packet
+ */
+ count++;
+ if (count >= max_addr_count)
+ break;
+
CONTINUE_IF_ADDRESS_LINKLOCAL(IS_OSPF6_DEBUG_INTERFACE,
c->address);
CONTINUE_IF_ADDRESS_UNSPECIFIED(IS_OSPF6_DEBUG_INTERFACE,
diff --git a/ospf6d/ospf6_interface.h b/ospf6d/ospf6_interface.h
index a45a841406..48b2cbff74 100644
--- a/ospf6d/ospf6_interface.h
+++ b/ospf6d/ospf6_interface.h
@@ -188,6 +188,7 @@ extern void ospf6_interface_disable(struct ospf6_interface *);
extern void ospf6_interface_if_add(struct interface *);
extern void ospf6_interface_state_update(struct interface *);
extern void ospf6_interface_connected_route_update(struct interface *);
+extern void ospf6_interface_connected_route_add(struct connected *);
/* interface event */
extern int interface_up(struct thread *);
diff --git a/ospf6d/ospf6_intra.c b/ospf6d/ospf6_intra.c
index 61a438b04a..12d11d45c1 100644
--- a/ospf6d/ospf6_intra.c
+++ b/ospf6d/ospf6_intra.c
@@ -757,6 +757,7 @@ int ospf6_link_lsa_originate(struct thread *thread)
struct ospf6_link_lsa *link_lsa;
struct ospf6_route *route;
struct ospf6_prefix *op;
+ int count, max_addr_count;
oi = (struct ospf6_interface *)THREAD_ARG(thread);
oi->thread_link_lsa = NULL;
@@ -800,14 +801,20 @@ int ospf6_link_lsa_originate(struct thread *thread)
memcpy(link_lsa->options, oi->area->options, 3);
memcpy(&link_lsa->linklocal_addr, oi->linklocal_addr,
sizeof(struct in6_addr));
- link_lsa->prefix_num = htonl(oi->route_connected->count);
op = (struct ospf6_prefix *)((caddr_t)link_lsa
+ sizeof(struct ospf6_link_lsa));
- /* connected prefix to advertise */
- for (route = ospf6_route_head(oi->route_connected); route;
- route = ospf6_route_next(route)) {
+ /* connected prefix to advertise, number of interface addresses
+ * supported is based on MTU size of OSPFv3 packets
+ */
+ if (oi->ifmtu >= OSPF6_JUMBO_MTU)
+ max_addr_count = OSPF6_MAX_IF_ADDRS_JUMBO;
+ else
+ max_addr_count = OSPF6_MAX_IF_ADDRS;
+ for (route = ospf6_route_head(oi->route_connected), count = 0;
+ route && count < max_addr_count;
+ route = ospf6_route_next(route), count++) {
op->prefix_length = route->prefix.prefixlen;
op->prefix_options = route->path.prefix_options;
op->prefix_metric = htons(0);
@@ -816,6 +823,8 @@ int ospf6_link_lsa_originate(struct thread *thread)
op = OSPF6_PREFIX_NEXT(op);
}
+ link_lsa->prefix_num = htonl(count);
+
/* Fill LSA Header */
lsa_header->age = 0;
lsa_header->type = htons(OSPF6_LSTYPE_LINK);
@@ -995,6 +1004,7 @@ int ospf6_intra_prefix_lsa_originate_stub(struct thread *thread)
unsigned short prefix_num = 0;
struct ospf6_route_table *route_advertise;
int ls_id = 0;
+ int count, max_addr_count;
oa = (struct ospf6_area *)THREAD_ARG(thread);
oa->thread_intra_prefix_lsa = NULL;
@@ -1040,6 +1050,8 @@ int ospf6_intra_prefix_lsa_originate_stub(struct thread *thread)
intra_prefix_lsa->ref_adv_router = oa->ospf6->router_id;
route_advertise = ospf6_route_table_create(0, 0);
+ route_advertise->hook_add = NULL;
+ route_advertise->hook_remove = NULL;
for (ALL_LIST_ELEMENTS_RO(oa->if_list, i, oi)) {
if (oi->state == OSPF6_INTERFACE_DOWN) {
@@ -1068,8 +1080,14 @@ int ospf6_intra_prefix_lsa_originate_stub(struct thread *thread)
zlog_debug(" Interface %s:", oi->interface->name);
/* connected prefix to advertise */
- for (route = ospf6_route_head(oi->route_connected); route;
- route = ospf6_route_best_next(route)) {
+ if (oi->ifmtu >= OSPF6_JUMBO_MTU)
+ max_addr_count = OSPF6_MAX_IF_ADDRS_JUMBO;
+ else
+ max_addr_count = OSPF6_MAX_IF_ADDRS;
+
+ for (route = ospf6_route_head(oi->route_connected), count = 0;
+ route && count < max_addr_count;
+ route = ospf6_route_best_next(route), count++) {
if (IS_OSPF6_DEBUG_ORIGINATE(INTRA_PREFIX))
zlog_debug(" include %pFX", &route->prefix);
ospf6_route_add(ospf6_route_copy(route),
@@ -1284,6 +1302,8 @@ int ospf6_intra_prefix_lsa_originate_transit(struct thread *thread)
/* connected prefix to advertise */
route_advertise = ospf6_route_table_create(0, 0);
+ route_advertise->hook_add = NULL;
+ route_advertise->hook_remove = NULL;
type = ntohs(OSPF6_LSTYPE_LINK);
for (ALL_LSDB_TYPED(oi->lsdb, type, lsa)) {
diff --git a/ospf6d/ospf6_main.c b/ospf6d/ospf6_main.c
index 5ffcf8c2fa..e233611690 100644
--- a/ospf6d/ospf6_main.c
+++ b/ospf6d/ospf6_main.c
@@ -87,6 +87,8 @@ static void __attribute__((noreturn)) ospf6_exit(int status)
frr_early_fini();
+ bfd_protocol_integration_set_shutdown(true);
+
for (ALL_LIST_ELEMENTS(om6->ospf6, node, nnode, ospf6)) {
vrf = vrf_lookup_by_id(ospf6->vrf_id);
ospf6_delete(ospf6);
@@ -96,9 +98,6 @@ static void __attribute__((noreturn)) ospf6_exit(int status)
ospf6_interface_delete(ifp->info);
}
- bfd_gbl_exit();
-
-
ospf6_message_terminate();
ospf6_asbr_terminate();
ospf6_lsa_terminate();
diff --git a/ospf6d/ospf6_top.c b/ospf6d/ospf6_top.c
index 3ab0f1fbb6..a5c188c465 100644
--- a/ospf6d/ospf6_top.c
+++ b/ospf6d/ospf6_top.c
@@ -850,6 +850,7 @@ DEFUN (ospf6_interface_area,
struct ospf6_interface *oi;
struct interface *ifp;
vrf_id_t vrf_id = VRF_DEFAULT;
+ int ipv6_count = 0;
if (ospf6->vrf_id != VRF_UNKNOWN)
vrf_id = ospf6->vrf_id;
@@ -865,6 +866,23 @@ DEFUN (ospf6_interface_area,
return CMD_SUCCESS;
}
+ /* if more than OSPF6_MAX_IF_ADDRS are configured on this interface
+ * then don't allow ospfv3 to be configured
+ */
+ ipv6_count = connected_count_by_family(ifp, AF_INET6);
+ if (oi->ifmtu == OSPF6_DEFAULT_MTU && ipv6_count > OSPF6_MAX_IF_ADDRS) {
+ vty_out(vty,
+ "can not configure OSPFv3 on if %s, must have less than %d interface addresses but has %d addresses\n",
+ ifp->name, OSPF6_MAX_IF_ADDRS, ipv6_count);
+ return CMD_WARNING_CONFIG_FAILED;
+ } else if (oi->ifmtu >= OSPF6_JUMBO_MTU
+ && ipv6_count > OSPF6_MAX_IF_ADDRS_JUMBO) {
+ vty_out(vty,
+ "can not configure OSPFv3 on if %s, must have less than %d interface addresses but has %d addresses\n",
+ ifp->name, OSPF6_MAX_IF_ADDRS_JUMBO, ipv6_count);
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+
/* parse Area-ID */
OSPF6_CMD_AREA_GET(argv[idx_ipv4]->arg, oa, ospf6);
diff --git a/ospf6d/ospf6_top.h b/ospf6d/ospf6_top.h
index 9ba5a0f9a4..238d6a40ce 100644
--- a/ospf6d/ospf6_top.h
+++ b/ospf6d/ospf6_top.h
@@ -153,6 +153,10 @@ DECLARE_QOBJ_TYPE(ospf6);
#define OSPF6_DISABLED 0x01
#define OSPF6_STUB_ROUTER 0x02
#define OSPF6_FLAG_ASBR 0x04
+#define OSPF6_MAX_IF_ADDRS 100
+#define OSPF6_MAX_IF_ADDRS_JUMBO 200
+#define OSPF6_DEFAULT_MTU 1500
+#define OSPF6_JUMBO_MTU 9000
/* global pointer for OSPF top data structure */
extern struct ospf6 *ospf6;
diff --git a/ospf6d/ospf6_zebra.c b/ospf6d/ospf6_zebra.c
index 76e7172870..170d545c49 100644
--- a/ospf6d/ospf6_zebra.c
+++ b/ospf6d/ospf6_zebra.c
@@ -130,17 +130,38 @@ void ospf6_zebra_no_redistribute(int type, vrf_id_t vrf_id)
static int ospf6_zebra_if_address_update_add(ZAPI_CALLBACK_ARGS)
{
struct connected *c;
+ struct ospf6_interface *oi;
+ int ipv6_count = 0;
c = zebra_interface_address_read(ZEBRA_INTERFACE_ADDRESS_ADD,
zclient->ibuf, vrf_id);
if (c == NULL)
return 0;
+ oi = (struct ospf6_interface *)c->ifp->info;
+ if (oi == NULL)
+ oi = ospf6_interface_create(c->ifp);
+ assert(oi);
+
if (IS_OSPF6_DEBUG_ZEBRA(RECV))
zlog_debug("Zebra Interface address add: %s %5s %pFX",
c->ifp->name, prefix_family_str(c->address),
c->address);
+ ipv6_count = connected_count_by_family(c->ifp, AF_INET6);
+ if (oi->ifmtu == OSPF6_DEFAULT_MTU && ipv6_count > OSPF6_MAX_IF_ADDRS) {
+ zlog_warn(
+ "Zebra Interface : %s has too many interface addresses %d only support %d, increase MTU",
+ c->ifp->name, ipv6_count, OSPF6_MAX_IF_ADDRS);
+ return 0;
+ } else if (oi->ifmtu >= OSPF6_JUMBO_MTU
+ && ipv6_count > OSPF6_MAX_IF_ADDRS_JUMBO) {
+ zlog_warn(
+ "Zebra Interface : %s has too many interface addresses %d only support %d",
+ c->ifp->name, ipv6_count, OSPF6_MAX_IF_ADDRS_JUMBO);
+ return 0;
+ }
+
if (c->address->family == AF_INET6) {
ospf6_interface_state_update(c->ifp);
ospf6_interface_connected_route_update(c->ifp);
@@ -303,7 +324,7 @@ static void ospf6_zebra_route_update(int type, struct ospf6_route *request,
struct prefix *dest;
if (IS_OSPF6_DEBUG_ZEBRA(SEND))
- zlog_debug("Send %s route: %pFX",
+ zlog_debug("Zebra Send %s route: %pFX",
(type == REM ? "remove" : "add"), &request->prefix);
if (zclient->sock < 0) {
diff --git a/ospfd/ospf_asbr.c b/ospfd/ospf_asbr.c
index b022133dcd..bda00e0c9e 100644
--- a/ospfd/ospf_asbr.c
+++ b/ospfd/ospf_asbr.c
@@ -692,8 +692,7 @@ struct ospf_lsa *ospf_originate_summary_lsa(struct ospf *ospf,
if (IS_DEBUG_OSPF(lsa, EXTNL_LSA_AGGR))
zlog_debug(
"%s: LSA is in MAX-AGE so refreshing LSA(%pI4/%d)",
- __PRETTY_FUNCTION__, &aggr->p.prefix,
- aggr->p.prefixlen);
+ __func__, &aggr->p.prefix, aggr->p.prefixlen);
ospf_external_lsa_refresh(ospf, lsa, &ei_aggr,
LSA_REFRESH_FORCE, 1);
@@ -711,8 +710,7 @@ struct ospf_lsa *ospf_originate_summary_lsa(struct ospf *ospf,
if (IS_DEBUG_OSPF(lsa, EXTNL_LSA_AGGR))
zlog_debug(
"%s: External route prefix is same as aggr so refreshing LSA(%pI4/%d)",
- __PRETTY_FUNCTION__, &aggr->p.prefix,
- aggr->p.prefixlen);
+ __func__, &aggr->p.prefix, aggr->p.prefixlen);
ospf_external_lsa_refresh(ospf, lsa, &ei_aggr,
LSA_REFRESH_FORCE, 1);
SET_FLAG(aggr->flags, OSPF_EXTERNAL_AGGRT_ORIGINATED);
diff --git a/ospfd/ospf_flood.c b/ospfd/ospf_flood.c
index caba03c1b5..7eb587899b 100644
--- a/ospfd/ospf_flood.c
+++ b/ospfd/ospf_flood.c
@@ -388,8 +388,7 @@ int ospf_flood(struct ospf *ospf, struct ospf_neighbor *nbr,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Received a maxage GRACE-LSA from router %pI4",
- __PRETTY_FUNCTION__,
- &new->data->adv_router);
+ __func__, &new->data->adv_router);
if (current) {
ospf_process_maxage_grace_lsa(ospf, new, nbr);
@@ -397,22 +396,21 @@ int ospf_flood(struct ospf *ospf, struct ospf_neighbor *nbr,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Grace LSA doesn't exist in lsdb, so discarding grace lsa",
- __PRETTY_FUNCTION__);
+ __func__);
return -1;
}
} else {
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Received a GRACE-LSA from router %pI4",
- __PRETTY_FUNCTION__,
- &new->data->adv_router);
+ __func__, &new->data->adv_router);
if (ospf_process_grace_lsa(ospf, new, nbr)
== OSPF_GR_NOT_HELPER) {
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Not moving to HELPER role, So discarding grace LSA",
- __PRETTY_FUNCTION__);
+ __func__);
return -1;
}
}
diff --git a/ospfd/ospf_gr_helper.c b/ospfd/ospf_gr_helper.c
index a86e1b8401..d818878cf5 100644
--- a/ospfd/ospf_gr_helper.c
+++ b/ospfd/ospf_gr_helper.c
@@ -164,7 +164,7 @@ void ospf_gr_helper_init(struct ospf *ospf)
int rc;
if (IS_DEBUG_OSPF_GR_HELPER)
- zlog_debug("%s, GR Helper init.", __PRETTY_FUNCTION__);
+ zlog_debug("%s, GR Helper init.", __func__);
ospf->is_helper_supported = OSPF_GR_FALSE;
ospf->strict_lsa_check = OSPF_GR_TRUE;
@@ -201,7 +201,7 @@ void ospf_gr_helper_stop(struct ospf *ospf)
{
if (IS_DEBUG_OSPF_GR_HELPER)
- zlog_debug("%s, GR helper deinit.", __PRETTY_FUNCTION__);
+ zlog_debug("%s, GR helper deinit.", __func__);
ospf_enable_rtr_hash_destroy(ospf);
@@ -305,7 +305,7 @@ static int ospf_extract_grace_lsa_fields(struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Malformed packet.Invalid TLV type:%d",
- __PRETTY_FUNCTION__, ntohs(tlvh->type));
+ __func__, ntohs(tlvh->type));
return OSPF_GR_FAILURE;
}
}
@@ -370,16 +370,14 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
&restart_reason);
if (ret != OSPF_GR_SUCCESS) {
if (IS_DEBUG_OSPF_GR_HELPER)
- zlog_debug("%s, Wrong Grace LSA packet.",
- __PRETTY_FUNCTION__);
+ zlog_debug("%s, Wrong Grace LSA packet.", __func__);
return OSPF_GR_NOT_HELPER;
}
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Grace LSA received from %pI4, grace interval:%u, restartreason :%s",
- __PRETTY_FUNCTION__, &restart_addr,
- grace_interval,
+ __func__, &restart_addr, grace_interval,
ospf_restart_reason2str(restart_reason));
/* Incase of broadcast links, if RESTARTER is DR_OTHER,
@@ -393,8 +391,7 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Restarter is not a nbr(%pI4) for this router.",
- __PRETTY_FUNCTION__,
- &restart_addr);
+ __func__, &restart_addr);
return OSPF_GR_NOT_HELPER;
}
} else
@@ -411,7 +408,7 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, HELPER support is disabled, So not a HELPER",
- __PRETTY_FUNCTION__);
+ __func__);
restarter->gr_helper_info.rejected_reason =
OSPF_HELPER_SUPPORT_DISABLED;
return OSPF_GR_NOT_HELPER;
@@ -426,7 +423,7 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, This Neighbour %pI4 is not in FULL state.",
- __PRETTY_FUNCTION__, &restarter->src);
+ __func__, &restarter->src);
restarter->gr_helper_info.rejected_reason =
OSPF_HELPER_NOT_A_VALID_NEIGHBOUR;
return OSPF_GR_NOT_HELPER;
@@ -440,7 +437,7 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Router supports only planned restarts but received the GRACE LSA for an unplanned restart.",
- __PRETTY_FUNCTION__);
+ __func__);
restarter->gr_helper_info.rejected_reason =
OSPF_HELPER_PLANNED_ONLY_RESTART;
return OSPF_GR_NOT_HELPER;
@@ -454,7 +451,7 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Changed LSA in Rxmt list. So not Helper.",
- __PRETTY_FUNCTION__);
+ __func__);
restarter->gr_helper_info.rejected_reason =
OSPF_HELPER_TOPO_CHANGE_RTXMT_LIST;
return OSPF_GR_NOT_HELPER;
@@ -465,8 +462,7 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Grace LSA age(%d) is more than the graceinterval(%d)",
- __PRETTY_FUNCTION__, lsa->data->ls_age,
- grace_interval);
+ __func__, lsa->data->ls_age, grace_interval);
restarter->gr_helper_info.rejected_reason =
OSPF_HELPER_LSA_AGE_MORE;
return OSPF_GR_NOT_HELPER;
@@ -482,7 +478,7 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Received grace period %d is larger than supported grace %d",
- __PRETTY_FUNCTION__, grace_interval,
+ __func__, grace_interval,
ospf->supported_grace_time);
actual_grace_interval = ospf->supported_grace_time;
}
@@ -497,12 +493,12 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Router is already acting as a HELPER for this nbr,so restart the grace timer",
- __PRETTY_FUNCTION__);
+ __func__);
} else {
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, This Router becomes a HELPER for the neighbour %pI4",
- __PRETTY_FUNCTION__, &restarter->src);
+ __func__, &restarter->src);
}
/* Became a Helper to the RESTART neighbour.
@@ -518,8 +514,8 @@ int ospf_process_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
ospf->active_restarter_cnt++;
if (IS_DEBUG_OSPF_GR_HELPER)
- zlog_debug("%s, Grace timer started.interval:%d",
- __PRETTY_FUNCTION__, actual_grace_interval);
+ zlog_debug("%s, Grace timer started.interval:%d", __func__,
+ actual_grace_interval);
/* Start the grace timer */
thread_add_timer(master, ospf_handle_grace_timer_expiry, restarter,
@@ -607,8 +603,7 @@ void ospf_helper_handle_topo_chg(struct ospf *ospf, struct ospf_lsa *lsa)
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Topo change detected due to lsa LSID:%pI4 type:%d",
- __PRETTY_FUNCTION__, &lsa->data->id,
- lsa->data->type);
+ __func__, &lsa->data->id, lsa->data->type);
lsa->to_be_acknowledged = OSPF_GR_TRUE;
@@ -671,8 +666,7 @@ void ospf_gr_helper_exit(struct ospf_neighbor *nbr,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug("%s, Exiting from HELPER support to %pI4, due to %s",
- __PRETTY_FUNCTION__, &nbr->src,
- ospf_exit_reason2str(reason));
+ __func__, &nbr->src, ospf_exit_reason2str(reason));
/* Reset helper status*/
nbr->gr_helper_info.gr_helper_status = OSPF_GR_NOT_HELPER;
@@ -704,7 +698,7 @@ void ospf_gr_helper_exit(struct ospf_neighbor *nbr,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Failed GR exit, so bringing down the neighbour",
- __PRETTY_FUNCTION__);
+ __func__);
OSPF_NSM_EVENT_EXECUTE(nbr, NSM_KillNbr);
}
@@ -752,14 +746,13 @@ void ospf_process_maxage_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
&restartReason);
if (ret != OSPF_GR_SUCCESS) {
if (IS_DEBUG_OSPF_GR_HELPER)
- zlog_debug("%s, Wrong Grace LSA packet.",
- __PRETTY_FUNCTION__);
+ zlog_debug("%s, Wrong Grace LSA packet.", __func__);
return;
}
if (IS_DEBUG_OSPF_GR_HELPER)
- zlog_debug("%s, GraceLSA received for neighbour %pI4",
- __PRETTY_FUNCTION__, &restartAddr);
+ zlog_debug("%s, GraceLSA received for neighbour %pI4", __func__,
+ &restartAddr);
/* In case of broadcast links, if RESTARTER is DR_OTHER,
* grace LSA might be received from DR, so fetching the
@@ -772,7 +765,7 @@ void ospf_process_maxage_grace_lsa(struct ospf *ospf, struct ospf_lsa *lsa,
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Restarter is not a neighbour for this router.",
- __PRETTY_FUNCTION__);
+ __func__);
return;
}
} else {
diff --git a/ospfd/ospf_nsm.c b/ospfd/ospf_nsm.c
index 006c4888ae..b3b9244b22 100644
--- a/ospfd/ospf_nsm.c
+++ b/ospfd/ospf_nsm.c
@@ -78,7 +78,7 @@ static int ospf_inactivity_timer(struct thread *thread)
else if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug(
"%s, Acting as HELPER for this neighbour, So inactivitytimer event will not be fired.",
- __PRETTY_FUNCTION__);
+ __func__);
return 0;
}
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index aa98d7dd28..2de6731758 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -4266,7 +4266,7 @@ void ospf_ls_ack_send(struct ospf_neighbor *nbr, struct ospf_lsa *lsa)
if (IS_GRACE_LSA(lsa)) {
if (IS_DEBUG_OSPF_GR_HELPER)
zlog_debug("%s, Sending GRACE ACK to Restarter.",
- __PRETTY_FUNCTION__);
+ __func__);
}
if (listcount(oi->ls_ack_direct.ls_ack) == 0)
diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c
index 0164bfac67..3849d4b7ea 100644
--- a/ospfd/ospf_spf.c
+++ b/ospfd/ospf_spf.c
@@ -1994,7 +1994,7 @@ void ospf_spf_calculate_schedule(struct ospf *ospf, ospf_spf_reason_t reason)
void ospf_restart_spf(struct ospf *ospf)
{
if (IS_DEBUG_OSPF_EVENT)
- zlog_debug("%s: Restart SPF.", __PRETTY_FUNCTION__);
+ zlog_debug("%s: Restart SPF.", __func__);
/* Handling inter area and intra area routes*/
if (ospf->new_table) {
diff --git a/ospfd/ospfd.c b/ospfd/ospfd.c
index 2b9457d8b9..cc1404e5e9 100644
--- a/ospfd/ospfd.c
+++ b/ospfd/ospfd.c
@@ -648,7 +648,6 @@ void ospf_terminate(void)
if (listcount(om->ospf) == 0)
goto done;
- bfd_gbl_exit();
for (ALL_LIST_ELEMENTS(om->ospf, node, nnode, ospf))
ospf_finish(ospf);
diff --git a/pathd/path_cli.c b/pathd/path_cli.c
index ecb667f985..7a28449e4e 100644
--- a/pathd/path_cli.c
+++ b/pathd/path_cli.c
@@ -34,6 +34,7 @@
#ifndef VTYSH_EXTRACT_PL
#include "pathd/path_cli_clippy.c"
#endif
+#include "pathd/path_ted.h"
#define XPATH_MAXATTRSIZE 64
#define XPATH_MAXKEYSIZE 42
@@ -47,6 +48,18 @@ static int config_write_segment_routing(struct vty *vty);
static int config_write_traffic_eng(struct vty *vty);
static int config_write_segment_lists(struct vty *vty);
static int config_write_sr_policies(struct vty *vty);
+static int segment_list_has_src_dst(
+ struct vty *vty, char *xpath, long index, const char *index_str,
+ struct in_addr adj_src_ipv4, struct in_addr adj_dst_ipv4,
+ struct in6_addr adj_src_ipv6, struct in6_addr adj_dst_ipv6,
+ const char *adj_src_ipv4_str, const char *adj_dst_ipv4_str,
+ const char *adj_src_ipv6_str, const char *adj_dst_ipv6_str);
+static int segment_list_has_prefix(
+ struct vty *vty, char *xpath, long index, const char *index_str,
+ const struct prefix_ipv4 *prefix_ipv4, const char *prefix_ipv4_str,
+ const struct prefix_ipv6 *prefix_ipv6, const char *prefix_ipv6_str,
+ const char *has_algo, long algo, const char *algo_str,
+ const char *has_iface_id, long iface_id, const char *iface_id_str);
DEFINE_MTYPE_STATIC(PATHD, PATH_CLI, "Client");
@@ -144,6 +157,7 @@ DEFPY(show_srte_policy,
return CMD_SUCCESS;
}
+
/*
* Show detailed SR-TE info
*/
@@ -295,56 +309,227 @@ void cli_show_srte_segment_list(struct vty *vty, struct lyd_node *dnode,
yang_dnode_get_string(dnode, "./name"));
}
+static int segment_list_has_src_dst(
+ struct vty *vty, char *xpath, long index, const char *index_str,
+ struct in_addr adj_src_ipv4, struct in_addr adj_dst_ipv4,
+ struct in6_addr adj_src_ipv6, struct in6_addr adj_dst_ipv6,
+ const char *adj_src_ipv4_str, const char *adj_dst_ipv4_str,
+ const char *adj_src_ipv6_str, const char *adj_dst_ipv6_str)
+{
+ const char *node_src_id;
+ uint32_t ted_sid = MPLS_LABEL_NONE;
+
+ struct ipaddr ip_src = {};
+ struct ipaddr ip_dst = {};
+ if (adj_src_ipv4_str != NULL) {
+ ip_src.ipa_type = IPADDR_V4;
+ ip_src.ip._v4_addr = adj_src_ipv4;
+ ip_dst.ipa_type = IPADDR_V4;
+ ip_dst.ip._v4_addr = adj_dst_ipv4;
+ } else if (adj_src_ipv6_str != NULL) {
+ ip_src.ipa_type = IPADDR_V6;
+ ip_src.ip._v6_addr = adj_src_ipv6;
+ ip_dst.ipa_type = IPADDR_V6;
+ ip_dst.ip._v6_addr = adj_dst_ipv6;
+ } else {
+ return CMD_ERR_NO_MATCH;
+ }
+ ted_sid = path_ted_query_type_f(&ip_src, &ip_dst);
+ if (ted_sid == MPLS_LABEL_NONE) {
+ zlog_warn(
+ "%s: [rcv ted] CLI NOT FOUND Continue query_type_f SRC (%pIA) DST (%pIA)!",
+ __func__, &ip_src, &ip_dst);
+ }
+ /* type */
+ snprintf(xpath, XPATH_MAXLEN, "./segment[index='%s']/nai/type",
+ index_str);
+ if (adj_src_ipv4_str != NULL) {
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ "ipv4_adjacency");
+ node_src_id = adj_src_ipv4_str;
+ } else if (adj_src_ipv6_str != NULL) {
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ "ipv6_adjacency");
+ node_src_id = adj_src_ipv6_str;
+ } else {
+ return CMD_ERR_NO_MATCH;
+ }
+ /* addresses */
+ snprintf(xpath, XPATH_MAXLEN, "./segment[index='%s']/nai/local-address",
+ index_str);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, node_src_id);
+ snprintf(xpath, XPATH_MAXLEN,
+ "./segment[index='%s']/nai/remote-address", index_str);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ adj_dst_ipv4_str ? adj_dst_ipv4_str
+ : adj_dst_ipv6_str);
+ return CMD_SUCCESS;
+}
+int segment_list_has_prefix(
+ struct vty *vty, char *xpath, long index, const char *index_str,
+ const struct prefix_ipv4 *prefix_ipv4, const char *prefix_ipv4_str,
+ const struct prefix_ipv6 *prefix_ipv6, const char *prefix_ipv6_str,
+ const char *has_algo, long algo, const char *algo_str,
+ const char *has_iface_id, long iface_id, const char *iface_id_str)
+{
+ char buf_prefix[INET6_ADDRSTRLEN];
+
+ uint32_t ted_sid = MPLS_LABEL_NONE;
+ struct prefix prefix_cli = {};
+ struct ipaddr pre_ipaddr = {};
+ /* prefix with algorithm or local interface id */
+ /* Type */
+ snprintf(xpath, XPATH_MAXLEN, "./segment[index='%s']/nai/type",
+ index_str);
+ if (has_iface_id != NULL) {
+ if (prefix_ipv4_str != NULL) {
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ "ipv4_local_iface");
+ } else if (prefix_ipv6_str != NULL) {
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ "ipv6_local_iface");
+ } else {
+ return CMD_ERR_NO_MATCH;
+ }
+ } else {
+ if (prefix_ipv4_str != NULL) {
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ "ipv4_algo");
+ } else if (prefix_ipv6_str != NULL) {
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ "ipv6_algo");
+ } else {
+ return CMD_ERR_NO_MATCH;
+ }
+ }
+ /* Prefix */
+ if (prefix_ipv4_str != NULL) {
+ if (!str2prefix(prefix_ipv4_str, &prefix_cli)) {
+ vty_out(vty, "%% Malformed prefix\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ inet_ntop(AF_INET, &prefix_cli.u.prefix4, buf_prefix,
+ sizeof(buf_prefix));
+ pre_ipaddr.ipa_type = IPADDR_V4;
+ pre_ipaddr.ip._v4_addr = prefix_cli.u.prefix4;
+ } else if (prefix_ipv6_str != NULL) {
+ if (!str2prefix(prefix_ipv6_str, &prefix_cli)) {
+ vty_out(vty, "%% Malformed prefix\n");
+ return CMD_WARNING_CONFIG_FAILED;
+ }
+ inet_ntop(AF_INET6, &prefix_cli.u.prefix6, buf_prefix,
+ sizeof(buf_prefix));
+ pre_ipaddr.ipa_type = IPADDR_V6;
+ pre_ipaddr.ip._v6_addr = prefix_cli.u.prefix6;
+ } else {
+ return CMD_ERR_NO_MATCH;
+ }
+ snprintf(xpath, XPATH_MAXLEN, "./segment[index='%s']/nai/local-address",
+ index_str);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, buf_prefix);
+ snprintf(xpath, XPATH_MAXLEN,
+ "./segment[index='%s']/nai/local-prefix-len", index_str);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ prefix_ipv4_str
+ ? strchr(prefix_ipv4_str, '/') + 1
+ : strchr(prefix_ipv6_str, '/') + 1);
+ /* Alg / Iface */
+ if (has_algo != NULL) {
+ snprintf(xpath, XPATH_MAXLEN,
+ "./segment[index='%s']/nai/algorithm", index_str);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, algo_str);
+ } else {
+ if (has_iface_id != NULL) {
+ snprintf(xpath, XPATH_MAXLEN,
+ "./segment[index='%s']/nai/local-interface",
+ index_str);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
+ iface_id_str);
+ }
+ }
+ if (has_algo != NULL) {
+ ted_sid = path_ted_query_type_c(&prefix_cli, algo);
+ if (ted_sid == MPLS_LABEL_NONE) {
+ zlog_err(
+ "%s: [rcv ted] CLI NOT FOUND Continue query_type_c PREFIX (%pIA/%d) ALGO (%ld) sid:(%d)!",
+ __func__, &pre_ipaddr, prefix_cli.prefixlen,
+ algo, ted_sid);
+ }
+ }
+ if (has_iface_id != NULL) {
+ ted_sid = path_ted_query_type_e(&prefix_cli, iface_id);
+ if (ted_sid == MPLS_LABEL_NONE) {
+ zlog_err(
+ "%s: [rcv ted] CLI NOT FOUND Continue query_type_e PREFIX (%pIA/%d) IFACE (%ld) sid:(%d)!",
+ __func__, &pre_ipaddr, prefix_cli.prefixlen,
+ iface_id, ted_sid);
+ }
+ }
+ return CMD_SUCCESS;
+}
/*
* XPath: /frr-pathd:pathd/srte/segment-list/segment
*/
-DEFPY(srte_segment_list_segment,
- srte_segment_list_segment_cmd,
- "index (0-4294967295)$index mpls label (16-1048575)$label "
+/* clang-format off */
+DEFPY(srte_segment_list_segment, srte_segment_list_segment_cmd,
+ "index (0-4294967295)$index <[mpls$has_mpls_label label (16-1048575)$label] "
+ "|"
"[nai$has_nai <"
- "node <A.B.C.D$node_ipv4|X:X::X:X$node_ipv6>"
- ">]",
+ "prefix <A.B.C.D/M$prefix_ipv4|X:X::X:X/M$prefix_ipv6>"
+ "<algorithm$has_algo (0-1)$algo| iface$has_iface_id (0-4294967295)$iface_id>"
+ "| adjacency$has_adj "
+ "<A.B.C.D$adj_src_ipv4 A.B.C.D$adj_dst_ipv4|X:X::X:X$adj_src_ipv6 X:X::X:X$adj_dst_ipv6>"
+ ">]"
+ ">",
"Index\n"
"Index Value\n"
"MPLS or IP Label\n"
"Label\n"
"Label Value\n"
"Segment NAI\n"
- "NAI node identifier\n"
- "NAI IPv4 node identifier\n"
- "NAI IPv6 node identifier\n")
+ "NAI prefix identifier\n"
+ "NAI IPv4 prefix identifier\n"
+ "NAI IPv6 prefix identifier\n"
+ "IGP Algorithm\n"
+ "Algorithm Value SPF or Strict-SPF\n"
+ "Interface Id\n"
+ "Interface Value\n"
+ "ADJ identifier\n"
+ "ADJ IPv4 src identifier\n"
+ "ADJ IPv4 dst identifier\n"
+ "ADJ IPv6 src identifier\n"
+ "ADJ IPv6 dst identifier\n")
+/* clang-format on */
{
char xpath[XPATH_MAXLEN];
- const char *node_id;
+ int status = CMD_SUCCESS;
+
snprintf(xpath, sizeof(xpath), "./segment[index='%s']", index_str);
nb_cli_enqueue_change(vty, xpath, NB_OP_CREATE, NULL);
- snprintf(xpath, sizeof(xpath), "./segment[index='%s']/sid-value",
- index_str);
- nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, label_str);
-
- if (has_nai != NULL) {
- snprintf(xpath, sizeof(xpath), "./segment[index='%s']/nai/type",
- index_str);
- if (node_ipv4_str != NULL) {
- nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
- "ipv4_node");
- node_id = node_ipv4_str;
- } else if (node_ipv6_str != NULL) {
- nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY,
- "ipv6_node");
- node_id = node_ipv6_str;
- } else {
- return CMD_ERR_NO_MATCH;
- }
+ if (has_mpls_label != NULL) {
snprintf(xpath, sizeof(xpath),
- "./segment[index='%s']/nai/local-address", index_str);
- nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, node_id);
+ "./segment[index='%s']/sid-value", index_str);
+ nb_cli_enqueue_change(vty, xpath, NB_OP_MODIFY, label_str);
+ return nb_cli_apply_changes(vty, NULL);
+ }
+
+ if (has_adj != NULL) {
+ status = segment_list_has_src_dst(vty, xpath, index, index_str,
+ adj_src_ipv4, adj_dst_ipv4,
+ adj_src_ipv6, adj_dst_ipv6,
+ adj_src_ipv4_str, adj_dst_ipv4_str,
+ adj_dst_ipv6_str, adj_src_ipv6_str);
+ if (status != CMD_SUCCESS)
+ return status;
} else {
- snprintf(xpath, sizeof(xpath), "./segment[index='%s']/nai",
- index_str);
- nb_cli_enqueue_change(vty, xpath, NB_OP_DESTROY, NULL);
+ segment_list_has_prefix(
+ vty, xpath, index, index_str, prefix_ipv4,
+ prefix_ipv4_str, prefix_ipv6, prefix_ipv6_str, has_algo,
+ algo, algo_str, has_iface_id, iface_id, iface_id_str);
+ if (status != CMD_SUCCESS)
+ return status;
}
return nb_cli_apply_changes(vty, NULL);
@@ -369,23 +554,60 @@ void cli_show_srte_segment_list_segment(struct vty *vty,
struct lyd_node *dnode,
bool show_defaults)
{
- vty_out(vty, " index %s mpls label %s",
- yang_dnode_get_string(dnode, "./index"),
- yang_dnode_get_string(dnode, "./sid-value"));
+ vty_out(vty, " index %s ", yang_dnode_get_string(dnode, "./index"));
+ if (yang_dnode_exists(dnode, "./sid-value")) {
+ vty_out(vty, " mpls label %s",
+ yang_dnode_get_string(dnode, "./sid-value"));
+ }
if (yang_dnode_exists(dnode, "./nai")) {
struct ipaddr addr;
+ struct ipaddr addr_rmt;
+
switch (yang_dnode_get_enum(dnode, "./nai/type")) {
case SRTE_SEGMENT_NAI_TYPE_IPV4_NODE:
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_LOCAL_IFACE:
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_ALGORITHM:
yang_dnode_get_ip(&addr, dnode, "./nai/local-address");
- vty_out(vty, " nai node %pI4", &addr.ipaddr_v4);
+ vty_out(vty, " nai prefix %pI4", &addr.ipaddr_v4);
break;
case SRTE_SEGMENT_NAI_TYPE_IPV6_NODE:
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_LOCAL_IFACE:
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_ALGORITHM:
yang_dnode_get_ip(&addr, dnode, "./nai/local-address");
- vty_out(vty, " nai node %pI6", &addr.ipaddr_v6);
+ vty_out(vty, " nai prefix %pI6", &addr.ipaddr_v6);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_ADJACENCY:
+ yang_dnode_get_ip(&addr, dnode, "./nai/local-address");
+ yang_dnode_get_ip(&addr_rmt, dnode,
+ "./nai/remote-address");
+ vty_out(vty, " nai adjacency %pI4", &addr.ipaddr_v4);
+ vty_out(vty, " %pI4", &addr_rmt.ipaddr_v4);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY:
+ yang_dnode_get_ip(&addr, dnode, "./nai/local-address");
+ yang_dnode_get_ip(&addr_rmt, dnode,
+ "./nai/remote-address");
+ vty_out(vty, " nai adjacency %pI6", &addr.ipaddr_v6);
+ vty_out(vty, " %pI6", &addr_rmt.ipaddr_v6);
break;
default:
break;
}
+ if (yang_dnode_exists(dnode, "./nai/local-prefix-len")) {
+ vty_out(vty, "/%s",
+ yang_dnode_get_string(
+ dnode, "./nai/local-prefix-len"));
+ }
+ if (yang_dnode_exists(dnode, "./nai/local-interface")) {
+ vty_out(vty, " iface %s",
+ yang_dnode_get_string(dnode,
+ "./nai/local-interface"));
+ }
+ if (yang_dnode_exists(dnode, "./nai/algorithm")) {
+ vty_out(vty, " algorithm %s",
+ yang_dnode_get_string(dnode,
+ "./nai/algorithm"));
+ }
}
vty_out(vty, "\n");
}
@@ -1038,6 +1260,7 @@ int config_write_segment_routing(struct vty *vty)
int config_write_traffic_eng(struct vty *vty)
{
vty_out(vty, " traffic-eng\n");
+ path_ted_config_write(vty);
return 1;
}
diff --git a/pathd/path_main.c b/pathd/path_main.c
index f54ab736c4..8d88475206 100644
--- a/pathd/path_main.c
+++ b/pathd/path_main.c
@@ -33,6 +33,7 @@
#include "path_nb.h"
#include "path_zebra.h"
#include "path_errors.h"
+#include "path_ted.h"
char backup_config_file[256];
@@ -70,6 +71,8 @@ static void sighup(void)
static void sigint(void)
{
zlog_notice("Terminating on signal");
+ zlog_notice("Unregisterfrom opaque,etc ");
+ pathd_shutdown();
exit(0);
}
@@ -146,6 +149,7 @@ int main(int argc, char **argv, char **envp)
path_error_init();
path_zebra_init(master);
path_cli_init();
+ path_ted_init(master);
frr_config_fork();
frr_run(master);
diff --git a/pathd/path_nb.c b/pathd/path_nb.c
index a210e31b9c..9c622883bc 100644
--- a/pathd/path_nb.c
+++ b/pathd/path_nb.c
@@ -90,6 +90,7 @@ const struct frr_yang_module_info frr_pathd_info = {
.xpath = "/frr-pathd:pathd/srte/segment-list/segment/sid-value",
.cbs = {
.modify = pathd_srte_segment_list_segment_sid_value_modify,
+ .destroy = pathd_srte_segment_list_segment_sid_value_destroy,
},
.priority = NB_DFLT_PRIORITY - 1
},
@@ -115,6 +116,10 @@ const struct frr_yang_module_info frr_pathd_info = {
.cbs = {.modify = dummy_modify, .destroy = dummy_destroy}
},
{
+ .xpath = "/frr-pathd:pathd/srte/segment-list/segment/nai/local-prefix-len",
+ .cbs = {.modify = dummy_modify, .destroy = dummy_destroy}
+ },
+ {
.xpath = "/frr-pathd:pathd/srte/segment-list/segment/nai/remote-address",
.cbs = {.modify = dummy_modify, .destroy = dummy_destroy}
},
@@ -123,6 +128,10 @@ const struct frr_yang_module_info frr_pathd_info = {
.cbs = {.modify = dummy_modify, .destroy = dummy_destroy}
},
{
+ .xpath = "/frr-pathd:pathd/srte/segment-list/segment/nai/algorithm",
+ .cbs = {.modify = dummy_modify, .destroy = dummy_destroy}
+ },
+ {
.xpath = "/frr-pathd:pathd/srte/policy",
.cbs = {
.create = pathd_srte_policy_create,
diff --git a/pathd/path_nb.h b/pathd/path_nb.h
index 3a0b3863ce..caeadd9ccc 100644
--- a/pathd/path_nb.h
+++ b/pathd/path_nb.h
@@ -43,6 +43,8 @@ int pathd_srte_segment_list_segment_nai_destroy(
struct nb_cb_destroy_args *args);
void pathd_srte_segment_list_segment_nai_apply_finish(
struct nb_cb_apply_finish_args *args);
+int pathd_srte_segment_list_segment_sid_value_destroy(
+ struct nb_cb_destroy_args *args);
int pathd_srte_policy_create(struct nb_cb_create_args *args);
int pathd_srte_policy_destroy(struct nb_cb_destroy_args *args);
const void *pathd_srte_policy_get_next(struct nb_cb_get_next_args *args);
diff --git a/pathd/path_nb_config.c b/pathd/path_nb_config.c
index af54f5bce2..5b0f5b44e5 100644
--- a/pathd/path_nb_config.c
+++ b/pathd/path_nb_config.c
@@ -160,6 +160,22 @@ int pathd_srte_segment_list_segment_sid_value_modify(
return NB_OK;
}
+int pathd_srte_segment_list_segment_sid_value_destroy(
+ struct nb_cb_destroy_args *args)
+{
+ struct srte_segment_entry *segment;
+
+ if (args->event != NB_EV_APPLY)
+ return NB_OK;
+
+ segment = nb_running_get_entry(args->dnode, NULL, true);
+ segment->sid_value = MPLS_LABEL_NONE;
+ SET_FLAG(segment->segment_list->flags, F_SEGMENT_LIST_MODIFIED);
+
+ return NB_OK;
+}
+
+
int pathd_srte_segment_list_segment_nai_destroy(struct nb_cb_destroy_args *args)
{
struct srte_segment_entry *segment;
@@ -184,6 +200,8 @@ void pathd_srte_segment_list_segment_nai_apply_finish(
enum srte_segment_nai_type type;
struct ipaddr local_addr, remote_addr;
uint32_t local_iface = 0, remote_iface = 0;
+ uint8_t algo = 0, local_prefix_len = 0;
+ const char *algo_buf, *local_prefix_len_buf;
segment = nb_running_get_entry(args->dnode, NULL, true);
type = yang_dnode_get_enum(args->dnode, "./type");
@@ -207,12 +225,31 @@ void pathd_srte_segment_list_segment_nai_apply_finish(
remote_iface = yang_dnode_get_uint32(args->dnode,
"./remote-interface");
break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_ALGORITHM:
+ algo_buf = yang_dnode_get_string(args->dnode, "./algorithm");
+ algo = atoi(algo_buf);
+ local_prefix_len_buf = yang_dnode_get_string(
+ args->dnode, "./local-prefix-len");
+ local_prefix_len = atoi(local_prefix_len_buf);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_LOCAL_IFACE:
+ local_iface =
+ yang_dnode_get_uint32(args->dnode, "./local-interface");
+ local_prefix_len_buf = yang_dnode_get_string(
+ args->dnode, "./local-prefix-len");
+ local_prefix_len = atoi(local_prefix_len_buf);
+ break;
default:
break;
}
- srte_segment_entry_set_nai(segment, type, &local_addr, local_iface,
- &remote_addr, remote_iface);
+ zlog_debug(" Segment list name (%d) index (%s) ", segment->index,
+ segment->segment_list->name);
+ if (srte_segment_entry_set_nai(segment, type, &local_addr, local_iface,
+ &remote_addr, remote_iface, algo,
+ local_prefix_len))
+ SET_FLAG(segment->segment_list->flags,
+ F_SEGMENT_LIST_SID_CONFLICT);
}
/*
diff --git a/pathd/path_pcep_config.c b/pathd/path_pcep_config.c
index aacbca4ae9..609f091559 100644
--- a/pathd/path_pcep_config.c
+++ b/pathd/path_pcep_config.c
@@ -246,6 +246,10 @@ path_pcep_config_list_path_hops(struct srte_segment_list *segment_list)
switch (segment->nai_type) {
case SRTE_SEGMENT_NAI_TYPE_IPV4_NODE:
case SRTE_SEGMENT_NAI_TYPE_IPV6_NODE:
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_LOCAL_IFACE:
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_LOCAL_IFACE:
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_ALGORITHM:
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_ALGORITHM:
memcpy(&hop->nai.local_addr, &segment->nai_local_addr,
sizeof(struct ipaddr));
break;
@@ -278,6 +282,7 @@ int path_pcep_config_update_path(struct path *path)
assert(path->nbkey.preference != 0);
assert(path->nbkey.endpoint.ipa_type == IPADDR_V4);
+ int number_of_sid_clashed = 0;
struct path_hop *hop;
struct path_metric *metric;
int index;
@@ -297,40 +302,44 @@ int path_pcep_config_update_path(struct path *path)
if (candidate->lsp->segment_list) {
SET_FLAG(candidate->lsp->segment_list->flags,
F_SEGMENT_LIST_DELETED);
+ srte_segment_list_del(candidate->lsp->segment_list);
candidate->lsp->segment_list = NULL;
}
- if (path->first_hop != NULL) {
- snprintf(segment_list_name_buff, sizeof(segment_list_name_buff),
- "%s-%u", path->name, path->plsp_id);
- segment_list_name = segment_list_name_buff;
-
- segment_list = srte_segment_list_add(segment_list_name);
- segment_list->protocol_origin = path->update_origin;
- strlcpy(segment_list->originator, path->originator,
- sizeof(segment_list->originator));
- SET_FLAG(segment_list->flags, F_SEGMENT_LIST_NEW);
- SET_FLAG(segment_list->flags, F_SEGMENT_LIST_MODIFIED);
-
- for (hop = path->first_hop, index = 10; hop != NULL;
- hop = hop->next, index += 10) {
- assert(hop->has_sid);
- assert(hop->is_mpls);
-
- segment = srte_segment_entry_add(segment_list, index);
-
- segment->sid_value = (mpls_label_t)hop->sid.mpls.label;
- SET_FLAG(segment->segment_list->flags,
- F_SEGMENT_LIST_MODIFIED);
-
- if (hop->has_nai)
- srte_segment_entry_set_nai(
- segment, srte_nai_type(hop->nai.type),
- &hop->nai.local_addr,
- hop->nai.local_iface,
- &hop->nai.remote_addr,
- hop->nai.remote_iface);
- }
+ if (path->first_hop == NULL)
+ return PATH_NB_ERR;
+
+ snprintf(segment_list_name_buff, sizeof(segment_list_name_buff),
+ "%s-%u", path->name, path->plsp_id);
+ segment_list_name = segment_list_name_buff;
+
+ segment_list = srte_segment_list_add(segment_list_name);
+ segment_list->protocol_origin = path->update_origin;
+ strlcpy(segment_list->originator, path->originator,
+ sizeof(segment_list->originator));
+ SET_FLAG(segment_list->flags, F_SEGMENT_LIST_NEW);
+ SET_FLAG(segment_list->flags, F_SEGMENT_LIST_MODIFIED);
+
+ for (hop = path->first_hop, index = 10; hop != NULL;
+ hop = hop->next, index += 10) {
+ assert(hop->has_sid);
+ assert(hop->is_mpls);
+
+ segment = srte_segment_entry_add(segment_list, index);
+
+ segment->sid_value = (mpls_label_t)hop->sid.mpls.label;
+ SET_FLAG(segment->segment_list->flags, F_SEGMENT_LIST_MODIFIED);
+
+ if (!hop->has_nai)
+ continue;
+ if (srte_segment_entry_set_nai(
+ segment, srte_nai_type(hop->nai.type),
+ &hop->nai.local_addr, hop->nai.local_iface,
+ &hop->nai.remote_addr, hop->nai.remote_iface, 0, 0)
+ == PATH_SID_ERROR)
+ /* TED queries don't match PCE */
+ /* Don't apply srte,zebra changes */
+ number_of_sid_clashed++;
}
candidate->lsp->segment_list = segment_list;
@@ -352,7 +361,11 @@ int path_pcep_config_update_path(struct path *path)
candidate->lsp->objfun = path->pce_objfun;
}
- srte_apply_changes();
+ if (number_of_sid_clashed)
+ SET_FLAG(segment->segment_list->flags,
+ F_SEGMENT_LIST_SID_CONFLICT);
+ else
+ srte_apply_changes();
return 0;
}
@@ -402,6 +415,16 @@ enum pcep_sr_subobj_nai pcep_nai_type(enum srte_segment_nai_type type)
return PCEP_SR_SUBOBJ_NAI_IPV6_ADJACENCY;
case SRTE_SEGMENT_NAI_TYPE_IPV4_UNNUMBERED_ADJACENCY:
return PCEP_SR_SUBOBJ_NAI_UNNUMBERED_IPV4_ADJACENCY;
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY_LINK_LOCAL_ADDRESSES:
+ return PCEP_SR_SUBOBJ_NAI_LINK_LOCAL_IPV6_ADJACENCY;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_LOCAL_IFACE:
+ return PCEP_SR_SUBOBJ_NAI_IPV4_NODE;
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_LOCAL_IFACE:
+ return PCEP_SR_SUBOBJ_NAI_IPV6_NODE;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_ALGORITHM:
+ return PCEP_SR_SUBOBJ_NAI_IPV4_NODE;
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_ALGORITHM:
+ return PCEP_SR_SUBOBJ_NAI_IPV6_NODE;
default:
return PCEP_SR_SUBOBJ_NAI_UNKNOWN;
}
diff --git a/pathd/path_pcep_debug.c b/pathd/path_pcep_debug.c
index 370484dc1b..55148d9d05 100644
--- a/pathd/path_pcep_debug.c
+++ b/pathd/path_pcep_debug.c
@@ -980,7 +980,7 @@ const char *format_yang_dnode(struct lyd_node *dnode)
char *buff;
int len;
- lyd_print_mem(&buff, dnode, LYD_JSON, LYP_FORMAT);
+ lyd_print_mem(&buff, dnode, LYD_JSON, LYD_PRINT_WD_ALL);
len = strlen(buff);
memcpy(_debug_buff, buff, len);
free(buff);
diff --git a/pathd/path_ted.c b/pathd/path_ted.c
new file mode 100644
index 0000000000..01ada92258
--- /dev/null
+++ b/pathd/path_ted.c
@@ -0,0 +1,726 @@
+/*
+ * Copyright (C) 2020 Volta Networks, Inc
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+#include "stdlib.h"
+
+#include <zebra.h>
+
+#include "memory.h"
+#include "log.h"
+#include "command.h"
+#include "prefix.h"
+#include <lib/json.h>
+
+#include "pathd.h"
+#include "pathd/path_errors.h"
+#include "pathd/path_ted.h"
+
+#ifndef VTYSH_EXTRACT_PL
+#include "pathd/path_ted_clippy.c"
+#endif
+
+static struct ls_ted *path_ted_create_ted(void);
+static void path_ted_register_vty(void);
+static void path_ted_unregister_vty(void);
+static uint32_t path_ted_start_importing_igp(const char *daemon_str);
+static uint32_t path_ted_stop_importing_igp(void);
+static enum zclient_send_status path_ted_link_state_sync(void);
+static int path_ted_timer_handler_sync(struct thread *thread);
+static int path_ted_timer_handler_refresh(struct thread *thread);
+static int path_ted_cli_debug_config_write(struct vty *vty);
+static int path_ted_cli_debug_set_all(uint32_t flags, bool set);
+
+extern struct zclient *zclient;
+
+struct ted_state ted_state_g = {};
+
+/*
+ * path_path_ted public API function implementations
+ */
+
+void path_ted_init(struct thread_master *master)
+{
+ ted_state_g.main = master;
+ ted_state_g.link_state_delay_interval = TIMER_RETRY_DELAY;
+ ted_state_g.segment_list_refresh_interval = TIMER_RETRY_DELAY;
+ path_ted_register_vty();
+ path_ted_segment_list_refresh();
+}
+
+uint32_t path_ted_teardown(void)
+{
+ PATH_TED_DEBUG("%s : TED [%p]", __func__, ted_state_g.ted);
+ path_ted_unregister_vty();
+ path_ted_stop_importing_igp();
+ ls_ted_del_all(ted_state_g.ted);
+ path_ted_timer_sync_cancel();
+ path_ted_timer_refresh_cancel();
+ return 0;
+}
+
+/**
+ * Set all needed to receive igp data.
+ *
+ * @return true if ok
+ *
+ */
+uint32_t path_ted_start_importing_igp(const char *daemon_str)
+{
+ uint32_t status = 0;
+
+ if (strcmp(daemon_str, "ospfv2") == 0)
+ ted_state_g.import = IMPORT_OSPFv2;
+ else if (strcmp(daemon_str, "ospfv3") == 0) {
+ ted_state_g.import = IMPORT_UNKNOWN;
+ return 1;
+ } else if (strcmp(daemon_str, "isis") == 0)
+ ted_state_g.import = IMPORT_ISIS;
+ else {
+ ted_state_g.import = IMPORT_UNKNOWN;
+ return 1;
+ }
+
+ if (ls_register(zclient, false /*client*/) != 0) {
+ PATH_TED_ERROR("%s: PATHD-TED: Unable to register Link State",
+ __func__);
+ ted_state_g.import = IMPORT_UNKNOWN;
+ status = 1;
+ } else {
+ if (path_ted_link_state_sync() != -1) {
+ PATH_TED_DEBUG("%s: PATHD-TED: Importing %s data ON",
+ __func__,
+ PATH_TED_IGP_PRINT(ted_state_g.import));
+ } else {
+ PATH_TED_WARN("%s: PATHD-TED: Importing %s data OFF",
+ __func__,
+ PATH_TED_IGP_PRINT(ted_state_g.import));
+ ted_state_g.import = IMPORT_UNKNOWN;
+ }
+ }
+ return status;
+}
+
+/**
+ * Unset all needed to receive igp data.
+ *
+ * @return true if ok
+ *
+ */
+uint32_t path_ted_stop_importing_igp(void)
+{
+ uint32_t status = 0;
+
+ if (ted_state_g.import != IMPORT_UNKNOWN) {
+ if (ls_unregister(zclient, false /*client*/) != 0) {
+ PATH_TED_ERROR(
+ "%s: PATHD-TED: Unable to unregister Link State",
+ __func__);
+ status = 1;
+ } else {
+ ted_state_g.import = IMPORT_UNKNOWN;
+ PATH_TED_DEBUG("%s: PATHD-TED: Importing igp data OFF",
+ __func__);
+ }
+ path_ted_timer_sync_cancel();
+ }
+ return status;
+}
+/**
+ * Check for ted status
+ *
+ * @return true if ok
+ *
+ */
+bool path_ted_is_initialized(void)
+{
+ if (ted_state_g.ted == NULL) {
+ PATH_TED_WARN("PATHD TED ls_ted not initialized");
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Creates an empty ted
+ *
+ * @param void
+ *
+ * @return Ptr to ted or NULL
+ */
+struct ls_ted *path_ted_create_ted()
+{
+ struct ls_ted *ted = ls_ted_new(TED_KEY, TED_NAME, TED_ASN);
+
+ if (ted == NULL) {
+ PATH_TED_ERROR("%s Unable to initialize TED Key [%d] ASN [%d] Name [%s]",
+ __func__, TED_KEY, TED_ASN, TED_NAME);
+ } else {
+ PATH_TED_INFO("%s Initialize TED Key [%d] ASN [%d] Name [%s]",
+ __func__, TED_KEY, TED_ASN, TED_NAME);
+ }
+
+ return ted;
+}
+
+uint32_t path_ted_rcvd_message(struct ls_message *msg)
+{
+ if (!path_ted_is_initialized())
+ return 1;
+
+ if (msg == NULL) {
+ PATH_TED_ERROR("%s: [rcv ted] TED received NULL message ",
+ __func__);
+ return 1;
+ }
+
+ if (path_ted_get_current_igp(msg->data.node->adv.origin))
+ return 1;
+
+ switch (msg->type) {
+ case LS_MSG_TYPE_NODE:
+ ls_msg2vertex(ted_state_g.ted, msg, true /*hard delete*/);
+ break;
+
+ case LS_MSG_TYPE_ATTRIBUTES:
+ ls_msg2edge(ted_state_g.ted, msg, true /*Ä¥ard delete*/);
+ break;
+
+ case LS_MSG_TYPE_PREFIX:
+ ls_msg2subnet(ted_state_g.ted, msg, true /*hard delete*/);
+ break;
+
+ default:
+ PATH_TED_DEBUG(
+ "%s: [rcv ted] TED received unknown message type [%d]",
+ __func__, msg->type);
+ break;
+ }
+ return 0;
+}
+
+uint32_t path_ted_query_type_f(struct ipaddr *local, struct ipaddr *remote)
+{
+ uint32_t sid = MPLS_LABEL_NONE;
+ struct ls_edge *edge;
+ uint64_t key;
+
+ if (!path_ted_is_initialized())
+ return MPLS_LABEL_NONE;
+
+ if (!local || !remote)
+ return MPLS_LABEL_NONE;
+
+ switch (local->ipa_type) {
+ case IPADDR_V4:
+ /* We have local and remote ip */
+ /* so check all attributes in ted */
+ key = ((uint64_t)ntohl(local->ip._v4_addr.s_addr)) & 0xffffffff;
+ edge = ls_find_edge_by_key(ted_state_g.ted, key);
+ if (edge) {
+ if (edge->attributes->standard.remote.s_addr
+ == remote->ip._v4_addr.s_addr
+ && CHECK_FLAG(edge->attributes->flags,
+ LS_ATTR_ADJ_SID)) {
+ sid = edge->attributes->adj_sid[0]
+ .sid; /* from primary */
+ break;
+ }
+ }
+ break;
+ case IPADDR_V6:
+ key = (uint64_t)(local->ip._v6_addr.s6_addr32[0] & 0xffffffff)
+ | ((uint64_t)local->ip._v6_addr.s6_addr32[1] << 32);
+ edge = ls_find_edge_by_key(ted_state_g.ted, key);
+ if (edge) {
+ if ((memcmp(&edge->attributes->standard.remote6,
+ &remote->ip._v6_addr,
+ sizeof(remote->ip._v6_addr))
+ && CHECK_FLAG(edge->attributes->flags,
+ LS_ATTR_ADJ_SID))) {
+ sid = edge->attributes->adj_sid[0]
+ .sid; /* from primary */
+ break;
+ }
+ }
+ break;
+ case IPADDR_NONE:
+ break;
+ }
+
+ return sid;
+}
+
+uint32_t path_ted_query_type_c(struct prefix *prefix, uint8_t algo)
+{
+ uint32_t sid = MPLS_LABEL_NONE;
+ struct ls_subnet *subnet;
+
+ if (!path_ted_is_initialized())
+ return MPLS_LABEL_NONE;
+
+ if (!prefix)
+ return MPLS_LABEL_NONE;
+
+ switch (prefix->family) {
+ case AF_INET:
+ case AF_INET6:
+ subnet = ls_find_subnet(ted_state_g.ted, *prefix);
+ if (subnet) {
+ if ((CHECK_FLAG(subnet->ls_pref->flags, LS_PREF_SR))
+ && (subnet->ls_pref->sr.algo == algo))
+ sid = subnet->ls_pref->sr.sid;
+ }
+ break;
+ default:
+ break;
+ }
+
+ return sid;
+}
+
+uint32_t path_ted_query_type_e(struct prefix *prefix, uint32_t iface_id)
+{
+ uint32_t sid = MPLS_LABEL_NONE;
+ struct ls_subnet *subnet;
+ struct listnode *lst_node;
+ struct ls_edge *edge;
+
+ if (!path_ted_is_initialized())
+ return MPLS_LABEL_NONE;
+
+ if (!prefix)
+ return MPLS_LABEL_NONE;
+
+ switch (prefix->family) {
+ case AF_INET:
+ case AF_INET6:
+ subnet = ls_find_subnet(ted_state_g.ted, *prefix);
+ if (subnet && subnet->vertex
+ && subnet->vertex->outgoing_edges) {
+ /* from the vertex linked in subnet */
+ /* loop over outgoing edges */
+ for (ALL_LIST_ELEMENTS_RO(
+ subnet->vertex->outgoing_edges, lst_node,
+ edge)) {
+ /* and look for ifaceid */
+ /* so get sid of attribute */
+ if (CHECK_FLAG(edge->attributes->flags,
+ LS_ATTR_LOCAL_ID)
+ && edge->attributes->standard.local_id
+ == iface_id) {
+ sid = subnet->ls_pref->sr.sid;
+ break;
+ }
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return sid;
+}
+
+DEFPY (debug_path_ted,
+ debug_path_ted_cmd,
+ "[no] debug pathd mpls-te",
+ NO_STR
+ DEBUG_STR
+ "path debugging\n"
+ "ted debugging\n")
+{
+ uint32_t mode = DEBUG_NODE2MODE(vty->node);
+ bool no_debug = (no != NULL);
+
+ DEBUG_MODE_SET(&ted_state_g.dbg, mode, !no);
+ DEBUG_FLAGS_SET(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC, !no_debug);
+ return CMD_SUCCESS;
+}
+
+/*
+ * Followings are vty command functions.
+ */
+/* clang-format off */
+DEFUN (path_ted_on,
+ path_ted_on_cmd,
+ "mpls-te on",
+ NO_STR
+ "Enable the TE database (TED) functionality\n")
+/* clang-format on */
+{
+
+ if (ted_state_g.enabled) {
+ PATH_TED_DEBUG("%s: PATHD-TED: Enabled ON -> ON.", __func__);
+ return CMD_SUCCESS;
+ }
+
+ ted_state_g.ted = path_ted_create_ted();
+ ted_state_g.enabled = true;
+ PATH_TED_DEBUG("%s: PATHD-TED: Enabled OFF -> ON.", __func__);
+
+ return CMD_SUCCESS;
+}
+
+/* clang-format off */
+DEFUN (no_path_ted,
+ no_path_ted_cmd,
+ "no mpls-te [on]",
+ NO_STR
+ NO_STR
+ "Disable the TE Database functionality\n")
+/* clang-format on */
+{
+ if (ted_state_g.enabled) {
+ PATH_TED_DEBUG("%s: PATHD-TED: OFF -> OFF", __func__);
+ return CMD_SUCCESS;
+ }
+
+ /* Remove TED */
+ ls_ted_del_all(ted_state_g.ted);
+ ted_state_g.enabled = false;
+ PATH_TED_DEBUG("%s: PATHD-TED: ON -> OFF", __func__);
+ ted_state_g.import = IMPORT_UNKNOWN;
+ if (ls_unregister(zclient, false /*client*/) != 0) {
+ vty_out(vty, "Unable to unregister Link State\n");
+ return CMD_WARNING;
+ }
+
+ return CMD_SUCCESS;
+}
+
+/* clang-format off */
+DEFPY(path_ted_import,
+ path_ted_import_cmd,
+ "mpls-te import <ospfv2|ospfv3|isis>$import_daemon",
+ "Enable the TE database (TED) fill with remote igp data\n"
+ "import\n"
+ "Origin ospfv2\n"
+ "Origin ospfv3\n"
+ "Origin isis\n")
+/* clang-format on */
+{
+
+ if (ted_state_g.enabled)
+ if (path_ted_start_importing_igp(import_daemon)) {
+ vty_out(vty, "Unable to start importing\n");
+ return CMD_WARNING;
+ }
+ return CMD_SUCCESS;
+}
+
+/* clang-format off */
+DEFUN (no_path_ted_import,
+ no_path_ted_import_cmd,
+ "no mpls-te import",
+ NO_STR
+ NO_STR
+ "Disable the TE Database fill with remote igp data\n")
+/* clang-format on */
+{
+
+ if (ted_state_g.import) {
+ if (path_ted_stop_importing_igp()) {
+ vty_out(vty, "Unable to stop importing\n");
+ return CMD_WARNING;
+ } else {
+ PATH_TED_DEBUG(
+ "%s: PATHD-TED: Importing igp data already OFF",
+ __func__);
+ }
+ }
+ return CMD_SUCCESS;
+}
+
+/* clang-format off */
+DEFPY (show_pahtd_ted_db,
+ show_pathd_ted_db_cmd,
+ "show pathd ted database <verbose|json>$ver_json ",
+ "show command\n"
+ "pathd daemon\n"
+ "traffic eng\n"
+ "database\n"
+ "verbose output\n"
+ "Show complete received TED database\n")
+/* clang-format on */
+{
+ bool st_json = false;
+ json_object *json = NULL;
+
+ if (!ted_state_g.enabled) {
+ vty_out(vty, "PATHD TED database is not enabled\n");
+ return CMD_WARNING;
+ }
+ if (strcmp(ver_json, "json") == 0) {
+ st_json = true;
+ json = json_object_new_object();
+ }
+ /* Show the complete TED */
+ ls_show_ted(ted_state_g.ted, vty, json, !st_json);
+ if (st_json) {
+ vty_out(vty, "%s\n",
+ json_object_to_json_string_ext(
+ json, JSON_C_TO_STRING_PRETTY));
+ json_object_free(json);
+ }
+ return CMD_SUCCESS;
+}
+
+/*
+ * Config Write functions
+ */
+
+int path_ted_cli_debug_config_write(struct vty *vty)
+{
+ if (DEBUG_MODE_CHECK(&ted_state_g.dbg, DEBUG_MODE_CONF)) {
+ if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC))
+ vty_out(vty, "debug pathd mpls-te\n");
+ return 1;
+ }
+ return 0;
+}
+
+int path_ted_cli_debug_set_all(uint32_t flags, bool set)
+{
+ DEBUG_FLAGS_SET(&ted_state_g.dbg, flags, set);
+
+ /* If all modes have been turned off, don't preserve options. */
+ if (!DEBUG_MODE_CHECK(&ted_state_g.dbg, DEBUG_MODE_ALL))
+ DEBUG_CLEAR(&ted_state_g.dbg);
+
+ return 0;
+}
+
+/**
+ * Help fn to show ted related configuration
+ *
+ * @param vty
+ *
+ * @return Status
+ */
+uint32_t path_ted_config_write(struct vty *vty)
+{
+
+ if (ted_state_g.enabled) {
+ vty_out(vty, " mpls-te on\n");
+ switch (ted_state_g.import) {
+ case IMPORT_ISIS:
+ vty_out(vty, " mpls-te import isis\n");
+ break;
+ case IMPORT_OSPFv2:
+ vty_out(vty, " mpls-te import ospfv2\n");
+ break;
+ case IMPORT_OSPFv3:
+ vty_out(vty, " mpls-te import ospfv3\n");
+ break;
+ default:
+ break;
+ }
+ }
+ return 0;
+}
+
+/**
+ * Register the fn's for CLI and hook for config show
+ *
+ * @param void
+ *
+ */
+static void path_ted_register_vty(void)
+{
+ install_element(VIEW_NODE, &show_pathd_ted_db_cmd);
+ install_element(SR_TRAFFIC_ENG_NODE, &path_ted_on_cmd);
+ install_element(SR_TRAFFIC_ENG_NODE, &no_path_ted_cmd);
+ install_element(SR_TRAFFIC_ENG_NODE, &path_ted_import_cmd);
+ install_element(SR_TRAFFIC_ENG_NODE, &no_path_ted_import_cmd);
+
+ install_element(CONFIG_NODE, &debug_path_ted_cmd);
+ install_element(ENABLE_NODE, &debug_path_ted_cmd);
+
+ hook_register(nb_client_debug_config_write,
+ path_ted_cli_debug_config_write);
+ hook_register(nb_client_debug_set_all, path_ted_cli_debug_set_all);
+}
+
+/**
+ * UnRegister the fn's for CLI and hook for config show
+ *
+ * @param void
+ *
+ */
+static void path_ted_unregister_vty(void)
+{
+ uninstall_element(VIEW_NODE, &show_pathd_ted_db_cmd);
+ uninstall_element(SR_TRAFFIC_ENG_NODE, &path_ted_on_cmd);
+ uninstall_element(SR_TRAFFIC_ENG_NODE, &no_path_ted_cmd);
+ uninstall_element(SR_TRAFFIC_ENG_NODE, &path_ted_import_cmd);
+ uninstall_element(SR_TRAFFIC_ENG_NODE, &no_path_ted_import_cmd);
+}
+
+/**
+ * Ask igp for a complete TED so far
+ *
+ * @param void
+ *
+ * @return zclient status
+ */
+enum zclient_send_status path_ted_link_state_sync(void)
+{
+ enum zclient_send_status status;
+
+ status = ls_request_sync(zclient);
+ if (status == -1) {
+ PATH_TED_ERROR(
+ "%s: PATHD-TED: Opaque error asking for TED sync ",
+ __func__);
+ return status;
+ } else {
+ PATH_TED_DEBUG("%s: PATHD-TED: Opaque asked for TED sync ",
+ __func__);
+ }
+ thread_add_timer(ted_state_g.main, path_ted_timer_handler_sync,
+ &ted_state_g, ted_state_g.link_state_delay_interval,
+ &ted_state_g.t_link_state_sync);
+
+ return status;
+}
+
+/**
+ * Timer cb for check link state sync
+ *
+ * @param thread Current thread
+ *
+ * @return status
+ */
+int path_ted_timer_handler_sync(struct thread *thread)
+{
+ /* data unpacking */
+ struct ted_state *data = THREAD_ARG(thread);
+
+ assert(data != NULL);
+ /* Retry the sync */
+ return path_ted_link_state_sync();
+}
+
+/**
+ * refresg segment list and create timer to keep up updated
+ *
+ * @param void
+ *
+ * @return status
+ */
+int path_ted_segment_list_refresh(void)
+{
+ int status = 0;
+
+ path_ted_timer_refresh_cancel();
+ thread_add_timer(ted_state_g.main, path_ted_timer_handler_refresh,
+ &ted_state_g,
+ ted_state_g.segment_list_refresh_interval,
+ &ted_state_g.t_segment_list_refresh);
+
+ return status;
+}
+
+/**
+ * Timer cb for refreshing sid in segment lists
+ *
+ * @param void
+ *
+ * @return status
+ */
+int path_ted_timer_handler_refresh(struct thread *thread)
+{
+ if (!path_ted_is_initialized())
+ return MPLS_LABEL_NONE;
+
+ PATH_TED_DEBUG("%s: PATHD-TED: Refresh sid from current TED", __func__);
+ /* data unpacking */
+ struct ted_state *data = THREAD_ARG(thread);
+
+ assert(data != NULL);
+
+ srte_policy_update_ted_sid();
+ return 0;
+}
+
+/**
+ * Cancel sync timer
+ *
+ * @param void
+ *
+ * @return void status
+ */
+void path_ted_timer_sync_cancel(void)
+{
+ if (ted_state_g.t_link_state_sync != NULL) {
+ thread_cancel(&ted_state_g.t_link_state_sync);
+ ted_state_g.t_link_state_sync = NULL;
+ }
+}
+
+/**
+ * Cancel refresh timer
+ *
+ * @param void
+ *
+ * @return void status
+ */
+void path_ted_timer_refresh_cancel(void)
+{
+ if (ted_state_g.t_segment_list_refresh != NULL) {
+ thread_cancel(&ted_state_g.t_segment_list_refresh);
+ ted_state_g.t_segment_list_refresh = NULL;
+ }
+}
+
+/**
+ * Check which igp is configured
+ *
+ * @param igp who want to check against config-
+ *
+ * @return status
+ */
+uint32_t path_ted_get_current_igp(uint32_t igp)
+{
+ switch (igp) {
+ case ISIS_L1:
+ case ISIS_L2:
+ if (ted_state_g.import != IMPORT_ISIS) {
+ PATH_TED_ERROR(
+ "%s: [rcv ted] Incorrect igp origin wait (%s) got (%s) ",
+ __func__,
+ PATH_TED_IGP_PRINT(ted_state_g.import),
+ LS_IGP_PRINT(igp));
+ return 1;
+ }
+ break;
+ case OSPFv2:
+ if (ted_state_g.import != IMPORT_OSPFv2) {
+ PATH_TED_ERROR(
+ "%s: [rcv ted] Incorrect igp origin wait (%s) got (%s) ",
+ __func__,
+ PATH_TED_IGP_PRINT(ted_state_g.import),
+ LS_IGP_PRINT(igp));
+ return 1;
+ }
+ break;
+ case STATIC:
+ break;
+ }
+ return 0;
+}
diff --git a/pathd/path_ted.h b/pathd/path_ted.h
new file mode 100644
index 0000000000..c6897b1520
--- /dev/null
+++ b/pathd/path_ted.h
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2020 Volta Networks, Inc
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef _PATH_TED_H
+#define _PATH_TED_H
+
+#ifdef __cplusplus
+
+extern "C" {
+#endif
+
+#include <zebra.h>
+
+#include <stdbool.h>
+
+#include <debug.h>
+#include "linklist.h"
+#include "log.h"
+#include "command.h"
+#include "stream.h"
+#include "prefix.h"
+#include "zclient.h"
+#include "link_state.h"
+
+extern struct ted_state ted_state_g;
+#define TIMER_RETRY_DELAY 5 /* Timeout in seconds between ls sync request */
+#define TED_KEY 1
+#define TED_ASN 1
+#define TED_NAME "PATHD TED"
+
+enum igp_import {
+ IMPORT_UNKNOWN = 0,
+ IMPORT_ISIS,
+ IMPORT_OSPFv2,
+ IMPORT_OSPFv3
+};
+struct ted_state {
+ struct thread_master *main;
+ /* Status of TED: enable or disable */
+ bool enabled;
+ /* From which igp is going to receive data */
+ enum igp_import import;
+ /* The TED itself as in link_state.h */
+ struct ls_ted *ted;
+ /* Timer for ted sync */
+ struct thread *t_link_state_sync;
+ /* Timer for refresh sid in segment list */
+ struct thread *t_segment_list_refresh;
+ /* delay interval in seconds */
+ uint32_t link_state_delay_interval;
+ /* delay interval refresh in seconds */
+ uint32_t segment_list_refresh_interval;
+ struct debug dbg;
+};
+/* Debug flags. */
+#define PATH_TED_DEBUG_BASIC 0x01
+#define PATH_TED_DEBUG(fmt, ...) \
+ do { \
+ if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC)) \
+ DEBUGD(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__); \
+ } while (0)
+
+#define PATH_TED_ERROR(fmt, ...) \
+ do { \
+ if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC)) \
+ DEBUGE(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__); \
+ } while (0)
+#define PATH_TED_WARN(fmt, ...) \
+ do { \
+ if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC)) \
+ DEBUGW(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__); \
+ } while (0)
+#define PATH_TED_INFO(fmt, ...) \
+ do { \
+ if (DEBUG_FLAGS_CHECK(&ted_state_g.dbg, PATH_TED_DEBUG_BASIC)) \
+ DEBUGI(&ted_state_g.dbg, "mpls-te: " fmt, ##__VA_ARGS__); \
+ } while (0)
+
+/* TED management functions */
+bool path_ted_is_initialized(void);
+void path_ted_init(struct thread_master *master);
+uint32_t path_ted_teardown(void);
+void path_ted_timer_sync_cancel(void);
+void path_ted_timer_refresh_cancel(void);
+int path_ted_segment_list_refresh(void);
+
+/* TED configuration functions */
+uint32_t path_ted_config_write(struct vty *vty);
+
+/* TED util functions */
+/* clang-format off */
+#define LS_MSG_EVENT_PRINT(event) event == LS_MSG_EVENT_ADD?"add"\
+ : event == LS_MSG_EVENT_DELETE?"del"\
+ : event == LS_MSG_EVENT_UPDATE?"upd"\
+ : event == LS_MSG_EVENT_SYNC?"syn"\
+ : event == LS_MSG_EVENT_SYNC?"und" : "none"
+#define LS_MSG_TYPE_PRINT(type) type == LS_MSG_TYPE_NODE?"node"\
+ : type == LS_MSG_TYPE_ATTRIBUTES?"att"\
+ : type == LS_MSG_TYPE_PREFIX?"pre" : "none"
+#define LS_IGP_PRINT(type) type == ISIS_L1?"ISIS_L1"\
+ : type == ISIS_L2?"ISIS_L2"\
+ : type == DIRECT?"DIRECT"\
+ : type == STATIC?"STATIC"\
+ : type == OSPFv2?"OSPFv2" : "none"
+#define PATH_TED_IGP_PRINT(type) type == IMPORT_OSPFv2?"OSPFv2"\
+ : type == IMPORT_OSPFv3?"OSPFv3"\
+ : type == IMPORT_ISIS?"ISIS" : "none"
+/* clang-format on */
+
+
+uint32_t path_ted_get_current_igp(uint32_t);
+/* TED Query functions */
+
+/*
+ * Type of queries from draft-ietf-spring-segment-routing-policy-07 for types
+ * f,c,e
+ */
+
+/**
+ * Search for sid based in prefix and optional algo
+ *
+ * @param prefix Net prefix to resolv
+ * @param algo Algorithm for link state
+ *
+ * @return sid of attribute
+ */
+uint32_t path_ted_query_type_c(struct prefix *prefix, uint8_t algo);
+
+/**
+ * Search for sid based in prefix and interface id
+ *
+ * @param prefix Net prefix to resolv
+ * @param iface_id The interface id
+ *
+ * @return sid of attribute
+ */
+uint32_t path_ted_query_type_e(struct prefix *prefix, uint32_t iface_id);
+
+/**
+ * Search for sid based in local, remote pair
+ *
+ * @param local local ip of attribute
+ * @param remote remote ip of attribute
+ *
+ * @return sid of attribute
+ */
+uint32_t path_ted_query_type_f(struct ipaddr *local, struct ipaddr *remote);
+
+
+/**
+ * Handle the received opaque msg
+ *
+ * @param msg Holds the ted data
+ *
+ * @return sid of attribute
+ */
+uint32_t path_ted_rcvd_message(struct ls_message *msg);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _PATH_TED_H */
diff --git a/pathd/path_zebra.c b/pathd/path_zebra.c
index 8c9357460f..53d834f360 100644
--- a/pathd/path_zebra.c
+++ b/pathd/path_zebra.c
@@ -32,9 +32,14 @@
#include "typesafe.h"
#include "pathd/pathd.h"
+#include "pathd/path_ted.h"
#include "pathd/path_zebra.h"
+#include "lib/command.h"
+#include "lib/link_state.h"
-static struct zclient *zclient;
+static int path_zebra_opaque_msg_handler(ZAPI_CALLBACK_ARGS);
+
+struct zclient *zclient;
static struct zclient *zclient_sync;
/* Global Variables */
@@ -267,6 +272,54 @@ static void path_zebra_label_manager_connect(void)
}
}
+static int path_zebra_opaque_msg_handler(ZAPI_CALLBACK_ARGS)
+{
+ int ret = 0;
+ struct stream *s;
+ struct zapi_opaque_msg info;
+
+ s = zclient->ibuf;
+
+ if (zclient_opaque_decode(s, &info) != 0)
+ return -1;
+
+ switch (info.type) {
+ case LINK_STATE_UPDATE:
+ case LINK_STATE_SYNC:
+ /* Start receiving ls data so cancel request sync timer */
+ path_ted_timer_sync_cancel();
+
+ struct ls_message *msg = ls_parse_msg(s);
+
+ if (msg) {
+ zlog_debug("%s: [rcv ted] ls (%s) msg (%s)-(%s) !",
+ __func__,
+ info.type == LINK_STATE_UPDATE
+ ? "LINK_STATE_UPDATE"
+ : "LINK_STATE_SYNC",
+ LS_MSG_TYPE_PRINT(msg->type),
+ LS_MSG_EVENT_PRINT(msg->event));
+ } else {
+ zlog_err(
+ "%s: [rcv ted] Could not parse LinkState stream message.",
+ __func__);
+ return -1;
+ }
+
+ ret = path_ted_rcvd_message(msg);
+ ls_delete_msg(msg);
+ /* Update local configuration after process update. */
+ path_ted_segment_list_refresh();
+ break;
+ default:
+ zlog_debug("%s: [rcv ted] unknown opaque event (%d) !",
+ __func__, info.type);
+ break;
+ }
+
+ return ret;
+}
+
/**
* Initializes Zebra asynchronous connection.
*
@@ -283,6 +336,7 @@ void path_zebra_init(struct thread_master *master)
zclient->zebra_connected = path_zebra_connected;
zclient->sr_policy_notify_status = path_zebra_sr_policy_notify_status;
zclient->router_id_update = path_zebra_router_id_update;
+ zclient->opaque_msg_handler = path_zebra_opaque_msg_handler;
/* Initialize special zclient for synchronous message exchanges. */
zclient_sync = zclient_new(master, &options);
diff --git a/pathd/pathd.c b/pathd/pathd.c
index ae82186315..2462b08306 100644
--- a/pathd/pathd.c
+++ b/pathd/pathd.c
@@ -26,6 +26,7 @@
#include "pathd/pathd.h"
#include "pathd/path_zebra.h"
#include "pathd/path_debug.h"
+#include "pathd/path_ted.h"
#define HOOK_DELAY 3
@@ -188,14 +189,20 @@ void srte_segment_entry_del(struct srte_segment_entry *segment)
* @param type The remote address of the adjacency
* @param type The remote interface index of the unumbered adjacency
*/
-void srte_segment_entry_set_nai(struct srte_segment_entry *segment,
- enum srte_segment_nai_type type,
- struct ipaddr *local_ip, uint32_t local_iface,
- struct ipaddr *remote_ip, uint32_t remote_iface)
+int srte_segment_entry_set_nai(struct srte_segment_entry *segment,
+ enum srte_segment_nai_type type,
+ struct ipaddr *local_ip, uint32_t local_iface,
+ struct ipaddr *remote_ip, uint32_t remote_iface,
+ uint8_t algo, uint8_t pref_len)
{
+ int32_t status = 0;
+ struct prefix pre = {0};
segment->nai_type = type;
memcpy(&segment->nai_local_addr, local_ip, sizeof(struct ipaddr));
+ if (!segment || !local_ip || !remote_ip)
+ return 1;
+
switch (type) {
case SRTE_SEGMENT_NAI_TYPE_IPV4_NODE:
case SRTE_SEGMENT_NAI_TYPE_IPV6_NODE:
@@ -204,6 +211,7 @@ void srte_segment_entry_set_nai(struct srte_segment_entry *segment,
case SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY:
memcpy(&segment->nai_remote_addr, remote_ip,
sizeof(struct ipaddr));
+ status = srte_ted_do_query_type_f(segment, local_ip, remote_ip);
break;
case SRTE_SEGMENT_NAI_TYPE_IPV4_UNNUMBERED_ADJACENCY:
memcpy(&segment->nai_remote_addr, remote_ip,
@@ -211,12 +219,68 @@ void srte_segment_entry_set_nai(struct srte_segment_entry *segment,
segment->nai_local_iface = local_iface;
segment->nai_remote_iface = remote_iface;
break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_ALGORITHM:
+ pre.family = AF_INET6;
+ pre.prefixlen = pref_len;
+ pre.u.prefix6 = local_ip->ip._v6_addr;
+ segment->nai_local_prefix_len = pref_len;
+ segment->nai_algorithm = algo;
+ status = srte_ted_do_query_type_c(segment, &pre, algo);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_ALGORITHM:
+ pre.family = AF_INET;
+ pre.prefixlen = pref_len;
+ pre.u.prefix4 = local_ip->ip._v4_addr;
+ segment->nai_local_prefix_len = pref_len;
+ segment->nai_algorithm = algo;
+ status = srte_ted_do_query_type_c(segment, &pre, algo);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_LOCAL_IFACE:
+ pre.family = AF_INET6;
+ pre.prefixlen = pref_len;
+ pre.u.prefix6 = local_ip->ip._v6_addr;
+ segment->nai_local_prefix_len = pref_len;
+ segment->nai_local_iface = local_iface;
+ status = srte_ted_do_query_type_e(segment, &pre, local_iface);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_LOCAL_IFACE:
+ pre.family = AF_INET;
+ pre.prefixlen = pref_len;
+ pre.u.prefix4 = local_ip->ip._v4_addr;
+ segment->nai_local_prefix_len = pref_len;
+ segment->nai_local_iface = local_iface;
+ status = srte_ted_do_query_type_e(segment, &pre, local_iface);
+ break;
default:
segment->nai_local_addr.ipa_type = IPADDR_NONE;
segment->nai_local_iface = 0;
segment->nai_remote_addr.ipa_type = IPADDR_NONE;
segment->nai_remote_iface = 0;
}
+ return status;
+}
+
+/**
+ * Mark segment as modified depending in protocol and sid conditions
+ *
+ * @param protocol_origin Origin of the segment list
+ * @param s_list Ptr to segment list with flags,sid to modidy
+ * @param s_entry Ptr to segment entry with sid to modidy
+ * @param ted_sid The sid from ted query
+ * @return void
+ */
+void srte_segment_set_local_modification(struct srte_segment_list *s_list,
+ struct srte_segment_entry *s_entry,
+ uint32_t ted_sid)
+{
+ if (!s_list || !s_entry)
+ return;
+
+ if (s_list->protocol_origin == SRTE_ORIGIN_LOCAL
+ && s_entry->sid_value != ted_sid) {
+ s_entry->sid_value = ted_sid;
+ SET_FLAG(s_list->flags, F_SEGMENT_LIST_MODIFIED);
+ }
}
/**
@@ -287,6 +351,105 @@ struct srte_policy *srte_policy_find(uint32_t color, struct ipaddr *endpoint)
return RB_FIND(srte_policy_head, &srte_policies, &search);
}
+/*
+ * After new data from igp,local and pce the segment list :
+ * Mark as invalid for origin pce if cannot be validated
+ * Updated for origin local
+ */
+int srte_policy_update_ted_sid(void)
+{
+
+ int number_of_sid_clashed = 0;
+ struct srte_segment_list *s_list;
+ struct srte_segment_entry *s_entry;
+
+ if (!path_ted_is_initialized())
+ return 0;
+ if (RB_EMPTY(srte_segment_list_head, &srte_segment_lists))
+ return 0;
+
+ RB_FOREACH (s_list, srte_segment_list_head, &srte_segment_lists) {
+ if (CHECK_FLAG(s_list->flags, F_SEGMENT_LIST_DELETED))
+ continue;
+ RB_FOREACH (s_entry, srte_segment_entry_head,
+ &s_list->segments) {
+ PATH_TED_DEBUG(
+ "%s:PATHD-TED: SL: Name: %s index:(%d) sid:(%d) prefix_len:(%d) local iface:(%d) algorithm:(%d)",
+ __func__, s_list->name, s_entry->index,
+ s_entry->sid_value,
+ s_entry->nai_local_prefix_len,
+ s_entry->nai_local_iface,
+ s_entry->nai_algorithm);
+ struct prefix prefix_cli = {0};
+
+ switch (s_entry->nai_type) {
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY:
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_ADJACENCY:
+ number_of_sid_clashed +=
+ srte_ted_do_query_type_f(
+ s_entry,
+ &s_entry->nai_local_addr,
+ &s_entry->nai_remote_addr);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_LOCAL_IFACE:
+ prefix_cli.family = AF_INET6;
+ prefix_cli.prefixlen =
+ s_entry->nai_local_prefix_len;
+ prefix_cli.u.prefix6 =
+ s_entry->nai_local_addr.ip._v6_addr;
+ number_of_sid_clashed +=
+ srte_ted_do_query_type_e(
+ s_entry, &prefix_cli,
+ s_entry->nai_local_iface);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_LOCAL_IFACE:
+ prefix_cli.family = AF_INET;
+ prefix_cli.prefixlen =
+ s_entry->nai_local_prefix_len;
+ prefix_cli.u.prefix4 =
+ s_entry->nai_local_addr.ip._v4_addr;
+ number_of_sid_clashed +=
+ srte_ted_do_query_type_e(
+ s_entry, &prefix_cli,
+ s_entry->nai_local_iface);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV6_ALGORITHM:
+ prefix_cli.family = AF_INET6;
+ prefix_cli.prefixlen =
+ s_entry->nai_local_prefix_len;
+ prefix_cli.u.prefix6 =
+ s_entry->nai_local_addr.ip._v6_addr;
+ number_of_sid_clashed +=
+ srte_ted_do_query_type_c(
+ s_entry, &prefix_cli,
+ s_entry->nai_algorithm);
+ break;
+ case SRTE_SEGMENT_NAI_TYPE_IPV4_ALGORITHM:
+ prefix_cli.family = AF_INET;
+ prefix_cli.prefixlen =
+ s_entry->nai_local_prefix_len;
+ prefix_cli.u.prefix4 =
+ s_entry->nai_local_addr.ip._v4_addr;
+ number_of_sid_clashed +=
+ srte_ted_do_query_type_c(
+ s_entry, &prefix_cli,
+ s_entry->nai_algorithm);
+ break;
+ default:
+ break;
+ }
+ }
+ if (number_of_sid_clashed) {
+ SET_FLAG(s_list->flags, F_SEGMENT_LIST_SID_CONFLICT);
+ number_of_sid_clashed = 0;
+ } else
+ UNSET_FLAG(s_list->flags, F_SEGMENT_LIST_SID_CONFLICT);
+ }
+ srte_apply_changes();
+
+ return 0;
+}
+
/**
* Update a policy binding SID.
*
@@ -322,13 +485,23 @@ srte_policy_best_candidate(const struct srte_policy *policy)
&policy->candidate_paths) {
/* search for highest preference with existing segment list */
if (!CHECK_FLAG(candidate->flags, F_CANDIDATE_DELETED)
- && candidate->lsp->segment_list)
+ && candidate->lsp->segment_list
+ && (!CHECK_FLAG(candidate->lsp->segment_list->flags,
+ F_SEGMENT_LIST_SID_CONFLICT)))
return candidate;
}
return NULL;
}
+void srte_clean_zebra(void)
+{
+ struct srte_policy *policy, *safe_pol;
+
+ RB_FOREACH_SAFE (policy, srte_policy_head, &srte_policies, safe_pol)
+ srte_policy_del(policy);
+}
+
/**
* Apply changes defined by setting the policies, candidate paths
* and segment lists modification flags NEW, MODIFIED and DELETED.
@@ -526,6 +699,7 @@ void srte_candidate_set_bandwidth(struct srte_candidate *candidate,
{
struct srte_policy *policy = candidate->policy;
char endpoint[46];
+
ipaddr2str(&policy->endpoint, endpoint, sizeof(endpoint));
zlog_debug(
"SR-TE(%s, %u): candidate %s %sconfig bandwidth set to %f B/s",
@@ -1024,6 +1198,12 @@ const char *srte_origin2str(enum srte_protocol_origin origin)
}
}
+void pathd_shutdown(void)
+{
+ path_ted_teardown();
+ srte_clean_zebra();
+}
+
void trigger_pathd_candidate_created(struct srte_candidate *candidate)
{
/* The hook is called asynchronously to let the PCEP module
@@ -1124,3 +1304,91 @@ const char *srte_candidate_metric_name(enum srte_candidate_metric_type type)
return "UNKNOWN";
}
}
+
+int32_t srte_ted_do_query_type_c(struct srte_segment_entry *entry,
+ struct prefix *prefix_cli, uint32_t algo)
+{
+ int32_t status = 0;
+ uint32_t ted_sid = MPLS_LABEL_NONE;
+
+ if (!entry || !prefix_cli)
+ return 0;
+
+ if (!path_ted_is_initialized())
+ return 0;
+
+ ted_sid = path_ted_query_type_c(prefix_cli, algo);
+ if (ted_sid == MPLS_LABEL_NONE) {
+ zlog_warn(" %s: PATHD-TED: SL: ERROR query C : ted-sid (%d)",
+ __func__, ted_sid);
+ } else {
+ zlog_debug("%s: PATHD-TED: SL: Sucess query C : ted-sid (%d)",
+ __func__, ted_sid);
+ }
+ if (CHECK_SID(entry->segment_list->protocol_origin, ted_sid,
+ entry->sid_value)) {
+ status = PATH_SID_ERROR;
+ } else
+ srte_segment_set_local_modification(entry->segment_list, entry,
+ ted_sid);
+ return status;
+}
+
+int32_t srte_ted_do_query_type_e(struct srte_segment_entry *entry,
+ struct prefix *prefix_cli,
+ uint32_t local_iface)
+{
+ int32_t status = 0;
+ uint32_t ted_sid = MPLS_LABEL_NONE;
+
+ if (!entry || !prefix_cli)
+ return 0;
+
+ if (!path_ted_is_initialized())
+ return 0;
+
+ ted_sid = path_ted_query_type_e(prefix_cli, local_iface);
+ if (ted_sid == MPLS_LABEL_NONE) {
+ zlog_warn(" %s: PATHD-TED: SL: ERROR query E : ted-sid (%d)",
+ __func__, ted_sid);
+ } else {
+ zlog_debug("%s: PATHD-TED: SL: Sucess query E : ted-sid (%d)",
+ __func__, ted_sid);
+ }
+ if (CHECK_SID(entry->segment_list->protocol_origin, ted_sid,
+ entry->sid_value)) {
+ status = PATH_SID_ERROR;
+ } else
+ srte_segment_set_local_modification(entry->segment_list, entry,
+ ted_sid);
+ return status;
+}
+
+int32_t srte_ted_do_query_type_f(struct srte_segment_entry *entry,
+ struct ipaddr *local, struct ipaddr *remote)
+{
+ int32_t status = 0;
+ uint32_t ted_sid = MPLS_LABEL_NONE;
+
+ if (!entry || !local || !remote)
+ return 0;
+
+ if (!path_ted_is_initialized())
+ return status;
+
+ ted_sid = path_ted_query_type_f(local, remote);
+ if (ted_sid == MPLS_LABEL_NONE) {
+ zlog_warn("%s:SL: ERROR query F : ted-sid (%d)", __func__,
+ ted_sid);
+ } else {
+ zlog_debug("%s:SL: Sucess query F : ted-sid (%d)", __func__,
+ ted_sid);
+ }
+ if (CHECK_SID(entry->segment_list->protocol_origin, ted_sid,
+ entry->sid_value)) {
+ status = PATH_SID_ERROR;
+ } else
+ srte_segment_set_local_modification(entry->segment_list, entry,
+ ted_sid);
+ return status;
+}
diff --git a/pathd/pathd.h b/pathd/pathd.h
index 9c4d256cef..7d38272e85 100644
--- a/pathd/pathd.h
+++ b/pathd/pathd.h
@@ -24,6 +24,13 @@
#include "lib/ipaddr.h"
#include "lib/srte.h"
#include "lib/hook.h"
+#include "lib/prefix.h"
+
+#define PATH_SID_ERROR 1
+#define PATH_SID_NO_ERROR 0
+#define CHECK_SID(or, ts, es) \
+ ((or == SRTE_ORIGIN_PCEP && (ts == MPLS_LABEL_NONE || es != ts)) \
+ || (or == SRTE_ORIGIN_LOCAL && ts == MPLS_LABEL_NONE))
DECLARE_MGROUP(PATHD);
@@ -100,7 +107,12 @@ enum srte_segment_nai_type {
SRTE_SEGMENT_NAI_TYPE_IPV6_NODE = 2,
SRTE_SEGMENT_NAI_TYPE_IPV4_ADJACENCY = 3,
SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY = 4,
- SRTE_SEGMENT_NAI_TYPE_IPV4_UNNUMBERED_ADJACENCY = 5
+ SRTE_SEGMENT_NAI_TYPE_IPV4_UNNUMBERED_ADJACENCY = 5,
+ SRTE_SEGMENT_NAI_TYPE_IPV6_ADJACENCY_LINK_LOCAL_ADDRESSES = 6,
+ SRTE_SEGMENT_NAI_TYPE_IPV4_LOCAL_IFACE = 7,
+ SRTE_SEGMENT_NAI_TYPE_IPV6_LOCAL_IFACE = 8,
+ SRTE_SEGMENT_NAI_TYPE_IPV4_ALGORITHM = 9,
+ SRTE_SEGMENT_NAI_TYPE_IPV6_ALGORITHM = 10
};
enum objfun_type {
@@ -175,6 +187,9 @@ struct srte_segment_entry {
/* NAI remote interface when nai type is not IPv4 unnumbered adjacency
*/
uint32_t nai_remote_iface;
+ /* Support draft-ietf-spring-segment-routing-policy sl types queries*/
+ uint8_t nai_local_prefix_len;
+ uint8_t nai_algorithm;
};
RB_HEAD(srte_segment_entry_head, srte_segment_entry);
RB_PROTOTYPE(srte_segment_entry_head, srte_segment_entry, entry,
@@ -200,6 +215,7 @@ struct srte_segment_list {
#define F_SEGMENT_LIST_NEW 0x0002
#define F_SEGMENT_LIST_MODIFIED 0x0004
#define F_SEGMENT_LIST_DELETED 0x0008
+#define F_SEGMENT_LIST_SID_CONFLICT 0x0010
};
RB_HEAD(srte_segment_list_head, srte_segment_list);
RB_PROTOTYPE(srte_segment_list_head, srte_segment_list, entry,
@@ -361,17 +377,22 @@ struct srte_segment_list *srte_segment_list_find(const char *name);
struct srte_segment_entry *
srte_segment_entry_add(struct srte_segment_list *segment_list, uint32_t index);
void srte_segment_entry_del(struct srte_segment_entry *segment);
-void srte_segment_entry_set_nai(struct srte_segment_entry *segment,
- enum srte_segment_nai_type type,
- struct ipaddr *local_ip, uint32_t local_iface,
- struct ipaddr *remote_ip,
- uint32_t remote_iface);
+int srte_segment_entry_set_nai(struct srte_segment_entry *segment,
+ enum srte_segment_nai_type type,
+ struct ipaddr *local_ip, uint32_t local_iface,
+ struct ipaddr *remote_ip, uint32_t remote_iface,
+ uint8_t algo, uint8_t pref_len);
+void srte_segment_set_local_modification(struct srte_segment_list *s_list,
+ struct srte_segment_entry *s_entry,
+ uint32_t ted_sid);
struct srte_policy *srte_policy_add(uint32_t color, struct ipaddr *endpoint);
void srte_policy_del(struct srte_policy *policy);
struct srte_policy *srte_policy_find(uint32_t color, struct ipaddr *endpoint);
+int srte_policy_update_ted_sid(void);
void srte_policy_update_binding_sid(struct srte_policy *policy,
uint32_t binding_sid);
void srte_apply_changes(void);
+void srte_clean_zebra(void);
void srte_policy_apply_changes(struct srte_policy *policy);
struct srte_candidate *srte_candidate_add(struct srte_policy *policy,
uint32_t preference);
@@ -408,8 +429,45 @@ srte_segment_entry_find(struct srte_segment_list *segment_list, uint32_t index);
void srte_candidate_status_update(struct srte_candidate *candidate, int status);
void srte_candidate_unset_segment_list(const char *originator, bool force);
const char *srte_origin2str(enum srte_protocol_origin origin);
+void pathd_shutdown(void);
/* path_cli.c */
void path_cli_init(void);
+
+/**
+ * Search for sid based in prefix and algorithm
+ *
+ * @param Prefix The prefix to use
+ * @param algo Algorithm we want to query for
+ * @param ted_sid Sid to query
+ *
+ * @return void
+ */
+int32_t srte_ted_do_query_type_c(struct srte_segment_entry *entry,
+ struct prefix *prefix_cli, uint32_t algo);
+
+/**
+ * Search for sid based in prefix and interface id
+ *
+ * @param Prefix The prefix to use
+ * @param local_iface The id of interface
+ * @param ted_sid Sid to query
+ *
+ * @return void
+ */
+int32_t srte_ted_do_query_type_e(struct srte_segment_entry *entry,
+ struct prefix *prefix_cli,
+ uint32_t local_iface);
+/**
+ * Search for sid based in local and remote ip
+ *
+ * @param entry entry to update
+ * @param local Local addr for query
+ * @param remote Local addr for query
+ *
+ * @return void
+ */
+int32_t srte_ted_do_query_type_f(struct srte_segment_entry *entry,
+ struct ipaddr *local, struct ipaddr *remote);
#endif /* _FRR_PATHD_H_ */
diff --git a/pathd/subdir.am b/pathd/subdir.am
index 0666e8d3c8..693afabb39 100644
--- a/pathd/subdir.am
+++ b/pathd/subdir.am
@@ -5,7 +5,10 @@
if PATHD
noinst_LIBRARIES += pathd/libpath.a
sbin_PROGRAMS += pathd/pathd
-vtysh_scan += pathd/path_cli.c
+vtysh_scan += \
+ pathd/path_cli.c \
+ pathd/path_ted.c \
+ #end
vtysh_daemons += pathd
# TODO add man page
#man8 += $(MANBUILD)/pathd.8
@@ -24,6 +27,7 @@ pathd_libpath_a_SOURCES = \
pathd/path_nb.c \
pathd/path_nb_config.c \
pathd/path_nb_state.c \
+ pathd/path_ted.c \
pathd/path_zebra.c \
pathd/pathd.c \
# end
@@ -31,6 +35,7 @@ pathd_libpath_a_SOURCES = \
clippy_scan += \
pathd/path_cli.c \
pathd/path_pcep_cli.c \
+ pathd/path_ted.c \
# end
noinst_HEADERS += \
@@ -44,6 +49,7 @@ noinst_HEADERS += \
pathd/path_pcep_lib.h \
pathd/path_pcep_config.h \
pathd/path_pcep_pcc.h \
+ pathd/path_ted.h \
pathd/path_zebra.h \
pathd/pathd.h \
# end
diff --git a/pceplib/test/pcep_msg_messages_test.c b/pceplib/test/pcep_msg_messages_test.c
index 61fa94047b..6ae449acd1 100644
--- a/pceplib/test/pcep_msg_messages_test.c
+++ b/pceplib/test/pcep_msg_messages_test.c
@@ -26,6 +26,7 @@
#endif
#include <stdlib.h>
+#include <assert.h>
#include <CUnit/CUnit.h>
@@ -79,13 +80,16 @@ void test_pcep_msg_create_open()
pcep_msg_create_open(keepalive, deadtimer, sid);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 1);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
+ pcep_object_get_length(PCEP_OBJ_CLASS_OPEN,
PCEP_OBJ_TYPE_OPEN));
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_OPEN);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -122,6 +126,7 @@ void test_pcep_msg_create_request()
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 2);
@@ -130,6 +135,7 @@ void test_pcep_msg_create_request()
MESSAGE_HEADER_LENGTH
+ pcep_object_get_length_by_hdr(&rp_obj->header)
+ pcep_object_get_length_by_hdr(&ipv4_obj->header));
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_PCREQ);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -144,14 +150,17 @@ void test_pcep_msg_create_request()
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 2);
CU_ASSERT_EQUAL(
message->encoded_message_length,
MESSAGE_HEADER_LENGTH
+ pcep_object_get_length_by_hdr(&rp_obj->header)
+ pcep_object_get_length_by_hdr(&ipv6_obj->header));
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_PCREQ);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -169,8 +178,10 @@ void test_pcep_msg_create_request()
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 3);
CU_ASSERT_EQUAL(
message->encoded_message_length,
@@ -179,6 +190,7 @@ void test_pcep_msg_create_request()
+ pcep_object_get_length_by_hdr(&ipv4_obj->header)
+ pcep_object_get_length_by_hdr(
&bandwidth_obj->header));
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_PCREQ);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -203,13 +215,16 @@ void test_pcep_msg_create_reply_nopath()
struct pcep_message *message = pcep_msg_create_reply(rp_obj, obj_list);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 2);
CU_ASSERT_EQUAL(message->encoded_message_length,
(MESSAGE_HEADER_LENGTH
+ pcep_object_get_length_by_hdr(&rp_obj->header)
+ pcep_object_get_length_by_hdr(&nopath_obj->header)));
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_PCREP);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -224,10 +239,12 @@ void test_pcep_msg_create_reply()
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 0);
CU_ASSERT_EQUAL(message->encoded_message_length, MESSAGE_HEADER_LENGTH);
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_PCREP);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -249,6 +266,7 @@ void test_pcep_msg_create_reply()
pcep_encode_message(message, versioning);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 2);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
@@ -270,13 +288,16 @@ void test_pcep_msg_create_close()
struct pcep_message *message = pcep_msg_create_close(reason);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 1);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
+ pcep_object_get_length(PCEP_OBJ_CLASS_CLOSE,
PCEP_OBJ_TYPE_CLOSE));
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_CLOSE);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -285,6 +306,7 @@ void test_pcep_msg_create_close()
* are verified in pcep-objects-test.c */
struct pcep_object_close *close_obj =
(struct pcep_object_close *)message->obj_list->head->data;
+ assert(close_obj != NULL);
CU_ASSERT_EQUAL(close_obj->header.object_class, PCEP_OBJ_CLASS_CLOSE);
CU_ASSERT_EQUAL(close_obj->header.object_type, PCEP_OBJ_TYPE_CLOSE);
CU_ASSERT_EQUAL(close_obj->reason, reason);
@@ -301,13 +323,16 @@ void test_pcep_msg_create_error()
pcep_msg_create_error(error_type, error_value);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 1);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
+ pcep_object_get_length(PCEP_OBJ_CLASS_ERROR,
PCEP_OBJ_TYPE_ERROR));
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_ERROR);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -330,10 +355,13 @@ void test_pcep_msg_create_keepalive()
struct pcep_message *message = pcep_msg_create_keepalive();
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 0);
CU_ASSERT_EQUAL(message->encoded_message_length, MESSAGE_HEADER_LENGTH);
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_KEEPALIVE);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -355,12 +383,15 @@ void test_pcep_msg_create_report()
message = pcep_msg_create_report(obj_list);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 1);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
+ lsp->header.encoded_object_length);
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_REPORT);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -405,14 +436,17 @@ void test_pcep_msg_create_update()
message = pcep_msg_create_update(obj_list);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 3);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
+ srp->header.encoded_object_length
+ lsp->header.encoded_object_length
+ ero->header.encoded_object_length);
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_UPDATE);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -454,14 +488,17 @@ void test_pcep_msg_create_initiate()
message = pcep_msg_create_initiate(obj_list);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->msg_header);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 3);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
+ srp->header.encoded_object_length
+ lsp->header.encoded_object_length
+ ero->header.encoded_object_length);
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_INITIATE);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -482,11 +519,14 @@ void test_pcep_msg_create_notify(void)
message = pcep_msg_create_notify(notify_obj, NULL);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 1);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
+ notify_obj->header.encoded_object_length);
+ assert(message->msg_header != NULL);
CU_ASSERT_EQUAL(message->msg_header->type, PCEP_TYPE_PCNOTF);
CU_ASSERT_EQUAL(message->msg_header->pcep_version,
PCEP_MESSAGE_HEADER_VERSION);
@@ -504,7 +544,9 @@ void test_pcep_msg_create_notify(void)
message = pcep_msg_create_notify(notify_obj, obj_list);
CU_ASSERT_PTR_NOT_NULL(message);
pcep_encode_message(message, versioning);
+ assert(message != NULL);
CU_ASSERT_PTR_NOT_NULL(message->obj_list);
+ assert(message->obj_list != NULL);
CU_ASSERT_EQUAL(message->obj_list->num_entries, 2);
CU_ASSERT_EQUAL(message->encoded_message_length,
MESSAGE_HEADER_LENGTH
diff --git a/pceplib/test/pcep_msg_objects_test.c b/pceplib/test/pcep_msg_objects_test.c
index e0814de543..a92bbe4896 100644
--- a/pceplib/test/pcep_msg_objects_test.c
+++ b/pceplib/test/pcep_msg_objects_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <stdlib.h>
#include <CUnit/CUnit.h>
@@ -128,6 +129,7 @@ static void verify_pcep_obj_header2(uint8_t obj_class, uint8_t obj_type,
static void verify_pcep_obj_header(uint8_t obj_class, uint8_t obj_type,
struct pcep_object_header *obj_hdr)
{
+ assert(obj_hdr != NULL);
verify_pcep_obj_header2(obj_class, obj_type,
pcep_object_get_length_by_hdr(obj_hdr),
obj_hdr->encoded_object);
@@ -172,12 +174,14 @@ void test_pcep_obj_create_open_with_tlvs()
pcep_obj_create_open(keepalive, deadtimer, sid, tlv_list);
CU_ASSERT_PTR_NOT_NULL(open);
+ assert(open != NULL);
pcep_encode_object(&open->header, versioning, object_buf);
verify_pcep_obj_header2(PCEP_OBJ_CLASS_OPEN, PCEP_OBJ_TYPE_OPEN,
pcep_object_get_length_by_hdr(&open->header)
+ sizeof(uint32_t) * 2,
open->header.encoded_object);
CU_ASSERT_PTR_NOT_NULL(open->header.tlv_list);
+ assert(open->header.tlv_list != NULL);
CU_ASSERT_EQUAL(open->header.tlv_list->num_entries, 1);
CU_ASSERT_EQUAL(open->header.encoded_object[4],
@@ -240,6 +244,8 @@ void test_pcep_obj_create_nopath()
CU_ASSERT_EQUAL(nopath->header.encoded_object[7], 0);
/* Verify the TLV */
+ assert(nopath != NULL);
+ assert(nopath->header.tlv_list != NULL);
CU_ASSERT_PTR_NOT_NULL(nopath->header.tlv_list);
struct pcep_object_tlv_nopath_vector *tlv =
(struct pcep_object_tlv_nopath_vector *)
@@ -269,6 +275,7 @@ void test_pcep_obj_create_association_ipv4()
false, PCEP_ASSOCIATION_TYPE_SR_POLICY_ASSOCIATION_TYPE,
all_assoc_groups, src);
CU_ASSERT_PTR_NOT_NULL(assoc);
+ assert(assoc != NULL);
CU_ASSERT_EQUAL(assoc->association_type,
PCEP_ASSOCIATION_TYPE_SR_POLICY_ASSOCIATION_TYPE);
CU_ASSERT_EQUAL(assoc->association_id, all_assoc_groups);
@@ -291,6 +298,7 @@ void test_pcep_obj_create_association_ipv6()
false, PCEP_ASSOCIATION_TYPE_SR_POLICY_ASSOCIATION_TYPE,
all_assoc_groups, src);
CU_ASSERT_PTR_NOT_NULL(assoc);
+ assert(assoc != NULL);
CU_ASSERT_EQUAL(assoc->association_type,
PCEP_ASSOCIATION_TYPE_SR_POLICY_ASSOCIATION_TYPE);
CU_ASSERT_EQUAL(assoc->association_id, all_assoc_groups);
@@ -466,6 +474,7 @@ void test_pcep_obj_create_svec()
svec = pcep_obj_create_svec(true, true, true, id_list);
CU_ASSERT_PTR_NOT_NULL(svec);
+ assert(svec != NULL);
pcep_encode_object(&svec->header, versioning, object_buf);
verify_pcep_obj_header2(PCEP_OBJ_CLASS_SVEC, PCEP_OBJ_TYPE_SVEC,
(OBJECT_HEADER_LENGTH + sizeof(uint32_t) * 2),
@@ -614,6 +623,7 @@ static void test_pcep_obj_create_object_common(ro_func func_to_test,
struct pcep_object_ro *ero = func_to_test(NULL);
CU_ASSERT_PTR_NOT_NULL(ero);
+ assert(ero != NULL);
pcep_encode_object(&ero->header, versioning, object_buf);
verify_pcep_obj_header2(object_class, object_type, OBJECT_HEADER_LENGTH,
ero->header.encoded_object);
@@ -622,6 +632,7 @@ static void test_pcep_obj_create_object_common(ro_func func_to_test,
reset_objects_buffer();
ero = func_to_test(ero_list);
CU_ASSERT_PTR_NOT_NULL(ero);
+ assert(ero != NULL);
pcep_encode_object(&ero->header, versioning, object_buf);
verify_pcep_obj_header2(object_class, object_type, OBJECT_HEADER_LENGTH,
ero->header.encoded_object);
@@ -634,6 +645,7 @@ static void test_pcep_obj_create_object_common(ro_func func_to_test,
dll_append(ero_list, ro_subobj);
ero = func_to_test(ero_list);
CU_ASSERT_PTR_NOT_NULL(ero);
+ assert(ero != NULL);
pcep_encode_object(&ero->header, versioning, object_buf);
/* 4 bytes for obj header +
* 2 bytes for ro_subobj header +
@@ -917,6 +929,7 @@ void test_pcep_obj_create_ro_subobj_sr_ipv4_node()
sr = pcep_obj_create_ro_subobj_sr_ipv4_node(true, true, false, false,
sid, &ipv4_node_id);
CU_ASSERT_PTR_NOT_NULL(sr);
+ assert(sr != NULL);
struct pcep_object_ro *ro = encode_ro_subobj(&sr->ro_subobj);
verify_pcep_obj_ro_sr_header(ro, &sr->ro_subobj,
PCEP_SR_SUBOBJ_NAI_IPV4_NODE, true,
@@ -936,10 +949,12 @@ void test_pcep_obj_create_ro_subobj_sr_ipv4_node()
sr = pcep_obj_create_ro_subobj_sr_ipv4_node(false, false, true, true,
sid, &ipv4_node_id);
CU_ASSERT_PTR_NOT_NULL(sr);
+ assert(sr != NULL);
ro = encode_ro_subobj(&sr->ro_subobj);
verify_pcep_obj_ro_sr_header(ro, &sr->ro_subobj,
PCEP_SR_SUBOBJ_NAI_IPV4_NODE, false,
sizeof(uint32_t) * 4);
+ assert(ro != NULL);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & OBJECT_SUBOBJ_SR_FLAG_C);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & OBJECT_SUBOBJ_SR_FLAG_M);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_S);
@@ -1040,6 +1055,7 @@ void test_pcep_obj_create_ro_subobj_sr_ipv4_adj()
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_F);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_C);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_M);
+ assert(sr != NULL);
CU_ASSERT_EQUAL(sr->sid, 0);
uint32_t *uint32_ptr = (uint32_t *)(ro->header.encoded_object + 8);
CU_ASSERT_EQUAL(uint32_ptr[0], local_ipv4.s_addr);
@@ -1094,6 +1110,7 @@ void test_pcep_obj_create_ro_subobj_sr_ipv6_adj()
sr = pcep_obj_create_ro_subobj_sr_ipv6_adj(true, true, true, true, sid,
&local_ipv6, &remote_ipv6);
CU_ASSERT_PTR_NOT_NULL(sr);
+ assert(sr != NULL);
struct pcep_object_ro *ro = encode_ro_subobj(&sr->ro_subobj);
verify_pcep_obj_ro_sr_header(ro, &sr->ro_subobj,
PCEP_SR_SUBOBJ_NAI_IPV6_ADJACENCY, true,
@@ -1168,6 +1185,7 @@ void test_pcep_obj_create_ro_subobj_sr_unnumbered_ipv4_adj()
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_F);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_C);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_M);
+ assert(sr != NULL);
CU_ASSERT_EQUAL(sr->sid, 0);
uint32_t *uint32_ptr = (uint32_t *)(ro->header.encoded_object + 8);
CU_ASSERT_EQUAL(uint32_ptr[0], local_node_id);
@@ -1244,6 +1262,7 @@ void test_pcep_obj_create_ro_subobj_sr_linklocal_ipv6_adj()
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_F);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_C);
CU_ASSERT_TRUE(ro->header.encoded_object[7] & ~OBJECT_SUBOBJ_SR_FLAG_M);
+ assert(sr != NULL);
CU_ASSERT_EQUAL(sr->sid, 0);
uint32_t *uint32_ptr = (uint32_t *)(ro->header.encoded_object + 8);
CU_ASSERT_EQUAL(uint32_ptr[0], local_ipv6.__in6_u.__u6_addr32[0]);
diff --git a/pceplib/test/pcep_msg_tlvs_test.c b/pceplib/test/pcep_msg_tlvs_test.c
index 57e1d16e91..888925fdbf 100644
--- a/pceplib/test/pcep_msg_tlvs_test.c
+++ b/pceplib/test/pcep_msg_tlvs_test.c
@@ -30,6 +30,7 @@
#else
#include <endian.h>
#endif /* __FreeBSD__ */
+#include <assert.h>
#include <stdlib.h>
#include <CUnit/CUnit.h>
@@ -88,6 +89,7 @@ void test_pcep_tlv_create_stateful_pce_capability()
pcep_tlv_create_stateful_pce_capability(true, true, true, true,
true, true);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type,
@@ -126,11 +128,13 @@ void test_pcep_tlv_create_speaker_entity_id()
dll_append(list, speaker_entity);
tlv = pcep_tlv_create_speaker_entity_id(list);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_SPEAKER_ENTITY_ID);
CU_ASSERT_EQUAL(tlv->header.encoded_tlv_length, sizeof(uint32_t));
CU_ASSERT_PTR_NOT_NULL(tlv->speaker_entity_id_list);
+ assert(tlv->speaker_entity_id_list != NULL);
CU_ASSERT_EQUAL(tlv->speaker_entity_id_list->num_entries, 1);
uint32_t *uint32_ptr = (uint32_t *)tlv->header.encoded_tlv;
CU_ASSERT_EQUAL(uint32_ptr[1], htonl(*speaker_entity));
@@ -144,6 +148,7 @@ void test_pcep_tlv_create_lsp_db_version()
struct pcep_object_tlv_lsp_db_version *tlv =
pcep_tlv_create_lsp_db_version(lsp_db_version);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_LSP_DB_VERSION);
@@ -162,6 +167,7 @@ void test_pcep_tlv_create_path_setup_type()
struct pcep_object_tlv_path_setup_type *tlv =
pcep_tlv_create_path_setup_type(pst);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE);
CU_ASSERT_EQUAL(tlv->header.encoded_tlv_length, sizeof(uint32_t));
@@ -231,6 +237,7 @@ void test_pcep_tlv_create_path_setup_type_capability()
PCEP_OBJ_TLV_TYPE_PATH_SETUP_TYPE_CAPABILITY);
CU_ASSERT_EQUAL(tlv->header.encoded_tlv_length, sizeof(uint32_t) * 2);
CU_ASSERT_PTR_NOT_NULL(tlv->pst_list);
+ assert(tlv != NULL);
CU_ASSERT_EQUAL(tlv->pst_list->num_entries, 3);
uint32_t *uint32_ptr = (uint32_t *)tlv->header.encoded_tlv;
CU_ASSERT_EQUAL(uint32_ptr[1], htonl(0x00000003));
@@ -251,6 +258,7 @@ void test_pcep_tlv_create_path_setup_type_capability()
tlv = pcep_tlv_create_path_setup_type_capability(pst_list,
sub_tlv_list);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type,
@@ -283,6 +291,7 @@ void test_pcep_tlv_create_sr_pce_capability()
struct pcep_object_tlv_sr_pce_capability *tlv =
pcep_tlv_create_sr_pce_capability(true, true, 8);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_SR_PCE_CAPABILITY);
@@ -305,6 +314,7 @@ void test_pcep_tlv_create_symbolic_path_name()
struct pcep_object_tlv_symbolic_path_name *tlv =
pcep_tlv_create_symbolic_path_name(path_name, path_name_length);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_SYMBOLIC_PATH_NAME);
@@ -325,6 +335,8 @@ void test_pcep_tlv_create_symbolic_path_name()
reset_tlv_buffer();
tlv = pcep_tlv_create_symbolic_path_name(path_name, 3);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ printf("El tlv es %p", tlv);
+ assert(tlv != NULL); // crash si FALSE
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_SYMBOLIC_PATH_NAME);
CU_ASSERT_EQUAL(tlv->header.encoded_tlv_length, 3);
@@ -359,6 +371,7 @@ void test_pcep_tlv_create_ipv4_lsp_identifiers()
tlv = pcep_tlv_create_ipv4_lsp_identifiers(
NULL, NULL, lsp_id, tunnel_id, &extended_tunnel_id);
CU_ASSERT_PTR_NULL(tlv);
+ assert(tlv == NULL);
tlv = pcep_tlv_create_ipv4_lsp_identifiers(&sender_ip, &endpoint_ip,
lsp_id, tunnel_id,
@@ -381,6 +394,7 @@ void test_pcep_tlv_create_ipv4_lsp_identifiers()
tlv = pcep_tlv_create_ipv4_lsp_identifiers(&sender_ip, &endpoint_ip,
lsp_id, tunnel_id, NULL);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type,
@@ -424,11 +438,13 @@ void test_pcep_tlv_create_ipv6_lsp_identifiers()
NULL, NULL, lsp_id, tunnel_id,
(struct in6_addr *)&extended_tunnel_id);
CU_ASSERT_PTR_NULL(tlv);
+ assert(tlv == NULL);
tlv = pcep_tlv_create_ipv6_lsp_identifiers(
&sender_ip, &endpoint_ip, lsp_id, tunnel_id,
(struct in6_addr *)&extended_tunnel_id);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type,
@@ -449,6 +465,7 @@ void test_pcep_tlv_create_srpag_pol_id_ipv4()
struct pcep_object_tlv_srpag_pol_id *tlv =
pcep_tlv_create_srpag_pol_id_ipv4(color, (void *)&src);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, (PCEP_OBJ_TLV_TYPE_SRPOLICY_POL_ID));
@@ -506,6 +523,7 @@ void test_pcep_tlv_create_srpag_pol_name()
struct pcep_object_tlv_srpag_pol_name *tlv =
pcep_tlv_create_srpag_pol_name(pol_name, strlen(pol_name));
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type,
@@ -559,6 +577,7 @@ void test_pcep_tlv_create_srpag_cp_pref()
struct pcep_object_tlv_srpag_cp_pref *tlv =
pcep_tlv_create_srpag_cp_pref(preference_default);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type,
@@ -586,6 +605,7 @@ void test_pcep_tlv_create_lsp_error_code()
pcep_tlv_create_lsp_error_code(
PCEP_TLV_LSP_ERROR_CODE_RSVP_SIGNALING_ERROR);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_LSP_ERROR_CODE);
@@ -612,6 +632,7 @@ void test_pcep_tlv_create_rsvp_ipv4_error_spec()
tlv = pcep_tlv_create_rsvp_ipv4_error_spec(&error_node_ip, error_code,
error_value);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC);
@@ -635,6 +656,7 @@ void test_pcep_tlv_create_rsvp_ipv6_error_spec()
tlv = pcep_tlv_create_rsvp_ipv6_error_spec(&error_node_ip, error_code,
error_value);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_RSVP_ERROR_SPEC);
@@ -651,6 +673,7 @@ void test_pcep_tlv_create_nopath_vector()
struct pcep_object_tlv_vendor_info *tlv = pcep_tlv_create_vendor_info(
enterprise_number, enterprise_specific_info);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, PCEP_OBJ_TLV_TYPE_VENDOR_INFO);
@@ -670,6 +693,7 @@ void test_pcep_tlv_create_arbitrary()
struct pcep_object_tlv_arbitrary *tlv = pcep_tlv_create_tlv_arbitrary(
data, data_length, tlv_id_unknown);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, tlv_id_unknown);
@@ -688,6 +712,7 @@ void test_pcep_tlv_create_arbitrary()
reset_tlv_buffer();
tlv = pcep_tlv_create_tlv_arbitrary(data, 3, tlv_id_unknown);
CU_ASSERT_PTR_NOT_NULL(tlv);
+ assert(tlv != NULL);
pcep_encode_tlv(&tlv->header, versioning, tlv_buf);
CU_ASSERT_EQUAL(tlv->header.type, tlv_id_unknown);
CU_ASSERT_EQUAL(tlv->header.encoded_tlv_length, 3);
diff --git a/pceplib/test/pcep_msg_tools_test.c b/pceplib/test/pcep_msg_tools_test.c
index 787df2fd7a..5a7644b21a 100644
--- a/pceplib/test/pcep_msg_tools_test.c
+++ b/pceplib/test/pcep_msg_tools_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -213,6 +214,7 @@ void test_pcep_msg_read_pcep_initiate()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 1);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -274,6 +276,7 @@ void test_pcep_msg_read_pcep_initiate()
double_linked_list *ero_subobj_list =
((struct pcep_object_ro *)obj_hdr)->sub_objects;
CU_ASSERT_PTR_NOT_NULL(ero_subobj_list);
+ assert(ero_subobj_list != NULL);
CU_ASSERT_EQUAL(ero_subobj_list->num_entries, 2);
double_linked_list_node *subobj_node = ero_subobj_list->head;
struct pcep_object_ro_subobj *subobj_hdr =
@@ -312,6 +315,7 @@ void test_pcep_msg_read_pcep_initiate2()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 1);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -367,6 +371,7 @@ void test_pcep_msg_read_pcep_initiate2()
double_linked_list *ero_subobj_list =
((struct pcep_object_ro *)obj_hdr)->sub_objects;
CU_ASSERT_PTR_NOT_NULL(ero_subobj_list);
+ assert(ero_subobj_list != NULL);
CU_ASSERT_EQUAL(ero_subobj_list->num_entries, 0);
double_linked_list_node *subobj_node = ero_subobj_list->head;
CU_ASSERT_PTR_NULL(subobj_node);
@@ -399,6 +404,7 @@ void test_pcep_msg_read_pcep_open()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 1);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -443,6 +449,7 @@ void test_pcep_msg_read_pcep_update()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 1);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -492,6 +499,7 @@ void test_pcep_msg_read_pcep_update()
double_linked_list *ero_subobj_list =
((struct pcep_object_ro *)obj_hdr)->sub_objects;
CU_ASSERT_PTR_NOT_NULL(ero_subobj_list);
+ assert(ero_subobj_list != NULL);
CU_ASSERT_EQUAL(ero_subobj_list->num_entries, 0);
double_linked_list_node *subobj_node = ero_subobj_list->head;
CU_ASSERT_PTR_NULL(subobj_node);
@@ -525,6 +533,7 @@ void test_pcep_msg_read_pcep_open_initiate()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 2);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -554,6 +563,7 @@ void test_pcep_msg_read_pcep_open_cisco_pce()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 1);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -573,6 +583,7 @@ void test_pcep_msg_read_pcep_open_cisco_pce()
CU_ASSERT_EQUAL(open->open_sid, 0);
CU_ASSERT_EQUAL(open->open_version, 1);
CU_ASSERT_PTR_NOT_NULL(open->header.tlv_list);
+ assert(open->header.tlv_list != NULL);
CU_ASSERT_EQUAL(open->header.tlv_list->num_entries, 2);
/* Stateful PCE Capability TLV */
@@ -616,6 +627,7 @@ void test_pcep_msg_read_pcep_update_cisco_pce()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 1);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -631,6 +643,7 @@ void test_pcep_msg_read_pcep_update_cisco_pce()
CU_ASSERT_EQUAL(srp->header.object_type, PCEP_OBJ_TYPE_SRP);
CU_ASSERT_EQUAL(srp->header.encoded_object_length, 20);
CU_ASSERT_PTR_NOT_NULL(srp->header.tlv_list);
+ assert(srp->header.tlv_list != NULL);
CU_ASSERT_EQUAL(srp->header.tlv_list->num_entries, 1);
CU_ASSERT_EQUAL(srp->srp_id_number, 1);
CU_ASSERT_FALSE(srp->flag_lsp_remove);
@@ -651,6 +664,7 @@ void test_pcep_msg_read_pcep_update_cisco_pce()
CU_ASSERT_EQUAL(lsp->header.object_type, PCEP_OBJ_TYPE_LSP);
CU_ASSERT_EQUAL(lsp->header.encoded_object_length, 24);
CU_ASSERT_PTR_NOT_NULL(lsp->header.tlv_list);
+ assert(lsp->header.tlv_list != NULL);
CU_ASSERT_EQUAL(lsp->header.tlv_list->num_entries, 1);
CU_ASSERT_EQUAL(lsp->plsp_id, 524303);
CU_ASSERT_EQUAL(lsp->operational_status, PCEP_LSP_OPERATIONAL_DOWN);
@@ -677,6 +691,7 @@ void test_pcep_msg_read_pcep_update_cisco_pce()
CU_ASSERT_EQUAL(ero->header.encoded_object_length, 40);
CU_ASSERT_PTR_NULL(ero->header.tlv_list);
CU_ASSERT_PTR_NOT_NULL(ero->sub_objects);
+ assert(ero->sub_objects != NULL);
CU_ASSERT_EQUAL(ero->sub_objects->num_entries, 3);
/* ERO Subobjects */
@@ -757,6 +772,7 @@ void test_pcep_msg_read_pcep_report_cisco_pcc()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 1);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -772,6 +788,7 @@ void test_pcep_msg_read_pcep_report_cisco_pcc()
CU_ASSERT_EQUAL(srp->header.object_type, PCEP_OBJ_TYPE_SRP);
CU_ASSERT_EQUAL(srp->header.encoded_object_length, 20);
CU_ASSERT_PTR_NOT_NULL(srp->header.tlv_list);
+ assert(srp->header.tlv_list != NULL);
CU_ASSERT_EQUAL(srp->header.tlv_list->num_entries, 1);
CU_ASSERT_EQUAL(srp->srp_id_number, 0);
CU_ASSERT_FALSE(srp->flag_lsp_remove);
@@ -838,6 +855,7 @@ void test_pcep_msg_read_pcep_report_cisco_pcc()
CU_ASSERT_EQUAL(ero->header.encoded_object_length, 4);
CU_ASSERT_PTR_NULL(ero->header.tlv_list);
CU_ASSERT_PTR_NOT_NULL(ero->sub_objects);
+ assert(ero->sub_objects != NULL);
CU_ASSERT_EQUAL(ero->sub_objects->num_entries, 0);
/* LSPA object */
@@ -916,6 +934,7 @@ void test_pcep_msg_read_pcep_initiate_cisco_pcc()
}
double_linked_list *msg_list = pcep_msg_read(fd);
CU_ASSERT_PTR_NOT_NULL(msg_list);
+ assert(msg_list != NULL);
CU_ASSERT_EQUAL(msg_list->num_entries, 1);
struct pcep_message *msg = (struct pcep_message *)msg_list->head->data;
@@ -931,6 +950,7 @@ void test_pcep_msg_read_pcep_initiate_cisco_pcc()
CU_ASSERT_EQUAL(srp->header.object_type, PCEP_OBJ_TYPE_SRP);
CU_ASSERT_EQUAL(srp->header.encoded_object_length, 20);
CU_ASSERT_PTR_NOT_NULL(srp->header.tlv_list);
+ assert(srp->header.tlv_list != NULL);
CU_ASSERT_EQUAL(srp->header.tlv_list->num_entries, 1);
CU_ASSERT_EQUAL(srp->srp_id_number, 1);
CU_ASSERT_FALSE(srp->flag_lsp_remove);
@@ -942,6 +962,7 @@ void test_pcep_msg_read_pcep_initiate_cisco_pcc()
CU_ASSERT_EQUAL(lsp->header.object_type, PCEP_OBJ_TYPE_LSP);
CU_ASSERT_EQUAL(lsp->header.encoded_object_length, 48);
CU_ASSERT_PTR_NOT_NULL(lsp->header.tlv_list);
+ assert(lsp->header.tlv_list != NULL);
CU_ASSERT_EQUAL(lsp->header.tlv_list->num_entries, 2);
CU_ASSERT_EQUAL(lsp->plsp_id, 0);
CU_ASSERT_EQUAL(lsp->operational_status, PCEP_LSP_OPERATIONAL_DOWN);
@@ -988,7 +1009,9 @@ void test_pcep_msg_read_pcep_initiate_cisco_pcc()
PCEP_OBJ_TYPE_SWITCH_LAYER);
CU_ASSERT_EQUAL(switch_layer->header.encoded_object_length, 8);
CU_ASSERT_PTR_NULL(switch_layer->header.tlv_list);
+ assert(switch_layer->header.tlv_list == NULL);
CU_ASSERT_PTR_NOT_NULL(switch_layer->switch_layer_rows);
+ assert(switch_layer->switch_layer_rows != NULL);
CU_ASSERT_EQUAL(switch_layer->switch_layer_rows->num_entries, 1);
struct pcep_object_switch_layer_row *switch_layer_row =
(struct pcep_object_switch_layer_row *)
diff --git a/pceplib/test/pcep_pcc_api_test.c b/pceplib/test/pcep_pcc_api_test.c
index 4adbb6374e..9106671873 100644
--- a/pceplib/test/pcep_pcc_api_test.c
+++ b/pceplib/test/pcep_pcc_api_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <netdb.h> // gethostbyname
#include <pthread.h>
#include <stdlib.h>
@@ -108,6 +109,8 @@ void test_connect_pce()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *open_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg);
+ assert(open_msg != NULL);
+ assert(open_msg->msg_header != NULL);
CU_ASSERT_EQUAL(open_msg->msg_header->type, PCEP_TYPE_OPEN);
pcep_msg_free_message(open_msg);
@@ -134,6 +137,7 @@ void test_connect_pce_ipv6()
pcep_session *session = connect_pce_ipv6(config, &dest_address);
CU_ASSERT_PTR_NOT_NULL(session);
+ assert(session != NULL);
CU_ASSERT_TRUE(session->socket_comm_session->is_ipv6);
CU_ASSERT_EQUAL(mock_info->sent_message_list->num_entries, 1);
/* What gets saved in the mock is the msg byte buffer. The msg struct
@@ -144,6 +148,7 @@ void test_connect_pce_ipv6()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *open_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg);
+ assert(open_msg != NULL);
CU_ASSERT_EQUAL(open_msg->msg_header->type, PCEP_TYPE_OPEN);
pcep_msg_free_message(open_msg);
@@ -175,6 +180,8 @@ void test_connect_pce_with_src_ip()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *open_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg);
+ assert(open_msg != NULL);
+ assert(open_msg->msg_header != NULL);
CU_ASSERT_EQUAL(open_msg->msg_header->type, PCEP_TYPE_OPEN);
pcep_msg_free_message(open_msg);
@@ -207,6 +214,7 @@ void test_disconnect_pce()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(msg);
+ assert(msg != NULL);
CU_ASSERT_EQUAL(msg->msg_header->type, PCEP_TYPE_OPEN);
pcep_msg_free_message(msg);
pceplib_free(PCEPLIB_MESSAGES, encoded_msg);
@@ -216,6 +224,8 @@ void test_disconnect_pce()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(msg);
+ assert(msg != NULL);
+ assert(msg->msg_header != NULL);
CU_ASSERT_EQUAL(msg->msg_header->type, PCEP_TYPE_CLOSE);
pcep_msg_free_message(msg);
diff --git a/pceplib/test/pcep_session_logic_loop_test.c b/pceplib/test/pcep_session_logic_loop_test.c
index d68b200549..4dfed7321f 100644
--- a/pceplib/test/pcep_session_logic_loop_test.c
+++ b/pceplib/test/pcep_session_logic_loop_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <pthread.h>
#include <stdlib.h>
#include <string.h>
@@ -161,6 +162,7 @@ void test_session_logic_msg_ready_handler()
pcep_session_event *socket_event = (pcep_session_event *)queue_dequeue(
session_logic_handle_->session_event_queue);
CU_ASSERT_PTR_NOT_NULL(socket_event);
+ assert(socket_event != NULL);
CU_ASSERT_TRUE(socket_event->socket_closed);
pceplib_free(PCEPLIB_INFRA, socket_event);
@@ -179,6 +181,7 @@ void test_session_logic_msg_ready_handler()
socket_event = (pcep_session_event *)queue_dequeue(
session_logic_handle_->session_event_queue);
CU_ASSERT_PTR_NOT_NULL(socket_event);
+ assert(socket_event != NULL);
CU_ASSERT_FALSE(socket_event->socket_closed);
CU_ASSERT_PTR_EQUAL(socket_event->session, &session);
CU_ASSERT_EQUAL(socket_event->expired_timer_id, TIMER_ID_NOT_SET);
@@ -206,6 +209,7 @@ void test_session_logic_conn_except_notifier()
pcep_session_event *socket_event = (pcep_session_event *)queue_dequeue(
session_logic_handle_->session_event_queue);
CU_ASSERT_PTR_NOT_NULL_FATAL(socket_event);
+ assert(socket_event != NULL);
CU_ASSERT_TRUE(socket_event->socket_closed);
CU_ASSERT_PTR_EQUAL(socket_event->session, &session);
CU_ASSERT_EQUAL(socket_event->expired_timer_id, TIMER_ID_NOT_SET);
@@ -230,6 +234,7 @@ void test_session_logic_timer_expire_handler()
pcep_session_event *socket_event = (pcep_session_event *)queue_dequeue(
session_logic_handle_->session_event_queue);
CU_ASSERT_PTR_NOT_NULL_FATAL(socket_event);
+ assert(socket_event != NULL);
CU_ASSERT_FALSE(socket_event->socket_closed);
CU_ASSERT_PTR_EQUAL(socket_event->session, &session);
CU_ASSERT_EQUAL(socket_event->expired_timer_id, 42);
diff --git a/pceplib/test/pcep_session_logic_states_test.c b/pceplib/test/pcep_session_logic_states_test.c
index 24741fa345..e967d74e48 100644
--- a/pceplib/test/pcep_session_logic_states_test.c
+++ b/pceplib/test/pcep_session_logic_states_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <stdlib.h>
#include <string.h>
@@ -394,6 +395,7 @@ void test_handle_socket_comm_event_open()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(msg);
+ assert(msg != NULL);
CU_ASSERT_EQUAL(PCEP_TYPE_ERROR, msg->msg_header->type);
/* Verify the error object */
CU_ASSERT_EQUAL(1, msg->obj_list->num_entries);
@@ -456,6 +458,7 @@ void test_handle_socket_comm_event_open_error()
uint8_t *encoded_msg =
dll_delete_first_node(mock_info->sent_message_list);
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
+ assert(encoded_msg != NULL);
struct pcep_message *open_msg_corrected =
pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg_corrected);
@@ -463,6 +466,7 @@ void test_handle_socket_comm_event_open_error()
(struct pcep_object_open *)pcep_obj_get(
open_msg_corrected->obj_list, PCEP_OBJ_CLASS_OPEN);
CU_ASSERT_PTR_NOT_NULL(open_object_corrected);
+ assert(open_object_corrected != NULL);
/* Verify the Keep-alive and Dead timers have been negotiated */
CU_ASSERT_EQUAL(error_open_object->open_keepalive,
open_object_corrected->open_keepalive);
@@ -596,6 +600,7 @@ void test_handle_socket_comm_event_pcreq()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *error_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(error_msg);
+ assert(error_msg != NULL);
CU_ASSERT_EQUAL(PCEP_TYPE_ERROR, error_msg->msg_header->type);
/* Verify the error object */
CU_ASSERT_EQUAL(1, error_msg->obj_list->num_entries);
@@ -627,6 +632,7 @@ void test_handle_socket_comm_event_report()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *error_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(error_msg);
+ assert(error_msg != NULL);
CU_ASSERT_EQUAL(PCEP_TYPE_ERROR, error_msg->msg_header->type);
/* Verify the error object */
CU_ASSERT_EQUAL(1, error_msg->obj_list->num_entries);
@@ -744,6 +750,7 @@ void test_handle_socket_comm_event_unknown_msg()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(msg);
+ assert(msg != NULL);
CU_ASSERT_EQUAL(PCEP_TYPE_ERROR, msg->msg_header->type);
/* Verify the error object */
CU_ASSERT_EQUAL(1, msg->obj_list->num_entries);
@@ -776,6 +783,7 @@ void test_handle_socket_comm_event_unknown_msg()
/* Verify the error message */
encoded_msg = dll_delete_first_node(mock_info->sent_message_list);
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
+ assert(encoded_msg != NULL);
msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(msg);
CU_ASSERT_EQUAL(PCEP_TYPE_ERROR, msg->msg_header->type);
@@ -793,8 +801,10 @@ void test_handle_socket_comm_event_unknown_msg()
/* Verify the Close message */
encoded_msg = dll_delete_first_node(mock_info->sent_message_list);
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
+ assert(encoded_msg != NULL);
msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(msg);
+ assert(msg != NULL);
CU_ASSERT_EQUAL(PCEP_TYPE_CLOSE, msg->msg_header->type);
/* Verify the error object */
CU_ASSERT_EQUAL(1, msg->obj_list->num_entries);
diff --git a/pceplib/test/pcep_session_logic_test.c b/pceplib/test/pcep_session_logic_test.c
index 503e77c20e..8339a7a280 100644
--- a/pceplib/test/pcep_session_logic_test.c
+++ b/pceplib/test/pcep_session_logic_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
@@ -134,6 +135,7 @@ void test_create_destroy_pcep_session()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *open_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg);
+ assert(open_msg != NULL);
/* Should be an Open, with no TLVs: length = 12 */
CU_ASSERT_EQUAL(open_msg->msg_header->type, PCEP_TYPE_OPEN);
CU_ASSERT_EQUAL(open_msg->encoded_message_length, 12);
@@ -166,6 +168,7 @@ void test_create_destroy_pcep_session_ipv6()
mock_info->send_message_save_message = true;
session = create_pcep_session_ipv6(&config, &pce_ip);
CU_ASSERT_PTR_NOT_NULL(session);
+ assert(session != NULL);
CU_ASSERT_TRUE(session->socket_comm_session->is_ipv6);
/* What gets saved in the mock is the msg byte buffer. The msg struct
* was deleted when it was sent. Instead of inspecting the msg byte
@@ -175,6 +178,7 @@ void test_create_destroy_pcep_session_ipv6()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
struct pcep_message *open_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg);
+ assert(open_msg != NULL);
/* Should be an Open, with no TLVs: length = 12 */
CU_ASSERT_EQUAL(open_msg->msg_header->type, PCEP_TYPE_OPEN);
CU_ASSERT_EQUAL(open_msg->encoded_message_length, 12);
@@ -215,14 +219,17 @@ void test_create_pcep_session_open_tlvs()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
open_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg);
+ assert(open_msg != NULL);
/* Get and verify the Open Message objects */
CU_ASSERT_PTR_NOT_NULL(open_msg->obj_list);
+ assert(open_msg->obj_list != NULL);
CU_ASSERT_TRUE(open_msg->obj_list->num_entries > 0);
/* Get and verify the Open object */
open_obj = pcep_obj_get(open_msg->obj_list, PCEP_OBJ_CLASS_OPEN);
CU_ASSERT_PTR_NOT_NULL(open_obj);
/* Get and verify the Open object TLVs */
CU_ASSERT_PTR_NOT_NULL(open_obj->tlv_list);
+ assert(open_obj->tlv_list != NULL);
CU_ASSERT_EQUAL(open_obj->tlv_list->num_entries, 1);
CU_ASSERT_EQUAL(((struct pcep_object_tlv_header *)
open_obj->tlv_list->head->data)
@@ -250,12 +257,14 @@ void test_create_pcep_session_open_tlvs()
CU_ASSERT_PTR_NOT_NULL(open_msg);
/* Get and verify the Open Message objects */
CU_ASSERT_PTR_NOT_NULL(open_msg->obj_list);
+ assert(open_msg != NULL);
CU_ASSERT_TRUE(open_msg->obj_list->num_entries > 0);
/* Get and verify the Open object */
open_obj = pcep_obj_get(open_msg->obj_list, PCEP_OBJ_CLASS_OPEN);
CU_ASSERT_PTR_NOT_NULL(open_obj);
/* Get and verify the Open object TLVs */
CU_ASSERT_PTR_NOT_NULL(open_obj->tlv_list);
+ assert(open_obj->tlv_list != NULL);
CU_ASSERT_EQUAL(open_obj->tlv_list->num_entries, 2);
CU_ASSERT_EQUAL(((struct pcep_object_tlv_header *)
open_obj->tlv_list->head->data)
@@ -287,14 +296,17 @@ void test_create_pcep_session_open_tlvs()
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
open_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg);
+ assert(open_msg != NULL);
/* Get and verify the Open Message objects */
CU_ASSERT_PTR_NOT_NULL(open_msg->obj_list);
+ assert(open_msg->obj_list != NULL);
CU_ASSERT_TRUE(open_msg->obj_list->num_entries > 0);
/* Get and verify the Open object */
open_obj = pcep_obj_get(open_msg->obj_list, PCEP_OBJ_CLASS_OPEN);
CU_ASSERT_PTR_NOT_NULL(open_obj);
/* Get and verify the Open object TLVs */
CU_ASSERT_PTR_NOT_NULL(open_obj->tlv_list);
+ assert(open_obj->tlv_list != NULL);
CU_ASSERT_EQUAL(open_obj->tlv_list->num_entries, 3);
double_linked_list_node *tlv_node = open_obj->tlv_list->head;
CU_ASSERT_EQUAL(((struct pcep_object_tlv_header *)tlv_node->data)->type,
@@ -324,16 +336,21 @@ void test_create_pcep_session_open_tlvs()
/* Get and verify the Open Message */
encoded_msg = dll_delete_first_node(mock_info->sent_message_list);
CU_ASSERT_PTR_NOT_NULL(encoded_msg);
+ assert(encoded_msg != NULL);
open_msg = pcep_decode_message(encoded_msg);
CU_ASSERT_PTR_NOT_NULL(open_msg);
+ assert(open_msg != NULL);
/* Get and verify the Open Message objects */
CU_ASSERT_PTR_NOT_NULL(open_msg->obj_list);
+ assert(open_msg->obj_list != NULL);
CU_ASSERT_TRUE(open_msg->obj_list->num_entries > 0);
/* Get and verify the Open object */
open_obj = pcep_obj_get(open_msg->obj_list, PCEP_OBJ_CLASS_OPEN);
CU_ASSERT_PTR_NOT_NULL(open_obj);
+ assert(open_obj != NULL);
/* Get and verify the Open object TLVs */
CU_ASSERT_PTR_NOT_NULL(open_obj->tlv_list);
+ assert(open_obj->tlv_list != NULL);
CU_ASSERT_EQUAL(open_obj->tlv_list->num_entries, 4);
tlv_node = open_obj->tlv_list->head;
CU_ASSERT_EQUAL(((struct pcep_object_tlv_header *)tlv_node->data)->type,
diff --git a/pceplib/test/pcep_socket_comm_test.c b/pceplib/test/pcep_socket_comm_test.c
index 0ab38bf96e..116531f12d 100644
--- a/pceplib/test/pcep_socket_comm_test.c
+++ b/pceplib/test/pcep_socket_comm_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <netinet/in.h>
#include <CUnit/CUnit.h>
@@ -112,6 +113,7 @@ void test_pcep_socket_comm_initialize()
test_connection_except_notifier, &test_host_ip, test_port,
connect_timeout_millis, NULL, false, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_FALSE(test_session->is_ipv6);
}
@@ -123,6 +125,7 @@ void test_pcep_socket_comm_initialize_ipv6()
test_connection_except_notifier, &test_host_ipv6, test_port,
connect_timeout_millis, NULL, false, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_TRUE(test_session->is_ipv6);
}
@@ -135,6 +138,7 @@ void test_pcep_socket_comm_initialize_with_src()
test_connection_except_notifier, NULL, 0, &test_host_ip,
test_port, connect_timeout_millis, NULL, false, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_EQUAL(
test_session->src_sock_addr.src_sock_addr_ipv4.sin_addr.s_addr,
INADDR_ANY);
@@ -147,6 +151,7 @@ void test_pcep_socket_comm_initialize_with_src()
&test_host_ip, test_port, connect_timeout_millis, NULL, false,
NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_EQUAL(
test_session->src_sock_addr.src_sock_addr_ipv4.sin_addr.s_addr,
test_src_ip.s_addr);
@@ -164,6 +169,7 @@ void test_pcep_socket_comm_initialize_with_src_ipv6()
test_connection_except_notifier, NULL, 0, &test_host_ipv6,
test_port, connect_timeout_millis, NULL, false, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_EQUAL(memcmp(&test_session->src_sock_addr.src_sock_addr_ipv6
.sin6_addr,
&in6addr_any, sizeof(struct in6_addr)),
@@ -177,6 +183,7 @@ void test_pcep_socket_comm_initialize_with_src_ipv6()
&test_host_ipv6, test_port, connect_timeout_millis, NULL, false,
NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_EQUAL(memcmp(&test_session->src_sock_addr.src_sock_addr_ipv6
.sin6_addr,
&test_src_ipv6, sizeof(struct in6_addr)),
@@ -198,6 +205,7 @@ void test_pcep_socket_comm_initialize_tcpmd5()
test_connection_except_notifier, &test_host_ip, test_port, 1,
tcp_md5_str, true, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_EQUAL(0, strncmp(tcp_md5_str,
test_session->tcp_authentication_str,
tcp_md5_strlen));
@@ -213,6 +221,7 @@ void test_pcep_socket_comm_initialize_tcpmd5()
test_connection_except_notifier, &test_host_ip, test_port, 1,
tcp_md5_str, false, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_EQUAL(0, strncmp(tcp_md5_str,
test_session->tcp_authentication_str,
tcp_md5_strlen));
@@ -231,6 +240,7 @@ void test_pcep_socket_comm_initialize_ipv6_tcpmd5()
test_connection_except_notifier, &test_host_ipv6, test_port, 1,
tcp_md5_str, true, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_EQUAL(0, strncmp(tcp_md5_str,
test_session->tcp_authentication_str,
tcp_md5_strlen));
@@ -246,6 +256,7 @@ void test_pcep_socket_comm_initialize_ipv6_tcpmd5()
test_connection_except_notifier, &test_host_ipv6, test_port, 1,
tcp_md5_str, false, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_EQUAL(0, strncmp(tcp_md5_str,
test_session->tcp_authentication_str,
tcp_md5_strlen));
@@ -300,7 +311,9 @@ void test_pcep_socket_comm_session_destroy()
test_connection_except_notifier, &test_host_ip, test_port,
connect_timeout_millis, NULL, false, NULL);
CU_ASSERT_PTR_NOT_NULL(test_session);
+ assert(test_session != NULL);
CU_ASSERT_PTR_NOT_NULL(socket_comm_handle_);
+ assert(socket_comm_handle_ != NULL);
CU_ASSERT_EQUAL(socket_comm_handle_->num_active_sessions, 1);
CU_ASSERT_TRUE(socket_comm_session_teardown(test_session));
diff --git a/pceplib/test/pcep_utils_counters_test.c b/pceplib/test/pcep_utils_counters_test.c
index bcdce36188..b31715f7ac 100644
--- a/pceplib/test/pcep_utils_counters_test.c
+++ b/pceplib/test/pcep_utils_counters_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <stdlib.h>
#include <CUnit/CUnit.h>
@@ -47,6 +48,7 @@ void test_create_counters_group()
group = create_counters_group(group_name, num_subgroups);
CU_ASSERT_PTR_NOT_NULL(group);
+ assert(group != NULL);
CU_ASSERT_EQUAL(group->num_subgroups, 0);
CU_ASSERT_EQUAL(group->max_subgroups, num_subgroups);
@@ -76,6 +78,7 @@ void test_create_counters_subgroup()
subgroup = create_counters_subgroup(subgroup_name, subgroup_id,
num_counters);
CU_ASSERT_PTR_NOT_NULL(subgroup);
+ assert(subgroup != NULL);
CU_ASSERT_EQUAL(subgroup->subgroup_id, subgroup_id);
CU_ASSERT_EQUAL(subgroup->num_counters, 0);
diff --git a/pceplib/test/pcep_utils_double_linked_list_test.c b/pceplib/test/pcep_utils_double_linked_list_test.c
index 4eb85816b9..181cbeca37 100644
--- a/pceplib/test/pcep_utils_double_linked_list_test.c
+++ b/pceplib/test/pcep_utils_double_linked_list_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <CUnit/CUnit.h>
#include "pcep_utils_double_linked_list.h"
@@ -72,16 +73,22 @@ void test_dll_prepend_data()
CU_ASSERT_EQUAL(handle->num_entries, 3);
double_linked_list_node *node = handle->head;
+ CU_ASSERT_PTR_NOT_NULL(node);
+ assert(node != NULL);
CU_ASSERT_PTR_EQUAL(node->data, &data1);
CU_ASSERT_PTR_NULL(node->prev_node);
CU_ASSERT_PTR_NOT_NULL(node->next_node);
node = node->next_node;
+ CU_ASSERT_PTR_NOT_NULL(node);
+ assert(node != NULL);
CU_ASSERT_PTR_EQUAL(node->data, &data2);
CU_ASSERT_PTR_NOT_NULL(node->prev_node);
CU_ASSERT_PTR_NOT_NULL(node->next_node);
node = node->next_node;
+ CU_ASSERT_PTR_NOT_NULL(node);
+ assert(node != NULL);
CU_ASSERT_PTR_EQUAL(node->data, &data3);
CU_ASSERT_PTR_NOT_NULL(node->prev_node);
CU_ASSERT_PTR_NULL(node->next_node);
@@ -112,11 +119,15 @@ void test_dll_append_data()
CU_ASSERT_PTR_NOT_NULL(node->next_node);
node = node->next_node;
+ CU_ASSERT_PTR_NOT_NULL(node);
+ assert(node != NULL);
CU_ASSERT_PTR_EQUAL(node->data, &data2);
CU_ASSERT_PTR_NOT_NULL(node->prev_node);
CU_ASSERT_PTR_NOT_NULL(node->next_node);
node = node->next_node;
+ CU_ASSERT_PTR_NOT_NULL(node);
+ assert(node != NULL);
CU_ASSERT_PTR_EQUAL(node->data, &data3);
CU_ASSERT_PTR_NOT_NULL(node->prev_node);
CU_ASSERT_PTR_NULL(node->next_node);
@@ -278,8 +289,11 @@ void test_dll_delete_node()
node2 = dll_append(handle, &data2);
node3 = dll_append(handle, &data3);
CU_ASSERT_PTR_NOT_NULL(node1);
+ assert(node1 != NULL);
CU_ASSERT_PTR_NOT_NULL(node2);
+ assert(node2 != NULL);
CU_ASSERT_PTR_NOT_NULL(node3);
+ assert(node3 != NULL);
CU_ASSERT_EQUAL(handle->num_entries, 3);
/* Delete the middle entry */
diff --git a/pceplib/test/pcep_utils_ordered_list_test.c b/pceplib/test/pcep_utils_ordered_list_test.c
index d20f5e68af..12ac456e23 100644
--- a/pceplib/test/pcep_utils_ordered_list_test.c
+++ b/pceplib/test/pcep_utils_ordered_list_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <CUnit/CUnit.h>
#include "pcep_utils_ordered_list.h"
@@ -55,6 +56,7 @@ void test_empty_list()
ordered_list_initialize(node_data_compare);
CU_ASSERT_PTR_NOT_NULL(handle);
+ assert(handle != NULL);
CU_ASSERT_PTR_NULL(handle->head);
CU_ASSERT_PTR_NOT_NULL(handle->compare_function);
CU_ASSERT_EQUAL(handle->num_entries, 0);
@@ -134,14 +136,17 @@ void test_find()
ordered_list_node *node = ordered_list_find(handle, &data1);
CU_ASSERT_PTR_NOT_NULL(node);
+ assert(node != NULL);
CU_ASSERT_PTR_EQUAL(node->data, &data1);
node = ordered_list_find(handle, &data2);
CU_ASSERT_PTR_NOT_NULL(node);
+ assert(node != NULL);
CU_ASSERT_PTR_EQUAL(node->data, &data2);
node = ordered_list_find(handle, &data3);
CU_ASSERT_PTR_NOT_NULL(node);
+ assert(node != NULL);
CU_ASSERT_PTR_EQUAL(node->data, &data3);
node = ordered_list_find(handle, &data_not_inList);
diff --git a/pceplib/test/pcep_utils_queue_test.c b/pceplib/test/pcep_utils_queue_test.c
index 061dfbf37b..6e62c75636 100644
--- a/pceplib/test/pcep_utils_queue_test.c
+++ b/pceplib/test/pcep_utils_queue_test.c
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include <assert.h>
#include <CUnit/CUnit.h>
#include "pcep_utils_queue.h"
@@ -41,6 +42,7 @@ void test_empty_queue()
queue_handle *handle = queue_initialize();
CU_ASSERT_PTR_NOT_NULL(handle);
+ assert(handle != NULL);
CU_ASSERT_PTR_NULL(handle->head);
CU_ASSERT_EQUAL(handle->num_entries, 0);
diff --git a/pimd/pim_cmd.c b/pimd/pim_cmd.c
index d2f7dad820..548c866e4d 100644
--- a/pimd/pim_cmd.c
+++ b/pimd/pim_cmd.c
@@ -7213,7 +7213,8 @@ DEFUN (no_ip_pim_rp_keep_alive,
char rp_ka_timer[5];
char rp_ka_timer_xpath[XPATH_MAXLEN];
- snprintf(rp_ka_timer, sizeof(rp_ka_timer), "%d", PIM_KEEPALIVE_PERIOD);
+ snprintf(rp_ka_timer, sizeof(rp_ka_timer), "%d",
+ PIM_RP_KEEPALIVE_PERIOD);
vrfname = pim_cli_get_vrf_name(vty);
if (vrfname == NULL)
@@ -7985,8 +7986,8 @@ DEFUN (interface_no_ip_igmp,
snprintf(pim_if_xpath, sizeof(pim_if_xpath),
"%s/frr-pim:pim", VTY_CURR_XPATH);
- pim_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/pim-enable", pim_if_xpath);
+ pim_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/pim-enable", pim_if_xpath);
if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, pim_if_xpath, NB_OP_DESTROY, NULL);
nb_cli_enqueue_change(vty, ".", NB_OP_DESTROY, NULL);
@@ -8080,9 +8081,9 @@ DEFUN (interface_ip_igmp_query_interval,
{
const struct lyd_node *pim_enable_dnode;
- pim_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-pim:pim/pim-enable",
- VTY_CURR_XPATH);
+ pim_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH);
if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
"true");
@@ -8156,9 +8157,9 @@ DEFUN (interface_ip_igmp_query_max_response_time,
{
const struct lyd_node *pim_enable_dnode;
- pim_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-pim:pim/pim-enable",
- VTY_CURR_XPATH);
+ pim_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH);
if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
@@ -8205,9 +8206,9 @@ DEFUN_HIDDEN (interface_ip_igmp_query_max_response_time_dsec,
{
const struct lyd_node *pim_enable_dnode;
- pim_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-pim:pim/pim-enable",
- VTY_CURR_XPATH);
+ pim_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH);
if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
"true");
@@ -8253,9 +8254,9 @@ DEFUN (interface_ip_igmp_last_member_query_count,
{
const struct lyd_node *pim_enable_dnode;
- pim_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-pim:pim/pim-enable",
- VTY_CURR_XPATH);
+ pim_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH);
if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
"true");
@@ -8300,9 +8301,9 @@ DEFUN (interface_ip_igmp_last_member_query_interval,
{
const struct lyd_node *pim_enable_dnode;
- pim_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-pim:pim/pim-enable",
- VTY_CURR_XPATH);
+ pim_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-pim:pim/pim-enable", VTY_CURR_XPATH);
if (!pim_enable_dnode) {
nb_cli_enqueue_change(vty, "./igmp-enable", NB_OP_MODIFY,
"true");
@@ -8530,8 +8531,8 @@ DEFUN_HIDDEN (interface_no_ip_pim_ssm,
snprintf(igmp_if_xpath, sizeof(igmp_if_xpath),
"%s/frr-igmp:igmp", VTY_CURR_XPATH);
- igmp_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/igmp-enable", igmp_if_xpath);
+ igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/igmp-enable", igmp_if_xpath);
if (!igmp_enable_dnode) {
nb_cli_enqueue_change(vty, igmp_if_xpath, NB_OP_DESTROY, NULL);
@@ -8562,8 +8563,8 @@ DEFUN_HIDDEN (interface_no_ip_pim_sm,
snprintf(igmp_if_xpath, sizeof(igmp_if_xpath),
"%s/frr-igmp:igmp", VTY_CURR_XPATH);
- igmp_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/igmp-enable", igmp_if_xpath);
+ igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/igmp-enable", igmp_if_xpath);
if (!igmp_enable_dnode) {
nb_cli_enqueue_change(vty, igmp_if_xpath, NB_OP_DESTROY, NULL);
@@ -8593,8 +8594,8 @@ DEFUN (interface_no_ip_pim,
snprintf(igmp_if_xpath, sizeof(igmp_if_xpath),
"%s/frr-igmp:igmp", VTY_CURR_XPATH);
- igmp_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/igmp-enable", igmp_if_xpath);
+ igmp_enable_dnode = yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/igmp-enable", igmp_if_xpath);
if (!igmp_enable_dnode) {
nb_cli_enqueue_change(vty, igmp_if_xpath, NB_OP_DESTROY, NULL);
@@ -8715,9 +8716,9 @@ DEFUN (interface_ip_pim_hello,
int idx_hold = 4;
const struct lyd_node *igmp_enable_dnode;
- igmp_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable",
- VTY_CURR_XPATH);
+ igmp_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
if (!igmp_enable_dnode) {
nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY,
"true");
@@ -9435,9 +9436,9 @@ DEFPY (ip_pim_bfd,
{
const struct lyd_node *igmp_enable_dnode;
- igmp_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable",
- VTY_CURR_XPATH);
+ igmp_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
if (!igmp_enable_dnode)
nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY,
"true");
@@ -9490,9 +9491,9 @@ DEFUN (ip_pim_bsm,
{
const struct lyd_node *igmp_enable_dnode;
- igmp_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable",
- VTY_CURR_XPATH);
+ igmp_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
if (!igmp_enable_dnode)
nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY,
"true");
@@ -9529,9 +9530,9 @@ DEFUN (ip_pim_ucast_bsm,
{
const struct lyd_node *igmp_enable_dnode;
- igmp_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable",
- VTY_CURR_XPATH);
+ igmp_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
if (!igmp_enable_dnode)
nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY,
"true");
@@ -9588,9 +9589,9 @@ DEFUN_HIDDEN(
int idx_number_3 = 5;
const struct lyd_node *igmp_enable_dnode;
- igmp_enable_dnode = yang_dnode_get(vty->candidate_config->dnode,
- "%s/frr-igmp:igmp/igmp-enable",
- VTY_CURR_XPATH);
+ igmp_enable_dnode =
+ yang_dnode_getf(vty->candidate_config->dnode,
+ "%s/frr-igmp:igmp/igmp-enable", VTY_CURR_XPATH);
if (!igmp_enable_dnode)
nb_cli_enqueue_change(vty, "./pim-enable", NB_OP_MODIFY,
"true");
@@ -11090,9 +11091,7 @@ void pim_cmd_init(void)
install_element(CONFIG_NODE, &ip_pim_ssm_prefix_list_cmd);
install_element(VRF_NODE, &ip_pim_ssm_prefix_list_cmd);
install_element(CONFIG_NODE, &ip_pim_register_suppress_cmd);
- install_element(VRF_NODE, &ip_pim_register_suppress_cmd);
install_element(CONFIG_NODE, &no_ip_pim_register_suppress_cmd);
- install_element(VRF_NODE, &no_ip_pim_register_suppress_cmd);
install_element(CONFIG_NODE, &ip_pim_spt_switchover_infinity_cmd);
install_element(VRF_NODE, &ip_pim_spt_switchover_infinity_cmd);
install_element(CONFIG_NODE, &ip_pim_spt_switchover_infinity_plist_cmd);
@@ -11105,9 +11104,7 @@ void pim_cmd_init(void)
install_element(CONFIG_NODE, &pim_register_accept_list_cmd);
install_element(VRF_NODE, &pim_register_accept_list_cmd);
install_element(CONFIG_NODE, &ip_pim_joinprune_time_cmd);
- install_element(VRF_NODE, &ip_pim_joinprune_time_cmd);
install_element(CONFIG_NODE, &no_ip_pim_joinprune_time_cmd);
- install_element(VRF_NODE, &no_ip_pim_joinprune_time_cmd);
install_element(CONFIG_NODE, &ip_pim_keep_alive_cmd);
install_element(VRF_NODE, &ip_pim_keep_alive_cmd);
install_element(CONFIG_NODE, &ip_pim_rp_keep_alive_cmd);
@@ -11117,9 +11114,7 @@ void pim_cmd_init(void)
install_element(CONFIG_NODE, &no_ip_pim_rp_keep_alive_cmd);
install_element(VRF_NODE, &no_ip_pim_rp_keep_alive_cmd);
install_element(CONFIG_NODE, &ip_pim_packets_cmd);
- install_element(VRF_NODE, &ip_pim_packets_cmd);
install_element(CONFIG_NODE, &no_ip_pim_packets_cmd);
- install_element(VRF_NODE, &no_ip_pim_packets_cmd);
install_element(CONFIG_NODE, &ip_pim_v6_secondary_cmd);
install_element(VRF_NODE, &ip_pim_v6_secondary_cmd);
install_element(CONFIG_NODE, &no_ip_pim_v6_secondary_cmd);
diff --git a/pimd/pim_ifchannel.c b/pimd/pim_ifchannel.c
index 579824c88d..1bf3a619bf 100644
--- a/pimd/pim_ifchannel.c
+++ b/pimd/pim_ifchannel.c
@@ -743,7 +743,7 @@ static int on_ifjoin_prune_pending_timer(struct thread *t)
if (!ch->upstream->channel_oil->installed)
pim_upstream_mroute_add(
ch->upstream->channel_oil,
- __PRETTY_FUNCTION__);
+ __func__);
}
}
/* from here ch may have been deleted */
diff --git a/pimd/pim_nb_config.c b/pimd/pim_nb_config.c
index da2daea7c3..003a9947e4 100644
--- a/pimd/pim_nb_config.c
+++ b/pimd/pim_nb_config.c
@@ -524,11 +524,10 @@ static bool is_pim_interface(const struct lyd_node *dnode)
const struct lyd_node *igmp_enable_dnode;
yang_dnode_get_path(dnode, if_xpath, sizeof(if_xpath));
- pim_enable_dnode = yang_dnode_get(dnode, "%s/frr-pim:pim/pim-enable",
- if_xpath);
- igmp_enable_dnode = yang_dnode_get(dnode,
- "%s/frr-igmp:igmp/igmp-enable",
- if_xpath);
+ pim_enable_dnode =
+ yang_dnode_getf(dnode, "%s/frr-pim:pim/pim-enable", if_xpath);
+ igmp_enable_dnode = yang_dnode_getf(
+ dnode, "%s/frr-igmp:igmp/igmp-enable", if_xpath);
if (((pim_enable_dnode) &&
(yang_dnode_get_bool(pim_enable_dnode, "."))) ||
@@ -763,8 +762,8 @@ int pim_register_suppress_time_modify(struct nb_cb_modify_args *args)
case NB_EV_ABORT:
break;
case NB_EV_APPLY:
- router->register_suppress_time =
- yang_dnode_get_uint16(args->dnode, NULL);
+ pim_update_suppress_timers(
+ yang_dnode_get_uint16(args->dnode, NULL));
break;
}
diff --git a/pimd/pim_upstream.c b/pimd/pim_upstream.c
index 9899172e6c..918a9a9c7d 100644
--- a/pimd/pim_upstream.c
+++ b/pimd/pim_upstream.c
@@ -407,6 +407,28 @@ static void pim_upstream_join_timer_restart_msec(struct pim_upstream *up,
&up->t_join_timer);
}
+void pim_update_suppress_timers(uint32_t suppress_time)
+{
+ struct pim_instance *pim;
+ struct vrf *vrf;
+ unsigned int old_rp_ka_time;
+
+ /* stash the old one so we know which values were manually configured */
+ old_rp_ka_time = (3 * router->register_suppress_time
+ + router->register_probe_time);
+ router->register_suppress_time = suppress_time;
+
+ RB_FOREACH (vrf, vrf_name_head, &vrfs_by_name) {
+ pim = vrf->info;
+ if (!pim)
+ continue;
+
+ /* Only adjust if not manually configured */
+ if (pim->rp_keep_alive_time == old_rp_ka_time)
+ pim->rp_keep_alive_time = PIM_RP_KEEPALIVE_PERIOD;
+ }
+}
+
void pim_upstream_join_suppress(struct pim_upstream *up,
struct in_addr rpf_addr, int holdtime)
{
diff --git a/pimd/pim_upstream.h b/pimd/pim_upstream.h
index adea3cd9ef..56039d5605 100644
--- a/pimd/pim_upstream.h
+++ b/pimd/pim_upstream.h
@@ -317,6 +317,7 @@ int pim_upstream_eval_inherit_if(struct pim_upstream *up,
void pim_upstream_update_join_desired(struct pim_instance *pim,
struct pim_upstream *up);
+void pim_update_suppress_timers(uint32_t suppress_time);
void pim_upstream_join_suppress(struct pim_upstream *up,
struct in_addr rpf_addr, int holdtime);
diff --git a/pimd/pim_vty.c b/pimd/pim_vty.c
index 76e9c3f0aa..929d35101e 100644
--- a/pimd/pim_vty.c
+++ b/pimd/pim_vty.c
@@ -186,16 +186,24 @@ int pim_global_config_write_worker(struct pim_instance *pim, struct vty *vty)
writes += pim_rp_config_write(pim, vty, spaces);
- if (router->register_suppress_time
- != PIM_REGISTER_SUPPRESSION_TIME_DEFAULT) {
- vty_out(vty, "%sip pim register-suppress-time %d\n", spaces,
- router->register_suppress_time);
- ++writes;
- }
- if (router->t_periodic != PIM_DEFAULT_T_PERIODIC) {
- vty_out(vty, "%sip pim join-prune-interval %d\n", spaces,
- router->t_periodic);
- ++writes;
+ if (pim->vrf_id == VRF_DEFAULT) {
+ if (router->register_suppress_time
+ != PIM_REGISTER_SUPPRESSION_TIME_DEFAULT) {
+ vty_out(vty, "%sip pim register-suppress-time %d\n",
+ spaces, router->register_suppress_time);
+ ++writes;
+ }
+ if (router->t_periodic != PIM_DEFAULT_T_PERIODIC) {
+ vty_out(vty, "%sip pim join-prune-interval %d\n",
+ spaces, router->t_periodic);
+ ++writes;
+ }
+
+ if (router->packet_process != PIM_DEFAULT_PACKET_PROCESS) {
+ vty_out(vty, "%sip pim packets %d\n", spaces,
+ router->packet_process);
+ ++writes;
+ }
}
if (pim->keep_alive_time != PIM_KEEPALIVE_PERIOD) {
vty_out(vty, "%sip pim keep-alive-timer %d\n", spaces,
@@ -207,11 +215,6 @@ int pim_global_config_write_worker(struct pim_instance *pim, struct vty *vty)
pim->rp_keep_alive_time);
++writes;
}
- if (router->packet_process != PIM_DEFAULT_PACKET_PROCESS) {
- vty_out(vty, "%sip pim packets %d\n", spaces,
- router->packet_process);
- ++writes;
- }
if (ssm->plist_name) {
vty_out(vty, "%sip pim ssm prefix-list %s\n", spaces,
ssm->plist_name);
diff --git a/pimd/pimd.c b/pimd/pimd.c
index 1679480794..38e7273945 100644
--- a/pimd/pimd.c
+++ b/pimd/pimd.c
@@ -29,6 +29,7 @@
#include "jhash.h"
#include "vrf.h"
#include "lib_errors.h"
+#include "bfd.h"
#include "pimd.h"
#include "pim_cmd.h"
@@ -137,6 +138,8 @@ void pim_terminate(void)
{
struct zclient *zclient;
+ bfd_protocol_integration_set_shutdown(true);
+
/* reverse prefix_list_init */
prefix_list_add_hook(NULL);
prefix_list_delete_hook(NULL);
diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in
index 47c6ad41af..e24a84d1e4 100644
--- a/redhat/frr.spec.in
+++ b/redhat/frr.spec.in
@@ -176,7 +176,7 @@ BuildRequires: make
BuildRequires: ncurses-devel
BuildRequires: readline-devel
BuildRequires: texinfo
-BuildRequires: libyang-devel >= 1.0.184
+BuildRequires: libyang2-devel
%if 0%{?rhel} && 0%{?rhel} < 7
#python27-devel is available from ius community repo for RedHat/CentOS 6
BuildRequires: python27-devel
diff --git a/ripd/rip_cli.c b/ripd/rip_cli.c
index 43e5b21fa1..0c5730b4d5 100644
--- a/ripd/rip_cli.c
+++ b/ripd/rip_cli.c
@@ -903,9 +903,9 @@ DEFPY_YANG (ip_rip_authentication_string,
return CMD_WARNING_CONFIG_FAILED;
}
- if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH,
- "/frr-ripd:rip/authentication-key-chain")) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH,
+ "/frr-ripd:rip/authentication-key-chain")) {
vty_out(vty, "%% key-chain configuration exists\n");
return CMD_WARNING_CONFIG_FAILED;
}
@@ -952,9 +952,9 @@ DEFPY_YANG (ip_rip_authentication_key_chain,
"Authentication key-chain\n"
"name of key-chain\n")
{
- if (yang_dnode_exists(vty->candidate_config->dnode, "%s%s",
- VTY_CURR_XPATH,
- "/frr-ripd:rip/authentication-password")) {
+ if (yang_dnode_existsf(vty->candidate_config->dnode, "%s%s",
+ VTY_CURR_XPATH,
+ "/frr-ripd:rip/authentication-password")) {
vty_out(vty, "%% authentication string configuration exists\n");
return CMD_WARNING_CONFIG_FAILED;
}
diff --git a/ripd/rip_interface.c b/ripd/rip_interface.c
index 1ef64ff0de..bdae2c5ef5 100644
--- a/ripd/rip_interface.c
+++ b/ripd/rip_interface.c
@@ -493,6 +493,9 @@ int rip_if_down(struct interface *ifp)
struct listnode *listnode = NULL, *nextnode = NULL;
ri = ifp->info;
+
+ THREAD_OFF(ri->t_wakeup);
+
rip = ri->rip;
if (rip) {
for (rp = route_top(rip->table); rp; rp = route_next(rp))
@@ -1113,7 +1116,7 @@ static int rip_interface_config_write(struct vty *vty)
FOR_ALL_INTERFACES (vrf, ifp) {
struct lyd_node *dnode;
- dnode = yang_dnode_get(
+ dnode = yang_dnode_getf(
running_config->dnode,
"/frr-interface:lib/interface[name='%s'][vrf='%s']",
ifp->name, vrf->name);
diff --git a/ripd/ripd.c b/ripd/ripd.c
index 9832c7c52a..c6c82fb65a 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -3632,16 +3632,16 @@ static int rip_vrf_enable(struct vrf *vrf)
char oldpath[XPATH_MAXLEN];
char newpath[XPATH_MAXLEN];
- rip_dnode = yang_dnode_get(
+ rip_dnode = yang_dnode_getf(
running_config->dnode,
"/frr-ripd:ripd/instance[vrf='%s']/vrf",
old_vrf_name);
if (rip_dnode) {
- yang_dnode_get_path(rip_dnode->parent, oldpath,
- sizeof(oldpath));
+ yang_dnode_get_path(lyd_parent(rip_dnode),
+ oldpath, sizeof(oldpath));
yang_dnode_change_leaf(rip_dnode, vrf->name);
- yang_dnode_get_path(rip_dnode->parent, newpath,
- sizeof(newpath));
+ yang_dnode_get_path(lyd_parent(rip_dnode),
+ newpath, sizeof(newpath));
nb_running_move_tree(oldpath, newpath);
running_config->version++;
}
diff --git a/ripngd/ripng_interface.c b/ripngd/ripng_interface.c
index 11a8fdff87..6828398617 100644
--- a/ripngd/ripng_interface.c
+++ b/ripngd/ripng_interface.c
@@ -169,6 +169,9 @@ static int ripng_if_down(struct interface *ifp)
struct listnode *listnode = NULL, *nextnode = NULL;
ri = ifp->info;
+
+ THREAD_OFF(ri->t_wakeup);
+
ripng = ri->ripng;
if (ripng)
@@ -933,7 +936,7 @@ static int interface_config_write(struct vty *vty)
FOR_ALL_INTERFACES (vrf, ifp) {
struct lyd_node *dnode;
- dnode = yang_dnode_get(
+ dnode = yang_dnode_getf(
running_config->dnode,
"/frr-interface:lib/interface[name='%s'][vrf='%s']",
ifp->name, vrf->name);
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c
index 5a71928fbd..3b8d2076f3 100644
--- a/ripngd/ripngd.c
+++ b/ripngd/ripngd.c
@@ -2634,16 +2634,16 @@ static int ripng_vrf_enable(struct vrf *vrf)
char oldpath[XPATH_MAXLEN];
char newpath[XPATH_MAXLEN];
- ripng_dnode = yang_dnode_get(
+ ripng_dnode = yang_dnode_getf(
running_config->dnode,
"/frr-ripngd:ripngd/instance[vrf='%s']/vrf",
old_vrf_name);
if (ripng_dnode) {
- yang_dnode_get_path(ripng_dnode->parent, oldpath,
- sizeof(oldpath));
+ yang_dnode_get_path(lyd_parent(ripng_dnode),
+ oldpath, sizeof(oldpath));
yang_dnode_change_leaf(ripng_dnode, vrf->name);
- yang_dnode_get_path(ripng_dnode->parent, newpath,
- sizeof(newpath));
+ yang_dnode_get_path(lyd_parent(ripng_dnode),
+ newpath, sizeof(newpath));
nb_running_move_tree(oldpath, newpath);
running_config->version++;
}
diff --git a/staticd/static_nb.c b/staticd/static_nb.c
index aa9076aa88..c1a6253a1d 100644
--- a/staticd/static_nb.c
+++ b/staticd/static_nb.c
@@ -61,7 +61,6 @@ const struct frr_yang_module_info frr_staticd_info = {
.xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/path-list/frr-nexthops/nexthop/bh-type",
.cbs = {
.modify = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_bh_type_modify,
- .destroy = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_bh_type_destroy,
}
},
{
@@ -139,7 +138,6 @@ const struct frr_yang_module_info frr_staticd_info = {
.xpath = "/frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/src-list/path-list/frr-nexthops/nexthop/bh-type",
.cbs = {
.modify = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_bh_type_modify,
- .destroy = routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_bh_type_destroy,
}
},
{
diff --git a/staticd/static_nb.h b/staticd/static_nb.h
index e85e1d0e9f..96dd05c0cf 100644
--- a/staticd/static_nb.h
+++ b/staticd/static_nb.h
@@ -37,8 +37,6 @@ int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_pa
struct nb_cb_destroy_args *args);
int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_bh_type_modify(
struct nb_cb_modify_args *args);
-int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_bh_type_destroy(
- struct nb_cb_destroy_args *args);
int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_onlink_modify(
struct nb_cb_modify_args *args);
int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_color_modify(
@@ -77,8 +75,6 @@ int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_sr
struct nb_cb_destroy_args *args);
int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_bh_type_modify(
struct nb_cb_modify_args *args);
-int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_bh_type_destroy(
- struct nb_cb_destroy_args *args);
int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_onlink_modify(
struct nb_cb_modify_args *args);
int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_color_modify(
diff --git a/staticd/static_nb_config.c b/staticd/static_nb_config.c
index e78f5172a3..cd151bface 100644
--- a/staticd/static_nb_config.c
+++ b/staticd/static_nb_config.c
@@ -297,7 +297,7 @@ static int static_nexthop_mpls_label_modify(struct nb_cb_modify_args *args)
uint8_t index;
nh = nb_running_get_entry(args->dnode, NULL, true);
- pos = yang_get_list_pos(args->dnode->parent);
+ pos = yang_get_list_pos(lyd_parent(args->dnode));
if (!pos) {
flog_warn(EC_LIB_NB_CB_CONFIG_APPLY,
"libyang returns invalid label position");
@@ -457,7 +457,7 @@ int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_pa
uint32_t count;
mls_dnode = yang_dnode_get(args->dnode, "./mpls-label-stack");
- count = yang_get_list_elements_count(yang_dnode_get_child(mls_dnode));
+ count = yang_get_list_elements_count(lyd_child(mls_dnode));
if (count > MPLS_MAX_LABELS) {
snprintf(args->errmsg, args->errmsg_len,
@@ -689,22 +689,6 @@ int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_pa
return static_nexthop_bh_type_modify(args);
}
-int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_path_list_frr_nexthops_nexthop_bh_type_destroy(
- struct nb_cb_destroy_args *args)
-{
- /* blackhole type has a boolean type with default value,
- * so no need to do any operations in destroy callback
- */
- switch (args->event) {
- case NB_EV_VALIDATE:
- case NB_EV_PREPARE:
- case NB_EV_ABORT:
- case NB_EV_APPLY:
- break;
- }
- return NB_OK;
-}
-
/*
* XPath:
* /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/path-list/frr-nexthops/nexthop/onlink
@@ -1069,23 +1053,6 @@ int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_sr
return static_nexthop_bh_type_modify(args);
}
-int routing_control_plane_protocols_control_plane_protocol_staticd_route_list_src_list_path_list_frr_nexthops_nexthop_bh_type_destroy(
- struct nb_cb_destroy_args *args)
-{
- /* blackhole type has a boolean type with default value,
- * so no need to do any operations in destroy callback
- */
- switch (args->event) {
- case NB_EV_VALIDATE:
- case NB_EV_PREPARE:
- case NB_EV_ABORT:
- case NB_EV_APPLY:
- break;
- }
-
- return NB_OK;
-}
-
/*
* XPath:
* /frr-routing:routing/control-plane-protocols/control-plane-protocol/frr-staticd:staticd/route-list/src-list/path-list/frr-nexthops/nexthop/onlink
diff --git a/tests/.gitignore b/tests/.gitignore
index 0c938beab6..fb2edc939a 100644
--- a/tests/.gitignore
+++ b/tests/.gitignore
@@ -31,6 +31,7 @@
/lib/test_heavy_wq
/lib/test_idalloc
/lib/test_memory
+/lib/test_nexthop
/lib/test_nexthop_iter
/lib/test_ntop
/lib/test_prefix2str
diff --git a/tests/bgpd/test_peer_attr.c b/tests/bgpd/test_peer_attr.c
index 123d97bc97..cd5186f2ae 100644
--- a/tests/bgpd/test_peer_attr.c
+++ b/tests/bgpd/test_peer_attr.c
@@ -783,6 +783,8 @@ static void test_execute(struct test *test, const char *fmt, ...)
cmd, ret);
}
+ nb_cli_pending_commit_check(test->vty);
+
/* Free memory. */
cmd_free_strvec(vline);
XFREE(MTYPE_TMP, cmd);
@@ -1397,7 +1399,6 @@ static void bgp_startup(void)
zprivs_init(&bgpd_privs);
master = thread_master_create(NULL);
- yang_init(true);
nb_init(master, bgpd_yang_modules, array_size(bgpd_yang_modules), false);
bgp_master_init(master, BGP_SOCKET_SNDBUF_SIZE, list_new());
bgp_option_set(BGP_OPT_NO_LISTEN);
diff --git a/tests/helpers/c/main.c b/tests/helpers/c/main.c
index 7f15996daa..64ecab9132 100644
--- a/tests/helpers/c/main.c
+++ b/tests/helpers/c/main.c
@@ -155,7 +155,6 @@ int main(int argc, char **argv)
cmd_init(1);
vty_init(master, false);
lib_cmd_init();
- yang_init(true);
nb_init(master, NULL, 0, false);
/* OSPF vty inits. */
diff --git a/tests/isisd/test_isis_spf.c b/tests/isisd/test_isis_spf.c
index 8fe1ad0b8a..915f849aec 100644
--- a/tests/isisd/test_isis_spf.c
+++ b/tests/isisd/test_isis_spf.c
@@ -547,7 +547,7 @@ int main(int argc, char **argv)
cmd_init(1);
cmd_hostname_set("test");
vty_init(master, false);
- yang_init(true);
+ yang_init(true, false);
if (debug)
zlog_aux_init("NONE: ", LOG_DEBUG);
else
diff --git a/tests/lib/cli/common_cli.c b/tests/lib/cli/common_cli.c
index 44cc6efe84..49bc0f4fb2 100644
--- a/tests/lib/cli/common_cli.c
+++ b/tests/lib/cli/common_cli.c
@@ -79,7 +79,6 @@ int main(int argc, char **argv)
vty_init(master, false);
lib_cmd_init();
- yang_init(true);
nb_init(master, NULL, 0, false);
test_init(argc, argv);
diff --git a/tests/lib/cli/test_commands.c b/tests/lib/cli/test_commands.c
index cb512211a4..a00f80073c 100644
--- a/tests/lib/cli/test_commands.c
+++ b/tests/lib/cli/test_commands.c
@@ -208,7 +208,6 @@ static void test_init(void)
struct cmd_element *cmd;
cmd_init(1);
- yang_init(true);
nb_init(master, NULL, 0, false);
install_node(&bgp_node);
diff --git a/tests/lib/northbound/test_oper_data.c b/tests/lib/northbound/test_oper_data.c
index b5f257fa2f..08eb0d527c 100644
--- a/tests/lib/northbound/test_oper_data.c
+++ b/tests/lib/northbound/test_oper_data.c
@@ -399,7 +399,6 @@ int main(int argc, char **argv)
cmd_hostname_set("test");
vty_init(master, false);
lib_cmd_init();
- yang_init(true);
nb_init(master, modules, array_size(modules), false);
/* Create artificial data. */
diff --git a/tests/lib/test_assert.c b/tests/lib/test_assert.c
index 8f1f4f2bad..a4535651d4 100644
--- a/tests/lib/test_assert.c
+++ b/tests/lib/test_assert.c
@@ -27,7 +27,7 @@
#include <assert.h>
__attribute__((noinline))
-void func_for_bt(int number)
+static void func_for_bt(int number)
{
assert(number > 2);
assertf(number > 3, "(A) the number was %d", number);
diff --git a/tests/lib/test_nexthop.c b/tests/lib/test_nexthop.c
new file mode 100644
index 0000000000..659d207b4e
--- /dev/null
+++ b/tests/lib/test_nexthop.c
@@ -0,0 +1,201 @@
+/*
+ * Nexthop module test.
+ *
+ * Copyright (C) 2021 by Volta Networks, Inc.
+ *
+ * This file is part of FRR.
+ *
+ * FRR is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2, or (at your option) any
+ * later version.
+ *
+ * FRR is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; see the file COPYING; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <zebra.h>
+#include <nexthop.h>
+
+static bool verbose;
+
+static void test_run_first(void)
+{
+ int ret, i;
+ struct nexthop *nh1, *nh2;
+ struct in_addr addr;
+ struct in6_addr addr6;
+ mpls_label_t labels[MPLS_MAX_LABELS];
+
+ /* Test comparison apis */
+
+ /* ifindex comparisons */
+ nh1 = nexthop_from_ifindex(11, 0);
+ nh2 = nexthop_from_ifindex(12, 0);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret < 0);
+
+ nexthop_free(nh1);
+ nh1 = nexthop_from_ifindex(12, 0);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret == 0);
+
+ nexthop_free(nh1);
+ nexthop_free(nh2);
+
+ /* ipv4, vrf */
+ addr.s_addr = 0x04030201;
+ nh1 = nexthop_from_ipv4(&addr, NULL, 0);
+ nh2 = nexthop_from_ipv4(&addr, NULL, 111);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ nexthop_free(nh2);
+
+ addr.s_addr = 0x04030202;
+ nh2 = nexthop_from_ipv4(&addr, NULL, 0);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ nexthop_free(nh2);
+
+ addr.s_addr = 0x04030201;
+ nh2 = nexthop_from_ipv4(&addr, NULL, 0);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret == 0);
+
+ /* Weight */
+ nh2->weight = 20;
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ nexthop_free(nh1);
+ nexthop_free(nh2);
+
+ /* ipv6 */
+ memset(addr6.s6_addr, 0, sizeof(addr6.s6_addr));
+ nh1 = nexthop_from_ipv6(&addr6, 0);
+ nh2 = nexthop_from_ipv6(&addr6, 0);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret == 0);
+
+ nexthop_free(nh2);
+
+ nh2 = nexthop_from_ipv6(&addr6, 1);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ nexthop_free(nh2);
+
+ addr6.s6_addr[14] = 1;
+ addr6.s6_addr[15] = 1;
+ nh2 = nexthop_from_ipv6(&addr6, 0);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ nexthop_free(nh1);
+ nexthop_free(nh2);
+
+ /* Blackhole */
+ nh1 = nexthop_from_blackhole(BLACKHOLE_REJECT);
+ nh2 = nexthop_from_blackhole(BLACKHOLE_REJECT);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret == 0);
+
+ nexthop_free(nh2);
+
+ nh2 = nexthop_from_blackhole(BLACKHOLE_NULL);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ /* Labels */
+ addr.s_addr = 0x04030201;
+ nh1 = nexthop_from_ipv4(&addr, NULL, 0);
+ nh2 = nexthop_from_ipv4(&addr, NULL, 0);
+
+ memset(labels, 0, sizeof(labels));
+ labels[0] = 111;
+ labels[1] = 222;
+
+ nexthop_add_labels(nh1, ZEBRA_LSP_STATIC, 2, labels);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ nexthop_add_labels(nh2, ZEBRA_LSP_STATIC, 2, labels);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret == 0);
+
+ nexthop_free(nh2);
+
+ /* LSP type isn't included */
+ nh2 = nexthop_from_ipv4(&addr, NULL, 0);
+ nexthop_add_labels(nh2, ZEBRA_LSP_LDP, 2, labels);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret == 0);
+
+ nexthop_free(nh2);
+
+ labels[2] = 333;
+ nh2 = nexthop_from_ipv4(&addr, NULL, 0);
+ nexthop_add_labels(nh2, ZEBRA_LSP_LDP, 3, labels);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ nexthop_free(nh1);
+ nexthop_free(nh2);
+
+ nh1 = nexthop_from_ipv4(&addr, NULL, 0);
+ nh2 = nexthop_from_ipv4(&addr, NULL, 0);
+
+ for (i = 0; i < MPLS_MAX_LABELS; i++)
+ labels[i] = 111 * (i + 1);
+
+ nexthop_add_labels(nh1, ZEBRA_LSP_LDP, MPLS_MAX_LABELS, labels);
+ nexthop_add_labels(nh2, ZEBRA_LSP_LDP, MPLS_MAX_LABELS, labels);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret == 0);
+
+ nexthop_free(nh2);
+
+ /* Test very last label in stack */
+ labels[15] = 999;
+ nh2 = nexthop_from_ipv4(&addr, NULL, 0);
+ nexthop_add_labels(nh2, ZEBRA_LSP_LDP, MPLS_MAX_LABELS, labels);
+
+ ret = nexthop_cmp_basic(nh1, nh2);
+ assert(ret != 0);
+
+ /* End */
+ nexthop_free(nh1);
+ nexthop_free(nh2);
+}
+
+int main(int argc, char **argv)
+{
+ if (argc >= 2 && !strcmp("-v", argv[1]))
+ verbose = true;
+ test_run_first();
+ printf("Simple test passed.\n");
+}
diff --git a/tests/lib/test_nexthop.py b/tests/lib/test_nexthop.py
new file mode 100644
index 0000000000..81bfa43ab5
--- /dev/null
+++ b/tests/lib/test_nexthop.py
@@ -0,0 +1,8 @@
+import frrtest
+
+
+class TestNexthopIter(frrtest.TestMultiOut):
+ program = "./test_nexthop"
+
+
+TestNexthopIter.onesimple("Simple test passed.")
diff --git a/tests/subdir.am b/tests/subdir.am
index 139f4878c8..3996699774 100644
--- a/tests/subdir.am
+++ b/tests/subdir.am
@@ -76,6 +76,7 @@ check_PROGRAMS = \
tests/lib/test_idalloc \
tests/lib/test_memory \
tests/lib/test_nexthop_iter \
+ tests/lib/test_nexthop \
tests/lib/test_ntop \
tests/lib/test_prefix2str \
tests/lib/test_printfrr \
@@ -156,7 +157,7 @@ TESTS_CFLAGS = \
# note no -Werror
ALL_TESTS_LDADD = lib/libfrr.la $(LIBCAP)
-BGP_TEST_LDADD = bgpd/libbgp.a $(RFPLDADD) $(ALL_TESTS_LDADD) -lm
+BGP_TEST_LDADD = bgpd/libbgp.a $(RFPLDADD) $(ALL_TESTS_LDADD) $(LIBYANG_LIBS) -lm
ISISD_TEST_LDADD = isisd/libisis.a $(ALL_TESTS_LDADD)
OSPFD_TEST_LDADD = ospfd/libfrrospf.a $(ALL_TESTS_LDADD)
OSPF6_TEST_LDADD = ospf6d/libospf6.a $(ALL_TESTS_LDADD)
@@ -293,6 +294,10 @@ tests_lib_test_nexthop_iter_CFLAGS = $(TESTS_CFLAGS)
tests_lib_test_nexthop_iter_CPPFLAGS = $(TESTS_CPPFLAGS)
tests_lib_test_nexthop_iter_LDADD = $(ALL_TESTS_LDADD)
tests_lib_test_nexthop_iter_SOURCES = tests/lib/test_nexthop_iter.c tests/helpers/c/prng.c
+tests_lib_test_nexthop_CFLAGS = $(TESTS_CFLAGS)
+tests_lib_test_nexthop_CPPFLAGS = $(TESTS_CPPFLAGS)
+tests_lib_test_nexthop_LDADD = $(ALL_TESTS_LDADD)
+tests_lib_test_nexthop_SOURCES = tests/lib/test_nexthop.c
tests_lib_test_ntop_CFLAGS = $(TESTS_CFLAGS)
tests_lib_test_ntop_CPPFLAGS = $(CPPFLAGS_BASE) # no assert override
tests_lib_test_ntop_LDADD = # none
@@ -412,6 +417,7 @@ EXTRA_DIST += \
tests/lib/test_assert.py \
tests/lib/test_atomlist.py \
tests/lib/test_nexthop_iter.py \
+ tests/lib/test_nexthop.py \
tests/lib/test_ntop.py \
tests/lib/test_prefix2str.py \
tests/lib/test_printfrr.py \
diff --git a/tests/topotests/all-protocol-startup/r1/babeld.conf b/tests/topotests/all_protocol_startup/r1/babeld.conf
index 3e119bf24d..3e119bf24d 100644
--- a/tests/topotests/all-protocol-startup/r1/babeld.conf
+++ b/tests/topotests/all_protocol_startup/r1/babeld.conf
diff --git a/tests/topotests/all-protocol-startup/r1/bgpd.conf b/tests/topotests/all_protocol_startup/r1/bgpd.conf
index 32dcb727e5..32dcb727e5 100644
--- a/tests/topotests/all-protocol-startup/r1/bgpd.conf
+++ b/tests/topotests/all_protocol_startup/r1/bgpd.conf
diff --git a/tests/topotests/all-protocol-startup/r1/ip_nht.ref b/tests/topotests/all_protocol_startup/r1/ip_nht.ref
index 1da4da4df5..1da4da4df5 100644
--- a/tests/topotests/all-protocol-startup/r1/ip_nht.ref
+++ b/tests/topotests/all_protocol_startup/r1/ip_nht.ref
diff --git a/tests/topotests/all-protocol-startup/r1/ipv4_routes.ref b/tests/topotests/all_protocol_startup/r1/ipv4_routes.ref
index 044cffae7a..044cffae7a 100644
--- a/tests/topotests/all-protocol-startup/r1/ipv4_routes.ref
+++ b/tests/topotests/all_protocol_startup/r1/ipv4_routes.ref
diff --git a/tests/topotests/all-protocol-startup/r1/ipv6_nht.ref b/tests/topotests/all_protocol_startup/r1/ipv6_nht.ref
index 0255ecdee8..0255ecdee8 100644
--- a/tests/topotests/all-protocol-startup/r1/ipv6_nht.ref
+++ b/tests/topotests/all_protocol_startup/r1/ipv6_nht.ref
diff --git a/tests/topotests/all-protocol-startup/r1/ipv6_routes.ref b/tests/topotests/all_protocol_startup/r1/ipv6_routes.ref
index ef12d615dc..ef12d615dc 100644
--- a/tests/topotests/all-protocol-startup/r1/ipv6_routes.ref
+++ b/tests/topotests/all_protocol_startup/r1/ipv6_routes.ref
diff --git a/tests/topotests/all-protocol-startup/r1/isisd.conf b/tests/topotests/all_protocol_startup/r1/isisd.conf
index 413f8d15a9..413f8d15a9 100644
--- a/tests/topotests/all-protocol-startup/r1/isisd.conf
+++ b/tests/topotests/all_protocol_startup/r1/isisd.conf
diff --git a/tests/topotests/all-protocol-startup/r1/ldpd.conf b/tests/topotests/all_protocol_startup/r1/ldpd.conf
index 02332a4e75..02332a4e75 100644
--- a/tests/topotests/all-protocol-startup/r1/ldpd.conf
+++ b/tests/topotests/all_protocol_startup/r1/ldpd.conf
diff --git a/tests/topotests/all-protocol-startup/r1/nhrpd.conf b/tests/topotests/all_protocol_startup/r1/nhrpd.conf
index 74e0f12e32..74e0f12e32 100644
--- a/tests/topotests/all-protocol-startup/r1/nhrpd.conf
+++ b/tests/topotests/all_protocol_startup/r1/nhrpd.conf
diff --git a/tests/topotests/all-protocol-startup/r1/ospf6d.conf b/tests/topotests/all_protocol_startup/r1/ospf6d.conf
index 5c6f071644..5c6f071644 100644
--- a/tests/topotests/all-protocol-startup/r1/ospf6d.conf
+++ b/tests/topotests/all_protocol_startup/r1/ospf6d.conf
diff --git a/tests/topotests/all-protocol-startup/r1/ospf6d.conf-pre-v4 b/tests/topotests/all_protocol_startup/r1/ospf6d.conf-pre-v4
index 6d870f355f..6d870f355f 100644
--- a/tests/topotests/all-protocol-startup/r1/ospf6d.conf-pre-v4
+++ b/tests/topotests/all_protocol_startup/r1/ospf6d.conf-pre-v4
diff --git a/tests/topotests/all-protocol-startup/r1/ospfd.conf b/tests/topotests/all_protocol_startup/r1/ospfd.conf
index bac9f61620..bac9f61620 100644
--- a/tests/topotests/all-protocol-startup/r1/ospfd.conf
+++ b/tests/topotests/all_protocol_startup/r1/ospfd.conf
diff --git a/tests/topotests/all-protocol-startup/r1/pbrd.conf b/tests/topotests/all_protocol_startup/r1/pbrd.conf
index 360fb13a1b..360fb13a1b 100644
--- a/tests/topotests/all-protocol-startup/r1/pbrd.conf
+++ b/tests/topotests/all_protocol_startup/r1/pbrd.conf
diff --git a/tests/topotests/all-protocol-startup/r1/rip_status.ref b/tests/topotests/all_protocol_startup/r1/rip_status.ref
index 4a5255fe13..4a5255fe13 100644
--- a/tests/topotests/all-protocol-startup/r1/rip_status.ref
+++ b/tests/topotests/all_protocol_startup/r1/rip_status.ref
diff --git a/tests/topotests/all-protocol-startup/r1/ripd.conf b/tests/topotests/all_protocol_startup/r1/ripd.conf
index ace7608873..ace7608873 100644
--- a/tests/topotests/all-protocol-startup/r1/ripd.conf
+++ b/tests/topotests/all_protocol_startup/r1/ripd.conf
diff --git a/tests/topotests/all-protocol-startup/r1/ripng_status.ref b/tests/topotests/all_protocol_startup/r1/ripng_status.ref
index 5d67c1467a..5d67c1467a 100644
--- a/tests/topotests/all-protocol-startup/r1/ripng_status.ref
+++ b/tests/topotests/all_protocol_startup/r1/ripng_status.ref
diff --git a/tests/topotests/all-protocol-startup/r1/ripngd.conf b/tests/topotests/all_protocol_startup/r1/ripngd.conf
index 2e0aef3a14..2e0aef3a14 100644
--- a/tests/topotests/all-protocol-startup/r1/ripngd.conf
+++ b/tests/topotests/all_protocol_startup/r1/ripngd.conf
diff --git a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post4.1.ref b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post4.1.ref
index b38701a53d..b38701a53d 100644
--- a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post4.1.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post4.1.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post5.0.ref b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post5.0.ref
index 82b64c0d98..82b64c0d98 100644
--- a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post5.0.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post5.0.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post6.1.ref b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post6.1.ref
index fd333b3084..fd333b3084 100644
--- a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv4-post6.1.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv4-post6.1.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv4.ref b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv4.ref
index 3be6cd3d7b..3be6cd3d7b 100644
--- a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv4.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv4.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv6-post4.1.ref b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv6-post4.1.ref
index 20034b7408..20034b7408 100644
--- a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv6-post4.1.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv6-post4.1.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv6.ref b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv6.ref
index fffee63c6b..fffee63c6b 100644
--- a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv6.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv6.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv6_post6.1.ref b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv6_post6.1.ref
index 5b5f8596cf..5b5f8596cf 100644
--- a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv6_post6.1.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv6_post6.1.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv6_summary.ref b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv6_summary.ref
index 0246687200..0246687200 100644
--- a/tests/topotests/all-protocol-startup/r1/show_bgp_ipv6_summary.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_bgp_ipv6_summary.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_ip_bgp_summary.ref b/tests/topotests/all_protocol_startup/r1/show_ip_bgp_summary.ref
index deeae87fa3..deeae87fa3 100644
--- a/tests/topotests/all-protocol-startup/r1/show_ip_bgp_summary.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_ip_bgp_summary.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_ip_ospf_interface.ref b/tests/topotests/all_protocol_startup/r1/show_ip_ospf_interface.ref
index ff85679256..ff85679256 100644
--- a/tests/topotests/all-protocol-startup/r1/show_ip_ospf_interface.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_ip_ospf_interface.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_ipv6_ospf6_interface b/tests/topotests/all_protocol_startup/r1/show_ipv6_ospf6_interface
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/all-protocol-startup/r1/show_ipv6_ospf6_interface
+++ b/tests/topotests/all_protocol_startup/r1/show_ipv6_ospf6_interface
diff --git a/tests/topotests/all-protocol-startup/r1/show_ipv6_ospf6_interface.ref b/tests/topotests/all_protocol_startup/r1/show_ipv6_ospf6_interface.ref
index 6fbf40bbb8..6fbf40bbb8 100644
--- a/tests/topotests/all-protocol-startup/r1/show_ipv6_ospf6_interface.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_ipv6_ospf6_interface.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_isis_interface_detail.ref b/tests/topotests/all_protocol_startup/r1/show_isis_interface_detail.ref
index 0534b64d33..0534b64d33 100644
--- a/tests/topotests/all-protocol-startup/r1/show_isis_interface_detail.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_isis_interface_detail.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_mpls_ldp_interface.ref b/tests/topotests/all_protocol_startup/r1/show_mpls_ldp_interface.ref
index c6bb01c34b..c6bb01c34b 100644
--- a/tests/topotests/all-protocol-startup/r1/show_mpls_ldp_interface.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_mpls_ldp_interface.ref
diff --git a/tests/topotests/all-protocol-startup/r1/show_route_map.ref b/tests/topotests/all_protocol_startup/r1/show_route_map.ref
index 612d0a729d..612d0a729d 100644
--- a/tests/topotests/all-protocol-startup/r1/show_route_map.ref
+++ b/tests/topotests/all_protocol_startup/r1/show_route_map.ref
diff --git a/tests/topotests/all-protocol-startup/r1/zebra.conf b/tests/topotests/all_protocol_startup/r1/zebra.conf
index c5ef79630e..c5ef79630e 100644
--- a/tests/topotests/all-protocol-startup/r1/zebra.conf
+++ b/tests/topotests/all_protocol_startup/r1/zebra.conf
diff --git a/tests/topotests/all-protocol-startup/test_all_protocol_startup.dot b/tests/topotests/all_protocol_startup/test_all_protocol_startup.dot
index f39f8f87b8..f39f8f87b8 100644
--- a/tests/topotests/all-protocol-startup/test_all_protocol_startup.dot
+++ b/tests/topotests/all_protocol_startup/test_all_protocol_startup.dot
diff --git a/tests/topotests/all-protocol-startup/test_all_protocol_startup.pdf b/tests/topotests/all_protocol_startup/test_all_protocol_startup.pdf
index 23f69bcddf..23f69bcddf 100644
--- a/tests/topotests/all-protocol-startup/test_all_protocol_startup.pdf
+++ b/tests/topotests/all_protocol_startup/test_all_protocol_startup.pdf
Binary files differ
diff --git a/tests/topotests/all-protocol-startup/test_all_protocol_startup.py b/tests/topotests/all_protocol_startup/test_all_protocol_startup.py
index c10e32ad0a..c10e32ad0a 100644
--- a/tests/topotests/all-protocol-startup/test_all_protocol_startup.py
+++ b/tests/topotests/all_protocol_startup/test_all_protocol_startup.py
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/__init__.py b/tests/topotests/bfd_bgp_cbit_topo3/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/__init__.py
+++ b/tests/topotests/bfd_bgp_cbit_topo3/__init__.py
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r1/bfdd.conf b/tests/topotests/bfd_bgp_cbit_topo3/r1/bfdd.conf
index f35e772790..f35e772790 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r1/bfdd.conf
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r1/bfdd.conf
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r1/bgp_ipv6_routes_down.json b/tests/topotests/bfd_bgp_cbit_topo3/r1/bgp_ipv6_routes_down.json
index 5cba71ef20..5cba71ef20 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r1/bgp_ipv6_routes_down.json
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r1/bgp_ipv6_routes_down.json
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r1/bgpd.conf b/tests/topotests/bfd_bgp_cbit_topo3/r1/bgpd.conf
index 689797a5e6..689797a5e6 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r1/bgpd.conf
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r1/bgpd.conf
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r1/ipv6_routes.json b/tests/topotests/bfd_bgp_cbit_topo3/r1/ipv6_routes.json
index 8eea183285..8eea183285 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r1/ipv6_routes.json
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r1/ipv6_routes.json
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r1/peers.json b/tests/topotests/bfd_bgp_cbit_topo3/r1/peers.json
index b436d5562e..b436d5562e 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r1/peers.json
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r1/peers.json
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r1/peers_down.json b/tests/topotests/bfd_bgp_cbit_topo3/r1/peers_down.json
index 4984b52cf2..4984b52cf2 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r1/peers_down.json
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r1/peers_down.json
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r1/zebra.conf b/tests/topotests/bfd_bgp_cbit_topo3/r1/zebra.conf
index 3a30cd42fb..3a30cd42fb 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r1/zebra.conf
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r1/zebra.conf
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r2/zebra.conf b/tests/topotests/bfd_bgp_cbit_topo3/r2/zebra.conf
index 0f70be1bda..0f70be1bda 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r2/zebra.conf
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r2/zebra.conf
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r3/bfdd.conf b/tests/topotests/bfd_bgp_cbit_topo3/r3/bfdd.conf
index f35e772790..f35e772790 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r3/bfdd.conf
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r3/bfdd.conf
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r3/bgp_ipv6_routes_down.json b/tests/topotests/bfd_bgp_cbit_topo3/r3/bgp_ipv6_routes_down.json
index c0cb3c4ac9..c0cb3c4ac9 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r3/bgp_ipv6_routes_down.json
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r3/bgp_ipv6_routes_down.json
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r3/bgpd.conf b/tests/topotests/bfd_bgp_cbit_topo3/r3/bgpd.conf
index 1f5aac42ed..1f5aac42ed 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r3/bgpd.conf
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r3/bgpd.conf
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r3/ipv6_routes.json b/tests/topotests/bfd_bgp_cbit_topo3/r3/ipv6_routes.json
index 09808cc09a..09808cc09a 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r3/ipv6_routes.json
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r3/ipv6_routes.json
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r3/peers.json b/tests/topotests/bfd_bgp_cbit_topo3/r3/peers.json
index fc9e145340..fc9e145340 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r3/peers.json
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r3/peers.json
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r3/peers_down.json b/tests/topotests/bfd_bgp_cbit_topo3/r3/peers_down.json
index 620c6ddcd4..620c6ddcd4 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r3/peers_down.json
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r3/peers_down.json
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/r3/zebra.conf b/tests/topotests/bfd_bgp_cbit_topo3/r3/zebra.conf
index 7759251dc5..7759251dc5 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/r3/zebra.conf
+++ b/tests/topotests/bfd_bgp_cbit_topo3/r3/zebra.conf
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/test_bfd_bgp_cbit_topo3.dot b/tests/topotests/bfd_bgp_cbit_topo3/test_bfd_bgp_cbit_topo3.dot
index 270de829c3..270de829c3 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/test_bfd_bgp_cbit_topo3.dot
+++ b/tests/topotests/bfd_bgp_cbit_topo3/test_bfd_bgp_cbit_topo3.dot
diff --git a/tests/topotests/bfd-bgp-cbit-topo3/test_bfd_bgp_cbit_topo3.py b/tests/topotests/bfd_bgp_cbit_topo3/test_bfd_bgp_cbit_topo3.py
index 560d6eebec..560d6eebec 100644
--- a/tests/topotests/bfd-bgp-cbit-topo3/test_bfd_bgp_cbit_topo3.py
+++ b/tests/topotests/bfd_bgp_cbit_topo3/test_bfd_bgp_cbit_topo3.py
diff --git a/tests/topotests/bfd-isis-topo1/__init__.py b/tests/topotests/bfd_isis_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bfd-isis-topo1/__init__.py
+++ b/tests/topotests/bfd_isis_topo1/__init__.py
diff --git a/tests/topotests/bfd-isis-topo1/rt1/bfdd.conf b/tests/topotests/bfd_isis_topo1/rt1/bfdd.conf
index 57f9cd9e3d..57f9cd9e3d 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/bfdd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt1/bfdd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt1/isisd.conf b/tests/topotests/bfd_isis_topo1/rt1/isisd.conf
index 8026aad49d..8026aad49d 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/isisd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt1/isisd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt1/step1/show_ip_route.ref b/tests/topotests/bfd_isis_topo1/rt1/step1/show_ip_route.ref
index af6e45cf33..af6e45cf33 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/step1/show_ip_route.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step1/show_ip_route.ref
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..68d3fe2c44 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
diff --git a/tests/topotests/bfd-isis-topo1/rt1/step2/show_bfd_peers.ref b/tests/topotests/bfd_isis_topo1/rt1/step2/show_bfd_peers.ref
index cb4083d2fd..cb4083d2fd 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/step2/show_bfd_peers.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step2/show_bfd_peers.ref
diff --git a/tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_healthy.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_healthy.ref
index cb4083d2fd..cb4083d2fd 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_healthy.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_healthy.ref
diff --git a/tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_rt2_down.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_rt2_down.ref
index f00b9f3d32..f00b9f3d32 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_rt2_down.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_rt2_down.ref
diff --git a/tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_rt3_down.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_rt3_down.ref
index f5bd276a4a..f5bd276a4a 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/step3/show_bfd_peers_rt3_down.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_bfd_peers_rt3_down.ref
diff --git a/tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_healthy.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_healthy.ref
index af6e45cf33..af6e45cf33 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_healthy.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_healthy.ref
diff --git a/tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_rt2_down.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_rt2_down.ref
index b8366bc0b7..b8366bc0b7 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_rt2_down.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_rt2_down.ref
diff --git a/tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_rt3_down.ref b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_rt3_down.ref
index 42bd6abf82..42bd6abf82 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/step3/show_ip_route_rt3_down.ref
+++ b/tests/topotests/bfd_isis_topo1/rt1/step3/show_ip_route_rt3_down.ref
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..68d3fe2c44 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
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..200053c3e8 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
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..4297f163b5 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
diff --git a/tests/topotests/bfd-isis-topo1/rt1/zebra.conf b/tests/topotests/bfd_isis_topo1/rt1/zebra.conf
index 6003125b6b..6003125b6b 100644
--- a/tests/topotests/bfd-isis-topo1/rt1/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt1/zebra.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt2/bfdd.conf b/tests/topotests/bfd_isis_topo1/rt2/bfdd.conf
index 6b34e337d3..6b34e337d3 100644
--- a/tests/topotests/bfd-isis-topo1/rt2/bfdd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt2/bfdd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt2/isisd.conf b/tests/topotests/bfd_isis_topo1/rt2/isisd.conf
index b0fde64a5e..b0fde64a5e 100644
--- a/tests/topotests/bfd-isis-topo1/rt2/isisd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt2/isisd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt2/step2/show_bfd_peers.ref b/tests/topotests/bfd_isis_topo1/rt2/step2/show_bfd_peers.ref
index 8a90649efa..8a90649efa 100644
--- a/tests/topotests/bfd-isis-topo1/rt2/step2/show_bfd_peers.ref
+++ b/tests/topotests/bfd_isis_topo1/rt2/step2/show_bfd_peers.ref
diff --git a/tests/topotests/bfd-isis-topo1/rt2/zebra.conf b/tests/topotests/bfd_isis_topo1/rt2/zebra.conf
index 5fc7fc5b28..5fc7fc5b28 100644
--- a/tests/topotests/bfd-isis-topo1/rt2/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt2/zebra.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt3/bfdd.conf b/tests/topotests/bfd_isis_topo1/rt3/bfdd.conf
index 22937fe46f..22937fe46f 100644
--- a/tests/topotests/bfd-isis-topo1/rt3/bfdd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt3/bfdd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt3/isisd.conf b/tests/topotests/bfd_isis_topo1/rt3/isisd.conf
index 5c36e96c0f..5c36e96c0f 100644
--- a/tests/topotests/bfd-isis-topo1/rt3/isisd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt3/isisd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt3/step2/show_bfd_peers.ref b/tests/topotests/bfd_isis_topo1/rt3/step2/show_bfd_peers.ref
index 13eb2a2c69..13eb2a2c69 100644
--- a/tests/topotests/bfd-isis-topo1/rt3/step2/show_bfd_peers.ref
+++ b/tests/topotests/bfd_isis_topo1/rt3/step2/show_bfd_peers.ref
diff --git a/tests/topotests/bfd-isis-topo1/rt3/zebra.conf b/tests/topotests/bfd_isis_topo1/rt3/zebra.conf
index d368de9bbe..d368de9bbe 100644
--- a/tests/topotests/bfd-isis-topo1/rt3/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt3/zebra.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt4/bfdd.conf b/tests/topotests/bfd_isis_topo1/rt4/bfdd.conf
index f35e772790..f35e772790 100644
--- a/tests/topotests/bfd-isis-topo1/rt4/bfdd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt4/bfdd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt4/isisd.conf b/tests/topotests/bfd_isis_topo1/rt4/isisd.conf
index 3eac407776..3eac407776 100644
--- a/tests/topotests/bfd-isis-topo1/rt4/isisd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt4/isisd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt4/zebra.conf b/tests/topotests/bfd_isis_topo1/rt4/zebra.conf
index 7b053bac35..7b053bac35 100644
--- a/tests/topotests/bfd-isis-topo1/rt4/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt4/zebra.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt5/bfdd.conf b/tests/topotests/bfd_isis_topo1/rt5/bfdd.conf
index f35e772790..f35e772790 100644
--- a/tests/topotests/bfd-isis-topo1/rt5/bfdd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt5/bfdd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt5/isisd.conf b/tests/topotests/bfd_isis_topo1/rt5/isisd.conf
index 5d449f6f93..5d449f6f93 100644
--- a/tests/topotests/bfd-isis-topo1/rt5/isisd.conf
+++ b/tests/topotests/bfd_isis_topo1/rt5/isisd.conf
diff --git a/tests/topotests/bfd-isis-topo1/rt5/zebra.conf b/tests/topotests/bfd_isis_topo1/rt5/zebra.conf
index 0b7c9e02f3..0b7c9e02f3 100644
--- a/tests/topotests/bfd-isis-topo1/rt5/zebra.conf
+++ b/tests/topotests/bfd_isis_topo1/rt5/zebra.conf
diff --git a/tests/topotests/bfd-isis-topo1/test_bfd_isis_topo1.py b/tests/topotests/bfd_isis_topo1/test_bfd_isis_topo1.py
index fcb5672dce..fcb5672dce 100644
--- a/tests/topotests/bfd-isis-topo1/test_bfd_isis_topo1.py
+++ b/tests/topotests/bfd_isis_topo1/test_bfd_isis_topo1.py
diff --git a/tests/topotests/bfd-ospf-topo1/__init__.py b/tests/topotests/bfd_ospf_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bfd-ospf-topo1/__init__.py
+++ b/tests/topotests/bfd_ospf_topo1/__init__.py
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/bfdd.conf b/tests/topotests/bfd_ospf_topo1/rt1/bfdd.conf
index 610a20f88a..610a20f88a 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/bfdd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt1/bfdd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/ospf6d.conf b/tests/topotests/bfd_ospf_topo1/rt1/ospf6d.conf
index 18def599b4..18def599b4 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/ospf6d.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt1/ospf6d.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/ospfd.conf b/tests/topotests/bfd_ospf_topo1/rt1/ospfd.conf
index 07b42f9885..07b42f9885 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/ospfd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt1/ospfd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/step1/show_ip_route.ref b/tests/topotests/bfd_ospf_topo1/rt1/step1/show_ip_route.ref
index f354eff697..f354eff697 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/step1/show_ip_route.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step1/show_ip_route.ref
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..6465efb8b5 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
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/step2/show_bfd_peers.ref b/tests/topotests/bfd_ospf_topo1/rt1/step2/show_bfd_peers.ref
index 63f0d50784..63f0d50784 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/step2/show_bfd_peers.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step2/show_bfd_peers.ref
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_healthy.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_healthy.ref
index 42051f9582..42051f9582 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_healthy.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_healthy.ref
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_rt2_down.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_rt2_down.ref
index d844ee6813..d844ee6813 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_rt2_down.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_rt2_down.ref
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_rt3_down.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_rt3_down.ref
index 32799084fb..32799084fb 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_bfd_peers_rt3_down.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_bfd_peers_rt3_down.ref
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_healthy.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_healthy.ref
index f354eff697..f354eff697 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_healthy.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_healthy.ref
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_rt2_down.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_rt2_down.ref
index 43eecd0b7a..43eecd0b7a 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_rt2_down.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_rt2_down.ref
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_rt3_down.ref b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_rt3_down.ref
index 409af6308b..409af6308b 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/step3/show_ip_route_rt3_down.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt1/step3/show_ip_route_rt3_down.ref
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..6465efb8b5 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
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..cfb1ef1bb6 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
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..58b44da5c2 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
diff --git a/tests/topotests/bfd-ospf-topo1/rt1/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt1/zebra.conf
index 6003125b6b..6003125b6b 100644
--- a/tests/topotests/bfd-ospf-topo1/rt1/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt1/zebra.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt2/bfdd.conf b/tests/topotests/bfd_ospf_topo1/rt2/bfdd.conf
index 437f063d8f..437f063d8f 100644
--- a/tests/topotests/bfd-ospf-topo1/rt2/bfdd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt2/bfdd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt2/ospf6d.conf b/tests/topotests/bfd_ospf_topo1/rt2/ospf6d.conf
index 2f35099564..2f35099564 100644
--- a/tests/topotests/bfd-ospf-topo1/rt2/ospf6d.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt2/ospf6d.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt2/ospfd.conf b/tests/topotests/bfd_ospf_topo1/rt2/ospfd.conf
index a05d8b58c8..a05d8b58c8 100644
--- a/tests/topotests/bfd-ospf-topo1/rt2/ospfd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt2/ospfd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt2/step2/show_bfd_peers.ref b/tests/topotests/bfd_ospf_topo1/rt2/step2/show_bfd_peers.ref
index d6df1ebfb2..d6df1ebfb2 100644
--- a/tests/topotests/bfd-ospf-topo1/rt2/step2/show_bfd_peers.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt2/step2/show_bfd_peers.ref
diff --git a/tests/topotests/bfd-ospf-topo1/rt2/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt2/zebra.conf
index 5fc7fc5b28..5fc7fc5b28 100644
--- a/tests/topotests/bfd-ospf-topo1/rt2/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt2/zebra.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt3/bfdd.conf b/tests/topotests/bfd_ospf_topo1/rt3/bfdd.conf
index 437f063d8f..437f063d8f 100644
--- a/tests/topotests/bfd-ospf-topo1/rt3/bfdd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt3/bfdd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt3/ospf6d.conf b/tests/topotests/bfd_ospf_topo1/rt3/ospf6d.conf
index 3e8777019e..3e8777019e 100644
--- a/tests/topotests/bfd-ospf-topo1/rt3/ospf6d.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt3/ospf6d.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt3/ospfd.conf b/tests/topotests/bfd_ospf_topo1/rt3/ospfd.conf
index 1196e6d189..1196e6d189 100644
--- a/tests/topotests/bfd-ospf-topo1/rt3/ospfd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt3/ospfd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt3/step2/show_bfd_peers.ref b/tests/topotests/bfd_ospf_topo1/rt3/step2/show_bfd_peers.ref
index d6df1ebfb2..d6df1ebfb2 100644
--- a/tests/topotests/bfd-ospf-topo1/rt3/step2/show_bfd_peers.ref
+++ b/tests/topotests/bfd_ospf_topo1/rt3/step2/show_bfd_peers.ref
diff --git a/tests/topotests/bfd-ospf-topo1/rt3/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt3/zebra.conf
index d368de9bbe..d368de9bbe 100644
--- a/tests/topotests/bfd-ospf-topo1/rt3/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt3/zebra.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt4/bfdd.conf b/tests/topotests/bfd_ospf_topo1/rt4/bfdd.conf
index f35e772790..f35e772790 100644
--- a/tests/topotests/bfd-ospf-topo1/rt4/bfdd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt4/bfdd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt4/ospf6d.conf b/tests/topotests/bfd_ospf_topo1/rt4/ospf6d.conf
index bccd1e75bd..bccd1e75bd 100644
--- a/tests/topotests/bfd-ospf-topo1/rt4/ospf6d.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt4/ospf6d.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt4/ospfd.conf b/tests/topotests/bfd_ospf_topo1/rt4/ospfd.conf
index 3a2568b4ab..3a2568b4ab 100644
--- a/tests/topotests/bfd-ospf-topo1/rt4/ospfd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt4/ospfd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt4/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt4/zebra.conf
index 7b053bac35..7b053bac35 100644
--- a/tests/topotests/bfd-ospf-topo1/rt4/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt4/zebra.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt5/bfdd.conf b/tests/topotests/bfd_ospf_topo1/rt5/bfdd.conf
index f35e772790..f35e772790 100644
--- a/tests/topotests/bfd-ospf-topo1/rt5/bfdd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt5/bfdd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt5/ospf6d.conf b/tests/topotests/bfd_ospf_topo1/rt5/ospf6d.conf
index 766862276c..766862276c 100644
--- a/tests/topotests/bfd-ospf-topo1/rt5/ospf6d.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt5/ospf6d.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt5/ospfd.conf b/tests/topotests/bfd_ospf_topo1/rt5/ospfd.conf
index a35de5f45f..a35de5f45f 100644
--- a/tests/topotests/bfd-ospf-topo1/rt5/ospfd.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt5/ospfd.conf
diff --git a/tests/topotests/bfd-ospf-topo1/rt5/zebra.conf b/tests/topotests/bfd_ospf_topo1/rt5/zebra.conf
index 0b7c9e02f3..0b7c9e02f3 100644
--- a/tests/topotests/bfd-ospf-topo1/rt5/zebra.conf
+++ b/tests/topotests/bfd_ospf_topo1/rt5/zebra.conf
diff --git a/tests/topotests/bfd-ospf-topo1/test_bfd_ospf_topo1.py b/tests/topotests/bfd_ospf_topo1/test_bfd_ospf_topo1.py
index ae148f948c..ae148f948c 100755
--- a/tests/topotests/bfd-ospf-topo1/test_bfd_ospf_topo1.py
+++ b/tests/topotests/bfd_ospf_topo1/test_bfd_ospf_topo1.py
diff --git a/tests/topotests/bfd-profiles-topo1/__init__.py b/tests/topotests/bfd_profiles_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bfd-profiles-topo1/__init__.py
+++ b/tests/topotests/bfd_profiles_topo1/__init__.py
diff --git a/tests/topotests/bfd-profiles-topo1/r1/bfd-peers-initial.json b/tests/topotests/bfd_profiles_topo1/r1/bfd-peers-initial.json
index 86a7e5139c..86a7e5139c 100644
--- a/tests/topotests/bfd-profiles-topo1/r1/bfd-peers-initial.json
+++ b/tests/topotests/bfd_profiles_topo1/r1/bfd-peers-initial.json
diff --git a/tests/topotests/bfd-profiles-topo1/r1/bfdd.conf b/tests/topotests/bfd_profiles_topo1/r1/bfdd.conf
index 688f2e839c..688f2e839c 100644
--- a/tests/topotests/bfd-profiles-topo1/r1/bfdd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r1/bfdd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r1/ospfd.conf b/tests/topotests/bfd_profiles_topo1/r1/ospfd.conf
index fcea5d48fc..fcea5d48fc 100644
--- a/tests/topotests/bfd-profiles-topo1/r1/ospfd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r1/ospfd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r1/zebra.conf b/tests/topotests/bfd_profiles_topo1/r1/zebra.conf
index 4b7982b235..4b7982b235 100644
--- a/tests/topotests/bfd-profiles-topo1/r1/zebra.conf
+++ b/tests/topotests/bfd_profiles_topo1/r1/zebra.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r2/bfd-peers-initial.json b/tests/topotests/bfd_profiles_topo1/r2/bfd-peers-initial.json
index 503f776aec..503f776aec 100644
--- a/tests/topotests/bfd-profiles-topo1/r2/bfd-peers-initial.json
+++ b/tests/topotests/bfd_profiles_topo1/r2/bfd-peers-initial.json
diff --git a/tests/topotests/bfd-profiles-topo1/r2/bfdd.conf b/tests/topotests/bfd_profiles_topo1/r2/bfdd.conf
index 700c46ba1e..700c46ba1e 100644
--- a/tests/topotests/bfd-profiles-topo1/r2/bfdd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r2/bfdd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r2/bgpd.conf b/tests/topotests/bfd_profiles_topo1/r2/bgpd.conf
index 0c3db97bc1..0c3db97bc1 100644
--- a/tests/topotests/bfd-profiles-topo1/r2/bgpd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r2/bgpd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r2/zebra.conf b/tests/topotests/bfd_profiles_topo1/r2/zebra.conf
index 6acef139b9..6acef139b9 100644
--- a/tests/topotests/bfd-profiles-topo1/r2/zebra.conf
+++ b/tests/topotests/bfd_profiles_topo1/r2/zebra.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r3/bfd-peers-initial.json b/tests/topotests/bfd_profiles_topo1/r3/bfd-peers-initial.json
index d987a0ae7d..d987a0ae7d 100644
--- a/tests/topotests/bfd-profiles-topo1/r3/bfd-peers-initial.json
+++ b/tests/topotests/bfd_profiles_topo1/r3/bfd-peers-initial.json
diff --git a/tests/topotests/bfd-profiles-topo1/r3/bfdd.conf b/tests/topotests/bfd_profiles_topo1/r3/bfdd.conf
index 08eb0468d6..08eb0468d6 100644
--- a/tests/topotests/bfd-profiles-topo1/r3/bfdd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r3/bfdd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r3/bgpd.conf b/tests/topotests/bfd_profiles_topo1/r3/bgpd.conf
index 65647b39e5..65647b39e5 100644
--- a/tests/topotests/bfd-profiles-topo1/r3/bgpd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r3/bgpd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r3/isisd.conf b/tests/topotests/bfd_profiles_topo1/r3/isisd.conf
index ca965e3956..ca965e3956 100644
--- a/tests/topotests/bfd-profiles-topo1/r3/isisd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r3/isisd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r3/zebra.conf b/tests/topotests/bfd_profiles_topo1/r3/zebra.conf
index 2297bfafe9..2297bfafe9 100644
--- a/tests/topotests/bfd-profiles-topo1/r3/zebra.conf
+++ b/tests/topotests/bfd_profiles_topo1/r3/zebra.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r4/bfd-peers-initial.json b/tests/topotests/bfd_profiles_topo1/r4/bfd-peers-initial.json
index 9ab7479979..9ab7479979 100644
--- a/tests/topotests/bfd-profiles-topo1/r4/bfd-peers-initial.json
+++ b/tests/topotests/bfd_profiles_topo1/r4/bfd-peers-initial.json
diff --git a/tests/topotests/bfd-profiles-topo1/r4/bfdd.conf b/tests/topotests/bfd_profiles_topo1/r4/bfdd.conf
index 4f5e022077..4f5e022077 100644
--- a/tests/topotests/bfd-profiles-topo1/r4/bfdd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r4/bfdd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r4/bgpd.conf b/tests/topotests/bfd_profiles_topo1/r4/bgpd.conf
index 200937a9a5..200937a9a5 100644
--- a/tests/topotests/bfd-profiles-topo1/r4/bgpd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r4/bgpd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r4/isisd.conf b/tests/topotests/bfd_profiles_topo1/r4/isisd.conf
index d8ffc9bc2c..d8ffc9bc2c 100644
--- a/tests/topotests/bfd-profiles-topo1/r4/isisd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r4/isisd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r4/ospf6d.conf b/tests/topotests/bfd_profiles_topo1/r4/ospf6d.conf
index 4ef28c39ca..4ef28c39ca 100644
--- a/tests/topotests/bfd-profiles-topo1/r4/ospf6d.conf
+++ b/tests/topotests/bfd_profiles_topo1/r4/ospf6d.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r4/zebra.conf b/tests/topotests/bfd_profiles_topo1/r4/zebra.conf
index 753041f952..753041f952 100644
--- a/tests/topotests/bfd-profiles-topo1/r4/zebra.conf
+++ b/tests/topotests/bfd_profiles_topo1/r4/zebra.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r5/bfd-peers-initial.json b/tests/topotests/bfd_profiles_topo1/r5/bfd-peers-initial.json
index 0fe56d576b..0fe56d576b 100644
--- a/tests/topotests/bfd-profiles-topo1/r5/bfd-peers-initial.json
+++ b/tests/topotests/bfd_profiles_topo1/r5/bfd-peers-initial.json
diff --git a/tests/topotests/bfd-profiles-topo1/r5/bfdd.conf b/tests/topotests/bfd_profiles_topo1/r5/bfdd.conf
index 74dae5a60d..74dae5a60d 100644
--- a/tests/topotests/bfd-profiles-topo1/r5/bfdd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r5/bfdd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r5/ospf6d.conf b/tests/topotests/bfd_profiles_topo1/r5/ospf6d.conf
index 20b53cfc55..20b53cfc55 100644
--- a/tests/topotests/bfd-profiles-topo1/r5/ospf6d.conf
+++ b/tests/topotests/bfd_profiles_topo1/r5/ospf6d.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r5/zebra.conf b/tests/topotests/bfd_profiles_topo1/r5/zebra.conf
index de8ae1644b..de8ae1644b 100644
--- a/tests/topotests/bfd-profiles-topo1/r5/zebra.conf
+++ b/tests/topotests/bfd_profiles_topo1/r5/zebra.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r6/bfd-peers-initial.json b/tests/topotests/bfd_profiles_topo1/r6/bfd-peers-initial.json
index ec973eb365..ec973eb365 100644
--- a/tests/topotests/bfd-profiles-topo1/r6/bfd-peers-initial.json
+++ b/tests/topotests/bfd_profiles_topo1/r6/bfd-peers-initial.json
diff --git a/tests/topotests/bfd-profiles-topo1/r6/bfdd.conf b/tests/topotests/bfd_profiles_topo1/r6/bfdd.conf
index 74dae5a60d..74dae5a60d 100644
--- a/tests/topotests/bfd-profiles-topo1/r6/bfdd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r6/bfdd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r6/ospfd.conf b/tests/topotests/bfd_profiles_topo1/r6/ospfd.conf
index d8fce344a8..d8fce344a8 100644
--- a/tests/topotests/bfd-profiles-topo1/r6/ospfd.conf
+++ b/tests/topotests/bfd_profiles_topo1/r6/ospfd.conf
diff --git a/tests/topotests/bfd-profiles-topo1/r6/zebra.conf b/tests/topotests/bfd_profiles_topo1/r6/zebra.conf
index c0804b94a7..c0804b94a7 100644
--- a/tests/topotests/bfd-profiles-topo1/r6/zebra.conf
+++ b/tests/topotests/bfd_profiles_topo1/r6/zebra.conf
diff --git a/tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.dot b/tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.dot
index a3936093aa..a3936093aa 100644
--- a/tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.dot
+++ b/tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.dot
diff --git a/tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.png b/tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.png
index 775fae13f1..775fae13f1 100644
--- a/tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.png
+++ b/tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.png
Binary files differ
diff --git a/tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.py b/tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.py
index 4a2c8ee002..4a2c8ee002 100644
--- a/tests/topotests/bfd-profiles-topo1/test_bfd_profiles_topo1.py
+++ b/tests/topotests/bfd_profiles_topo1/test_bfd_profiles_topo1.py
diff --git a/tests/topotests/bfd-topo1/__init__.py b/tests/topotests/bfd_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bfd-topo1/__init__.py
+++ b/tests/topotests/bfd_topo1/__init__.py
diff --git a/tests/topotests/bfd-topo1/r1/bfdd.conf b/tests/topotests/bfd_topo1/r1/bfdd.conf
index 4102000337..4102000337 100644
--- a/tests/topotests/bfd-topo1/r1/bfdd.conf
+++ b/tests/topotests/bfd_topo1/r1/bfdd.conf
diff --git a/tests/topotests/bfd-topo1/r1/bgp_prefixes.json b/tests/topotests/bfd_topo1/r1/bgp_prefixes.json
index 1262f5e984..1262f5e984 100644
--- a/tests/topotests/bfd-topo1/r1/bgp_prefixes.json
+++ b/tests/topotests/bfd_topo1/r1/bgp_prefixes.json
diff --git a/tests/topotests/bfd-topo1/r1/bgp_summary.json b/tests/topotests/bfd_topo1/r1/bgp_summary.json
index fa07d60df9..fa07d60df9 100644
--- a/tests/topotests/bfd-topo1/r1/bgp_summary.json
+++ b/tests/topotests/bfd_topo1/r1/bgp_summary.json
diff --git a/tests/topotests/bfd-topo1/r1/bgpd.conf b/tests/topotests/bfd_topo1/r1/bgpd.conf
index 57bde1f234..57bde1f234 100644
--- a/tests/topotests/bfd-topo1/r1/bgpd.conf
+++ b/tests/topotests/bfd_topo1/r1/bgpd.conf
diff --git a/tests/topotests/bfd-topo1/r1/peers.json b/tests/topotests/bfd_topo1/r1/peers.json
index f49768ff75..f49768ff75 100644
--- a/tests/topotests/bfd-topo1/r1/peers.json
+++ b/tests/topotests/bfd_topo1/r1/peers.json
diff --git a/tests/topotests/bfd-topo1/r1/zebra.conf b/tests/topotests/bfd_topo1/r1/zebra.conf
index a14cd7ac88..a14cd7ac88 100644
--- a/tests/topotests/bfd-topo1/r1/zebra.conf
+++ b/tests/topotests/bfd_topo1/r1/zebra.conf
diff --git a/tests/topotests/bfd-topo1/r2/bfdd.conf b/tests/topotests/bfd_topo1/r2/bfdd.conf
index 412450ca1e..412450ca1e 100644
--- a/tests/topotests/bfd-topo1/r2/bfdd.conf
+++ b/tests/topotests/bfd_topo1/r2/bfdd.conf
diff --git a/tests/topotests/bfd-topo1/r2/bgp_prefixes.json b/tests/topotests/bfd_topo1/r2/bgp_prefixes.json
index 0d47c0fc30..0d47c0fc30 100644
--- a/tests/topotests/bfd-topo1/r2/bgp_prefixes.json
+++ b/tests/topotests/bfd_topo1/r2/bgp_prefixes.json
diff --git a/tests/topotests/bfd-topo1/r2/bgp_summary.json b/tests/topotests/bfd_topo1/r2/bgp_summary.json
index c0ef11ac5f..c0ef11ac5f 100644
--- a/tests/topotests/bfd-topo1/r2/bgp_summary.json
+++ b/tests/topotests/bfd_topo1/r2/bgp_summary.json
diff --git a/tests/topotests/bfd-topo1/r2/bgpd.conf b/tests/topotests/bfd_topo1/r2/bgpd.conf
index 50d75ab67f..50d75ab67f 100644
--- a/tests/topotests/bfd-topo1/r2/bgpd.conf
+++ b/tests/topotests/bfd_topo1/r2/bgpd.conf
diff --git a/tests/topotests/bfd-topo1/r2/peers.json b/tests/topotests/bfd_topo1/r2/peers.json
index 267459c7a8..267459c7a8 100644
--- a/tests/topotests/bfd-topo1/r2/peers.json
+++ b/tests/topotests/bfd_topo1/r2/peers.json
diff --git a/tests/topotests/bfd-topo1/r2/zebra.conf b/tests/topotests/bfd_topo1/r2/zebra.conf
index 568abe751e..568abe751e 100644
--- a/tests/topotests/bfd-topo1/r2/zebra.conf
+++ b/tests/topotests/bfd_topo1/r2/zebra.conf
diff --git a/tests/topotests/bfd-topo1/r3/bfdd.conf b/tests/topotests/bfd_topo1/r3/bfdd.conf
index 4cf20bb904..4cf20bb904 100644
--- a/tests/topotests/bfd-topo1/r3/bfdd.conf
+++ b/tests/topotests/bfd_topo1/r3/bfdd.conf
diff --git a/tests/topotests/bfd-topo1/r3/bgp_prefixes.json b/tests/topotests/bfd_topo1/r3/bgp_prefixes.json
index 36fca17bbf..36fca17bbf 100644
--- a/tests/topotests/bfd-topo1/r3/bgp_prefixes.json
+++ b/tests/topotests/bfd_topo1/r3/bgp_prefixes.json
diff --git a/tests/topotests/bfd-topo1/r3/bgp_summary.json b/tests/topotests/bfd_topo1/r3/bgp_summary.json
index d47833377b..d47833377b 100644
--- a/tests/topotests/bfd-topo1/r3/bgp_summary.json
+++ b/tests/topotests/bfd_topo1/r3/bgp_summary.json
diff --git a/tests/topotests/bfd-topo1/r3/bgpd.conf b/tests/topotests/bfd_topo1/r3/bgpd.conf
index ce6055d518..ce6055d518 100644
--- a/tests/topotests/bfd-topo1/r3/bgpd.conf
+++ b/tests/topotests/bfd_topo1/r3/bgpd.conf
diff --git a/tests/topotests/bfd-topo1/r3/peers.json b/tests/topotests/bfd_topo1/r3/peers.json
index ef38008643..ef38008643 100644
--- a/tests/topotests/bfd-topo1/r3/peers.json
+++ b/tests/topotests/bfd_topo1/r3/peers.json
diff --git a/tests/topotests/bfd-topo1/r3/zebra.conf b/tests/topotests/bfd_topo1/r3/zebra.conf
index b4fd80fa10..b4fd80fa10 100644
--- a/tests/topotests/bfd-topo1/r3/zebra.conf
+++ b/tests/topotests/bfd_topo1/r3/zebra.conf
diff --git a/tests/topotests/bfd-topo1/r4/bfdd.conf b/tests/topotests/bfd_topo1/r4/bfdd.conf
index 34b88c9a35..34b88c9a35 100644
--- a/tests/topotests/bfd-topo1/r4/bfdd.conf
+++ b/tests/topotests/bfd_topo1/r4/bfdd.conf
diff --git a/tests/topotests/bfd-topo1/r4/bgp_prefixes.json b/tests/topotests/bfd_topo1/r4/bgp_prefixes.json
index efe7d47b1a..efe7d47b1a 100644
--- a/tests/topotests/bfd-topo1/r4/bgp_prefixes.json
+++ b/tests/topotests/bfd_topo1/r4/bgp_prefixes.json
diff --git a/tests/topotests/bfd-topo1/r4/bgp_summary.json b/tests/topotests/bfd_topo1/r4/bgp_summary.json
index 7d81784b56..7d81784b56 100644
--- a/tests/topotests/bfd-topo1/r4/bgp_summary.json
+++ b/tests/topotests/bfd_topo1/r4/bgp_summary.json
diff --git a/tests/topotests/bfd-topo1/r4/bgpd.conf b/tests/topotests/bfd_topo1/r4/bgpd.conf
index 0d032b4cdd..0d032b4cdd 100644
--- a/tests/topotests/bfd-topo1/r4/bgpd.conf
+++ b/tests/topotests/bfd_topo1/r4/bgpd.conf
diff --git a/tests/topotests/bfd-topo1/r4/peers.json b/tests/topotests/bfd_topo1/r4/peers.json
index 37140089e1..37140089e1 100644
--- a/tests/topotests/bfd-topo1/r4/peers.json
+++ b/tests/topotests/bfd_topo1/r4/peers.json
diff --git a/tests/topotests/bfd-topo1/r4/zebra.conf b/tests/topotests/bfd_topo1/r4/zebra.conf
index afdd44b1ab..afdd44b1ab 100644
--- a/tests/topotests/bfd-topo1/r4/zebra.conf
+++ b/tests/topotests/bfd_topo1/r4/zebra.conf
diff --git a/tests/topotests/bfd-topo1/test_bfd_topo1.dot b/tests/topotests/bfd_topo1/test_bfd_topo1.dot
index c84ace2780..c84ace2780 100644
--- a/tests/topotests/bfd-topo1/test_bfd_topo1.dot
+++ b/tests/topotests/bfd_topo1/test_bfd_topo1.dot
diff --git a/tests/topotests/bfd-topo1/test_bfd_topo1.jpg b/tests/topotests/bfd_topo1/test_bfd_topo1.jpg
index 4d6d56e072..4d6d56e072 100644
--- a/tests/topotests/bfd-topo1/test_bfd_topo1.jpg
+++ b/tests/topotests/bfd_topo1/test_bfd_topo1.jpg
Binary files differ
diff --git a/tests/topotests/bfd-topo1/test_bfd_topo1.py b/tests/topotests/bfd_topo1/test_bfd_topo1.py
index 86bdcfed04..86bdcfed04 100644
--- a/tests/topotests/bfd-topo1/test_bfd_topo1.py
+++ b/tests/topotests/bfd_topo1/test_bfd_topo1.py
diff --git a/tests/topotests/bfd-topo2/__init__.py b/tests/topotests/bfd_topo2/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bfd-topo2/__init__.py
+++ b/tests/topotests/bfd_topo2/__init__.py
diff --git a/tests/topotests/bfd-topo2/r1/bfdd.conf b/tests/topotests/bfd_topo2/r1/bfdd.conf
index f03135021e..f03135021e 100644
--- a/tests/topotests/bfd-topo2/r1/bfdd.conf
+++ b/tests/topotests/bfd_topo2/r1/bfdd.conf
diff --git a/tests/topotests/bfd-topo2/r1/bgpd.conf b/tests/topotests/bfd_topo2/r1/bgpd.conf
index 0918796e95..0918796e95 100644
--- a/tests/topotests/bfd-topo2/r1/bgpd.conf
+++ b/tests/topotests/bfd_topo2/r1/bgpd.conf
diff --git a/tests/topotests/bfd-topo2/r1/ipv4_routes.json b/tests/topotests/bfd_topo2/r1/ipv4_routes.json
index 650c0a81bb..650c0a81bb 100644
--- a/tests/topotests/bfd-topo2/r1/ipv4_routes.json
+++ b/tests/topotests/bfd_topo2/r1/ipv4_routes.json
diff --git a/tests/topotests/bfd-topo2/r1/ipv6_routes.json b/tests/topotests/bfd_topo2/r1/ipv6_routes.json
index 50c1f9ad8f..50c1f9ad8f 100644
--- a/tests/topotests/bfd-topo2/r1/ipv6_routes.json
+++ b/tests/topotests/bfd_topo2/r1/ipv6_routes.json
diff --git a/tests/topotests/bfd-topo2/r1/peers.json b/tests/topotests/bfd_topo2/r1/peers.json
index 9bce991d0d..9bce991d0d 100644
--- a/tests/topotests/bfd-topo2/r1/peers.json
+++ b/tests/topotests/bfd_topo2/r1/peers.json
diff --git a/tests/topotests/bfd-topo2/r1/zebra.conf b/tests/topotests/bfd_topo2/r1/zebra.conf
index 7fe5eb218f..7fe5eb218f 100644
--- a/tests/topotests/bfd-topo2/r1/zebra.conf
+++ b/tests/topotests/bfd_topo2/r1/zebra.conf
diff --git a/tests/topotests/bfd-topo2/r2/bfdd.conf b/tests/topotests/bfd_topo2/r2/bfdd.conf
index f35e772790..f35e772790 100644
--- a/tests/topotests/bfd-topo2/r2/bfdd.conf
+++ b/tests/topotests/bfd_topo2/r2/bfdd.conf
diff --git a/tests/topotests/bfd-topo2/r2/bgpd.conf b/tests/topotests/bfd_topo2/r2/bgpd.conf
index 55d48560e7..55d48560e7 100644
--- a/tests/topotests/bfd-topo2/r2/bgpd.conf
+++ b/tests/topotests/bfd_topo2/r2/bgpd.conf
diff --git a/tests/topotests/bfd-topo2/r2/ipv4_routes.json b/tests/topotests/bfd_topo2/r2/ipv4_routes.json
index 3d49b178b5..3d49b178b5 100644
--- a/tests/topotests/bfd-topo2/r2/ipv4_routes.json
+++ b/tests/topotests/bfd_topo2/r2/ipv4_routes.json
diff --git a/tests/topotests/bfd-topo2/r2/ipv6_routes.json b/tests/topotests/bfd_topo2/r2/ipv6_routes.json
index 4f3c74c5e2..4f3c74c5e2 100644
--- a/tests/topotests/bfd-topo2/r2/ipv6_routes.json
+++ b/tests/topotests/bfd_topo2/r2/ipv6_routes.json
diff --git a/tests/topotests/bfd-topo2/r2/ospf6d.conf b/tests/topotests/bfd_topo2/r2/ospf6d.conf
index 48a729ce19..48a729ce19 100644
--- a/tests/topotests/bfd-topo2/r2/ospf6d.conf
+++ b/tests/topotests/bfd_topo2/r2/ospf6d.conf
diff --git a/tests/topotests/bfd-topo2/r2/ospfd.conf b/tests/topotests/bfd_topo2/r2/ospfd.conf
index c786f1fe43..c786f1fe43 100644
--- a/tests/topotests/bfd-topo2/r2/ospfd.conf
+++ b/tests/topotests/bfd_topo2/r2/ospfd.conf
diff --git a/tests/topotests/bfd-topo2/r2/peers.json b/tests/topotests/bfd_topo2/r2/peers.json
index ec2135ce37..ec2135ce37 100644
--- a/tests/topotests/bfd-topo2/r2/peers.json
+++ b/tests/topotests/bfd_topo2/r2/peers.json
diff --git a/tests/topotests/bfd-topo2/r2/zebra.conf b/tests/topotests/bfd_topo2/r2/zebra.conf
index cccbf6574a..cccbf6574a 100644
--- a/tests/topotests/bfd-topo2/r2/zebra.conf
+++ b/tests/topotests/bfd_topo2/r2/zebra.conf
diff --git a/tests/topotests/bfd-topo2/r3/bfdd.conf b/tests/topotests/bfd_topo2/r3/bfdd.conf
index f35e772790..f35e772790 100644
--- a/tests/topotests/bfd-topo2/r3/bfdd.conf
+++ b/tests/topotests/bfd_topo2/r3/bfdd.conf
diff --git a/tests/topotests/bfd-topo2/r3/ipv4_routes.json b/tests/topotests/bfd_topo2/r3/ipv4_routes.json
index e96fdc0b15..e96fdc0b15 100644
--- a/tests/topotests/bfd-topo2/r3/ipv4_routes.json
+++ b/tests/topotests/bfd_topo2/r3/ipv4_routes.json
diff --git a/tests/topotests/bfd-topo2/r3/ipv6_routes.json b/tests/topotests/bfd_topo2/r3/ipv6_routes.json
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/bfd-topo2/r3/ipv6_routes.json
+++ b/tests/topotests/bfd_topo2/r3/ipv6_routes.json
diff --git a/tests/topotests/bfd-topo2/r3/ospfd.conf b/tests/topotests/bfd_topo2/r3/ospfd.conf
index 932ab4da63..932ab4da63 100644
--- a/tests/topotests/bfd-topo2/r3/ospfd.conf
+++ b/tests/topotests/bfd_topo2/r3/ospfd.conf
diff --git a/tests/topotests/bfd-topo2/r3/peers.json b/tests/topotests/bfd_topo2/r3/peers.json
index c19c980338..c19c980338 100644
--- a/tests/topotests/bfd-topo2/r3/peers.json
+++ b/tests/topotests/bfd_topo2/r3/peers.json
diff --git a/tests/topotests/bfd-topo2/r3/zebra.conf b/tests/topotests/bfd_topo2/r3/zebra.conf
index 96fd08c729..96fd08c729 100644
--- a/tests/topotests/bfd-topo2/r3/zebra.conf
+++ b/tests/topotests/bfd_topo2/r3/zebra.conf
diff --git a/tests/topotests/bfd-topo2/r4/bfdd.conf b/tests/topotests/bfd_topo2/r4/bfdd.conf
index 0173dc9be2..0173dc9be2 100644
--- a/tests/topotests/bfd-topo2/r4/bfdd.conf
+++ b/tests/topotests/bfd_topo2/r4/bfdd.conf
diff --git a/tests/topotests/bfd-topo2/r4/ipv4_routes.json b/tests/topotests/bfd_topo2/r4/ipv4_routes.json
index dc394aa891..dc394aa891 100644
--- a/tests/topotests/bfd-topo2/r4/ipv4_routes.json
+++ b/tests/topotests/bfd_topo2/r4/ipv4_routes.json
diff --git a/tests/topotests/bfd-topo2/r4/ipv6_routes.json b/tests/topotests/bfd_topo2/r4/ipv6_routes.json
index c828575c84..c828575c84 100644
--- a/tests/topotests/bfd-topo2/r4/ipv6_routes.json
+++ b/tests/topotests/bfd_topo2/r4/ipv6_routes.json
diff --git a/tests/topotests/bfd-topo2/r4/ospf6d.conf b/tests/topotests/bfd_topo2/r4/ospf6d.conf
index 57f7f6c079..57f7f6c079 100644
--- a/tests/topotests/bfd-topo2/r4/ospf6d.conf
+++ b/tests/topotests/bfd_topo2/r4/ospf6d.conf
diff --git a/tests/topotests/bfd-topo2/r4/peers.json b/tests/topotests/bfd_topo2/r4/peers.json
index dd26b9b580..dd26b9b580 100644
--- a/tests/topotests/bfd-topo2/r4/peers.json
+++ b/tests/topotests/bfd_topo2/r4/peers.json
diff --git a/tests/topotests/bfd-topo2/r4/zebra.conf b/tests/topotests/bfd_topo2/r4/zebra.conf
index e4f8fd8514..e4f8fd8514 100644
--- a/tests/topotests/bfd-topo2/r4/zebra.conf
+++ b/tests/topotests/bfd_topo2/r4/zebra.conf
diff --git a/tests/topotests/bfd-topo2/test_bfd_topo2.dot b/tests/topotests/bfd_topo2/test_bfd_topo2.dot
index 6b68fb398f..6b68fb398f 100644
--- a/tests/topotests/bfd-topo2/test_bfd_topo2.dot
+++ b/tests/topotests/bfd_topo2/test_bfd_topo2.dot
diff --git a/tests/topotests/bfd-topo2/test_bfd_topo2.jpg b/tests/topotests/bfd_topo2/test_bfd_topo2.jpg
index 35fe562a80..35fe562a80 100644
--- a/tests/topotests/bfd-topo2/test_bfd_topo2.jpg
+++ b/tests/topotests/bfd_topo2/test_bfd_topo2.jpg
Binary files differ
diff --git a/tests/topotests/bfd-topo2/test_bfd_topo2.py b/tests/topotests/bfd_topo2/test_bfd_topo2.py
index e85b2644dd..e85b2644dd 100644
--- a/tests/topotests/bfd-topo2/test_bfd_topo2.py
+++ b/tests/topotests/bfd_topo2/test_bfd_topo2.py
diff --git a/tests/topotests/bfd-topo3/__init__.py b/tests/topotests/bfd_topo3/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bfd-topo3/__init__.py
+++ b/tests/topotests/bfd_topo3/__init__.py
diff --git a/tests/topotests/bfd-topo3/r1/bfd-peers.json b/tests/topotests/bfd_topo3/r1/bfd-peers.json
index f8a354fc20..f8a354fc20 100644
--- a/tests/topotests/bfd-topo3/r1/bfd-peers.json
+++ b/tests/topotests/bfd_topo3/r1/bfd-peers.json
diff --git a/tests/topotests/bfd-topo3/r1/bfdd.conf b/tests/topotests/bfd_topo3/r1/bfdd.conf
index 8e40b76d41..8e40b76d41 100644
--- a/tests/topotests/bfd-topo3/r1/bfdd.conf
+++ b/tests/topotests/bfd_topo3/r1/bfdd.conf
diff --git a/tests/topotests/bfd-topo3/r1/bgpd.conf b/tests/topotests/bfd_topo3/r1/bgpd.conf
index 4c75d669c5..4c75d669c5 100644
--- a/tests/topotests/bfd-topo3/r1/bgpd.conf
+++ b/tests/topotests/bfd_topo3/r1/bgpd.conf
diff --git a/tests/topotests/bfd-topo3/r1/zebra.conf b/tests/topotests/bfd_topo3/r1/zebra.conf
index 64aee48436..64aee48436 100644
--- a/tests/topotests/bfd-topo3/r1/zebra.conf
+++ b/tests/topotests/bfd_topo3/r1/zebra.conf
diff --git a/tests/topotests/bfd-topo3/r2/bfd-peers.json b/tests/topotests/bfd_topo3/r2/bfd-peers.json
index 786d66dbe3..786d66dbe3 100644
--- a/tests/topotests/bfd-topo3/r2/bfd-peers.json
+++ b/tests/topotests/bfd_topo3/r2/bfd-peers.json
diff --git a/tests/topotests/bfd-topo3/r2/bfdd.conf b/tests/topotests/bfd_topo3/r2/bfdd.conf
index 2a92e463e0..2a92e463e0 100644
--- a/tests/topotests/bfd-topo3/r2/bfdd.conf
+++ b/tests/topotests/bfd_topo3/r2/bfdd.conf
diff --git a/tests/topotests/bfd-topo3/r2/bgpd.conf b/tests/topotests/bfd_topo3/r2/bgpd.conf
index 75225765e1..75225765e1 100644
--- a/tests/topotests/bfd-topo3/r2/bgpd.conf
+++ b/tests/topotests/bfd_topo3/r2/bgpd.conf
diff --git a/tests/topotests/bfd-topo3/r2/zebra.conf b/tests/topotests/bfd_topo3/r2/zebra.conf
index c7e22d4804..c7e22d4804 100644
--- a/tests/topotests/bfd-topo3/r2/zebra.conf
+++ b/tests/topotests/bfd_topo3/r2/zebra.conf
diff --git a/tests/topotests/bfd-topo3/r3/bfd-peers.json b/tests/topotests/bfd_topo3/r3/bfd-peers.json
index 1f58663a4e..1f58663a4e 100644
--- a/tests/topotests/bfd-topo3/r3/bfd-peers.json
+++ b/tests/topotests/bfd_topo3/r3/bfd-peers.json
diff --git a/tests/topotests/bfd-topo3/r3/bfdd.conf b/tests/topotests/bfd_topo3/r3/bfdd.conf
index f7972c6ce5..f7972c6ce5 100644
--- a/tests/topotests/bfd-topo3/r3/bfdd.conf
+++ b/tests/topotests/bfd_topo3/r3/bfdd.conf
diff --git a/tests/topotests/bfd-topo3/r3/bgpd.conf b/tests/topotests/bfd_topo3/r3/bgpd.conf
index 82adf8be9e..82adf8be9e 100644
--- a/tests/topotests/bfd-topo3/r3/bgpd.conf
+++ b/tests/topotests/bfd_topo3/r3/bgpd.conf
diff --git a/tests/topotests/bfd-topo3/r3/zebra.conf b/tests/topotests/bfd_topo3/r3/zebra.conf
index 14248fb6f7..14248fb6f7 100644
--- a/tests/topotests/bfd-topo3/r3/zebra.conf
+++ b/tests/topotests/bfd_topo3/r3/zebra.conf
diff --git a/tests/topotests/bfd-topo3/r4/bfd-peers.json b/tests/topotests/bfd_topo3/r4/bfd-peers.json
index 5477f39120..5477f39120 100644
--- a/tests/topotests/bfd-topo3/r4/bfd-peers.json
+++ b/tests/topotests/bfd_topo3/r4/bfd-peers.json
diff --git a/tests/topotests/bfd-topo3/r4/bfdd.conf b/tests/topotests/bfd_topo3/r4/bfdd.conf
index f44abc0b8a..f44abc0b8a 100644
--- a/tests/topotests/bfd-topo3/r4/bfdd.conf
+++ b/tests/topotests/bfd_topo3/r4/bfdd.conf
diff --git a/tests/topotests/bfd-topo3/r4/bgpd.conf b/tests/topotests/bfd_topo3/r4/bgpd.conf
index 0aab6e3017..0aab6e3017 100644
--- a/tests/topotests/bfd-topo3/r4/bgpd.conf
+++ b/tests/topotests/bfd_topo3/r4/bgpd.conf
diff --git a/tests/topotests/bfd-topo3/r4/zebra.conf b/tests/topotests/bfd_topo3/r4/zebra.conf
index bf0cfcf42c..bf0cfcf42c 100644
--- a/tests/topotests/bfd-topo3/r4/zebra.conf
+++ b/tests/topotests/bfd_topo3/r4/zebra.conf
diff --git a/tests/topotests/bfd-topo3/test_bfd_topo3.dot b/tests/topotests/bfd_topo3/test_bfd_topo3.dot
index 502cea11f2..502cea11f2 100644
--- a/tests/topotests/bfd-topo3/test_bfd_topo3.dot
+++ b/tests/topotests/bfd_topo3/test_bfd_topo3.dot
diff --git a/tests/topotests/bfd-topo3/test_bfd_topo3.jpg b/tests/topotests/bfd_topo3/test_bfd_topo3.jpg
index 6b532560bf..6b532560bf 100644
--- a/tests/topotests/bfd-topo3/test_bfd_topo3.jpg
+++ b/tests/topotests/bfd_topo3/test_bfd_topo3.jpg
Binary files differ
diff --git a/tests/topotests/bfd-topo3/test_bfd_topo3.py b/tests/topotests/bfd_topo3/test_bfd_topo3.py
index 6bb223e203..6bb223e203 100644
--- a/tests/topotests/bfd-topo3/test_bfd_topo3.py
+++ b/tests/topotests/bfd_topo3/test_bfd_topo3.py
diff --git a/tests/topotests/bfd-vrf-topo1/__init__.py b/tests/topotests/bfd_vrf_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bfd-vrf-topo1/__init__.py
+++ b/tests/topotests/bfd_vrf_topo1/__init__.py
diff --git a/tests/topotests/bfd-vrf-topo1/r1/bfdd.conf b/tests/topotests/bfd_vrf_topo1/r1/bfdd.conf
index 5e736a7fcc..5e736a7fcc 100644
--- a/tests/topotests/bfd-vrf-topo1/r1/bfdd.conf
+++ b/tests/topotests/bfd_vrf_topo1/r1/bfdd.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r1/bgp_prefixes.json b/tests/topotests/bfd_vrf_topo1/r1/bgp_prefixes.json
index 1262f5e984..1262f5e984 100644
--- a/tests/topotests/bfd-vrf-topo1/r1/bgp_prefixes.json
+++ b/tests/topotests/bfd_vrf_topo1/r1/bgp_prefixes.json
diff --git a/tests/topotests/bfd-vrf-topo1/r1/bgp_summary.json b/tests/topotests/bfd_vrf_topo1/r1/bgp_summary.json
index fa07d60df9..fa07d60df9 100644
--- a/tests/topotests/bfd-vrf-topo1/r1/bgp_summary.json
+++ b/tests/topotests/bfd_vrf_topo1/r1/bgp_summary.json
diff --git a/tests/topotests/bfd-vrf-topo1/r1/bgpd.conf b/tests/topotests/bfd_vrf_topo1/r1/bgpd.conf
index 5bb45b9863..5bb45b9863 100644
--- a/tests/topotests/bfd-vrf-topo1/r1/bgpd.conf
+++ b/tests/topotests/bfd_vrf_topo1/r1/bgpd.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r1/peers.json b/tests/topotests/bfd_vrf_topo1/r1/peers.json
index f49768ff75..f49768ff75 100644
--- a/tests/topotests/bfd-vrf-topo1/r1/peers.json
+++ b/tests/topotests/bfd_vrf_topo1/r1/peers.json
diff --git a/tests/topotests/bfd-vrf-topo1/r1/zebra.conf b/tests/topotests/bfd_vrf_topo1/r1/zebra.conf
index fcd1e7db17..fcd1e7db17 100644
--- a/tests/topotests/bfd-vrf-topo1/r1/zebra.conf
+++ b/tests/topotests/bfd_vrf_topo1/r1/zebra.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r2/bfdd.conf b/tests/topotests/bfd_vrf_topo1/r2/bfdd.conf
index 94f502c7d9..94f502c7d9 100644
--- a/tests/topotests/bfd-vrf-topo1/r2/bfdd.conf
+++ b/tests/topotests/bfd_vrf_topo1/r2/bfdd.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r2/bgp_prefixes.json b/tests/topotests/bfd_vrf_topo1/r2/bgp_prefixes.json
index 0d47c0fc30..0d47c0fc30 100644
--- a/tests/topotests/bfd-vrf-topo1/r2/bgp_prefixes.json
+++ b/tests/topotests/bfd_vrf_topo1/r2/bgp_prefixes.json
diff --git a/tests/topotests/bfd-vrf-topo1/r2/bgp_summary.json b/tests/topotests/bfd_vrf_topo1/r2/bgp_summary.json
index c0ef11ac5f..c0ef11ac5f 100644
--- a/tests/topotests/bfd-vrf-topo1/r2/bgp_summary.json
+++ b/tests/topotests/bfd_vrf_topo1/r2/bgp_summary.json
diff --git a/tests/topotests/bfd-vrf-topo1/r2/bgpd.conf b/tests/topotests/bfd_vrf_topo1/r2/bgpd.conf
index b2aac74685..b2aac74685 100644
--- a/tests/topotests/bfd-vrf-topo1/r2/bgpd.conf
+++ b/tests/topotests/bfd_vrf_topo1/r2/bgpd.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r2/peers.json b/tests/topotests/bfd_vrf_topo1/r2/peers.json
index 267459c7a8..267459c7a8 100644
--- a/tests/topotests/bfd-vrf-topo1/r2/peers.json
+++ b/tests/topotests/bfd_vrf_topo1/r2/peers.json
diff --git a/tests/topotests/bfd-vrf-topo1/r2/zebra.conf b/tests/topotests/bfd_vrf_topo1/r2/zebra.conf
index daffd1912e..daffd1912e 100644
--- a/tests/topotests/bfd-vrf-topo1/r2/zebra.conf
+++ b/tests/topotests/bfd_vrf_topo1/r2/zebra.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r3/bfdd.conf b/tests/topotests/bfd_vrf_topo1/r3/bfdd.conf
index 76910ac927..76910ac927 100644
--- a/tests/topotests/bfd-vrf-topo1/r3/bfdd.conf
+++ b/tests/topotests/bfd_vrf_topo1/r3/bfdd.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r3/bgp_prefixes.json b/tests/topotests/bfd_vrf_topo1/r3/bgp_prefixes.json
index 36fca17bbf..36fca17bbf 100644
--- a/tests/topotests/bfd-vrf-topo1/r3/bgp_prefixes.json
+++ b/tests/topotests/bfd_vrf_topo1/r3/bgp_prefixes.json
diff --git a/tests/topotests/bfd-vrf-topo1/r3/bgp_summary.json b/tests/topotests/bfd_vrf_topo1/r3/bgp_summary.json
index d47833377b..d47833377b 100644
--- a/tests/topotests/bfd-vrf-topo1/r3/bgp_summary.json
+++ b/tests/topotests/bfd_vrf_topo1/r3/bgp_summary.json
diff --git a/tests/topotests/bfd-vrf-topo1/r3/bgpd.conf b/tests/topotests/bfd_vrf_topo1/r3/bgpd.conf
index 1d7c730395..1d7c730395 100644
--- a/tests/topotests/bfd-vrf-topo1/r3/bgpd.conf
+++ b/tests/topotests/bfd_vrf_topo1/r3/bgpd.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r3/peers.json b/tests/topotests/bfd_vrf_topo1/r3/peers.json
index ef38008643..ef38008643 100644
--- a/tests/topotests/bfd-vrf-topo1/r3/peers.json
+++ b/tests/topotests/bfd_vrf_topo1/r3/peers.json
diff --git a/tests/topotests/bfd-vrf-topo1/r3/zebra.conf b/tests/topotests/bfd_vrf_topo1/r3/zebra.conf
index f727c2d633..f727c2d633 100644
--- a/tests/topotests/bfd-vrf-topo1/r3/zebra.conf
+++ b/tests/topotests/bfd_vrf_topo1/r3/zebra.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r4/bfdd.conf b/tests/topotests/bfd_vrf_topo1/r4/bfdd.conf
index 63d0da7805..63d0da7805 100644
--- a/tests/topotests/bfd-vrf-topo1/r4/bfdd.conf
+++ b/tests/topotests/bfd_vrf_topo1/r4/bfdd.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r4/bgp_prefixes.json b/tests/topotests/bfd_vrf_topo1/r4/bgp_prefixes.json
index efe7d47b1a..efe7d47b1a 100644
--- a/tests/topotests/bfd-vrf-topo1/r4/bgp_prefixes.json
+++ b/tests/topotests/bfd_vrf_topo1/r4/bgp_prefixes.json
diff --git a/tests/topotests/bfd-vrf-topo1/r4/bgp_summary.json b/tests/topotests/bfd_vrf_topo1/r4/bgp_summary.json
index 7d81784b56..7d81784b56 100644
--- a/tests/topotests/bfd-vrf-topo1/r4/bgp_summary.json
+++ b/tests/topotests/bfd_vrf_topo1/r4/bgp_summary.json
diff --git a/tests/topotests/bfd-vrf-topo1/r4/bgpd.conf b/tests/topotests/bfd_vrf_topo1/r4/bgpd.conf
index f34035d460..f34035d460 100644
--- a/tests/topotests/bfd-vrf-topo1/r4/bgpd.conf
+++ b/tests/topotests/bfd_vrf_topo1/r4/bgpd.conf
diff --git a/tests/topotests/bfd-vrf-topo1/r4/peers.json b/tests/topotests/bfd_vrf_topo1/r4/peers.json
index 37140089e1..37140089e1 100644
--- a/tests/topotests/bfd-vrf-topo1/r4/peers.json
+++ b/tests/topotests/bfd_vrf_topo1/r4/peers.json
diff --git a/tests/topotests/bfd-vrf-topo1/r4/zebra.conf b/tests/topotests/bfd_vrf_topo1/r4/zebra.conf
index 69770dd2bf..69770dd2bf 100644
--- a/tests/topotests/bfd-vrf-topo1/r4/zebra.conf
+++ b/tests/topotests/bfd_vrf_topo1/r4/zebra.conf
diff --git a/tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.dot b/tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.dot
index c84ace2780..c84ace2780 100644
--- a/tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.dot
+++ b/tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.dot
diff --git a/tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.jpg b/tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.jpg
index 4d6d56e072..4d6d56e072 100644
--- a/tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.jpg
+++ b/tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.jpg
Binary files differ
diff --git a/tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.py b/tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.py
index 8a1ffe085d..8a1ffe085d 100644
--- a/tests/topotests/bfd-vrf-topo1/test_bfd_vrf_topo1.py
+++ b/tests/topotests/bfd_vrf_topo1/test_bfd_vrf_topo1.py
diff --git a/tests/topotests/bgp-aggregator-zero/__init__.py b/tests/topotests/bgp_aggregate_address_origin/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-aggregator-zero/__init__.py
+++ b/tests/topotests/bgp_aggregate_address_origin/__init__.py
diff --git a/tests/topotests/bgp_aggregate-address_origin/r1/bgpd.conf b/tests/topotests/bgp_aggregate_address_origin/r1/bgpd.conf
index 3486c64c55..3486c64c55 100644
--- a/tests/topotests/bgp_aggregate-address_origin/r1/bgpd.conf
+++ b/tests/topotests/bgp_aggregate_address_origin/r1/bgpd.conf
diff --git a/tests/topotests/bgp_aggregate-address_origin/r1/zebra.conf b/tests/topotests/bgp_aggregate_address_origin/r1/zebra.conf
index 0a283c06d5..0a283c06d5 100644
--- a/tests/topotests/bgp_aggregate-address_origin/r1/zebra.conf
+++ b/tests/topotests/bgp_aggregate_address_origin/r1/zebra.conf
diff --git a/tests/topotests/bgp_aggregate-address_origin/r2/bgpd.conf b/tests/topotests/bgp_aggregate_address_origin/r2/bgpd.conf
index b2d945583c..b2d945583c 100644
--- a/tests/topotests/bgp_aggregate-address_origin/r2/bgpd.conf
+++ b/tests/topotests/bgp_aggregate_address_origin/r2/bgpd.conf
diff --git a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r2/zebra.conf b/tests/topotests/bgp_aggregate_address_origin/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r2/zebra.conf
+++ b/tests/topotests/bgp_aggregate_address_origin/r2/zebra.conf
diff --git a/tests/topotests/bgp_aggregate-address_origin/test_bgp_aggregate-address_origin.py b/tests/topotests/bgp_aggregate_address_origin/test_bgp_aggregate-address_origin.py
index be07fab87b..be07fab87b 100644
--- a/tests/topotests/bgp_aggregate-address_origin/test_bgp_aggregate-address_origin.py
+++ b/tests/topotests/bgp_aggregate_address_origin/test_bgp_aggregate-address_origin.py
diff --git a/tests/topotests/bgp-basic-functionality-topo1/__init__.py b/tests/topotests/bgp_aggregate_address_route_map/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-basic-functionality-topo1/__init__.py
+++ b/tests/topotests/bgp_aggregate_address_route_map/__init__.py
diff --git a/tests/topotests/bgp_aggregate-address_route-map/r1/bgpd.conf b/tests/topotests/bgp_aggregate_address_route_map/r1/bgpd.conf
index 7fb55cf001..7fb55cf001 100644
--- a/tests/topotests/bgp_aggregate-address_route-map/r1/bgpd.conf
+++ b/tests/topotests/bgp_aggregate_address_route_map/r1/bgpd.conf
diff --git a/tests/topotests/bgp_aggregate-address_route-map/r1/zebra.conf b/tests/topotests/bgp_aggregate_address_route_map/r1/zebra.conf
index 0a283c06d5..0a283c06d5 100644
--- a/tests/topotests/bgp_aggregate-address_route-map/r1/zebra.conf
+++ b/tests/topotests/bgp_aggregate_address_route_map/r1/zebra.conf
diff --git a/tests/topotests/bgp_aggregate-address_route-map/r2/bgpd.conf b/tests/topotests/bgp_aggregate_address_route_map/r2/bgpd.conf
index b2d945583c..b2d945583c 100644
--- a/tests/topotests/bgp_aggregate-address_route-map/r2/bgpd.conf
+++ b/tests/topotests/bgp_aggregate_address_route_map/r2/bgpd.conf
diff --git a/tests/topotests/bgp_aggregate-address_origin/r2/zebra.conf b/tests/topotests/bgp_aggregate_address_route_map/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp_aggregate-address_origin/r2/zebra.conf
+++ b/tests/topotests/bgp_aggregate_address_route_map/r2/zebra.conf
diff --git a/tests/topotests/bgp_aggregate-address_route-map/test_bgp_aggregate-address_route-map.py b/tests/topotests/bgp_aggregate_address_route_map/test_bgp_aggregate-address_route-map.py
index 484f40251f..484f40251f 100644
--- a/tests/topotests/bgp_aggregate-address_route-map/test_bgp_aggregate-address_route-map.py
+++ b/tests/topotests/bgp_aggregate_address_route_map/test_bgp_aggregate-address_route-map.py
diff --git a/tests/topotests/bgp-community-alias/__init__.py b/tests/topotests/bgp_aggregator_zero/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-community-alias/__init__.py
+++ b/tests/topotests/bgp_aggregator_zero/__init__.py
diff --git a/tests/topotests/bgp-aggregator-zero/exabgp.env b/tests/topotests/bgp_aggregator_zero/exabgp.env
index 28e642360a..28e642360a 100644
--- a/tests/topotests/bgp-aggregator-zero/exabgp.env
+++ b/tests/topotests/bgp_aggregator_zero/exabgp.env
diff --git a/tests/topotests/bgp-aggregator-zero/peer1/exabgp.cfg b/tests/topotests/bgp_aggregator_zero/peer1/exabgp.cfg
index b3f25272d2..b3f25272d2 100644
--- a/tests/topotests/bgp-aggregator-zero/peer1/exabgp.cfg
+++ b/tests/topotests/bgp_aggregator_zero/peer1/exabgp.cfg
diff --git a/tests/topotests/bgp-aggregator-zero/r1/bgpd.conf b/tests/topotests/bgp_aggregator_zero/r1/bgpd.conf
index 002a5c78c0..002a5c78c0 100644
--- a/tests/topotests/bgp-aggregator-zero/r1/bgpd.conf
+++ b/tests/topotests/bgp_aggregator_zero/r1/bgpd.conf
diff --git a/tests/topotests/bgp-aggregator-zero/r1/zebra.conf b/tests/topotests/bgp_aggregator_zero/r1/zebra.conf
index 22a26ac610..22a26ac610 100644
--- a/tests/topotests/bgp-aggregator-zero/r1/zebra.conf
+++ b/tests/topotests/bgp_aggregator_zero/r1/zebra.conf
diff --git a/tests/topotests/bgp-aggregator-zero/test_bgp_aggregator_zero.py b/tests/topotests/bgp_aggregator_zero/test_bgp_aggregator_zero.py
index c4bbdce2c3..c4bbdce2c3 100644
--- a/tests/topotests/bgp-aggregator-zero/test_bgp_aggregator_zero.py
+++ b/tests/topotests/bgp_aggregator_zero/test_bgp_aggregator_zero.py
diff --git a/tests/topotests/bgp-auth/R1/bgpd.conf b/tests/topotests/bgp_auth/R1/bgpd.conf
index 1cb26c6537..1cb26c6537 100644
--- a/tests/topotests/bgp-auth/R1/bgpd.conf
+++ b/tests/topotests/bgp_auth/R1/bgpd.conf
diff --git a/tests/topotests/bgp-auth/R1/bgpd_multi_vrf.conf b/tests/topotests/bgp_auth/R1/bgpd_multi_vrf.conf
index dde3c090b5..dde3c090b5 100644
--- a/tests/topotests/bgp-auth/R1/bgpd_multi_vrf.conf
+++ b/tests/topotests/bgp_auth/R1/bgpd_multi_vrf.conf
diff --git a/tests/topotests/bgp-auth/R1/bgpd_multi_vrf_prefix.conf b/tests/topotests/bgp_auth/R1/bgpd_multi_vrf_prefix.conf
index 7e15720c7e..7e15720c7e 100644
--- a/tests/topotests/bgp-auth/R1/bgpd_multi_vrf_prefix.conf
+++ b/tests/topotests/bgp_auth/R1/bgpd_multi_vrf_prefix.conf
diff --git a/tests/topotests/bgp-auth/R1/bgpd_prefix.conf b/tests/topotests/bgp_auth/R1/bgpd_prefix.conf
index 9200b0501d..9200b0501d 100644
--- a/tests/topotests/bgp-auth/R1/bgpd_prefix.conf
+++ b/tests/topotests/bgp_auth/R1/bgpd_prefix.conf
diff --git a/tests/topotests/bgp-auth/R1/bgpd_vrf.conf b/tests/topotests/bgp_auth/R1/bgpd_vrf.conf
index 781f906d3a..781f906d3a 100644
--- a/tests/topotests/bgp-auth/R1/bgpd_vrf.conf
+++ b/tests/topotests/bgp_auth/R1/bgpd_vrf.conf
diff --git a/tests/topotests/bgp-auth/R1/bgpd_vrf_prefix.conf b/tests/topotests/bgp_auth/R1/bgpd_vrf_prefix.conf
index d68951b406..d68951b406 100644
--- a/tests/topotests/bgp-auth/R1/bgpd_vrf_prefix.conf
+++ b/tests/topotests/bgp_auth/R1/bgpd_vrf_prefix.conf
diff --git a/tests/topotests/bgp-auth/R1/ospfd.conf b/tests/topotests/bgp_auth/R1/ospfd.conf
index 79eb0e33da..79eb0e33da 100644
--- a/tests/topotests/bgp-auth/R1/ospfd.conf
+++ b/tests/topotests/bgp_auth/R1/ospfd.conf
diff --git a/tests/topotests/bgp-auth/R1/ospfd_multi_vrf.conf b/tests/topotests/bgp_auth/R1/ospfd_multi_vrf.conf
index e2a28000b8..e2a28000b8 100644
--- a/tests/topotests/bgp-auth/R1/ospfd_multi_vrf.conf
+++ b/tests/topotests/bgp_auth/R1/ospfd_multi_vrf.conf
diff --git a/tests/topotests/bgp-auth/R1/ospfd_vrf.conf b/tests/topotests/bgp_auth/R1/ospfd_vrf.conf
index 0b7fbae8c4..0b7fbae8c4 100644
--- a/tests/topotests/bgp-auth/R1/ospfd_vrf.conf
+++ b/tests/topotests/bgp_auth/R1/ospfd_vrf.conf
diff --git a/tests/topotests/bgp-auth/R1/zebra.conf b/tests/topotests/bgp_auth/R1/zebra.conf
index a0b062c44c..a0b062c44c 100644
--- a/tests/topotests/bgp-auth/R1/zebra.conf
+++ b/tests/topotests/bgp_auth/R1/zebra.conf
diff --git a/tests/topotests/bgp-auth/R2/bgpd.conf b/tests/topotests/bgp_auth/R2/bgpd.conf
index fa2a570ef9..fa2a570ef9 100644
--- a/tests/topotests/bgp-auth/R2/bgpd.conf
+++ b/tests/topotests/bgp_auth/R2/bgpd.conf
diff --git a/tests/topotests/bgp-auth/R2/bgpd_multi_vrf.conf b/tests/topotests/bgp_auth/R2/bgpd_multi_vrf.conf
index d5f70edf68..d5f70edf68 100644
--- a/tests/topotests/bgp-auth/R2/bgpd_multi_vrf.conf
+++ b/tests/topotests/bgp_auth/R2/bgpd_multi_vrf.conf
diff --git a/tests/topotests/bgp-auth/R2/bgpd_multi_vrf_prefix.conf b/tests/topotests/bgp_auth/R2/bgpd_multi_vrf_prefix.conf
index d5f70edf68..d5f70edf68 100644
--- a/tests/topotests/bgp-auth/R2/bgpd_multi_vrf_prefix.conf
+++ b/tests/topotests/bgp_auth/R2/bgpd_multi_vrf_prefix.conf
diff --git a/tests/topotests/bgp-auth/R2/bgpd_prefix.conf b/tests/topotests/bgp_auth/R2/bgpd_prefix.conf
index fa2a570ef9..fa2a570ef9 100644
--- a/tests/topotests/bgp-auth/R2/bgpd_prefix.conf
+++ b/tests/topotests/bgp_auth/R2/bgpd_prefix.conf
diff --git a/tests/topotests/bgp-auth/R2/bgpd_vrf.conf b/tests/topotests/bgp_auth/R2/bgpd_vrf.conf
index d1f3847420..d1f3847420 100644
--- a/tests/topotests/bgp-auth/R2/bgpd_vrf.conf
+++ b/tests/topotests/bgp_auth/R2/bgpd_vrf.conf
diff --git a/tests/topotests/bgp-auth/R2/bgpd_vrf_prefix.conf b/tests/topotests/bgp_auth/R2/bgpd_vrf_prefix.conf
index d1f3847420..d1f3847420 100644
--- a/tests/topotests/bgp-auth/R2/bgpd_vrf_prefix.conf
+++ b/tests/topotests/bgp_auth/R2/bgpd_vrf_prefix.conf
diff --git a/tests/topotests/bgp-auth/R2/ospfd.conf b/tests/topotests/bgp_auth/R2/ospfd.conf
index 028b546a0c..028b546a0c 100644
--- a/tests/topotests/bgp-auth/R2/ospfd.conf
+++ b/tests/topotests/bgp_auth/R2/ospfd.conf
diff --git a/tests/topotests/bgp-auth/R2/ospfd_multi_vrf.conf b/tests/topotests/bgp_auth/R2/ospfd_multi_vrf.conf
index a05dfb8e41..a05dfb8e41 100644
--- a/tests/topotests/bgp-auth/R2/ospfd_multi_vrf.conf
+++ b/tests/topotests/bgp_auth/R2/ospfd_multi_vrf.conf
diff --git a/tests/topotests/bgp-auth/R2/ospfd_vrf.conf b/tests/topotests/bgp_auth/R2/ospfd_vrf.conf
index b198d352e2..b198d352e2 100644
--- a/tests/topotests/bgp-auth/R2/ospfd_vrf.conf
+++ b/tests/topotests/bgp_auth/R2/ospfd_vrf.conf
diff --git a/tests/topotests/bgp-auth/R2/zebra.conf b/tests/topotests/bgp_auth/R2/zebra.conf
index fed4c27c16..fed4c27c16 100644
--- a/tests/topotests/bgp-auth/R2/zebra.conf
+++ b/tests/topotests/bgp_auth/R2/zebra.conf
diff --git a/tests/topotests/bgp-auth/R3/bgpd.conf b/tests/topotests/bgp_auth/R3/bgpd.conf
index deccfd418b..deccfd418b 100644
--- a/tests/topotests/bgp-auth/R3/bgpd.conf
+++ b/tests/topotests/bgp_auth/R3/bgpd.conf
diff --git a/tests/topotests/bgp-auth/R3/bgpd_multi_vrf.conf b/tests/topotests/bgp_auth/R3/bgpd_multi_vrf.conf
index fe3e64d8d5..fe3e64d8d5 100644
--- a/tests/topotests/bgp-auth/R3/bgpd_multi_vrf.conf
+++ b/tests/topotests/bgp_auth/R3/bgpd_multi_vrf.conf
diff --git a/tests/topotests/bgp-auth/R3/bgpd_multi_vrf_prefix.conf b/tests/topotests/bgp_auth/R3/bgpd_multi_vrf_prefix.conf
index fe3e64d8d5..fe3e64d8d5 100644
--- a/tests/topotests/bgp-auth/R3/bgpd_multi_vrf_prefix.conf
+++ b/tests/topotests/bgp_auth/R3/bgpd_multi_vrf_prefix.conf
diff --git a/tests/topotests/bgp-auth/R3/bgpd_prefix.conf b/tests/topotests/bgp_auth/R3/bgpd_prefix.conf
index deccfd418b..deccfd418b 100644
--- a/tests/topotests/bgp-auth/R3/bgpd_prefix.conf
+++ b/tests/topotests/bgp_auth/R3/bgpd_prefix.conf
diff --git a/tests/topotests/bgp-auth/R3/bgpd_vrf.conf b/tests/topotests/bgp_auth/R3/bgpd_vrf.conf
index c109aa801b..c109aa801b 100644
--- a/tests/topotests/bgp-auth/R3/bgpd_vrf.conf
+++ b/tests/topotests/bgp_auth/R3/bgpd_vrf.conf
diff --git a/tests/topotests/bgp-auth/R3/bgpd_vrf_prefix.conf b/tests/topotests/bgp_auth/R3/bgpd_vrf_prefix.conf
index c109aa801b..c109aa801b 100644
--- a/tests/topotests/bgp-auth/R3/bgpd_vrf_prefix.conf
+++ b/tests/topotests/bgp_auth/R3/bgpd_vrf_prefix.conf
diff --git a/tests/topotests/bgp-auth/R3/ospfd.conf b/tests/topotests/bgp_auth/R3/ospfd.conf
index 0f0a2e926a..0f0a2e926a 100644
--- a/tests/topotests/bgp-auth/R3/ospfd.conf
+++ b/tests/topotests/bgp_auth/R3/ospfd.conf
diff --git a/tests/topotests/bgp-auth/R3/ospfd_multi_vrf.conf b/tests/topotests/bgp_auth/R3/ospfd_multi_vrf.conf
index f32d2a8423..f32d2a8423 100644
--- a/tests/topotests/bgp-auth/R3/ospfd_multi_vrf.conf
+++ b/tests/topotests/bgp_auth/R3/ospfd_multi_vrf.conf
diff --git a/tests/topotests/bgp-auth/R3/ospfd_vrf.conf b/tests/topotests/bgp_auth/R3/ospfd_vrf.conf
index 6465b635aa..6465b635aa 100644
--- a/tests/topotests/bgp-auth/R3/ospfd_vrf.conf
+++ b/tests/topotests/bgp_auth/R3/ospfd_vrf.conf
diff --git a/tests/topotests/bgp-auth/R3/zebra.conf b/tests/topotests/bgp_auth/R3/zebra.conf
index d49c98b168..d49c98b168 100644
--- a/tests/topotests/bgp-auth/R3/zebra.conf
+++ b/tests/topotests/bgp_auth/R3/zebra.conf
diff --git a/tests/topotests/bgp-auth/test_bgp_auth.py b/tests/topotests/bgp_auth/test_bgp_auth.py
index 521ca332d0..b2cdef1c93 100644
--- a/tests/topotests/bgp-auth/test_bgp_auth.py
+++ b/tests/topotests/bgp_auth/test_bgp_auth.py
@@ -357,9 +357,10 @@ def check_neigh_state(router, peer, state, vrf=""):
"show bgp vrf {} neighbors {} json".format(vrf, peer)
)
neigh_output_json = json.loads(neigh_output)
- if neigh_output_json[peer]["bgpState"] == state:
- matched = True
- break
+ if peer in neigh_output_json.keys():
+ if neigh_output_json[peer]["bgpState"] == state:
+ matched = True
+ break
count += 1
sleep(1)
diff --git a/tests/topotests/bgp-default-ipv4-ipv6-unicast/__init__.py b/tests/topotests/bgp_basic_functionality_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-default-ipv4-ipv6-unicast/__init__.py
+++ b/tests/topotests/bgp_basic_functionality_topo1/__init__.py
diff --git a/tests/topotests/bgp-basic-functionality-topo1/bgp_basic_functionality.json b/tests/topotests/bgp_basic_functionality_topo1/bgp_basic_functionality.json
index ee1f1b74c0..ee1f1b74c0 100644
--- a/tests/topotests/bgp-basic-functionality-topo1/bgp_basic_functionality.json
+++ b/tests/topotests/bgp_basic_functionality_topo1/bgp_basic_functionality.json
diff --git a/tests/topotests/bgp-basic-functionality-topo1/test_bgp_basic_functionality.py b/tests/topotests/bgp_basic_functionality_topo1/test_bgp_basic_functionality.py
index 374cce21f6..374cce21f6 100644
--- a/tests/topotests/bgp-basic-functionality-topo1/test_bgp_basic_functionality.py
+++ b/tests/topotests/bgp_basic_functionality_topo1/test_bgp_basic_functionality.py
diff --git a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/__init__.py b/tests/topotests/bgp_comm_list_delete/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/__init__.py
+++ b/tests/topotests/bgp_comm_list_delete/__init__.py
diff --git a/tests/topotests/bgp_comm-list_delete/r1/bgpd.conf b/tests/topotests/bgp_comm_list_delete/r1/bgpd.conf
index 12161d2fa2..12161d2fa2 100644
--- a/tests/topotests/bgp_comm-list_delete/r1/bgpd.conf
+++ b/tests/topotests/bgp_comm_list_delete/r1/bgpd.conf
diff --git a/tests/topotests/bgp_comm-list_delete/r1/zebra.conf b/tests/topotests/bgp_comm_list_delete/r1/zebra.conf
index 0a283c06d5..0a283c06d5 100644
--- a/tests/topotests/bgp_comm-list_delete/r1/zebra.conf
+++ b/tests/topotests/bgp_comm_list_delete/r1/zebra.conf
diff --git a/tests/topotests/bgp_comm-list_delete/r2/bgpd.conf b/tests/topotests/bgp_comm_list_delete/r2/bgpd.conf
index 33231b5274..33231b5274 100644
--- a/tests/topotests/bgp_comm-list_delete/r2/bgpd.conf
+++ b/tests/topotests/bgp_comm_list_delete/r2/bgpd.conf
diff --git a/tests/topotests/bgp_aggregate-address_route-map/r2/zebra.conf b/tests/topotests/bgp_comm_list_delete/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp_aggregate-address_route-map/r2/zebra.conf
+++ b/tests/topotests/bgp_comm_list_delete/r2/zebra.conf
diff --git a/tests/topotests/bgp_comm-list_delete/test_bgp_comm-list_delete.py b/tests/topotests/bgp_comm_list_delete/test_bgp_comm-list_delete.py
index 81bf8da31a..81bf8da31a 100644
--- a/tests/topotests/bgp_comm-list_delete/test_bgp_comm-list_delete.py
+++ b/tests/topotests/bgp_comm_list_delete/test_bgp_comm-list_delete.py
diff --git a/tests/topotests/bgp-ecmp-topo1/__init__.py b/tests/topotests/bgp_community_alias/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-ecmp-topo1/__init__.py
+++ b/tests/topotests/bgp_community_alias/__init__.py
diff --git a/tests/topotests/bgp-community-alias/r1/bgpd.conf b/tests/topotests/bgp_community_alias/r1/bgpd.conf
index 2cf84d0b70..2cf84d0b70 100644
--- a/tests/topotests/bgp-community-alias/r1/bgpd.conf
+++ b/tests/topotests/bgp_community_alias/r1/bgpd.conf
diff --git a/tests/topotests/bgp-community-alias/r1/zebra.conf b/tests/topotests/bgp_community_alias/r1/zebra.conf
index b29940f46a..b29940f46a 100644
--- a/tests/topotests/bgp-community-alias/r1/zebra.conf
+++ b/tests/topotests/bgp_community_alias/r1/zebra.conf
diff --git a/tests/topotests/bgp-community-alias/r2/bgpd.conf b/tests/topotests/bgp_community_alias/r2/bgpd.conf
index 517ef70f2a..517ef70f2a 100644
--- a/tests/topotests/bgp-community-alias/r2/bgpd.conf
+++ b/tests/topotests/bgp_community_alias/r2/bgpd.conf
diff --git a/tests/topotests/bgp-community-alias/r2/zebra.conf b/tests/topotests/bgp_community_alias/r2/zebra.conf
index cffe827363..cffe827363 100644
--- a/tests/topotests/bgp-community-alias/r2/zebra.conf
+++ b/tests/topotests/bgp_community_alias/r2/zebra.conf
diff --git a/tests/topotests/bgp-community-alias/test_bgp-community-alias.py b/tests/topotests/bgp_community_alias/test_bgp-community-alias.py
index a43e5f937e..a43e5f937e 100644
--- a/tests/topotests/bgp-community-alias/test_bgp-community-alias.py
+++ b/tests/topotests/bgp_community_alias/test_bgp-community-alias.py
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/__init__.py b/tests/topotests/bgp_default_ipv4_ipv6_unicast/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/__init__.py
+++ b/tests/topotests/bgp_default_ipv4_ipv6_unicast/__init__.py
diff --git a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r1/bgpd.conf b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r1/bgpd.conf
index bf39152ea8..bf39152ea8 100644
--- a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r1/bgpd.conf
+++ b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r1/bgpd.conf
diff --git a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r1/zebra.conf b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r1/zebra.conf
index 697765168d..697765168d 100644
--- a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r1/zebra.conf
+++ b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r1/zebra.conf
diff --git a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r2/bgpd.conf b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r2/bgpd.conf
index abbd1b86fa..abbd1b86fa 100644
--- a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r2/bgpd.conf
+++ b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r2/bgpd.conf
diff --git a/tests/topotests/bgp_comm-list_delete/r2/zebra.conf b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp_comm-list_delete/r2/zebra.conf
+++ b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r2/zebra.conf
diff --git a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r3/bgpd.conf b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r3/bgpd.conf
index a405c047ca..a405c047ca 100644
--- a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r3/bgpd.conf
+++ b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r3/bgpd.conf
diff --git a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r3/zebra.conf b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r3/zebra.conf
index e9fdfb70c5..e9fdfb70c5 100644
--- a/tests/topotests/bgp-default-ipv4-ipv6-unicast/r3/zebra.conf
+++ b/tests/topotests/bgp_default_ipv4_ipv6_unicast/r3/zebra.conf
diff --git a/tests/topotests/bgp-default-ipv4-ipv6-unicast/test_bgp-default-ipv4-ipv6-unicast.py b/tests/topotests/bgp_default_ipv4_ipv6_unicast/test_bgp-default-ipv4-ipv6-unicast.py
index f9aa94fd14..f9aa94fd14 100644
--- a/tests/topotests/bgp-default-ipv4-ipv6-unicast/test_bgp-default-ipv4-ipv6-unicast.py
+++ b/tests/topotests/bgp_default_ipv4_ipv6_unicast/test_bgp-default-ipv4-ipv6-unicast.py
diff --git a/tests/topotests/bgp-path-attributes-topo1/__init__.py b/tests/topotests/bgp_default_route/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-path-attributes-topo1/__init__.py
+++ b/tests/topotests/bgp_default_route/__init__.py
diff --git a/tests/topotests/bgp_default-route/r1/bgpd.conf b/tests/topotests/bgp_default_route/r1/bgpd.conf
index 8699d62ff2..8699d62ff2 100644
--- a/tests/topotests/bgp_default-route/r1/bgpd.conf
+++ b/tests/topotests/bgp_default_route/r1/bgpd.conf
diff --git a/tests/topotests/bgp_default-route/r1/zebra.conf b/tests/topotests/bgp_default_route/r1/zebra.conf
index 0a283c06d5..0a283c06d5 100644
--- a/tests/topotests/bgp_default-route/r1/zebra.conf
+++ b/tests/topotests/bgp_default_route/r1/zebra.conf
diff --git a/tests/topotests/bgp_default-route/r2/bgpd.conf b/tests/topotests/bgp_default_route/r2/bgpd.conf
index 00c96cc58b..00c96cc58b 100644
--- a/tests/topotests/bgp_default-route/r2/bgpd.conf
+++ b/tests/topotests/bgp_default_route/r2/bgpd.conf
diff --git a/tests/topotests/bgp_default-route/r2/zebra.conf b/tests/topotests/bgp_default_route/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp_default-route/r2/zebra.conf
+++ b/tests/topotests/bgp_default_route/r2/zebra.conf
diff --git a/tests/topotests/bgp_default-route/test_bgp_default-originate.py b/tests/topotests/bgp_default_route/test_bgp_default-originate.py
index d8de0f0ac6..d8de0f0ac6 100644
--- a/tests/topotests/bgp_default-route/test_bgp_default-originate.py
+++ b/tests/topotests/bgp_default_route/test_bgp_default-originate.py
diff --git a/tests/topotests/bgp-prefix-list-topo1/__init__.py b/tests/topotests/bgp_default_route_route_map_match/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-prefix-list-topo1/__init__.py
+++ b/tests/topotests/bgp_default_route_route_map_match/__init__.py
diff --git a/tests/topotests/bgp_default-route_route-map_match/r1/bgpd.conf b/tests/topotests/bgp_default_route_route_map_match/r1/bgpd.conf
index 97b440f5ce..97b440f5ce 100644
--- a/tests/topotests/bgp_default-route_route-map_match/r1/bgpd.conf
+++ b/tests/topotests/bgp_default_route_route_map_match/r1/bgpd.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match/r1/zebra.conf b/tests/topotests/bgp_default_route_route_map_match/r1/zebra.conf
index 9e581a7be7..9e581a7be7 100644
--- a/tests/topotests/bgp_default-route_route-map_match/r1/zebra.conf
+++ b/tests/topotests/bgp_default_route_route_map_match/r1/zebra.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match/r2/bgpd.conf b/tests/topotests/bgp_default_route_route_map_match/r2/bgpd.conf
index 00c96cc58b..00c96cc58b 100644
--- a/tests/topotests/bgp_default-route_route-map_match/r2/bgpd.conf
+++ b/tests/topotests/bgp_default_route_route_map_match/r2/bgpd.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match/r2/zebra.conf b/tests/topotests/bgp_default_route_route_map_match/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp_default-route_route-map_match/r2/zebra.conf
+++ b/tests/topotests/bgp_default_route_route_map_match/r2/zebra.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match/test_bgp_default-originate_route-map_match.py b/tests/topotests/bgp_default_route_route_map_match/test_bgp_default-originate_route-map_match.py
index 089c9a964e..089c9a964e 100644
--- a/tests/topotests/bgp_default-route_route-map_match/test_bgp_default-originate_route-map_match.py
+++ b/tests/topotests/bgp_default_route_route_map_match/test_bgp_default-originate_route-map_match.py
diff --git a/tests/topotests/bgp_aggregate-address_origin/__init__.py b/tests/topotests/bgp_default_route_route_map_match_set/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_aggregate-address_origin/__init__.py
+++ b/tests/topotests/bgp_default_route_route_map_match_set/__init__.py
diff --git a/tests/topotests/bgp_default-route_route-map_match_set/r1/bgpd.conf b/tests/topotests/bgp_default_route_route_map_match_set/r1/bgpd.conf
index 6ef8b1c0f4..6ef8b1c0f4 100644
--- a/tests/topotests/bgp_default-route_route-map_match_set/r1/bgpd.conf
+++ b/tests/topotests/bgp_default_route_route_map_match_set/r1/bgpd.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match_set/r1/zebra.conf b/tests/topotests/bgp_default_route_route_map_match_set/r1/zebra.conf
index 9e581a7be7..9e581a7be7 100644
--- a/tests/topotests/bgp_default-route_route-map_match_set/r1/zebra.conf
+++ b/tests/topotests/bgp_default_route_route_map_match_set/r1/zebra.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match_set/r2/bgpd.conf b/tests/topotests/bgp_default_route_route_map_match_set/r2/bgpd.conf
index 00c96cc58b..00c96cc58b 100644
--- a/tests/topotests/bgp_default-route_route-map_match_set/r2/bgpd.conf
+++ b/tests/topotests/bgp_default_route_route_map_match_set/r2/bgpd.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match_set/r2/zebra.conf b/tests/topotests/bgp_default_route_route_map_match_set/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp_default-route_route-map_match_set/r2/zebra.conf
+++ b/tests/topotests/bgp_default_route_route_map_match_set/r2/zebra.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match_set/test_bgp_default-originate_route-map_match_set.py b/tests/topotests/bgp_default_route_route_map_match_set/test_bgp_default-originate_route-map_match_set.py
index d9ea5db278..d9ea5db278 100644
--- a/tests/topotests/bgp_default-route_route-map_match_set/test_bgp_default-originate_route-map_match_set.py
+++ b/tests/topotests/bgp_default_route_route_map_match_set/test_bgp_default-originate_route-map_match_set.py
diff --git a/tests/topotests/bgp_aggregate-address_route-map/__init__.py b/tests/topotests/bgp_default_route_route_map_set/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_aggregate-address_route-map/__init__.py
+++ b/tests/topotests/bgp_default_route_route_map_set/__init__.py
diff --git a/tests/topotests/bgp_default-route_route-map_set/r1/bgpd.conf b/tests/topotests/bgp_default_route_route_map_set/r1/bgpd.conf
index cb07ea9fdf..cb07ea9fdf 100644
--- a/tests/topotests/bgp_default-route_route-map_set/r1/bgpd.conf
+++ b/tests/topotests/bgp_default_route_route_map_set/r1/bgpd.conf
diff --git a/tests/topotests/bgp_default-route_route-map_set/r1/zebra.conf b/tests/topotests/bgp_default_route_route_map_set/r1/zebra.conf
index 0a283c06d5..0a283c06d5 100644
--- a/tests/topotests/bgp_default-route_route-map_set/r1/zebra.conf
+++ b/tests/topotests/bgp_default_route_route_map_set/r1/zebra.conf
diff --git a/tests/topotests/bgp_default-route_route-map_set/r2/bgpd.conf b/tests/topotests/bgp_default_route_route_map_set/r2/bgpd.conf
index 00c96cc58b..00c96cc58b 100644
--- a/tests/topotests/bgp_default-route_route-map_set/r2/bgpd.conf
+++ b/tests/topotests/bgp_default_route_route_map_set/r2/bgpd.conf
diff --git a/tests/topotests/bgp_default-route_route-map_set/r2/zebra.conf b/tests/topotests/bgp_default_route_route_map_set/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp_default-route_route-map_set/r2/zebra.conf
+++ b/tests/topotests/bgp_default_route_route_map_set/r2/zebra.conf
diff --git a/tests/topotests/bgp_default-route_route-map_set/test_bgp_default-originate_route-map_set.py b/tests/topotests/bgp_default_route_route_map_set/test_bgp_default-originate_route-map_set.py
index 9a22c58b16..9a22c58b16 100644
--- a/tests/topotests/bgp_default-route_route-map_set/test_bgp_default-originate_route-map_set.py
+++ b/tests/topotests/bgp_default_route_route_map_set/test_bgp_default-originate_route-map_set.py
diff --git a/tests/topotests/bgp_comm-list_delete/__init__.py b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_comm-list_delete/__init__.py
+++ b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/__init__.py
diff --git a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r1/bgpd.conf b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r1/bgpd.conf
index c320bb5d11..c320bb5d11 100644
--- a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r1/bgpd.conf
+++ b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r1/bgpd.conf
diff --git a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r1/zebra.conf b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r1/zebra.conf
index 1782edc2a5..1782edc2a5 100644
--- a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r1/zebra.conf
+++ b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r1/zebra.conf
diff --git a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r2/bgpd.conf b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r2/bgpd.conf
index cb712e9a8d..cb712e9a8d 100644
--- a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r2/bgpd.conf
+++ b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r2/bgpd.conf
diff --git a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r2/zebra.conf b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r2/zebra.conf
index 968171e7b9..968171e7b9 100644
--- a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r2/zebra.conf
+++ b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r2/zebra.conf
diff --git a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r3/bgpd.conf b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r3/bgpd.conf
index a6e3260d15..a6e3260d15 100644
--- a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r3/bgpd.conf
+++ b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r3/bgpd.conf
diff --git a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r3/zebra.conf b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r3/zebra.conf
index ddcf862132..ddcf862132 100644
--- a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/r3/zebra.conf
+++ b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/r3/zebra.conf
diff --git a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/test_bgp-ebgp-common-subnet-nexthop-unchanged.py b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/test_bgp-ebgp-common-subnet-nexthop-unchanged.py
index 3b99065fe0..3b99065fe0 100644
--- a/tests/topotests/bgp-ebgp-common-subnet-nexthop-unchanged/test_bgp-ebgp-common-subnet-nexthop-unchanged.py
+++ b/tests/topotests/bgp_ebgp_common_subnet_nexthop_unchanged/test_bgp-ebgp-common-subnet-nexthop-unchanged.py
diff --git a/tests/topotests/bgp_default-route/__init__.py b/tests/topotests/bgp_ecmp_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_default-route/__init__.py
+++ b/tests/topotests/bgp_ecmp_topo1/__init__.py
diff --git a/tests/topotests/bgp-ecmp-topo1/bgp-ecmp-topo1.dot b/tests/topotests/bgp_ecmp_topo1/bgp-ecmp-topo1.dot
index 90295e199d..90295e199d 100644
--- a/tests/topotests/bgp-ecmp-topo1/bgp-ecmp-topo1.dot
+++ b/tests/topotests/bgp_ecmp_topo1/bgp-ecmp-topo1.dot
diff --git a/tests/topotests/bgp-ecmp-topo1/bgp-ecmp-topo1.pdf b/tests/topotests/bgp_ecmp_topo1/bgp-ecmp-topo1.pdf
index b4d4f6a5e5..b4d4f6a5e5 100644
--- a/tests/topotests/bgp-ecmp-topo1/bgp-ecmp-topo1.pdf
+++ b/tests/topotests/bgp_ecmp_topo1/bgp-ecmp-topo1.pdf
Binary files differ
diff --git a/tests/topotests/bgp-ecmp-topo1/exabgp.env b/tests/topotests/bgp_ecmp_topo1/exabgp.env
index a328e04962..a328e04962 100644
--- a/tests/topotests/bgp-ecmp-topo1/exabgp.env
+++ b/tests/topotests/bgp_ecmp_topo1/exabgp.env
diff --git a/tests/topotests/bgp-ecmp-topo1/peer1/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer1/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer1/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer1/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer1/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer1/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer1/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer1/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer1/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer1/exabgp.cfg
index 2d0ca89f0f..2d0ca89f0f 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer1/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer1/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer10/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer10/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer10/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer10/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer10/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer10/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer10/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer10/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer10/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer10/exabgp.cfg
index 0c842a0e7f..0c842a0e7f 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer10/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer10/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer11/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer11/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer11/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer11/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer11/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer11/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer11/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer11/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer11/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer11/exabgp.cfg
index 936dc572bd..936dc572bd 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer11/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer11/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer12/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer12/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer12/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer12/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer12/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer12/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer12/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer12/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer12/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer12/exabgp.cfg
index 56b33eae8e..56b33eae8e 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer12/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer12/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer13/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer13/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer13/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer13/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer13/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer13/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer13/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer13/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer13/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer13/exabgp.cfg
index b933ffb5cf..b933ffb5cf 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer13/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer13/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer14/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer14/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer14/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer14/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer14/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer14/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer14/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer14/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer14/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer14/exabgp.cfg
index bcfa41eb2e..bcfa41eb2e 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer14/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer14/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer15/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer15/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer15/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer15/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer15/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer15/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer15/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer15/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer15/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer15/exabgp.cfg
index 022e835798..022e835798 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer15/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer15/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer16/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer16/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer16/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer16/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer16/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer16/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer16/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer16/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer16/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer16/exabgp.cfg
index 0649202f1f..0649202f1f 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer16/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer16/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer17/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer17/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer17/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer17/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer17/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer17/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer17/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer17/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer17/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer17/exabgp.cfg
index 0aeeed9d95..0aeeed9d95 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer17/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer17/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer18/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer18/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer18/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer18/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer18/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer18/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer18/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer18/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer18/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer18/exabgp.cfg
index 352c030eda..352c030eda 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer18/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer18/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer19/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer19/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer19/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer19/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer19/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer19/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer19/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer19/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer19/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer19/exabgp.cfg
index 9913c226f6..9913c226f6 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer19/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer19/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer2/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer2/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer2/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer2/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer2/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer2/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer2/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer2/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer2/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer2/exabgp.cfg
index 46b436d2af..46b436d2af 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer2/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer2/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer20/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer20/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer20/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer20/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer20/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer20/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer20/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer20/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer20/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer20/exabgp.cfg
index 17fb816a75..17fb816a75 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer20/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer20/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer3/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer3/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer3/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer3/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer3/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer3/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer3/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer3/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer3/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer3/exabgp.cfg
index acd57756b9..acd57756b9 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer3/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer3/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer4/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer4/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer4/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer4/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer4/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer4/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer4/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer4/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer4/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer4/exabgp.cfg
index 4c9a989b5a..4c9a989b5a 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer4/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer4/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer5/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer5/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer5/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer5/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer5/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer5/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer5/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer5/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer5/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer5/exabgp.cfg
index eba2aae378..eba2aae378 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer5/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer5/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer6/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer6/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer6/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer6/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer6/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer6/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer6/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer6/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer6/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer6/exabgp.cfg
index 38b6af0e85..38b6af0e85 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer6/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer6/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer7/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer7/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer7/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer7/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer7/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer7/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer7/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer7/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer7/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer7/exabgp.cfg
index 7631e43750..7631e43750 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer7/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer7/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer8/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer8/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer8/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer8/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer8/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer8/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer8/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer8/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer8/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer8/exabgp.cfg
index 1cd1cd9024..1cd1cd9024 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer8/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer8/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/peer9/exa-receive.py b/tests/topotests/bgp_ecmp_topo1/peer9/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer9/exa-receive.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer9/exa-receive.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer9/exa-send.py b/tests/topotests/bgp_ecmp_topo1/peer9/exa-send.py
index d9ae3d1906..d9ae3d1906 100755
--- a/tests/topotests/bgp-ecmp-topo1/peer9/exa-send.py
+++ b/tests/topotests/bgp_ecmp_topo1/peer9/exa-send.py
diff --git a/tests/topotests/bgp-ecmp-topo1/peer9/exabgp.cfg b/tests/topotests/bgp_ecmp_topo1/peer9/exabgp.cfg
index 5771553962..5771553962 100644
--- a/tests/topotests/bgp-ecmp-topo1/peer9/exabgp.cfg
+++ b/tests/topotests/bgp_ecmp_topo1/peer9/exabgp.cfg
diff --git a/tests/topotests/bgp-ecmp-topo1/r1/bgpd.conf b/tests/topotests/bgp_ecmp_topo1/r1/bgpd.conf
index 49981ac589..49981ac589 100644
--- a/tests/topotests/bgp-ecmp-topo1/r1/bgpd.conf
+++ b/tests/topotests/bgp_ecmp_topo1/r1/bgpd.conf
diff --git a/tests/topotests/bgp-ecmp-topo1/r1/summary.txt b/tests/topotests/bgp_ecmp_topo1/r1/summary.txt
index f0929536d3..f0929536d3 100644
--- a/tests/topotests/bgp-ecmp-topo1/r1/summary.txt
+++ b/tests/topotests/bgp_ecmp_topo1/r1/summary.txt
diff --git a/tests/topotests/bgp-ecmp-topo1/r1/summary20.txt b/tests/topotests/bgp_ecmp_topo1/r1/summary20.txt
index 9015f485f8..9015f485f8 100644
--- a/tests/topotests/bgp-ecmp-topo1/r1/summary20.txt
+++ b/tests/topotests/bgp_ecmp_topo1/r1/summary20.txt
diff --git a/tests/topotests/bgp-ecmp-topo1/r1/zebra.conf b/tests/topotests/bgp_ecmp_topo1/r1/zebra.conf
index 77c76cd490..77c76cd490 100644
--- a/tests/topotests/bgp-ecmp-topo1/r1/zebra.conf
+++ b/tests/topotests/bgp_ecmp_topo1/r1/zebra.conf
diff --git a/tests/topotests/bgp-ecmp-topo1/test_bgp_ecmp_topo1.py b/tests/topotests/bgp_ecmp_topo1/test_bgp_ecmp_topo1.py
index 75506d1a51..75506d1a51 100644
--- a/tests/topotests/bgp-ecmp-topo1/test_bgp_ecmp_topo1.py
+++ b/tests/topotests/bgp_ecmp_topo1/test_bgp_ecmp_topo1.py
diff --git a/tests/topotests/bgp-ecmp-topo2/ebgp_ecmp_topo2.json b/tests/topotests/bgp_ecmp_topo2/ebgp_ecmp_topo2.json
index 34f11c0a29..34f11c0a29 100755
--- a/tests/topotests/bgp-ecmp-topo2/ebgp_ecmp_topo2.json
+++ b/tests/topotests/bgp_ecmp_topo2/ebgp_ecmp_topo2.json
diff --git a/tests/topotests/bgp-ecmp-topo2/ibgp_ecmp_topo2.json b/tests/topotests/bgp_ecmp_topo2/ibgp_ecmp_topo2.json
index 9eea9073c7..9eea9073c7 100755
--- a/tests/topotests/bgp-ecmp-topo2/ibgp_ecmp_topo2.json
+++ b/tests/topotests/bgp_ecmp_topo2/ibgp_ecmp_topo2.json
diff --git a/tests/topotests/bgp-ecmp-topo2/test_ebgp_ecmp_topo2.py b/tests/topotests/bgp_ecmp_topo2/test_ebgp_ecmp_topo2.py
index fffcbbd0ef..fffcbbd0ef 100644
--- a/tests/topotests/bgp-ecmp-topo2/test_ebgp_ecmp_topo2.py
+++ b/tests/topotests/bgp_ecmp_topo2/test_ebgp_ecmp_topo2.py
diff --git a/tests/topotests/bgp-ecmp-topo2/test_ibgp_ecmp_topo2.py b/tests/topotests/bgp_ecmp_topo2/test_ibgp_ecmp_topo2.py
index 342a0a4b2f..342a0a4b2f 100644
--- a/tests/topotests/bgp-ecmp-topo2/test_ibgp_ecmp_topo2.py
+++ b/tests/topotests/bgp_ecmp_topo2/test_ibgp_ecmp_topo2.py
diff --git a/tests/topotests/bgp-evpn-mh/evpn-mh-topo-tests.pdf b/tests/topotests/bgp_evpn_mh/evpn-mh-topo-tests.pdf
index 8858e21496..8858e21496 100644
--- a/tests/topotests/bgp-evpn-mh/evpn-mh-topo-tests.pdf
+++ b/tests/topotests/bgp_evpn_mh/evpn-mh-topo-tests.pdf
Binary files differ
diff --git a/tests/topotests/bgp-evpn-mh/hostd11/evpn.conf b/tests/topotests/bgp_evpn_mh/hostd11/evpn.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd11/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd11/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd11/pim.conf b/tests/topotests/bgp_evpn_mh/hostd11/pim.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd11/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd11/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd11/zebra.conf b/tests/topotests/bgp_evpn_mh/hostd11/zebra.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd11/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd11/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd12/evpn.conf b/tests/topotests/bgp_evpn_mh/hostd12/evpn.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd12/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd12/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd12/pim.conf b/tests/topotests/bgp_evpn_mh/hostd12/pim.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd12/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd12/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd12/zebra.conf b/tests/topotests/bgp_evpn_mh/hostd12/zebra.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd12/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd12/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd21/evpn.conf b/tests/topotests/bgp_evpn_mh/hostd21/evpn.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd21/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd21/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd21/pim.conf b/tests/topotests/bgp_evpn_mh/hostd21/pim.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd21/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd21/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd21/zebra.conf b/tests/topotests/bgp_evpn_mh/hostd21/zebra.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd21/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd21/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd22/evpn.conf b/tests/topotests/bgp_evpn_mh/hostd22/evpn.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd22/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd22/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd22/pim.conf b/tests/topotests/bgp_evpn_mh/hostd22/pim.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd22/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd22/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/hostd22/zebra.conf b/tests/topotests/bgp_evpn_mh/hostd22/zebra.conf
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp-evpn-mh/hostd22/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/hostd22/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/spine1/evpn.conf b/tests/topotests/bgp_evpn_mh/spine1/evpn.conf
index 2e26f60f44..2e26f60f44 100644
--- a/tests/topotests/bgp-evpn-mh/spine1/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/spine1/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/spine1/pim.conf b/tests/topotests/bgp_evpn_mh/spine1/pim.conf
index 68e686e8c7..68e686e8c7 100644
--- a/tests/topotests/bgp-evpn-mh/spine1/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/spine1/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/spine1/zebra.conf b/tests/topotests/bgp_evpn_mh/spine1/zebra.conf
index 80e9e5a263..80e9e5a263 100644
--- a/tests/topotests/bgp-evpn-mh/spine1/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/spine1/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/spine2/evpn.conf b/tests/topotests/bgp_evpn_mh/spine2/evpn.conf
index ec2e789276..ec2e789276 100644
--- a/tests/topotests/bgp-evpn-mh/spine2/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/spine2/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/spine2/pim.conf b/tests/topotests/bgp_evpn_mh/spine2/pim.conf
index c1566240e6..c1566240e6 100644
--- a/tests/topotests/bgp-evpn-mh/spine2/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/spine2/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/spine2/zebra.conf b/tests/topotests/bgp_evpn_mh/spine2/zebra.conf
index 1cd1df8c81..1cd1df8c81 100644
--- a/tests/topotests/bgp-evpn-mh/spine2/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/spine2/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/test_evpn_mh.py b/tests/topotests/bgp_evpn_mh/test_evpn_mh.py
index f389632b1e..f389632b1e 100644
--- a/tests/topotests/bgp-evpn-mh/test_evpn_mh.py
+++ b/tests/topotests/bgp_evpn_mh/test_evpn_mh.py
diff --git a/tests/topotests/bgp-evpn-mh/torm11/evpn.conf b/tests/topotests/bgp_evpn_mh/torm11/evpn.conf
index 01f4b65704..01f4b65704 100644
--- a/tests/topotests/bgp-evpn-mh/torm11/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/torm11/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm11/pim.conf b/tests/topotests/bgp_evpn_mh/torm11/pim.conf
index fbba735873..fbba735873 100644
--- a/tests/topotests/bgp-evpn-mh/torm11/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/torm11/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm11/zebra.conf b/tests/topotests/bgp_evpn_mh/torm11/zebra.conf
index 33e89c06ae..33e89c06ae 100644
--- a/tests/topotests/bgp-evpn-mh/torm11/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/torm11/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm12/evpn.conf b/tests/topotests/bgp_evpn_mh/torm12/evpn.conf
index 2c13024bbc..2c13024bbc 100644
--- a/tests/topotests/bgp-evpn-mh/torm12/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/torm12/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm12/pim.conf b/tests/topotests/bgp_evpn_mh/torm12/pim.conf
index 3dd63b44ca..3dd63b44ca 100644
--- a/tests/topotests/bgp-evpn-mh/torm12/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/torm12/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm12/zebra.conf b/tests/topotests/bgp_evpn_mh/torm12/zebra.conf
index 419f62b2ac..419f62b2ac 100644
--- a/tests/topotests/bgp-evpn-mh/torm12/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/torm12/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm21/evpn.conf b/tests/topotests/bgp_evpn_mh/torm21/evpn.conf
index 2a2ba061c6..2a2ba061c6 100644
--- a/tests/topotests/bgp-evpn-mh/torm21/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/torm21/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm21/pim.conf b/tests/topotests/bgp_evpn_mh/torm21/pim.conf
index 71aa91a06d..71aa91a06d 100644
--- a/tests/topotests/bgp-evpn-mh/torm21/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/torm21/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm21/zebra.conf b/tests/topotests/bgp_evpn_mh/torm21/zebra.conf
index 525f5eb099..525f5eb099 100644
--- a/tests/topotests/bgp-evpn-mh/torm21/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/torm21/zebra.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm22/evpn.conf b/tests/topotests/bgp_evpn_mh/torm22/evpn.conf
index 432135c94a..432135c94a 100644
--- a/tests/topotests/bgp-evpn-mh/torm22/evpn.conf
+++ b/tests/topotests/bgp_evpn_mh/torm22/evpn.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm22/pim.conf b/tests/topotests/bgp_evpn_mh/torm22/pim.conf
index 46f330f5cd..46f330f5cd 100644
--- a/tests/topotests/bgp-evpn-mh/torm22/pim.conf
+++ b/tests/topotests/bgp_evpn_mh/torm22/pim.conf
diff --git a/tests/topotests/bgp-evpn-mh/torm22/zebra.conf b/tests/topotests/bgp_evpn_mh/torm22/zebra.conf
index 398064df6c..398064df6c 100644
--- a/tests/topotests/bgp-evpn-mh/torm22/zebra.conf
+++ b/tests/topotests/bgp_evpn_mh/torm22/zebra.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/P1/bgpd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/P1/bgpd.conf
index cdf4cb4feb..cdf4cb4feb 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/P1/bgpd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/P1/bgpd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/P1/ospfd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/P1/ospfd.conf
index 2db7edb806..2db7edb806 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/P1/ospfd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/P1/ospfd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/P1/zebra.conf b/tests/topotests/bgp_evpn_vxlan_topo1/P1/zebra.conf
index 95b5da8402..95b5da8402 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/P1/zebra.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/P1/zebra.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/PE1/bgpd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/PE1/bgpd.conf
index 991a1e7e56..991a1e7e56 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/PE1/bgpd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/PE1/bgpd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/PE1/evpn.vni.json b/tests/topotests/bgp_evpn_vxlan_topo1/PE1/evpn.vni.json
index e500a1d85c..e500a1d85c 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/PE1/evpn.vni.json
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/PE1/evpn.vni.json
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/PE1/ospfd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/PE1/ospfd.conf
index f1c2b42dc1..f1c2b42dc1 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/PE1/ospfd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/PE1/ospfd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/PE1/zebra.conf b/tests/topotests/bgp_evpn_vxlan_topo1/PE1/zebra.conf
index e2699475c9..e2699475c9 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/PE1/zebra.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/PE1/zebra.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/PE2/bgpd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/PE2/bgpd.conf
index 52f8687bc1..52f8687bc1 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/PE2/bgpd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/PE2/bgpd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/PE2/evpn.vni.json b/tests/topotests/bgp_evpn_vxlan_topo1/PE2/evpn.vni.json
index 0a56a235bd..0a56a235bd 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/PE2/evpn.vni.json
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/PE2/evpn.vni.json
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/PE2/ospfd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/PE2/ospfd.conf
index 065c993303..065c993303 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/PE2/ospfd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/PE2/ospfd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/PE2/zebra.conf b/tests/topotests/bgp_evpn_vxlan_topo1/PE2/zebra.conf
index 9738916ab0..9738916ab0 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/PE2/zebra.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/PE2/zebra.conf
diff --git a/tests/topotests/bgp_default-route_route-map_match/__init__.py b/tests/topotests/bgp_evpn_vxlan_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_default-route_route-map_match/__init__.py
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/__init__.py
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/host1/bgpd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/host1/bgpd.conf
index cdf4cb4feb..cdf4cb4feb 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/host1/bgpd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/host1/bgpd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/host1/ospfd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/host1/ospfd.conf
index cdf4cb4feb..cdf4cb4feb 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/host1/ospfd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/host1/ospfd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/host1/zebra.conf b/tests/topotests/bgp_evpn_vxlan_topo1/host1/zebra.conf
index 91fae9eeba..91fae9eeba 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/host1/zebra.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/host1/zebra.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/host2/bgpd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/host2/bgpd.conf
index cdf4cb4feb..cdf4cb4feb 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/host2/bgpd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/host2/bgpd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/host2/ospfd.conf b/tests/topotests/bgp_evpn_vxlan_topo1/host2/ospfd.conf
index cdf4cb4feb..cdf4cb4feb 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/host2/ospfd.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/host2/ospfd.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/host2/zebra.conf b/tests/topotests/bgp_evpn_vxlan_topo1/host2/zebra.conf
index df9adeb3b5..df9adeb3b5 100644
--- a/tests/topotests/bgp-evpn-vxlan_topo1/host2/zebra.conf
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/host2/zebra.conf
diff --git a/tests/topotests/bgp-evpn-vxlan_topo1/test_bgp_evpn_vxlan.py b/tests/topotests/bgp_evpn_vxlan_topo1/test_bgp_evpn_vxlan.py
index 086bad6481..086bad6481 100755
--- a/tests/topotests/bgp-evpn-vxlan_topo1/test_bgp_evpn_vxlan.py
+++ b/tests/topotests/bgp_evpn_vxlan_topo1/test_bgp_evpn_vxlan.py
diff --git a/tests/topotests/bgp_flowspec/test_bgp_flowspec_topo.py b/tests/topotests/bgp_flowspec/test_bgp_flowspec_topo.py
index a772a2aab1..fdd84fcd40 100644
--- a/tests/topotests/bgp_flowspec/test_bgp_flowspec_topo.py
+++ b/tests/topotests/bgp_flowspec/test_bgp_flowspec_topo.py
@@ -71,6 +71,10 @@ from lib.lutil import luCommand
# Required to instantiate the topology builder class.
from mininet.topo import Topo
+
+pytestmark = [pytest.mark.bgpd]
+
+
#####################################################
##
## Network Topology Definition
diff --git a/tests/topotests/bgp_default-route_route-map_match_set/__init__.py b/tests/topotests/bgp_path_attributes_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_default-route_route-map_match_set/__init__.py
+++ b/tests/topotests/bgp_path_attributes_topo1/__init__.py
diff --git a/tests/topotests/bgp-path-attributes-topo1/bgp_path_attributes.json b/tests/topotests/bgp_path_attributes_topo1/bgp_path_attributes.json
index de2bffa33d..de2bffa33d 100644
--- a/tests/topotests/bgp-path-attributes-topo1/bgp_path_attributes.json
+++ b/tests/topotests/bgp_path_attributes_topo1/bgp_path_attributes.json
diff --git a/tests/topotests/bgp-path-attributes-topo1/test_bgp_path_attributes.py b/tests/topotests/bgp_path_attributes_topo1/test_bgp_path_attributes.py
index a9541a55c5..a9541a55c5 100644
--- a/tests/topotests/bgp-path-attributes-topo1/test_bgp_path_attributes.py
+++ b/tests/topotests/bgp_path_attributes_topo1/test_bgp_path_attributes.py
diff --git a/tests/topotests/bgp_default-route_route-map_set/__init__.py b/tests/topotests/bgp_peer_group/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_default-route_route-map_set/__init__.py
+++ b/tests/topotests/bgp_peer_group/__init__.py
diff --git a/tests/topotests/bgp_peer-group/r1/bgpd.conf b/tests/topotests/bgp_peer_group/r1/bgpd.conf
index 19b490a359..19b490a359 100644
--- a/tests/topotests/bgp_peer-group/r1/bgpd.conf
+++ b/tests/topotests/bgp_peer_group/r1/bgpd.conf
diff --git a/tests/topotests/bgp_peer-group/r1/zebra.conf b/tests/topotests/bgp_peer_group/r1/zebra.conf
index e2c399e536..e2c399e536 100644
--- a/tests/topotests/bgp_peer-group/r1/zebra.conf
+++ b/tests/topotests/bgp_peer_group/r1/zebra.conf
diff --git a/tests/topotests/bgp_peer-group/r2/bgpd.conf b/tests/topotests/bgp_peer_group/r2/bgpd.conf
index 0880ee9fae..0880ee9fae 100644
--- a/tests/topotests/bgp_peer-group/r2/bgpd.conf
+++ b/tests/topotests/bgp_peer_group/r2/bgpd.conf
diff --git a/tests/topotests/bgp_peer-group/r2/zebra.conf b/tests/topotests/bgp_peer_group/r2/zebra.conf
index 606c17bec9..606c17bec9 100644
--- a/tests/topotests/bgp_peer-group/r2/zebra.conf
+++ b/tests/topotests/bgp_peer_group/r2/zebra.conf
diff --git a/tests/topotests/bgp_peer-group/r3/bgpd.conf b/tests/topotests/bgp_peer_group/r3/bgpd.conf
index eb2fca15fb..eb2fca15fb 100644
--- a/tests/topotests/bgp_peer-group/r3/bgpd.conf
+++ b/tests/topotests/bgp_peer_group/r3/bgpd.conf
diff --git a/tests/topotests/bgp_peer-group/r3/zebra.conf b/tests/topotests/bgp_peer_group/r3/zebra.conf
index e9fdfb70c5..e9fdfb70c5 100644
--- a/tests/topotests/bgp_peer-group/r3/zebra.conf
+++ b/tests/topotests/bgp_peer_group/r3/zebra.conf
diff --git a/tests/topotests/bgp_peer-group/test_bgp_peer-group.py b/tests/topotests/bgp_peer_group/test_bgp_peer-group.py
index 21dc725793..21dc725793 100644
--- a/tests/topotests/bgp_peer-group/test_bgp_peer-group.py
+++ b/tests/topotests/bgp_peer_group/test_bgp_peer-group.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/exabgp.env b/tests/topotests/bgp_peer_type_multipath_relax/exabgp.env
index 6c554f5fa8..6c554f5fa8 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/exabgp.env
+++ b/tests/topotests/bgp_peer_type_multipath_relax/exabgp.env
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer1/exa-receive.py b/tests/topotests/bgp_peer_type_multipath_relax/peer1/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer1/exa-receive.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer1/exa-receive.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer1/exa_readpipe.py b/tests/topotests/bgp_peer_type_multipath_relax/peer1/exa_readpipe.py
index 9e689a27e3..9e689a27e3 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer1/exa_readpipe.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer1/exa_readpipe.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer1/exabgp.cfg b/tests/topotests/bgp_peer_type_multipath_relax/peer1/exabgp.cfg
index 4a7dc48126..4a7dc48126 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer1/exabgp.cfg
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer1/exabgp.cfg
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer2/exa-receive.py b/tests/topotests/bgp_peer_type_multipath_relax/peer2/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer2/exa-receive.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer2/exa-receive.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer2/exa_readpipe.py b/tests/topotests/bgp_peer_type_multipath_relax/peer2/exa_readpipe.py
index 9e689a27e3..9e689a27e3 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer2/exa_readpipe.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer2/exa_readpipe.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer2/exabgp.cfg b/tests/topotests/bgp_peer_type_multipath_relax/peer2/exabgp.cfg
index b53b054550..b53b054550 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer2/exabgp.cfg
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer2/exabgp.cfg
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer3/exa-receive.py b/tests/topotests/bgp_peer_type_multipath_relax/peer3/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer3/exa-receive.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer3/exa-receive.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer3/exa_readpipe.py b/tests/topotests/bgp_peer_type_multipath_relax/peer3/exa_readpipe.py
index 9e689a27e3..9e689a27e3 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer3/exa_readpipe.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer3/exa_readpipe.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer3/exabgp.cfg b/tests/topotests/bgp_peer_type_multipath_relax/peer3/exabgp.cfg
index 6a1cc2fb3f..6a1cc2fb3f 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer3/exabgp.cfg
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer3/exabgp.cfg
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer4/exa-receive.py b/tests/topotests/bgp_peer_type_multipath_relax/peer4/exa-receive.py
index 031ff455ca..031ff455ca 100755
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer4/exa-receive.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer4/exa-receive.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer4/exa_readpipe.py b/tests/topotests/bgp_peer_type_multipath_relax/peer4/exa_readpipe.py
index 9e689a27e3..9e689a27e3 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer4/exa_readpipe.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer4/exa_readpipe.py
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/peer4/exabgp.cfg b/tests/topotests/bgp_peer_type_multipath_relax/peer4/exabgp.cfg
index 2cc26cb80f..2cc26cb80f 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/peer4/exabgp.cfg
+++ b/tests/topotests/bgp_peer_type_multipath_relax/peer4/exabgp.cfg
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/bgpd.conf b/tests/topotests/bgp_peer_type_multipath_relax/r1/bgpd.conf
index 038f108aa8..038f108aa8 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/bgpd.conf
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/bgpd.conf
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/multipath.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/multipath.json
index 11dad786f2..11dad786f2 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/multipath.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/multipath.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/not-multipath.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/not-multipath.json
index c621832157..c621832157 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/not-multipath.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/not-multipath.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-eBGP-confed.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-eBGP-confed.json
index 22ec2c298b..22ec2c298b 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-eBGP-confed.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-eBGP-confed.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-eBGP-iBGP.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-eBGP-iBGP.json
index facddcda46..facddcda46 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-eBGP-iBGP.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-eBGP-iBGP.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-no-recursive.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-no-recursive.json
index 5399ceefcc..5399ceefcc 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-no-recursive.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-no-recursive.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-recursive.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-recursive.json
index 7da95aed1c..7da95aed1c 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1-recursive.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1-recursive.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1.json
index a90669a474..a90669a474 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix1.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix1.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-ip-route.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-ip-route.json
index 1bf38efcc5..1bf38efcc5 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-ip-route.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-ip-route.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-no-recursive.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-no-recursive.json
index 33d0f2d1ce..33d0f2d1ce 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-no-recursive.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-no-recursive.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-recursive.json b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-recursive.json
index 6ac2512a60..6ac2512a60 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/prefix3-recursive.json
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/prefix3-recursive.json
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r1/zebra.conf b/tests/topotests/bgp_peer_type_multipath_relax/r1/zebra.conf
index 911aa1c39d..911aa1c39d 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r1/zebra.conf
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r1/zebra.conf
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r2/bgpd.conf b/tests/topotests/bgp_peer_type_multipath_relax/r2/bgpd.conf
index 2362a19f26..2362a19f26 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r2/bgpd.conf
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r2/bgpd.conf
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r2/staticd.conf b/tests/topotests/bgp_peer_type_multipath_relax/r2/staticd.conf
index 35ebe0dc66..35ebe0dc66 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r2/staticd.conf
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r2/staticd.conf
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/r2/zebra.conf b/tests/topotests/bgp_peer_type_multipath_relax/r2/zebra.conf
index 900e7d4fbc..900e7d4fbc 100644
--- a/tests/topotests/bgp_peer-type_multipath-relax/r2/zebra.conf
+++ b/tests/topotests/bgp_peer_type_multipath_relax/r2/zebra.conf
diff --git a/tests/topotests/bgp_peer-type_multipath-relax/test_bgp_peer-type_multipath-relax.py b/tests/topotests/bgp_peer_type_multipath_relax/test_bgp_peer-type_multipath-relax.py
index 39a0beeb11..39a0beeb11 100755
--- a/tests/topotests/bgp_peer-type_multipath-relax/test_bgp_peer-type_multipath-relax.py
+++ b/tests/topotests/bgp_peer_type_multipath_relax/test_bgp_peer-type_multipath-relax.py
diff --git a/tests/topotests/bgp_peer-group/__init__.py b/tests/topotests/bgp_prefix_list_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_peer-group/__init__.py
+++ b/tests/topotests/bgp_prefix_list_topo1/__init__.py
diff --git a/tests/topotests/bgp-prefix-list-topo1/prefix_lists.json b/tests/topotests/bgp_prefix_list_topo1/prefix_lists.json
index 3bb07ad994..3bb07ad994 100644
--- a/tests/topotests/bgp-prefix-list-topo1/prefix_lists.json
+++ b/tests/topotests/bgp_prefix_list_topo1/prefix_lists.json
diff --git a/tests/topotests/bgp-prefix-list-topo1/test_prefix_lists.py b/tests/topotests/bgp_prefix_list_topo1/test_prefix_lists.py
index 22952f645c..22952f645c 100644
--- a/tests/topotests/bgp-prefix-list-topo1/test_prefix_lists.py
+++ b/tests/topotests/bgp_prefix_list_topo1/test_prefix_lists.py
diff --git a/tests/topotests/bgp_recursive_route_ebgp_multi_hop/test_bgp_recursive_route_ebgp_multi_hop.py b/tests/topotests/bgp_recursive_route_ebgp_multi_hop/test_bgp_recursive_route_ebgp_multi_hop.py
index c758c31dc1..e7d70f6d8e 100644
--- a/tests/topotests/bgp_recursive_route_ebgp_multi_hop/test_bgp_recursive_route_ebgp_multi_hop.py
+++ b/tests/topotests/bgp_recursive_route_ebgp_multi_hop/test_bgp_recursive_route_ebgp_multi_hop.py
@@ -287,7 +287,7 @@ def test_recursive_routes_iBGP_peer_p1(request):
input_dict_4,
next_hop=topo["routers"]["r3"]["links"]["r1"][addr_type].split("/")[0],
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -322,7 +322,7 @@ def test_recursive_routes_iBGP_peer_p1(request):
}
}
result = create_static_routes(tgen, input_dict_3)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -335,7 +335,7 @@ def test_recursive_routes_iBGP_peer_p1(request):
next_hop=topo["routers"]["r3"]["links"]["r1"][addr_type].split("/")[0],
protocol="bgp",
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -354,7 +354,7 @@ def test_recursive_routes_iBGP_peer_p1(request):
}
}
result = create_static_routes(tgen, input_dict_3)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -388,7 +388,7 @@ def test_recursive_routes_iBGP_peer_p1(request):
}
}
result = create_static_routes(tgen, input_dict_3)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -401,7 +401,7 @@ def test_recursive_routes_iBGP_peer_p1(request):
next_hop=topo["routers"]["r3"]["links"]["r1"][addr_type].split("/")[0],
protocol="bgp",
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -427,7 +427,7 @@ def test_recursive_routes_iBGP_peer_p1(request):
}
}
result = create_static_routes(tgen, input_dict_4)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -474,7 +474,7 @@ def test_recursive_routes_iBGP_peer_p1(request):
}
}
result = create_static_routes(tgen, input_dict_4)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -639,7 +639,7 @@ def test_next_hop_as_self_ip_p1(request):
input_dict_4,
next_hop=topo["routers"]["r2"]["links"]["r4"][addr_type].split("/")[0],
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -671,7 +671,7 @@ def test_next_hop_as_self_ip_p1(request):
input_dict_4,
next_hop=topo["routers"]["r2"]["links"]["r4"][addr_type].split("/")[0],
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
result = verify_rib(
@@ -1277,7 +1277,7 @@ def test_BGP_path_attributes_default_values_p1(request):
topo["routers"]["r3"]["links"]["r4"][addr_type].split("/")[0],
],
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -1298,7 +1298,7 @@ def test_BGP_path_attributes_default_values_p1(request):
rmap_name="rmap_pf",
input_dict=input_dict_4,
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -1402,7 +1402,7 @@ def test_BGP_path_attributes_default_values_p1(request):
rmap_name="rmap_pf",
input_dict=input_dict_4,
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -1478,7 +1478,7 @@ def test_BGP_path_attributes_default_values_p1(request):
input_dict=input_dict_4,
nexthop=None,
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
@@ -1859,7 +1859,7 @@ def test_BGP_active_standby_preemption_and_ecmp_p1(request):
topo["routers"]["r3"]["links"]["r4"][addr_type].split("/")[0],
],
)
- assert result is True, "Testcase : Failed \n Error : {}".format(
+ assert result is True, "Testcase {}: Failed \n Error : {}".format(
tc_name, result
)
diff --git a/tests/topotests/bgp-route-map/bgp_route_map_topo1.json b/tests/topotests/bgp_route_map/bgp_route_map_topo1.json
index e89263961d..e89263961d 100644
--- a/tests/topotests/bgp-route-map/bgp_route_map_topo1.json
+++ b/tests/topotests/bgp_route_map/bgp_route_map_topo1.json
diff --git a/tests/topotests/bgp-route-map/bgp_route_map_topo2.json b/tests/topotests/bgp_route_map/bgp_route_map_topo2.json
index c22a4c3ea7..c22a4c3ea7 100755
--- a/tests/topotests/bgp-route-map/bgp_route_map_topo2.json
+++ b/tests/topotests/bgp_route_map/bgp_route_map_topo2.json
diff --git a/tests/topotests/bgp-route-map/test_route_map_topo1.py b/tests/topotests/bgp_route_map/test_route_map_topo1.py
index 0158e24d31..0158e24d31 100644
--- a/tests/topotests/bgp-route-map/test_route_map_topo1.py
+++ b/tests/topotests/bgp_route_map/test_route_map_topo1.py
diff --git a/tests/topotests/bgp-route-map/test_route_map_topo2.py b/tests/topotests/bgp_route_map/test_route_map_topo2.py
index 958eceba62..958eceba62 100644
--- a/tests/topotests/bgp-route-map/test_route_map_topo2.py
+++ b/tests/topotests/bgp_route_map/test_route_map_topo2.py
diff --git a/tests/topotests/bgp_sender-as-path-loop-detection/__init__.py b/tests/topotests/bgp_sender_as_path_loop_detection/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_sender-as-path-loop-detection/__init__.py
+++ b/tests/topotests/bgp_sender_as_path_loop_detection/__init__.py
diff --git a/tests/topotests/bgp_sender-as-path-loop-detection/r1/bgpd.conf b/tests/topotests/bgp_sender_as_path_loop_detection/r1/bgpd.conf
index 719d76392d..719d76392d 100644
--- a/tests/topotests/bgp_sender-as-path-loop-detection/r1/bgpd.conf
+++ b/tests/topotests/bgp_sender_as_path_loop_detection/r1/bgpd.conf
diff --git a/tests/topotests/bgp_sender-as-path-loop-detection/r1/zebra.conf b/tests/topotests/bgp_sender_as_path_loop_detection/r1/zebra.conf
index 9904bb4e16..9904bb4e16 100644
--- a/tests/topotests/bgp_sender-as-path-loop-detection/r1/zebra.conf
+++ b/tests/topotests/bgp_sender_as_path_loop_detection/r1/zebra.conf
diff --git a/tests/topotests/bgp_sender-as-path-loop-detection/r2/bgpd.conf b/tests/topotests/bgp_sender_as_path_loop_detection/r2/bgpd.conf
index a4a654d7b5..a4a654d7b5 100644
--- a/tests/topotests/bgp_sender-as-path-loop-detection/r2/bgpd.conf
+++ b/tests/topotests/bgp_sender_as_path_loop_detection/r2/bgpd.conf
diff --git a/tests/topotests/bgp_sender-as-path-loop-detection/r2/zebra.conf b/tests/topotests/bgp_sender_as_path_loop_detection/r2/zebra.conf
index f0d357c5ff..f0d357c5ff 100644
--- a/tests/topotests/bgp_sender-as-path-loop-detection/r2/zebra.conf
+++ b/tests/topotests/bgp_sender_as_path_loop_detection/r2/zebra.conf
diff --git a/tests/topotests/bgp_sender-as-path-loop-detection/r3/bgpd.conf b/tests/topotests/bgp_sender_as_path_loop_detection/r3/bgpd.conf
index 2e24de0b2d..2e24de0b2d 100644
--- a/tests/topotests/bgp_sender-as-path-loop-detection/r3/bgpd.conf
+++ b/tests/topotests/bgp_sender_as_path_loop_detection/r3/bgpd.conf
diff --git a/tests/topotests/bgp_sender-as-path-loop-detection/r3/zebra.conf b/tests/topotests/bgp_sender_as_path_loop_detection/r3/zebra.conf
index a10fe3a3c7..a10fe3a3c7 100644
--- a/tests/topotests/bgp_sender-as-path-loop-detection/r3/zebra.conf
+++ b/tests/topotests/bgp_sender_as_path_loop_detection/r3/zebra.conf
diff --git a/tests/topotests/bgp_sender-as-path-loop-detection/test_bgp_sender-as-path-loop-detection.py b/tests/topotests/bgp_sender_as_path_loop_detection/test_bgp_sender-as-path-loop-detection.py
index dffe24f3a0..dffe24f3a0 100644
--- a/tests/topotests/bgp_sender-as-path-loop-detection/test_bgp_sender-as-path-loop-detection.py
+++ b/tests/topotests/bgp_sender_as_path_loop_detection/test_bgp_sender-as-path-loop-detection.py
diff --git a/tests/topotests/bgp_set_local-preference_add_subtract/__init__.py b/tests/topotests/bgp_set_local_preference_add_subtract/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/bgp_set_local-preference_add_subtract/__init__.py
+++ b/tests/topotests/bgp_set_local_preference_add_subtract/__init__.py
diff --git a/tests/topotests/bgp_set_local-preference_add_subtract/r1/bgpd.conf b/tests/topotests/bgp_set_local_preference_add_subtract/r1/bgpd.conf
index 57e2f5818a..57e2f5818a 100644
--- a/tests/topotests/bgp_set_local-preference_add_subtract/r1/bgpd.conf
+++ b/tests/topotests/bgp_set_local_preference_add_subtract/r1/bgpd.conf
diff --git a/tests/topotests/bgp_set_local-preference_add_subtract/r1/zebra.conf b/tests/topotests/bgp_set_local_preference_add_subtract/r1/zebra.conf
index 6e9b0b4a7e..6e9b0b4a7e 100644
--- a/tests/topotests/bgp_set_local-preference_add_subtract/r1/zebra.conf
+++ b/tests/topotests/bgp_set_local_preference_add_subtract/r1/zebra.conf
diff --git a/tests/topotests/bgp_set_local-preference_add_subtract/r2/bgpd.conf b/tests/topotests/bgp_set_local_preference_add_subtract/r2/bgpd.conf
index 82a01d4570..82a01d4570 100644
--- a/tests/topotests/bgp_set_local-preference_add_subtract/r2/bgpd.conf
+++ b/tests/topotests/bgp_set_local_preference_add_subtract/r2/bgpd.conf
diff --git a/tests/topotests/bgp_set_local-preference_add_subtract/r2/zebra.conf b/tests/topotests/bgp_set_local_preference_add_subtract/r2/zebra.conf
index 93e3590448..93e3590448 100644
--- a/tests/topotests/bgp_set_local-preference_add_subtract/r2/zebra.conf
+++ b/tests/topotests/bgp_set_local_preference_add_subtract/r2/zebra.conf
diff --git a/tests/topotests/bgp_set_local-preference_add_subtract/r3/bgpd.conf b/tests/topotests/bgp_set_local_preference_add_subtract/r3/bgpd.conf
index 65e092b0f2..65e092b0f2 100644
--- a/tests/topotests/bgp_set_local-preference_add_subtract/r3/bgpd.conf
+++ b/tests/topotests/bgp_set_local_preference_add_subtract/r3/bgpd.conf
diff --git a/tests/topotests/bgp_set_local-preference_add_subtract/r3/zebra.conf b/tests/topotests/bgp_set_local_preference_add_subtract/r3/zebra.conf
index b5e060c3d6..b5e060c3d6 100644
--- a/tests/topotests/bgp_set_local-preference_add_subtract/r3/zebra.conf
+++ b/tests/topotests/bgp_set_local_preference_add_subtract/r3/zebra.conf
diff --git a/tests/topotests/bgp_set_local-preference_add_subtract/test_bgp_set_local-preference_add_subtract.py b/tests/topotests/bgp_set_local_preference_add_subtract/test_bgp_set_local-preference_add_subtract.py
index af64648951..af64648951 100644
--- a/tests/topotests/bgp_set_local-preference_add_subtract/test_bgp_set_local-preference_add_subtract.py
+++ b/tests/topotests/bgp_set_local_preference_add_subtract/test_bgp_set_local-preference_add_subtract.py
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce1/bgpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce1/bgpd.conf
index b598666dfb..b598666dfb 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce1/bgpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce1/bgpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce1/snmpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce1/snmpd.conf
index 36218d3538..36218d3538 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce1/snmpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce1/snmpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce1/zebra.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce1/zebra.conf
index 8ad2ddc48c..8ad2ddc48c 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce1/zebra.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce1/zebra.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce2/bgpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce2/bgpd.conf
index e388ccba8a..e388ccba8a 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce2/bgpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce2/bgpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce2/snmpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce2/snmpd.conf
index 714585cb9b..714585cb9b 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce2/snmpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce2/snmpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce2/zebra.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce2/zebra.conf
index fa2e968e55..fa2e968e55 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce2/zebra.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce2/zebra.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce3/bgpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce3/bgpd.conf
index e388ccba8a..e388ccba8a 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce3/bgpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce3/bgpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce3/snmpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce3/snmpd.conf
index 36218d3538..36218d3538 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce3/snmpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce3/snmpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce3/zebra.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce3/zebra.conf
index ea91e21bad..ea91e21bad 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce3/zebra.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce3/zebra.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce4/bgpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce4/bgpd.conf
index e388ccba8a..e388ccba8a 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce4/bgpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce4/bgpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce4/snmpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce4/snmpd.conf
index 36218d3538..36218d3538 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce4/snmpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce4/snmpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/ce4/zebra.conf b/tests/topotests/bgp_snmp_mplsl3vpn/ce4/zebra.conf
index 0866fa9759..0866fa9759 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/ce4/zebra.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/ce4/zebra.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r1/bgpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r1/bgpd.conf
index 098e55d0ed..098e55d0ed 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r1/bgpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r1/bgpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r1/isisd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r1/isisd.conf
index b5ca993da3..b5ca993da3 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r1/isisd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r1/isisd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r1/snmpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r1/snmpd.conf
index c903c1ad2e..c903c1ad2e 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r1/snmpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r1/snmpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r1/zebra.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r1/zebra.conf
index 7228ae6bd2..7228ae6bd2 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r1/zebra.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r1/zebra.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r2/isisd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r2/isisd.conf
index 3dfa43831a..3dfa43831a 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r2/isisd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r2/isisd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r2/snmpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r2/snmpd.conf
index 0cfebc7238..0cfebc7238 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r2/snmpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r2/snmpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r2/zebra.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r2/zebra.conf
index 9bc4331bae..9bc4331bae 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r2/zebra.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r2/zebra.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r3/isisd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r3/isisd.conf
index 578ebafad6..578ebafad6 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r3/isisd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r3/isisd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r3/snmpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r3/snmpd.conf
index b9eb00ea52..b9eb00ea52 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r3/snmpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r3/snmpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r3/zebra.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r3/zebra.conf
index 4d2007e787..4d2007e787 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r3/zebra.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r3/zebra.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r4/bgpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r4/bgpd.conf
index 2a834c799e..2a834c799e 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r4/bgpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r4/bgpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r4/isisd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r4/isisd.conf
index 3e9e9af45f..3e9e9af45f 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r4/isisd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r4/isisd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r4/snmpd.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r4/snmpd.conf
index ec35f9f9c9..ec35f9f9c9 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r4/snmpd.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r4/snmpd.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/r4/zebra.conf b/tests/topotests/bgp_snmp_mplsl3vpn/r4/zebra.conf
index c48407c108..c48407c108 100644
--- a/tests/topotests/bgp-snmp-mplsl3vpn/r4/zebra.conf
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/r4/zebra.conf
diff --git a/tests/topotests/bgp-snmp-mplsl3vpn/test_bgp_snmp_mplsvpn.py b/tests/topotests/bgp_snmp_mplsl3vpn/test_bgp_snmp_mplsvpn.py
index b830e16b9a..b830e16b9a 100755
--- a/tests/topotests/bgp-snmp-mplsl3vpn/test_bgp_snmp_mplsvpn.py
+++ b/tests/topotests/bgp_snmp_mplsl3vpn/test_bgp_snmp_mplsvpn.py
diff --git a/tests/topotests/bgp-vrf-route-leak-basic/r1/bgpd.conf b/tests/topotests/bgp_vrf_route_leak_basic/r1/bgpd.conf
index 03dfbf9322..03dfbf9322 100644
--- a/tests/topotests/bgp-vrf-route-leak-basic/r1/bgpd.conf
+++ b/tests/topotests/bgp_vrf_route_leak_basic/r1/bgpd.conf
diff --git a/tests/topotests/bgp-vrf-route-leak-basic/r1/zebra.conf b/tests/topotests/bgp_vrf_route_leak_basic/r1/zebra.conf
index 35038557df..35038557df 100644
--- a/tests/topotests/bgp-vrf-route-leak-basic/r1/zebra.conf
+++ b/tests/topotests/bgp_vrf_route_leak_basic/r1/zebra.conf
diff --git a/tests/topotests/bgp-vrf-route-leak-basic/setup_vrfs b/tests/topotests/bgp_vrf_route_leak_basic/setup_vrfs
index fb67953fe3..fb67953fe3 100644
--- a/tests/topotests/bgp-vrf-route-leak-basic/setup_vrfs
+++ b/tests/topotests/bgp_vrf_route_leak_basic/setup_vrfs
diff --git a/tests/topotests/bgp-vrf-route-leak-basic/test_bgp-vrf-route-leak-basic.py b/tests/topotests/bgp_vrf_route_leak_basic/test_bgp-vrf-route-leak-basic.py
index 71f64e9b70..71f64e9b70 100644
--- a/tests/topotests/bgp-vrf-route-leak-basic/test_bgp-vrf-route-leak-basic.py
+++ b/tests/topotests/bgp_vrf_route_leak_basic/test_bgp-vrf-route-leak-basic.py
diff --git a/tests/topotests/eigrp-topo1/r1/eigrpd.conf b/tests/topotests/eigrp_topo1/r1/eigrpd.conf
index 6c800abd9b..6c800abd9b 100644
--- a/tests/topotests/eigrp-topo1/r1/eigrpd.conf
+++ b/tests/topotests/eigrp_topo1/r1/eigrpd.conf
diff --git a/tests/topotests/eigrp-topo1/r1/show_ip_eigrp.json b/tests/topotests/eigrp_topo1/r1/show_ip_eigrp.json
index be0fdcfed9..be0fdcfed9 100644
--- a/tests/topotests/eigrp-topo1/r1/show_ip_eigrp.json
+++ b/tests/topotests/eigrp_topo1/r1/show_ip_eigrp.json
diff --git a/tests/topotests/eigrp-topo1/r1/show_ip_eigrp.ref b/tests/topotests/eigrp_topo1/r1/show_ip_eigrp.ref
index a2d7b3307d..a2d7b3307d 100644
--- a/tests/topotests/eigrp-topo1/r1/show_ip_eigrp.ref
+++ b/tests/topotests/eigrp_topo1/r1/show_ip_eigrp.ref
diff --git a/tests/topotests/eigrp-topo1/r1/show_ip_route.json_ref b/tests/topotests/eigrp_topo1/r1/show_ip_route.json_ref
index 26fa7ca415..26fa7ca415 100644
--- a/tests/topotests/eigrp-topo1/r1/show_ip_route.json_ref
+++ b/tests/topotests/eigrp_topo1/r1/show_ip_route.json_ref
diff --git a/tests/topotests/eigrp-topo1/r1/zebra.conf b/tests/topotests/eigrp_topo1/r1/zebra.conf
index 56ae4a66f4..56ae4a66f4 100644
--- a/tests/topotests/eigrp-topo1/r1/zebra.conf
+++ b/tests/topotests/eigrp_topo1/r1/zebra.conf
diff --git a/tests/topotests/eigrp-topo1/r2/eigrpd.conf b/tests/topotests/eigrp_topo1/r2/eigrpd.conf
index 56c747d97c..56c747d97c 100644
--- a/tests/topotests/eigrp-topo1/r2/eigrpd.conf
+++ b/tests/topotests/eigrp_topo1/r2/eigrpd.conf
diff --git a/tests/topotests/eigrp-topo1/r2/show_ip_eigrp.json b/tests/topotests/eigrp_topo1/r2/show_ip_eigrp.json
index ae9f441a38..ae9f441a38 100644
--- a/tests/topotests/eigrp-topo1/r2/show_ip_eigrp.json
+++ b/tests/topotests/eigrp_topo1/r2/show_ip_eigrp.json
diff --git a/tests/topotests/eigrp-topo1/r2/show_ip_eigrp.ref b/tests/topotests/eigrp_topo1/r2/show_ip_eigrp.ref
index cce49cda07..cce49cda07 100644
--- a/tests/topotests/eigrp-topo1/r2/show_ip_eigrp.ref
+++ b/tests/topotests/eigrp_topo1/r2/show_ip_eigrp.ref
diff --git a/tests/topotests/eigrp-topo1/r2/show_ip_route.json_ref b/tests/topotests/eigrp_topo1/r2/show_ip_route.json_ref
index 71c931b17a..71c931b17a 100644
--- a/tests/topotests/eigrp-topo1/r2/show_ip_route.json_ref
+++ b/tests/topotests/eigrp_topo1/r2/show_ip_route.json_ref
diff --git a/tests/topotests/eigrp-topo1/r2/zebra.conf b/tests/topotests/eigrp_topo1/r2/zebra.conf
index c440f3a350..c440f3a350 100644
--- a/tests/topotests/eigrp-topo1/r2/zebra.conf
+++ b/tests/topotests/eigrp_topo1/r2/zebra.conf
diff --git a/tests/topotests/eigrp-topo1/r3/eigrpd.conf b/tests/topotests/eigrp_topo1/r3/eigrpd.conf
index 53ad1bb6a1..53ad1bb6a1 100644
--- a/tests/topotests/eigrp-topo1/r3/eigrpd.conf
+++ b/tests/topotests/eigrp_topo1/r3/eigrpd.conf
diff --git a/tests/topotests/eigrp-topo1/r3/show_ip_eigrp.json b/tests/topotests/eigrp_topo1/r3/show_ip_eigrp.json
index 83db66c8c8..83db66c8c8 100644
--- a/tests/topotests/eigrp-topo1/r3/show_ip_eigrp.json
+++ b/tests/topotests/eigrp_topo1/r3/show_ip_eigrp.json
diff --git a/tests/topotests/eigrp-topo1/r3/show_ip_eigrp.ref b/tests/topotests/eigrp_topo1/r3/show_ip_eigrp.ref
index 70f3d3f98b..70f3d3f98b 100644
--- a/tests/topotests/eigrp-topo1/r3/show_ip_eigrp.ref
+++ b/tests/topotests/eigrp_topo1/r3/show_ip_eigrp.ref
diff --git a/tests/topotests/eigrp-topo1/r3/show_ip_route.json_ref b/tests/topotests/eigrp_topo1/r3/show_ip_route.json_ref
index 5e0b79d811..5e0b79d811 100644
--- a/tests/topotests/eigrp-topo1/r3/show_ip_route.json_ref
+++ b/tests/topotests/eigrp_topo1/r3/show_ip_route.json_ref
diff --git a/tests/topotests/eigrp-topo1/r3/zebra.conf b/tests/topotests/eigrp_topo1/r3/zebra.conf
index 7f145b4583..7f145b4583 100644
--- a/tests/topotests/eigrp-topo1/r3/zebra.conf
+++ b/tests/topotests/eigrp_topo1/r3/zebra.conf
diff --git a/tests/topotests/eigrp-topo1/test_eigrp_topo1.dot b/tests/topotests/eigrp_topo1/test_eigrp_topo1.dot
index ca3a0fe5b9..ca3a0fe5b9 100644
--- a/tests/topotests/eigrp-topo1/test_eigrp_topo1.dot
+++ b/tests/topotests/eigrp_topo1/test_eigrp_topo1.dot
diff --git a/tests/topotests/eigrp-topo1/test_eigrp_topo1.py b/tests/topotests/eigrp_topo1/test_eigrp_topo1.py
index 6993bc53e7..6993bc53e7 100644
--- a/tests/topotests/eigrp-topo1/test_eigrp_topo1.py
+++ b/tests/topotests/eigrp_topo1/test_eigrp_topo1.py
diff --git a/tests/topotests/evpn-pim-1/host1/bgpd.conf b/tests/topotests/evpn_pim_1/host1/bgpd.conf
index cdf4cb4feb..cdf4cb4feb 100644
--- a/tests/topotests/evpn-pim-1/host1/bgpd.conf
+++ b/tests/topotests/evpn_pim_1/host1/bgpd.conf
diff --git a/tests/topotests/evpn-pim-1/host1/pimd.conf b/tests/topotests/evpn_pim_1/host1/pimd.conf
index 63a44c1333..63a44c1333 100644
--- a/tests/topotests/evpn-pim-1/host1/pimd.conf
+++ b/tests/topotests/evpn_pim_1/host1/pimd.conf
diff --git a/tests/topotests/evpn-pim-1/host1/zebra.conf b/tests/topotests/evpn_pim_1/host1/zebra.conf
index 45ad031017..45ad031017 100644
--- a/tests/topotests/evpn-pim-1/host1/zebra.conf
+++ b/tests/topotests/evpn_pim_1/host1/zebra.conf
diff --git a/tests/topotests/evpn-pim-1/host2/bgpd.conf b/tests/topotests/evpn_pim_1/host2/bgpd.conf
index cdf4cb4feb..cdf4cb4feb 100644
--- a/tests/topotests/evpn-pim-1/host2/bgpd.conf
+++ b/tests/topotests/evpn_pim_1/host2/bgpd.conf
diff --git a/tests/topotests/evpn-pim-1/host2/pimd.conf b/tests/topotests/evpn_pim_1/host2/pimd.conf
index 63a44c1333..63a44c1333 100644
--- a/tests/topotests/evpn-pim-1/host2/pimd.conf
+++ b/tests/topotests/evpn_pim_1/host2/pimd.conf
diff --git a/tests/topotests/evpn-pim-1/host2/zebra.conf b/tests/topotests/evpn_pim_1/host2/zebra.conf
index bfae53017f..bfae53017f 100644
--- a/tests/topotests/evpn-pim-1/host2/zebra.conf
+++ b/tests/topotests/evpn_pim_1/host2/zebra.conf
diff --git a/tests/topotests/evpn-pim-1/leaf1/bgpd.conf b/tests/topotests/evpn_pim_1/leaf1/bgpd.conf
index 97fd8662f4..97fd8662f4 100644
--- a/tests/topotests/evpn-pim-1/leaf1/bgpd.conf
+++ b/tests/topotests/evpn_pim_1/leaf1/bgpd.conf
diff --git a/tests/topotests/evpn-pim-1/leaf1/pimd.conf b/tests/topotests/evpn_pim_1/leaf1/pimd.conf
index 293e252086..293e252086 100644
--- a/tests/topotests/evpn-pim-1/leaf1/pimd.conf
+++ b/tests/topotests/evpn_pim_1/leaf1/pimd.conf
diff --git a/tests/topotests/evpn-pim-1/leaf1/zebra.conf b/tests/topotests/evpn_pim_1/leaf1/zebra.conf
index 581cc6e7be..581cc6e7be 100644
--- a/tests/topotests/evpn-pim-1/leaf1/zebra.conf
+++ b/tests/topotests/evpn_pim_1/leaf1/zebra.conf
diff --git a/tests/topotests/evpn-pim-1/leaf2/bgpd.conf b/tests/topotests/evpn_pim_1/leaf2/bgpd.conf
index 91d9bd8c8b..91d9bd8c8b 100644
--- a/tests/topotests/evpn-pim-1/leaf2/bgpd.conf
+++ b/tests/topotests/evpn_pim_1/leaf2/bgpd.conf
diff --git a/tests/topotests/evpn-pim-1/leaf2/pimd.conf b/tests/topotests/evpn_pim_1/leaf2/pimd.conf
index 08d5a19a2a..08d5a19a2a 100644
--- a/tests/topotests/evpn-pim-1/leaf2/pimd.conf
+++ b/tests/topotests/evpn_pim_1/leaf2/pimd.conf
diff --git a/tests/topotests/evpn-pim-1/leaf2/zebra.conf b/tests/topotests/evpn_pim_1/leaf2/zebra.conf
index 1bcf8e1ded..1bcf8e1ded 100644
--- a/tests/topotests/evpn-pim-1/leaf2/zebra.conf
+++ b/tests/topotests/evpn_pim_1/leaf2/zebra.conf
diff --git a/tests/topotests/evpn-pim-1/spine/bgp.summ.json b/tests/topotests/evpn_pim_1/spine/bgp.summ.json
index 5ff4b096fd..5ff4b096fd 100644
--- a/tests/topotests/evpn-pim-1/spine/bgp.summ.json
+++ b/tests/topotests/evpn_pim_1/spine/bgp.summ.json
diff --git a/tests/topotests/evpn-pim-1/spine/bgpd.conf b/tests/topotests/evpn_pim_1/spine/bgpd.conf
index 81ab802f35..81ab802f35 100644
--- a/tests/topotests/evpn-pim-1/spine/bgpd.conf
+++ b/tests/topotests/evpn_pim_1/spine/bgpd.conf
diff --git a/tests/topotests/evpn-pim-1/spine/join-info.json b/tests/topotests/evpn_pim_1/spine/join-info.json
index 3d135fb964..3d135fb964 100644
--- a/tests/topotests/evpn-pim-1/spine/join-info.json
+++ b/tests/topotests/evpn_pim_1/spine/join-info.json
diff --git a/tests/topotests/evpn-pim-1/spine/pimd.conf b/tests/topotests/evpn_pim_1/spine/pimd.conf
index 56adda5cc4..56adda5cc4 100644
--- a/tests/topotests/evpn-pim-1/spine/pimd.conf
+++ b/tests/topotests/evpn_pim_1/spine/pimd.conf
diff --git a/tests/topotests/evpn-pim-1/spine/zebra.conf b/tests/topotests/evpn_pim_1/spine/zebra.conf
index 2cb719486e..2cb719486e 100644
--- a/tests/topotests/evpn-pim-1/spine/zebra.conf
+++ b/tests/topotests/evpn_pim_1/spine/zebra.conf
diff --git a/tests/topotests/evpn-pim-1/test_evpn_pim_topo1.py b/tests/topotests/evpn_pim_1/test_evpn_pim_topo1.py
index 260a197aca..260a197aca 100644
--- a/tests/topotests/evpn-pim-1/test_evpn_pim_topo1.py
+++ b/tests/topotests/evpn_pim_1/test_evpn_pim_topo1.py
diff --git a/tests/topotests/example-test/__init__.py b/tests/topotests/example_test/__init__.py
index e69de29bb2..e69de29bb2 100755
--- a/tests/topotests/example-test/__init__.py
+++ b/tests/topotests/example_test/__init__.py
diff --git a/tests/topotests/example-test/test_example.py b/tests/topotests/example_test/test_example.py
index 72eceee612..72eceee612 100755
--- a/tests/topotests/example-test/test_example.py
+++ b/tests/topotests/example_test/test_example.py
diff --git a/tests/topotests/example-test/test_template.dot b/tests/topotests/example_test/test_template.dot
index b5e12020ce..b5e12020ce 100644
--- a/tests/topotests/example-test/test_template.dot
+++ b/tests/topotests/example_test/test_template.dot
diff --git a/tests/topotests/example-test/test_template.jpg b/tests/topotests/example_test/test_template.jpg
index b01ef73f5a..b01ef73f5a 100644
--- a/tests/topotests/example-test/test_template.jpg
+++ b/tests/topotests/example_test/test_template.jpg
Binary files differ
diff --git a/tests/topotests/example-test/test_template.py b/tests/topotests/example_test/test_template.py
index 0265dbe796..0265dbe796 100644
--- a/tests/topotests/example-test/test_template.py
+++ b/tests/topotests/example_test/test_template.py
diff --git a/tests/topotests/example-topojson-test/__init__.py b/tests/topotests/example_topojson_test/__init__.py
index e69de29bb2..e69de29bb2 100755
--- a/tests/topotests/example-topojson-test/__init__.py
+++ b/tests/topotests/example_topojson_test/__init__.py
diff --git a/tests/topotests/example-topojson-test/test_topo_json_multiple_links/__init__.py b/tests/topotests/example_topojson_test/test_topo_json_multiple_links/__init__.py
index e69de29bb2..e69de29bb2 100755
--- a/tests/topotests/example-topojson-test/test_topo_json_multiple_links/__init__.py
+++ b/tests/topotests/example_topojson_test/test_topo_json_multiple_links/__init__.py
diff --git a/tests/topotests/example-topojson-test/test_topo_json_multiple_links/example_topojson_multiple_links.json b/tests/topotests/example_topojson_test/test_topo_json_multiple_links/example_topojson_multiple_links.json
index 3968348b1f..3968348b1f 100644
--- a/tests/topotests/example-topojson-test/test_topo_json_multiple_links/example_topojson_multiple_links.json
+++ b/tests/topotests/example_topojson_test/test_topo_json_multiple_links/example_topojson_multiple_links.json
diff --git a/tests/topotests/example-topojson-test/test_topo_json_multiple_links/test_example_topojson_multiple_links.py b/tests/topotests/example_topojson_test/test_topo_json_multiple_links/test_example_topojson_multiple_links.py
index 09ac9f2fa4..09ac9f2fa4 100755
--- a/tests/topotests/example-topojson-test/test_topo_json_multiple_links/test_example_topojson_multiple_links.py
+++ b/tests/topotests/example_topojson_test/test_topo_json_multiple_links/test_example_topojson_multiple_links.py
diff --git a/tests/topotests/example-topojson-test/test_topo_json_single_link/__init__.py b/tests/topotests/example_topojson_test/test_topo_json_single_link/__init__.py
index e69de29bb2..e69de29bb2 100755
--- a/tests/topotests/example-topojson-test/test_topo_json_single_link/__init__.py
+++ b/tests/topotests/example_topojson_test/test_topo_json_single_link/__init__.py
diff --git a/tests/topotests/example-topojson-test/test_topo_json_single_link/example_topojson.json b/tests/topotests/example_topojson_test/test_topo_json_single_link/example_topojson.json
index 629d2d6d78..629d2d6d78 100644
--- a/tests/topotests/example-topojson-test/test_topo_json_single_link/example_topojson.json
+++ b/tests/topotests/example_topojson_test/test_topo_json_single_link/example_topojson.json
diff --git a/tests/topotests/example-topojson-test/test_topo_json_single_link/test_example_topojson.py b/tests/topotests/example_topojson_test/test_topo_json_single_link/test_example_topojson.py
index 26336d5de1..26336d5de1 100755
--- a/tests/topotests/example-topojson-test/test_topo_json_single_link/test_example_topojson.py
+++ b/tests/topotests/example_topojson_test/test_topo_json_single_link/test_example_topojson.py
diff --git a/tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/__init__.py b/tests/topotests/example_topojson_test/test_topo_json_single_link_loopback/__init__.py
index e69de29bb2..e69de29bb2 100755
--- a/tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/__init__.py
+++ b/tests/topotests/example_topojson_test/test_topo_json_single_link_loopback/__init__.py
diff --git a/tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/example_topojson.json b/tests/topotests/example_topojson_test/test_topo_json_single_link_loopback/example_topojson.json
index c76c6264be..c76c6264be 100644
--- a/tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/example_topojson.json
+++ b/tests/topotests/example_topojson_test/test_topo_json_single_link_loopback/example_topojson.json
diff --git a/tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/test_example_topojson.py b/tests/topotests/example_topojson_test/test_topo_json_single_link_loopback/test_example_topojson.py
index 012b05d376..012b05d376 100755
--- a/tests/topotests/example-topojson-test/test_topo_json_single_link_loopback/test_example_topojson.py
+++ b/tests/topotests/example_topojson_test/test_topo_json_single_link_loopback/test_example_topojson.py
diff --git a/tests/topotests/isis-topo1/r5/r5_topology.json b/tests/topotests/isis-topo1/r5/r5_topology.json
deleted file mode 100644
index 0224661411..0000000000
--- a/tests/topotests/isis-topo1/r5/r5_topology.json
+++ /dev/null
@@ -1,152 +0,0 @@
-{
- "1": {
- "level-1": {
- "ipv4": [
- {
- "vertex": "r5"
- },
- {
- "metric": "internal",
- "parent": "0",
- "type": "IP",
- "vertex": "10.0.10.0/24"
- },
- {
- "metric": "internal",
- "parent": "0",
- "type": "IP",
- "vertex": "10.0.11.0/24"
- },
- {
- "interface": "r5-eth0",
- "metric": "10",
- "next-hop": "r3",
- "parent": "r5(4)",
- "type": "TE-IS",
- "vertex": "r3"
- },
- {
- "interface": "r5-eth1",
- "metric": "10",
- "next-hop": "r4",
- "parent": "r5(4)",
- "type": "TE-IS",
- "vertex": "r4"
- },
- {
- "interface": "r3",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r5-eth0",
- "type": "IP",
- "vertex": "10.0.10.0/24"
- },
- {
- "interface": "r3",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r5-eth0",
- "type": "IP",
- "vertex": "10.0.20.0/24"
- },
- {
- "interface": "r3",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r5-eth0",
- "type": "IP",
- "vertex": "10.254.0.3/32"
- },
- {
- "interface": "r4",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r5-eth1",
- "type": "IP",
- "vertex": "10.0.11.0/24"
- },
- {
- "interface": "r4",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r5-eth1",
- "type": "IP",
- "vertex": "10.0.21.0/24"
- },
- {
- "interface": "r4",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r5-eth1",
- "type": "IP",
- "vertex": "10.254.0.4/32"
- }
- ],
- "ipv6": [
- {
- "vertex": "r5"
- },
- {
- "metric": "internal",
- "parent": "0",
- "type": "IP6",
- "vertex": "2001:db8:2:1::/64"
- },
- {
- "metric": "internal",
- "parent": "0",
- "type": "IP6",
- "vertex": "2001:db8:2:2::/64"
- },
- {
- "interface": "r5-eth0",
- "metric": "10",
- "next-hop": "r3",
- "parent": "r5(4)",
- "type": "TE-IS",
- "vertex": "r3"
- },
- {
- "interface": "r5-eth1",
- "metric": "10",
- "next-hop": "r4",
- "parent": "r5(4)",
- "type": "TE-IS",
- "vertex": "r4"
- },
- {
- "interface": "r3",
- "next-hop": "10",
- "parent": "r5-eth0",
- "type": "IP6",
- "vertex": "2001:db8:1:1::/64"
- },
- {
- "interface": "r3",
- "next-hop": "10",
- "parent": "r5-eth0",
- "type": "IP6",
- "vertex": "2001:db8:f::3/128"
- },
- {
- "interface": "r4",
- "next-hop": "10",
- "parent": "r5-eth1",
- "type": "IP6",
- "vertex": "2001:db8:1:2::/64"
- },
- {
- "interface": "r4",
- "next-hop": "10",
- "parent": "r5-eth1",
- "type": "IP6",
- "vertex": "2001:db8:f::4/128"
- }
- ]
- },
- "level-2": {
- "ipv4": [],
- "ipv6": []
- }
- }
-}
diff --git a/tests/topotests/isis-lfa-topo1/__init__.py b/tests/topotests/isis_lfa_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-lfa-topo1/__init__.py
+++ b/tests/topotests/isis_lfa_topo1/__init__.py
diff --git a/tests/topotests/isis-lfa-topo1/rt1/isisd.conf b/tests/topotests/isis_lfa_topo1/rt1/isisd.conf
index 2ad8c12538..2ad8c12538 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/isisd.conf
+++ b/tests/topotests/isis_lfa_topo1/rt1/isisd.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step1/show_ipv6_route.ref b/tests/topotests/isis_lfa_topo1/rt1/step1/show_ipv6_route.ref
index 10c61d53e3..10c61d53e3 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lfa_topo1/rt1/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
index d8a7c5a9c4..d8a7c5a9c4 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step10/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step10/show_ipv6_route.ref.diff
index d626cdca02..d626cdca02 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step10/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step10/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step11/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step11/show_ipv6_route.ref.diff
index f7f99c276e..f7f99c276e 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step11/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step11/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step12/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step12/show_ipv6_route.ref.diff
index 3b767f1bf6..3b767f1bf6 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step12/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step12/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step13/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step13/show_ipv6_route.ref.diff
index 504af5ac58..504af5ac58 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step13/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step13/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step2/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step2/show_ipv6_route.ref.diff
index efc56d9835..efc56d9835 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step2/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step2/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step3/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step3/show_ipv6_route.ref.diff
index cafbe490b5..cafbe490b5 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step3/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step3/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step4/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step4/show_ipv6_route.ref.diff
index 47d8334a05..47d8334a05 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step4/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step4/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step5/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step5/show_ipv6_route.ref.diff
index b6a342df88..b6a342df88 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step5/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step5/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step6/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step6/show_ipv6_route.ref.diff
index fafa2999d1..fafa2999d1 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step6/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step6/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step7/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step7/show_ipv6_route.ref.diff
index 1803e2cf5c..1803e2cf5c 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step7/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step7/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step8/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step8/show_ipv6_route.ref.diff
index 306f725340..306f725340 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step8/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step8/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/step9/show_ipv6_route.ref.diff b/tests/topotests/isis_lfa_topo1/rt1/step9/show_ipv6_route.ref.diff
index 3ffab46eeb..3ffab46eeb 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/step9/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_lfa_topo1/rt1/step9/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-lfa-topo1/rt1/zebra.conf b/tests/topotests/isis_lfa_topo1/rt1/zebra.conf
index 317f1031df..317f1031df 100644
--- a/tests/topotests/isis-lfa-topo1/rt1/zebra.conf
+++ b/tests/topotests/isis_lfa_topo1/rt1/zebra.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt2/isisd.conf b/tests/topotests/isis_lfa_topo1/rt2/isisd.conf
index 39ff2570d4..39ff2570d4 100644
--- a/tests/topotests/isis-lfa-topo1/rt2/isisd.conf
+++ b/tests/topotests/isis_lfa_topo1/rt2/isisd.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt2/step1/show_ipv6_route.ref b/tests/topotests/isis_lfa_topo1/rt2/step1/show_ipv6_route.ref
index 036bfe1f4f..036bfe1f4f 100644
--- a/tests/topotests/isis-lfa-topo1/rt2/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lfa_topo1/rt2/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lfa_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
index 681c5222ad..681c5222ad 100644
--- a/tests/topotests/isis-lfa-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lfa_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt2/zebra.conf b/tests/topotests/isis_lfa_topo1/rt2/zebra.conf
index 9feaada791..9feaada791 100644
--- a/tests/topotests/isis-lfa-topo1/rt2/zebra.conf
+++ b/tests/topotests/isis_lfa_topo1/rt2/zebra.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt3/isisd.conf b/tests/topotests/isis_lfa_topo1/rt3/isisd.conf
index 8b0c7bd0dc..8b0c7bd0dc 100644
--- a/tests/topotests/isis-lfa-topo1/rt3/isisd.conf
+++ b/tests/topotests/isis_lfa_topo1/rt3/isisd.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt3/step1/show_ipv6_route.ref b/tests/topotests/isis_lfa_topo1/rt3/step1/show_ipv6_route.ref
index a1aab400e4..a1aab400e4 100644
--- a/tests/topotests/isis-lfa-topo1/rt3/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lfa_topo1/rt3/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lfa_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
index 1495e32284..1495e32284 100644
--- a/tests/topotests/isis-lfa-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lfa_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt3/zebra.conf b/tests/topotests/isis_lfa_topo1/rt3/zebra.conf
index 48d732e72a..48d732e72a 100644
--- a/tests/topotests/isis-lfa-topo1/rt3/zebra.conf
+++ b/tests/topotests/isis_lfa_topo1/rt3/zebra.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt4/isisd.conf b/tests/topotests/isis_lfa_topo1/rt4/isisd.conf
index 86edee6ab1..86edee6ab1 100644
--- a/tests/topotests/isis-lfa-topo1/rt4/isisd.conf
+++ b/tests/topotests/isis_lfa_topo1/rt4/isisd.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt4/step1/show_ipv6_route.ref b/tests/topotests/isis_lfa_topo1/rt4/step1/show_ipv6_route.ref
index 6878e2fac0..6878e2fac0 100644
--- a/tests/topotests/isis-lfa-topo1/rt4/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lfa_topo1/rt4/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lfa_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
index d8cd565b5b..d8cd565b5b 100644
--- a/tests/topotests/isis-lfa-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lfa_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt4/zebra.conf b/tests/topotests/isis_lfa_topo1/rt4/zebra.conf
index bff10860cc..bff10860cc 100644
--- a/tests/topotests/isis-lfa-topo1/rt4/zebra.conf
+++ b/tests/topotests/isis_lfa_topo1/rt4/zebra.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt5/isisd.conf b/tests/topotests/isis_lfa_topo1/rt5/isisd.conf
index 7a7cfe557d..7a7cfe557d 100644
--- a/tests/topotests/isis-lfa-topo1/rt5/isisd.conf
+++ b/tests/topotests/isis_lfa_topo1/rt5/isisd.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt5/step1/show_ipv6_route.ref b/tests/topotests/isis_lfa_topo1/rt5/step1/show_ipv6_route.ref
index f8181c7769..f8181c7769 100644
--- a/tests/topotests/isis-lfa-topo1/rt5/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lfa_topo1/rt5/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lfa_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
index d8cd565b5b..d8cd565b5b 100644
--- a/tests/topotests/isis-lfa-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lfa_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt5/zebra.conf b/tests/topotests/isis_lfa_topo1/rt5/zebra.conf
index ee1e46c966..ee1e46c966 100644
--- a/tests/topotests/isis-lfa-topo1/rt5/zebra.conf
+++ b/tests/topotests/isis_lfa_topo1/rt5/zebra.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt6/isisd.conf b/tests/topotests/isis_lfa_topo1/rt6/isisd.conf
index 20cb7769a4..20cb7769a4 100644
--- a/tests/topotests/isis-lfa-topo1/rt6/isisd.conf
+++ b/tests/topotests/isis_lfa_topo1/rt6/isisd.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt6/step1/show_ipv6_route.ref b/tests/topotests/isis_lfa_topo1/rt6/step1/show_ipv6_route.ref
index e5f3c77ac5..e5f3c77ac5 100644
--- a/tests/topotests/isis-lfa-topo1/rt6/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lfa_topo1/rt6/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lfa_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
index d8cd565b5b..d8cd565b5b 100644
--- a/tests/topotests/isis-lfa-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lfa_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt6/zebra.conf b/tests/topotests/isis_lfa_topo1/rt6/zebra.conf
index 4108078896..4108078896 100644
--- a/tests/topotests/isis-lfa-topo1/rt6/zebra.conf
+++ b/tests/topotests/isis_lfa_topo1/rt6/zebra.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt7/isisd.conf b/tests/topotests/isis_lfa_topo1/rt7/isisd.conf
index 713e6d39f4..713e6d39f4 100644
--- a/tests/topotests/isis-lfa-topo1/rt7/isisd.conf
+++ b/tests/topotests/isis_lfa_topo1/rt7/isisd.conf
diff --git a/tests/topotests/isis-lfa-topo1/rt7/step1/show_ipv6_route.ref b/tests/topotests/isis_lfa_topo1/rt7/step1/show_ipv6_route.ref
index 0dff15e3fd..0dff15e3fd 100644
--- a/tests/topotests/isis-lfa-topo1/rt7/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lfa_topo1/rt7/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt7/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lfa_topo1/rt7/step1/show_yang_interface_isis_adjacencies.ref
index d8a7c5a9c4..d8a7c5a9c4 100644
--- a/tests/topotests/isis-lfa-topo1/rt7/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lfa_topo1/rt7/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lfa-topo1/rt7/zebra.conf b/tests/topotests/isis_lfa_topo1/rt7/zebra.conf
index 353c9efa93..353c9efa93 100644
--- a/tests/topotests/isis-lfa-topo1/rt7/zebra.conf
+++ b/tests/topotests/isis_lfa_topo1/rt7/zebra.conf
diff --git a/tests/topotests/isis-lfa-topo1/test_isis_lfa_topo1.py b/tests/topotests/isis_lfa_topo1/test_isis_lfa_topo1.py
index dcfcd11435..dcfcd11435 100755
--- a/tests/topotests/isis-lfa-topo1/test_isis_lfa_topo1.py
+++ b/tests/topotests/isis_lfa_topo1/test_isis_lfa_topo1.py
diff --git a/tests/topotests/isis-lsp-bits-topo1/__init__.py b/tests/topotests/isis_lsp_bits_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-lsp-bits-topo1/__init__.py
+++ b/tests/topotests/isis_lsp_bits_topo1/__init__.py
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/isisd.conf b/tests/topotests/isis_lsp_bits_topo1/rt1/isisd.conf
index 90764a0d0f..90764a0d0f 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/isisd.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/isisd.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_ip_route.ref
index 8557f4b010..8557f4b010 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_ipv6_route.ref
index fa76533756..fa76533756 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
index 26f0dffa7a..26f0dffa7a 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step2/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step2/show_ip_route.ref
index c826efdcfe..c826efdcfe 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step2/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step2/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step2/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step2/show_ipv6_route.ref
index a386b45dad..a386b45dad 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step2/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step2/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step3/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step3/show_ip_route.ref
index 2b281b74fb..2b281b74fb 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step3/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step3/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step3/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step3/show_ipv6_route.ref
index 4b920eda01..4b920eda01 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step3/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step3/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step4/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step4/show_ip_route.ref
index 8557f4b010..8557f4b010 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step4/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step4/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/step4/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt1/step4/show_ipv6_route.ref
index fa76533756..fa76533756 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/step4/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/step4/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt1/zebra.conf b/tests/topotests/isis_lsp_bits_topo1/rt1/zebra.conf
index 9d71d3005f..9d71d3005f 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt1/zebra.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt1/zebra.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt2/isisd.conf b/tests/topotests/isis_lsp_bits_topo1/rt2/isisd.conf
index 2bc4c4ad97..2bc4c4ad97 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt2/isisd.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt2/isisd.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_ip_route.ref
index d7e886ce86..d7e886ce86 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_ipv6_route.ref
index a92272f6d0..a92272f6d0 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
index c70b44e1c9..c70b44e1c9 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt2/zebra.conf b/tests/topotests/isis_lsp_bits_topo1/rt2/zebra.conf
index 234e10efa9..234e10efa9 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt2/zebra.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt2/zebra.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt3/isisd.conf b/tests/topotests/isis_lsp_bits_topo1/rt3/isisd.conf
index 9ad97109b5..9ad97109b5 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt3/isisd.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt3/isisd.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_ip_route.ref
index 55f0aedef5..55f0aedef5 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_ipv6_route.ref
index 5d6dfca76a..5d6dfca76a 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
index 6950086b1e..6950086b1e 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt3/zebra.conf b/tests/topotests/isis_lsp_bits_topo1/rt3/zebra.conf
index 9a0defd62b..9a0defd62b 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt3/zebra.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt3/zebra.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt4/isisd.conf b/tests/topotests/isis_lsp_bits_topo1/rt4/isisd.conf
index e85412a71d..e85412a71d 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt4/isisd.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt4/isisd.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_ip_route.ref
index 2cf5c40635..2cf5c40635 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_ipv6_route.ref
index cde7287943..cde7287943 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
index 233180ceb8..233180ceb8 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt4/zebra.conf b/tests/topotests/isis_lsp_bits_topo1/rt4/zebra.conf
index adcf433249..adcf433249 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt4/zebra.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt4/zebra.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt5/isisd.conf b/tests/topotests/isis_lsp_bits_topo1/rt5/isisd.conf
index 2cab0c88fc..2cab0c88fc 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt5/isisd.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt5/isisd.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_ip_route.ref
index 358d0a230c..358d0a230c 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_ipv6_route.ref
index 7586c73852..7586c73852 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
index f939a6abff..f939a6abff 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt5/zebra.conf b/tests/topotests/isis_lsp_bits_topo1/rt5/zebra.conf
index 0f10ce921f..0f10ce921f 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt5/zebra.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt5/zebra.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/isisd.conf b/tests/topotests/isis_lsp_bits_topo1/rt6/isisd.conf
index 249f945e0c..249f945e0c 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/isisd.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/isisd.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_ip_route.ref
index 40375792a4..40375792a4 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_ipv6_route.ref
index 278129f481..278129f481 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
index b4e8c23189..b4e8c23189 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step2/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step2/show_ip_route.ref
index 8083be4cfb..8083be4cfb 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step2/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step2/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step2/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step2/show_ipv6_route.ref
index 2e982e0c37..2e982e0c37 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step2/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step2/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step3/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step3/show_ip_route.ref
index 1ba8c8cda8..1ba8c8cda8 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step3/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step3/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step3/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step3/show_ipv6_route.ref
index 9b53a1d760..9b53a1d760 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step3/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step3/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step4/show_ip_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step4/show_ip_route.ref
index 40375792a4..40375792a4 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step4/show_ip_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step4/show_ip_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/step4/show_ipv6_route.ref b/tests/topotests/isis_lsp_bits_topo1/rt6/step4/show_ipv6_route.ref
index 278129f481..278129f481 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/step4/show_ipv6_route.ref
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/step4/show_ipv6_route.ref
diff --git a/tests/topotests/isis-lsp-bits-topo1/rt6/zebra.conf b/tests/topotests/isis_lsp_bits_topo1/rt6/zebra.conf
index 6084010a93..6084010a93 100644
--- a/tests/topotests/isis-lsp-bits-topo1/rt6/zebra.conf
+++ b/tests/topotests/isis_lsp_bits_topo1/rt6/zebra.conf
diff --git a/tests/topotests/isis-lsp-bits-topo1/test_isis_lsp_bits_topo1.py b/tests/topotests/isis_lsp_bits_topo1/test_isis_lsp_bits_topo1.py
index 27dc1073c6..27dc1073c6 100755
--- a/tests/topotests/isis-lsp-bits-topo1/test_isis_lsp_bits_topo1.py
+++ b/tests/topotests/isis_lsp_bits_topo1/test_isis_lsp_bits_topo1.py
diff --git a/tests/topotests/isis-rlfa-topo1/__init__.py b/tests/topotests/isis_rlfa_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-rlfa-topo1/__init__.py
+++ b/tests/topotests/isis_rlfa_topo1/__init__.py
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/isisd.conf b/tests/topotests/isis_rlfa_topo1/rt1/isisd.conf
index a80f30dc7b..a80f30dc7b 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/isisd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt1/isisd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/ldpd.conf b/tests/topotests/isis_rlfa_topo1/rt1/ldpd.conf
index f60fdb9742..f60fdb9742 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/ldpd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt1/ldpd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step1/show_ip_route.ref b/tests/topotests/isis_rlfa_topo1/rt1/step1/show_ip_route.ref
index 680b31eb8d..680b31eb8d 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step1/show_ip_route.ref
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step1/show_ipv6_route.ref b/tests/topotests/isis_rlfa_topo1/rt1/step1/show_ipv6_route.ref
index c487d2740d..c487d2740d 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_rlfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
index 3fe2b798a0..3fe2b798a0 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step10/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step10/show_ip_route.ref.diff
index ef5707f14a..ef5707f14a 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step10/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step10/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step10/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step10/show_ipv6_route.ref.diff
index acd2ce003a..acd2ce003a 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step10/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step10/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step2/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step2/show_ip_route.ref.diff
index f7f31ac021..f7f31ac021 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step2/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step2/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step2/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step2/show_ipv6_route.ref.diff
index e980031ad7..e980031ad7 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step2/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step2/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step3/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step3/show_ip_route.ref.diff
index f3ed764f0b..f3ed764f0b 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step3/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step3/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step3/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step3/show_ipv6_route.ref.diff
index 57b0b1de1a..57b0b1de1a 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step3/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step3/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step4/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step4/show_ip_route.ref.diff
index 107a0ba2f7..107a0ba2f7 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step4/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step4/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step4/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step4/show_ipv6_route.ref.diff
index 9cf24082e1..9cf24082e1 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step4/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step4/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step5/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step5/show_ip_route.ref.diff
index 09469501f5..09469501f5 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step5/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step5/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step5/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step5/show_ipv6_route.ref.diff
index 70fb1a65c7..70fb1a65c7 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step5/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step5/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step6/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step6/show_ip_route.ref.diff
index 4e4a5692a4..4e4a5692a4 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step6/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step6/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step6/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step6/show_ipv6_route.ref.diff
index c9ebb1e3f5..c9ebb1e3f5 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step6/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step6/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step7/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step7/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step7/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step7/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step7/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step7/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step7/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step7/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step8/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step8/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step8/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step8/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step8/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step8/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step8/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step8/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step9/show_ip_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step9/show_ip_route.ref.diff
index 33eb6577bd..33eb6577bd 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step9/show_ip_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step9/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/step9/show_ipv6_route.ref.diff b/tests/topotests/isis_rlfa_topo1/rt1/step9/show_ipv6_route.ref.diff
index 7aaca3354e..7aaca3354e 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/step9/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_rlfa_topo1/rt1/step9/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-rlfa-topo1/rt1/zebra.conf b/tests/topotests/isis_rlfa_topo1/rt1/zebra.conf
index 741fc2d02b..741fc2d02b 100644
--- a/tests/topotests/isis-rlfa-topo1/rt1/zebra.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt1/zebra.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt2/isisd.conf b/tests/topotests/isis_rlfa_topo1/rt2/isisd.conf
index 7b4c6c50b9..7b4c6c50b9 100644
--- a/tests/topotests/isis-rlfa-topo1/rt2/isisd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt2/isisd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt2/ldpd.conf b/tests/topotests/isis_rlfa_topo1/rt2/ldpd.conf
index 0a815ef004..0a815ef004 100644
--- a/tests/topotests/isis-rlfa-topo1/rt2/ldpd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt2/ldpd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt2/zebra.conf b/tests/topotests/isis_rlfa_topo1/rt2/zebra.conf
index 657c69bf28..657c69bf28 100644
--- a/tests/topotests/isis-rlfa-topo1/rt2/zebra.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt2/zebra.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt3/isisd.conf b/tests/topotests/isis_rlfa_topo1/rt3/isisd.conf
index 17d58a9d15..17d58a9d15 100644
--- a/tests/topotests/isis-rlfa-topo1/rt3/isisd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt3/isisd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt3/ldpd.conf b/tests/topotests/isis_rlfa_topo1/rt3/ldpd.conf
index 40f1f5587a..40f1f5587a 100644
--- a/tests/topotests/isis-rlfa-topo1/rt3/ldpd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt3/ldpd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt3/zebra.conf b/tests/topotests/isis_rlfa_topo1/rt3/zebra.conf
index 86f5d2871a..86f5d2871a 100644
--- a/tests/topotests/isis-rlfa-topo1/rt3/zebra.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt3/zebra.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt4/isisd.conf b/tests/topotests/isis_rlfa_topo1/rt4/isisd.conf
index 1519fd4c16..1519fd4c16 100644
--- a/tests/topotests/isis-rlfa-topo1/rt4/isisd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt4/isisd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt4/ldpd.conf b/tests/topotests/isis_rlfa_topo1/rt4/ldpd.conf
index 569ecf733e..569ecf733e 100644
--- a/tests/topotests/isis-rlfa-topo1/rt4/ldpd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt4/ldpd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt4/zebra.conf b/tests/topotests/isis_rlfa_topo1/rt4/zebra.conf
index 1dd09bf83b..1dd09bf83b 100644
--- a/tests/topotests/isis-rlfa-topo1/rt4/zebra.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt4/zebra.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt5/isisd.conf b/tests/topotests/isis_rlfa_topo1/rt5/isisd.conf
index caf7477073..caf7477073 100644
--- a/tests/topotests/isis-rlfa-topo1/rt5/isisd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt5/isisd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt5/ldpd.conf b/tests/topotests/isis_rlfa_topo1/rt5/ldpd.conf
index 519c3d3628..519c3d3628 100644
--- a/tests/topotests/isis-rlfa-topo1/rt5/ldpd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt5/ldpd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt5/zebra.conf b/tests/topotests/isis_rlfa_topo1/rt5/zebra.conf
index 7117a2a2e3..7117a2a2e3 100644
--- a/tests/topotests/isis-rlfa-topo1/rt5/zebra.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt5/zebra.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt6/isisd.conf b/tests/topotests/isis_rlfa_topo1/rt6/isisd.conf
index cdf6267236..cdf6267236 100644
--- a/tests/topotests/isis-rlfa-topo1/rt6/isisd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt6/isisd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt6/ldpd.conf b/tests/topotests/isis_rlfa_topo1/rt6/ldpd.conf
index a5b7062bec..a5b7062bec 100644
--- a/tests/topotests/isis-rlfa-topo1/rt6/ldpd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt6/ldpd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt6/zebra.conf b/tests/topotests/isis_rlfa_topo1/rt6/zebra.conf
index c6344870b7..c6344870b7 100644
--- a/tests/topotests/isis-rlfa-topo1/rt6/zebra.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt6/zebra.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt7/isisd.conf b/tests/topotests/isis_rlfa_topo1/rt7/isisd.conf
index 8ab8fcb232..8ab8fcb232 100644
--- a/tests/topotests/isis-rlfa-topo1/rt7/isisd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt7/isisd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt7/ldpd.conf b/tests/topotests/isis_rlfa_topo1/rt7/ldpd.conf
index 26d428c4c6..26d428c4c6 100644
--- a/tests/topotests/isis-rlfa-topo1/rt7/ldpd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt7/ldpd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt7/zebra.conf b/tests/topotests/isis_rlfa_topo1/rt7/zebra.conf
index 4c5e0f1126..4c5e0f1126 100644
--- a/tests/topotests/isis-rlfa-topo1/rt7/zebra.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt7/zebra.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt8/isisd.conf b/tests/topotests/isis_rlfa_topo1/rt8/isisd.conf
index abdc6a53a5..abdc6a53a5 100644
--- a/tests/topotests/isis-rlfa-topo1/rt8/isisd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt8/isisd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt8/ldpd.conf b/tests/topotests/isis_rlfa_topo1/rt8/ldpd.conf
index 1629f82de1..1629f82de1 100644
--- a/tests/topotests/isis-rlfa-topo1/rt8/ldpd.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt8/ldpd.conf
diff --git a/tests/topotests/isis-rlfa-topo1/rt8/zebra.conf b/tests/topotests/isis_rlfa_topo1/rt8/zebra.conf
index f3f10f649a..f3f10f649a 100644
--- a/tests/topotests/isis-rlfa-topo1/rt8/zebra.conf
+++ b/tests/topotests/isis_rlfa_topo1/rt8/zebra.conf
diff --git a/tests/topotests/isis-rlfa-topo1/test_isis_rlfa_topo1.py b/tests/topotests/isis_rlfa_topo1/test_isis_rlfa_topo1.py
index 9ad41c5934..9ad41c5934 100755
--- a/tests/topotests/isis-rlfa-topo1/test_isis_rlfa_topo1.py
+++ b/tests/topotests/isis_rlfa_topo1/test_isis_rlfa_topo1.py
diff --git a/tests/topotests/isis-snmp/ce3/zebra.conf b/tests/topotests/isis_snmp/ce3/zebra.conf
index c6a5824d15..c6a5824d15 100644
--- a/tests/topotests/isis-snmp/ce3/zebra.conf
+++ b/tests/topotests/isis_snmp/ce3/zebra.conf
diff --git a/tests/topotests/isis-snmp/r1/isisd.conf b/tests/topotests/isis_snmp/r1/isisd.conf
index dd32d3b8a5..dd32d3b8a5 100644
--- a/tests/topotests/isis-snmp/r1/isisd.conf
+++ b/tests/topotests/isis_snmp/r1/isisd.conf
diff --git a/tests/topotests/isis-snmp/r1/ldpd.conf b/tests/topotests/isis_snmp/r1/ldpd.conf
index 4ec296ca5a..4ec296ca5a 100644
--- a/tests/topotests/isis-snmp/r1/ldpd.conf
+++ b/tests/topotests/isis_snmp/r1/ldpd.conf
diff --git a/tests/topotests/isis-snmp/r1/show_ip_route.ref b/tests/topotests/isis_snmp/r1/show_ip_route.ref
index dc8f19dad0..dc8f19dad0 100644
--- a/tests/topotests/isis-snmp/r1/show_ip_route.ref
+++ b/tests/topotests/isis_snmp/r1/show_ip_route.ref
diff --git a/tests/topotests/isis-snmp/r1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_snmp/r1/show_yang_interface_isis_adjacencies.ref
index 390fda749e..390fda749e 100644
--- a/tests/topotests/isis-snmp/r1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_snmp/r1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-snmp/r1/snmpd.conf b/tests/topotests/isis_snmp/r1/snmpd.conf
index b37911da36..b37911da36 100644
--- a/tests/topotests/isis-snmp/r1/snmpd.conf
+++ b/tests/topotests/isis_snmp/r1/snmpd.conf
diff --git a/tests/topotests/isis-snmp/r1/zebra.conf b/tests/topotests/isis_snmp/r1/zebra.conf
index 6ac341e431..6ac341e431 100644
--- a/tests/topotests/isis-snmp/r1/zebra.conf
+++ b/tests/topotests/isis_snmp/r1/zebra.conf
diff --git a/tests/topotests/isis-snmp/r2/isisd.conf b/tests/topotests/isis_snmp/r2/isisd.conf
index 4403d8913b..4403d8913b 100644
--- a/tests/topotests/isis-snmp/r2/isisd.conf
+++ b/tests/topotests/isis_snmp/r2/isisd.conf
diff --git a/tests/topotests/isis-snmp/r2/ldpd.conf b/tests/topotests/isis_snmp/r2/ldpd.conf
index eb963fe41c..eb963fe41c 100644
--- a/tests/topotests/isis-snmp/r2/ldpd.conf
+++ b/tests/topotests/isis_snmp/r2/ldpd.conf
diff --git a/tests/topotests/isis-snmp/r2/show_ip_route.ref b/tests/topotests/isis_snmp/r2/show_ip_route.ref
index 2bcee96064..2bcee96064 100644
--- a/tests/topotests/isis-snmp/r2/show_ip_route.ref
+++ b/tests/topotests/isis_snmp/r2/show_ip_route.ref
diff --git a/tests/topotests/isis-snmp/r2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_snmp/r2/show_yang_interface_isis_adjacencies.ref
index 52550daf14..52550daf14 100644
--- a/tests/topotests/isis-snmp/r2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_snmp/r2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-snmp/r2/snmpd.conf b/tests/topotests/isis_snmp/r2/snmpd.conf
index 0f779b8b91..0f779b8b91 100644
--- a/tests/topotests/isis-snmp/r2/snmpd.conf
+++ b/tests/topotests/isis_snmp/r2/snmpd.conf
diff --git a/tests/topotests/isis-snmp/r2/zebra.conf b/tests/topotests/isis_snmp/r2/zebra.conf
index 4aa7440c33..4aa7440c33 100644
--- a/tests/topotests/isis-snmp/r2/zebra.conf
+++ b/tests/topotests/isis_snmp/r2/zebra.conf
diff --git a/tests/topotests/isis-snmp/r3/isisd.conf b/tests/topotests/isis_snmp/r3/isisd.conf
index e06fe8c1f9..e06fe8c1f9 100644
--- a/tests/topotests/isis-snmp/r3/isisd.conf
+++ b/tests/topotests/isis_snmp/r3/isisd.conf
diff --git a/tests/topotests/isis-snmp/r3/ldpd.conf b/tests/topotests/isis_snmp/r3/ldpd.conf
index 2935caf13b..2935caf13b 100644
--- a/tests/topotests/isis-snmp/r3/ldpd.conf
+++ b/tests/topotests/isis_snmp/r3/ldpd.conf
diff --git a/tests/topotests/isis-snmp/r3/show_ip_route.ref b/tests/topotests/isis_snmp/r3/show_ip_route.ref
index da46f1dfe2..da46f1dfe2 100644
--- a/tests/topotests/isis-snmp/r3/show_ip_route.ref
+++ b/tests/topotests/isis_snmp/r3/show_ip_route.ref
diff --git a/tests/topotests/isis-snmp/r3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_snmp/r3/show_yang_interface_isis_adjacencies.ref
index 3aafab4e2e..3aafab4e2e 100644
--- a/tests/topotests/isis-snmp/r3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_snmp/r3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-snmp/r3/snmpd.conf b/tests/topotests/isis_snmp/r3/snmpd.conf
index 3f3501a6fd..3f3501a6fd 100644
--- a/tests/topotests/isis-snmp/r3/snmpd.conf
+++ b/tests/topotests/isis_snmp/r3/snmpd.conf
diff --git a/tests/topotests/isis-snmp/r3/zebra.conf b/tests/topotests/isis_snmp/r3/zebra.conf
index 6b76114d4d..6b76114d4d 100644
--- a/tests/topotests/isis-snmp/r3/zebra.conf
+++ b/tests/topotests/isis_snmp/r3/zebra.conf
diff --git a/tests/topotests/isis-snmp/r4/isisd.conf b/tests/topotests/isis_snmp/r4/isisd.conf
index 1256141da9..1256141da9 100644
--- a/tests/topotests/isis-snmp/r4/isisd.conf
+++ b/tests/topotests/isis_snmp/r4/isisd.conf
diff --git a/tests/topotests/isis-snmp/r4/ldpd.conf b/tests/topotests/isis_snmp/r4/ldpd.conf
index b27952514b..b27952514b 100644
--- a/tests/topotests/isis-snmp/r4/ldpd.conf
+++ b/tests/topotests/isis_snmp/r4/ldpd.conf
diff --git a/tests/topotests/isis-snmp/r4/show_ip_route.ref b/tests/topotests/isis_snmp/r4/show_ip_route.ref
index da46f1dfe2..da46f1dfe2 100644
--- a/tests/topotests/isis-snmp/r4/show_ip_route.ref
+++ b/tests/topotests/isis_snmp/r4/show_ip_route.ref
diff --git a/tests/topotests/isis-snmp/r4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_snmp/r4/show_yang_interface_isis_adjacencies.ref
index 86fcfea1a6..86fcfea1a6 100644
--- a/tests/topotests/isis-snmp/r4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_snmp/r4/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-snmp/r4/snmpd.conf b/tests/topotests/isis_snmp/r4/snmpd.conf
index e5e336d888..e5e336d888 100644
--- a/tests/topotests/isis-snmp/r4/snmpd.conf
+++ b/tests/topotests/isis_snmp/r4/snmpd.conf
diff --git a/tests/topotests/isis-snmp/r4/zebra.conf b/tests/topotests/isis_snmp/r4/zebra.conf
index fa13601164..fa13601164 100644
--- a/tests/topotests/isis-snmp/r4/zebra.conf
+++ b/tests/topotests/isis_snmp/r4/zebra.conf
diff --git a/tests/topotests/isis-snmp/r5/isisd.conf b/tests/topotests/isis_snmp/r5/isisd.conf
index 58859041a9..58859041a9 100644
--- a/tests/topotests/isis-snmp/r5/isisd.conf
+++ b/tests/topotests/isis_snmp/r5/isisd.conf
diff --git a/tests/topotests/isis-snmp/r5/ldpd.conf b/tests/topotests/isis_snmp/r5/ldpd.conf
index f3ba867a9f..f3ba867a9f 100644
--- a/tests/topotests/isis-snmp/r5/ldpd.conf
+++ b/tests/topotests/isis_snmp/r5/ldpd.conf
diff --git a/tests/topotests/isis-snmp/r5/ldpdconf b/tests/topotests/isis_snmp/r5/ldpdconf
index fc700608b5..fc700608b5 100644
--- a/tests/topotests/isis-snmp/r5/ldpdconf
+++ b/tests/topotests/isis_snmp/r5/ldpdconf
diff --git a/tests/topotests/isis-snmp/r5/show_ip_route.ref b/tests/topotests/isis_snmp/r5/show_ip_route.ref
index da46f1dfe2..da46f1dfe2 100644
--- a/tests/topotests/isis-snmp/r5/show_ip_route.ref
+++ b/tests/topotests/isis_snmp/r5/show_ip_route.ref
diff --git a/tests/topotests/isis-snmp/r5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_snmp/r5/show_yang_interface_isis_adjacencies.ref
index 994e8166ce..994e8166ce 100644
--- a/tests/topotests/isis-snmp/r5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_snmp/r5/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-snmp/r5/snmpd.conf b/tests/topotests/isis_snmp/r5/snmpd.conf
index 5bebbdebd4..5bebbdebd4 100644
--- a/tests/topotests/isis-snmp/r5/snmpd.conf
+++ b/tests/topotests/isis_snmp/r5/snmpd.conf
diff --git a/tests/topotests/isis-snmp/r5/zebra.conf b/tests/topotests/isis_snmp/r5/zebra.conf
index 7230129f22..7230129f22 100644
--- a/tests/topotests/isis-snmp/r5/zebra.conf
+++ b/tests/topotests/isis_snmp/r5/zebra.conf
diff --git a/tests/topotests/isis-snmp/test_isis_snmp.dot b/tests/topotests/isis_snmp/test_isis_snmp.dot
index 6d8c893712..6d8c893712 100644
--- a/tests/topotests/isis-snmp/test_isis_snmp.dot
+++ b/tests/topotests/isis_snmp/test_isis_snmp.dot
diff --git a/tests/topotests/isis-snmp/test_isis_snmp.py b/tests/topotests/isis_snmp/test_isis_snmp.py
index 04e043847d..04e043847d 100755
--- a/tests/topotests/isis-snmp/test_isis_snmp.py
+++ b/tests/topotests/isis_snmp/test_isis_snmp.py
diff --git a/tests/topotests/isis-sr-te-topo1/dst/zebra.conf b/tests/topotests/isis_sr_te_topo1/dst/zebra.conf
index e873ac8a5c..e873ac8a5c 100644
--- a/tests/topotests/isis-sr-te-topo1/dst/zebra.conf
+++ b/tests/topotests/isis_sr_te_topo1/dst/zebra.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/bgpd.conf b/tests/topotests/isis_sr_te_topo1/rt1/bgpd.conf
index efc03701b5..efc03701b5 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/bgpd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt1/bgpd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/isisd.conf b/tests/topotests/isis_sr_te_topo1/rt1/isisd.conf
index 70ae1b07f5..70ae1b07f5 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/isisd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt1/isisd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/pathd.conf b/tests/topotests/isis_sr_te_topo1/rt1/pathd.conf
index 911971496e..911971496e 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/pathd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt1/pathd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step1/show_mpls_table_with_candidate.ref b/tests/topotests/isis_sr_te_topo1/rt1/step1/show_mpls_table_with_candidate.ref
index d4b27d157d..d4b27d157d 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step1/show_mpls_table_with_candidate.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step1/show_mpls_table_with_candidate.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step1/show_mpls_table_without_candidate.ref b/tests/topotests/isis_sr_te_topo1/rt1/step1/show_mpls_table_without_candidate.ref
index 5fe58d0824..5fe58d0824 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step1/show_mpls_table_without_candidate.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step1/show_mpls_table_without_candidate.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step2/show_operational_data.ref b/tests/topotests/isis_sr_te_topo1/rt1/step2/show_operational_data.ref
index 4ef8d946f2..4ef8d946f2 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step2/show_operational_data.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step2/show_operational_data.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step2/show_operational_data_with_candidate.ref b/tests/topotests/isis_sr_te_topo1/rt1/step2/show_operational_data_with_candidate.ref
index 9b28f6a42b..9b28f6a42b 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step2/show_operational_data_with_candidate.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step2/show_operational_data_with_candidate.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step3/show_operational_data_with_single_candidate.ref b/tests/topotests/isis_sr_te_topo1/rt1/step3/show_operational_data_with_single_candidate.ref
index 9b28f6a42b..9b28f6a42b 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step3/show_operational_data_with_single_candidate.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step3/show_operational_data_with_single_candidate.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step3/show_operational_data_with_two_candidates.ref b/tests/topotests/isis_sr_te_topo1/rt1/step3/show_operational_data_with_two_candidates.ref
index 249117198a..249117198a 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step3/show_operational_data_with_two_candidates.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step3/show_operational_data_with_two_candidates.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table.ref b/tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table.ref
index 21f71f1254..21f71f1254 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table_add_segment.ref b/tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table_add_segment.ref
index 3635c89efb..3635c89efb 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table_add_segment.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table_add_segment.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table_change_segment.ref b/tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table_change_segment.ref
index 5712d210d4..5712d210d4 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step4/show_mpls_table_change_segment.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step4/show_mpls_table_change_segment.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step5/show_ip_route_bgp_active_srte.ref b/tests/topotests/isis_sr_te_topo1/rt1/step5/show_ip_route_bgp_active_srte.ref
index 5a76246e50..5a76246e50 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step5/show_ip_route_bgp_active_srte.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step5/show_ip_route_bgp_active_srte.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step5/show_ip_route_bgp_inactive_srte.ref b/tests/topotests/isis_sr_te_topo1/rt1/step5/show_ip_route_bgp_inactive_srte.ref
index 09d5958305..09d5958305 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step5/show_ip_route_bgp_inactive_srte.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step5/show_ip_route_bgp_inactive_srte.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step5/show_operational_data_active.ref b/tests/topotests/isis_sr_te_topo1/rt1/step5/show_operational_data_active.ref
index e26039b835..e26039b835 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step5/show_operational_data_active.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step5/show_operational_data_active.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/step5/show_operational_data_inactive.ref b/tests/topotests/isis_sr_te_topo1/rt1/step5/show_operational_data_inactive.ref
index 01505c0318..01505c0318 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/step5/show_operational_data_inactive.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt1/step5/show_operational_data_inactive.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt1/zebra.conf b/tests/topotests/isis_sr_te_topo1/rt1/zebra.conf
index 9d71d3005f..9d71d3005f 100644
--- a/tests/topotests/isis-sr-te-topo1/rt1/zebra.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt1/zebra.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt2/isisd.conf b/tests/topotests/isis_sr_te_topo1/rt2/isisd.conf
index 733f26bc62..733f26bc62 100644
--- a/tests/topotests/isis-sr-te-topo1/rt2/isisd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt2/isisd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt2/zebra.conf b/tests/topotests/isis_sr_te_topo1/rt2/zebra.conf
index dcb0686dc2..dcb0686dc2 100644
--- a/tests/topotests/isis-sr-te-topo1/rt2/zebra.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt2/zebra.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt3/isisd.conf b/tests/topotests/isis_sr_te_topo1/rt3/isisd.conf
index 2395906cbf..2395906cbf 100644
--- a/tests/topotests/isis-sr-te-topo1/rt3/isisd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt3/isisd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt3/zebra.conf b/tests/topotests/isis_sr_te_topo1/rt3/zebra.conf
index 3254529386..3254529386 100644
--- a/tests/topotests/isis-sr-te-topo1/rt3/zebra.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt3/zebra.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt4/isisd.conf b/tests/topotests/isis_sr_te_topo1/rt4/isisd.conf
index 07a7867cbb..07a7867cbb 100644
--- a/tests/topotests/isis-sr-te-topo1/rt4/isisd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt4/isisd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt4/zebra.conf b/tests/topotests/isis_sr_te_topo1/rt4/zebra.conf
index 4945897e9d..4945897e9d 100644
--- a/tests/topotests/isis-sr-te-topo1/rt4/zebra.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt4/zebra.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt5/isisd.conf b/tests/topotests/isis_sr_te_topo1/rt5/isisd.conf
index b0fcdede07..b0fcdede07 100644
--- a/tests/topotests/isis-sr-te-topo1/rt5/isisd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt5/isisd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt5/zebra.conf b/tests/topotests/isis_sr_te_topo1/rt5/zebra.conf
index 4cfea1a59f..4cfea1a59f 100644
--- a/tests/topotests/isis-sr-te-topo1/rt5/zebra.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt5/zebra.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/bgpd.conf b/tests/topotests/isis_sr_te_topo1/rt6/bgpd.conf
index e72ee52fce..e72ee52fce 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/bgpd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt6/bgpd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/isisd.conf b/tests/topotests/isis_sr_te_topo1/rt6/isisd.conf
index 3be24ad24c..3be24ad24c 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/isisd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt6/isisd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/pathd.conf b/tests/topotests/isis_sr_te_topo1/rt6/pathd.conf
index 3bada7147c..3bada7147c 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/pathd.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt6/pathd.conf
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/step1/show_mpls_table_with_candidate.ref b/tests/topotests/isis_sr_te_topo1/rt6/step1/show_mpls_table_with_candidate.ref
index 2bb000346f..2bb000346f 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/step1/show_mpls_table_with_candidate.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt6/step1/show_mpls_table_with_candidate.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/step1/show_mpls_table_without_candidate.ref b/tests/topotests/isis_sr_te_topo1/rt6/step1/show_mpls_table_without_candidate.ref
index 348f7761eb..348f7761eb 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/step1/show_mpls_table_without_candidate.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt6/step1/show_mpls_table_without_candidate.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/step2/show_operational_data.ref b/tests/topotests/isis_sr_te_topo1/rt6/step2/show_operational_data.ref
index 241c80bdd7..241c80bdd7 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/step2/show_operational_data.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt6/step2/show_operational_data.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/step2/show_operational_data_with_candidate.ref b/tests/topotests/isis_sr_te_topo1/rt6/step2/show_operational_data_with_candidate.ref
index 20ea69e386..20ea69e386 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/step2/show_operational_data_with_candidate.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt6/step2/show_operational_data_with_candidate.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/step3/show_operational_data_with_single_candidate.ref b/tests/topotests/isis_sr_te_topo1/rt6/step3/show_operational_data_with_single_candidate.ref
index 20ea69e386..20ea69e386 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/step3/show_operational_data_with_single_candidate.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt6/step3/show_operational_data_with_single_candidate.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/step3/show_operational_data_with_two_candidates.ref b/tests/topotests/isis_sr_te_topo1/rt6/step3/show_operational_data_with_two_candidates.ref
index 10cafe9091..10cafe9091 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/step3/show_operational_data_with_two_candidates.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt6/step3/show_operational_data_with_two_candidates.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/step4/show_mpls_table.ref b/tests/topotests/isis_sr_te_topo1/rt6/step4/show_mpls_table.ref
index 95bf995e2e..95bf995e2e 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/step4/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_te_topo1/rt6/step4/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-te-topo1/rt6/zebra.conf b/tests/topotests/isis_sr_te_topo1/rt6/zebra.conf
index 32c6e6c4e0..32c6e6c4e0 100644
--- a/tests/topotests/isis-sr-te-topo1/rt6/zebra.conf
+++ b/tests/topotests/isis_sr_te_topo1/rt6/zebra.conf
diff --git a/tests/topotests/isis-sr-te-topo1/test_isis_sr_te_topo1.py b/tests/topotests/isis_sr_te_topo1/test_isis_sr_te_topo1.py
index 6bbb570267..6bbb570267 100755
--- a/tests/topotests/isis-sr-te-topo1/test_isis_sr_te_topo1.py
+++ b/tests/topotests/isis_sr_te_topo1/test_isis_sr_te_topo1.py
diff --git a/tests/topotests/isis-sr-topo1/__init__.py b/tests/topotests/isis_sr_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-sr-topo1/__init__.py
+++ b/tests/topotests/isis_sr_topo1/__init__.py
diff --git a/tests/topotests/isis-sr-topo1/rt1/isisd.conf b/tests/topotests/isis_sr_topo1/rt1/isisd.conf
index f441527597..f441527597 100644
--- a/tests/topotests/isis-sr-topo1/rt1/isisd.conf
+++ b/tests/topotests/isis_sr_topo1/rt1/isisd.conf
diff --git a/tests/topotests/isis-sr-topo1/rt1/step1/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step1/show_ip_route.ref
index 53bf8cb445..53bf8cb445 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step1/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step1/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step1/show_ipv6_route.ref
index 0b39584717..0b39584717 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step1/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step1/show_mpls_table.ref
index 5b1950d8cb..5b1950d8cb 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
index 26f0dffa7a..26f0dffa7a 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step10/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step10/show_ip_route.ref
index c712538c00..c712538c00 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step10/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step10/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step10/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step10/show_ipv6_route.ref
index 0b39584717..0b39584717 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step10/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step10/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step10/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step10/show_mpls_table.ref
index 7e6c72627a..7e6c72627a 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step10/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step10/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step10/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step2/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step2/show_ip_route.ref
index c712538c00..c712538c00 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step2/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step2/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step2/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step2/show_ipv6_route.ref
index 0b39584717..0b39584717 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step2/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step2/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step2/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step2/show_mpls_table.ref
index 5b1950d8cb..5b1950d8cb 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step2/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step2/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step3/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step3/show_ip_route.ref
index 71f9ebddfb..71f9ebddfb 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step3/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step3/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step3/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step3/show_ipv6_route.ref
index 304c0a475b..304c0a475b 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step3/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step3/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step3/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step3/show_mpls_table.ref
index 94b3cb6d1a..94b3cb6d1a 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step3/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step3/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step4/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step4/show_ip_route.ref
index c712538c00..c712538c00 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step4/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step4/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step4/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step4/show_ipv6_route.ref
index 0b39584717..0b39584717 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step4/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step4/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step4/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step4/show_mpls_table.ref
index 6500a47fbf..6500a47fbf 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step4/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step4/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step4/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step5/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step5/show_ip_route.ref
index 16d9358468..16d9358468 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step5/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step5/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step5/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step5/show_ipv6_route.ref
index f2093a3fc0..f2093a3fc0 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step5/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step5/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step5/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step5/show_mpls_table.ref
index 94b3cb6d1a..94b3cb6d1a 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step5/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step5/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step5/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step6/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step6/show_ip_route.ref
index c712538c00..c712538c00 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step6/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step6/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step6/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step6/show_ipv6_route.ref
index 0b39584717..0b39584717 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step6/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step6/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step6/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step6/show_mpls_table.ref
index 5b1950d8cb..5b1950d8cb 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step6/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step6/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step6/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step7/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step7/show_ip_route.ref
index c712538c00..c712538c00 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step7/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step7/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step7/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step7/show_ipv6_route.ref
index 0b39584717..0b39584717 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step7/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step7/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step7/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step7/show_mpls_table.ref
index 5b1950d8cb..5b1950d8cb 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step7/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step7/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step7/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step8/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step8/show_ip_route.ref
index c712538c00..c712538c00 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step8/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step8/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step8/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step8/show_ipv6_route.ref
index 0b39584717..0b39584717 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step8/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step8/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step8/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step8/show_mpls_table.ref
index 5b1950d8cb..5b1950d8cb 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step8/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step8/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step8/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step9/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt1/step9/show_ip_route.ref
index c712538c00..c712538c00 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step9/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step9/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step9/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt1/step9/show_ipv6_route.ref
index 0b39584717..0b39584717 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step9/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step9/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step9/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt1/step9/show_mpls_table.ref
index 7e6c72627a..7e6c72627a 100644
--- a/tests/topotests/isis-sr-topo1/rt1/step9/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step9/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt1/step9/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt1/zebra.conf b/tests/topotests/isis_sr_topo1/rt1/zebra.conf
index 9d71d3005f..9d71d3005f 100644
--- a/tests/topotests/isis-sr-topo1/rt1/zebra.conf
+++ b/tests/topotests/isis_sr_topo1/rt1/zebra.conf
diff --git a/tests/topotests/isis-sr-topo1/rt2/isisd.conf b/tests/topotests/isis_sr_topo1/rt2/isisd.conf
index 796b6ed32c..796b6ed32c 100644
--- a/tests/topotests/isis-sr-topo1/rt2/isisd.conf
+++ b/tests/topotests/isis_sr_topo1/rt2/isisd.conf
diff --git a/tests/topotests/isis-sr-topo1/rt2/step1/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step1/show_ip_route.ref
index 109b94f7a1..109b94f7a1 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step1/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step1/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step1/show_ipv6_route.ref
index eae700ee47..eae700ee47 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step1/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step1/show_mpls_table.ref
index a32cd1d1bf..a32cd1d1bf 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
index 07f43e5999..07f43e5999 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step10/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step10/show_ip_route.ref
index b7d52cecca..b7d52cecca 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step10/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step10/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step10/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step10/show_ipv6_route.ref
index 355436cbfc..355436cbfc 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step10/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step10/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step10/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step10/show_mpls_table.ref
index 4cbdb9fda9..4cbdb9fda9 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step10/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step10/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step10/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step2/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step2/show_ip_route.ref
index 159392f7f7..159392f7f7 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step2/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step2/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step2/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step2/show_ipv6_route.ref
index e9f63849d8..e9f63849d8 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step2/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step2/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step2/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step2/show_mpls_table.ref
index 0692553808..0692553808 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step2/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step2/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step3/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step3/show_ip_route.ref
index 16f49ffe46..16f49ffe46 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step3/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step3/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step3/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step3/show_ipv6_route.ref
index bde83c30d0..bde83c30d0 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step3/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step3/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step3/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step3/show_mpls_table.ref
index cbb0d5c695..cbb0d5c695 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step3/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step3/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step4/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step4/show_ip_route.ref
index 159392f7f7..159392f7f7 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step4/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step4/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step4/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step4/show_ipv6_route.ref
index e9f63849d8..e9f63849d8 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step4/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step4/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step4/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step4/show_mpls_table.ref
index 0692553808..0692553808 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step4/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step4/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step4/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step5/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step5/show_ip_route.ref
index fbfcce10aa..fbfcce10aa 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step5/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step5/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step5/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step5/show_ipv6_route.ref
index f747a96518..f747a96518 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step5/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step5/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step5/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step5/show_mpls_table.ref
index cbb0d5c695..cbb0d5c695 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step5/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step5/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step5/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step6/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step6/show_ip_route.ref
index 159392f7f7..159392f7f7 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step6/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step6/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step6/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step6/show_ipv6_route.ref
index e9f63849d8..e9f63849d8 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step6/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step6/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step6/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step6/show_mpls_table.ref
index 0692553808..0692553808 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step6/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step6/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step6/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step7/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step7/show_ip_route.ref
index 09ab6d4f8a..09ab6d4f8a 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step7/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step7/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step7/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step7/show_ipv6_route.ref
index 851275fbf7..851275fbf7 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step7/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step7/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step7/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step7/show_mpls_table.ref
index 87946aa7b9..87946aa7b9 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step7/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step7/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step7/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step8/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step8/show_ip_route.ref
index 159392f7f7..159392f7f7 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step8/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step8/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step8/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step8/show_ipv6_route.ref
index e9f63849d8..e9f63849d8 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step8/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step8/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step8/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step8/show_mpls_table.ref
index 0692553808..0692553808 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step8/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step8/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step8/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step9/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt2/step9/show_ip_route.ref
index fc82ada7e3..fc82ada7e3 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step9/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step9/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step9/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt2/step9/show_ipv6_route.ref
index 355436cbfc..355436cbfc 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step9/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step9/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step9/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt2/step9/show_mpls_table.ref
index 05201724f4..05201724f4 100644
--- a/tests/topotests/isis-sr-topo1/rt2/step9/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step9/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt2/step9/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt2/zebra.conf b/tests/topotests/isis_sr_topo1/rt2/zebra.conf
index dcb0686dc2..dcb0686dc2 100644
--- a/tests/topotests/isis-sr-topo1/rt2/zebra.conf
+++ b/tests/topotests/isis_sr_topo1/rt2/zebra.conf
diff --git a/tests/topotests/isis-sr-topo1/rt3/isisd.conf b/tests/topotests/isis_sr_topo1/rt3/isisd.conf
index cc2aa1782b..cc2aa1782b 100644
--- a/tests/topotests/isis-sr-topo1/rt3/isisd.conf
+++ b/tests/topotests/isis_sr_topo1/rt3/isisd.conf
diff --git a/tests/topotests/isis-sr-topo1/rt3/step1/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step1/show_ip_route.ref
index 241f768859..241f768859 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step1/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step1/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step1/show_ipv6_route.ref
index dd78c7d318..dd78c7d318 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step1/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step1/show_mpls_table.ref
index 8c6fca7b57..8c6fca7b57 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
index 7fa6f5cf47..7fa6f5cf47 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step10/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step10/show_ip_route.ref
index 40a98ab7c6..40a98ab7c6 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step10/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step10/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step10/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step10/show_ipv6_route.ref
index 1fb50407bd..1fb50407bd 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step10/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step10/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step10/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step10/show_mpls_table.ref
index 44ddc4bc14..44ddc4bc14 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step10/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step10/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step10/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step2/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step2/show_ip_route.ref
index 55d8213c4e..55d8213c4e 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step2/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step2/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step2/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step2/show_ipv6_route.ref
index 4f6441e7b9..4f6441e7b9 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step2/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step2/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step2/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step2/show_mpls_table.ref
index db8253f83d..db8253f83d 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step2/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step2/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step3/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step3/show_ip_route.ref
index ed5cef8a5b..ed5cef8a5b 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step3/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step3/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step3/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step3/show_ipv6_route.ref
index b33058c3bd..b33058c3bd 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step3/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step3/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step3/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step3/show_mpls_table.ref
index 70cccc0f0b..70cccc0f0b 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step3/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step3/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step4/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step4/show_ip_route.ref
index 55d8213c4e..55d8213c4e 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step4/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step4/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step4/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step4/show_ipv6_route.ref
index 4f6441e7b9..4f6441e7b9 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step4/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step4/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step4/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step4/show_mpls_table.ref
index db8253f83d..db8253f83d 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step4/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step4/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step4/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step5/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step5/show_ip_route.ref
index 3adcdce58c..3adcdce58c 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step5/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step5/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step5/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step5/show_ipv6_route.ref
index 863e26c30e..863e26c30e 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step5/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step5/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step5/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step5/show_mpls_table.ref
index 70cccc0f0b..70cccc0f0b 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step5/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step5/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step5/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step6/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step6/show_ip_route.ref
index 55d8213c4e..55d8213c4e 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step6/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step6/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step6/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step6/show_ipv6_route.ref
index 4f6441e7b9..4f6441e7b9 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step6/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step6/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step6/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step6/show_mpls_table.ref
index db8253f83d..db8253f83d 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step6/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step6/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step6/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step7/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step7/show_ip_route.ref
index 7f6e05f08b..7f6e05f08b 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step7/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step7/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step7/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step7/show_ipv6_route.ref
index f4770e2ac9..f4770e2ac9 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step7/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step7/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step7/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step7/show_mpls_table.ref
index cb49505f55..cb49505f55 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step7/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step7/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step7/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step8/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step8/show_ip_route.ref
index 55d8213c4e..55d8213c4e 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step8/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step8/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step8/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step8/show_ipv6_route.ref
index 4f6441e7b9..4f6441e7b9 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step8/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step8/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step8/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step8/show_mpls_table.ref
index db8253f83d..db8253f83d 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step8/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step8/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step8/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step9/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt3/step9/show_ip_route.ref
index 40a98ab7c6..40a98ab7c6 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step9/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step9/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step9/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt3/step9/show_ipv6_route.ref
index 1fb50407bd..1fb50407bd 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step9/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step9/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step9/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt3/step9/show_mpls_table.ref
index 44ddc4bc14..44ddc4bc14 100644
--- a/tests/topotests/isis-sr-topo1/rt3/step9/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step9/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt3/step9/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt3/zebra.conf b/tests/topotests/isis_sr_topo1/rt3/zebra.conf
index 3254529386..3254529386 100644
--- a/tests/topotests/isis-sr-topo1/rt3/zebra.conf
+++ b/tests/topotests/isis_sr_topo1/rt3/zebra.conf
diff --git a/tests/topotests/isis-sr-topo1/rt4/isisd.conf b/tests/topotests/isis_sr_topo1/rt4/isisd.conf
index 3852b1962b..3852b1962b 100644
--- a/tests/topotests/isis-sr-topo1/rt4/isisd.conf
+++ b/tests/topotests/isis_sr_topo1/rt4/isisd.conf
diff --git a/tests/topotests/isis-sr-topo1/rt4/step1/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step1/show_ip_route.ref
index 493f3ab60d..493f3ab60d 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step1/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step1/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step1/show_ipv6_route.ref
index 217a4a5379..217a4a5379 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step1/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step1/show_mpls_table.ref
index 307403964a..307403964a 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
index 2eb64b6fc9..2eb64b6fc9 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step10/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step10/show_ip_route.ref
index 11bc948319..11bc948319 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step10/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step10/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step10/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step10/show_ipv6_route.ref
index 844f6becf9..844f6becf9 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step10/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step10/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step10/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step10/show_mpls_table.ref
index f275056070..f275056070 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step10/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step10/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref
index 761cb2fd2f..761cb2fd2f 120000
--- a/tests/topotests/isis-sr-topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step10/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step2/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step2/show_ip_route.ref
index c2fbdeb30e..c2fbdeb30e 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step2/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step2/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step2/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step2/show_ipv6_route.ref
index 7f823b6896..7f823b6896 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step2/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step2/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step2/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step2/show_mpls_table.ref
index 8dd37880d0..8dd37880d0 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step2/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step2/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref
index be1e00b8a2..be1e00b8a2 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step3/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step3/show_ip_route.ref
index f2a54bf958..f2a54bf958 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step3/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step3/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step3/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step3/show_ipv6_route.ref
index 34afda1966..34afda1966 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step3/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step3/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step3/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step3/show_mpls_table.ref
index 65336d88d1..65336d88d1 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step3/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step3/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref
index bcade1ca90..bcade1ca90 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step4/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step4/show_ip_route.ref
index e930657f8d..e930657f8d 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step4/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step4/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step4/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step4/show_ipv6_route.ref
index ca61c6e81f..ca61c6e81f 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step4/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step4/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step4/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step4/show_mpls_table.ref
index eb95fa94c9..eb95fa94c9 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step4/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step4/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref
index 761cb2fd2f..761cb2fd2f 120000
--- a/tests/topotests/isis-sr-topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step4/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step5/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step5/show_ip_route.ref
index 8b0ddd4ee5..8b0ddd4ee5 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step5/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step5/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step5/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step5/show_ipv6_route.ref
index 94e1fac450..94e1fac450 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step5/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step5/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step5/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step5/show_mpls_table.ref
index cd47cfa3a7..cd47cfa3a7 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step5/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step5/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref
index 761cb2fd2f..761cb2fd2f 120000
--- a/tests/topotests/isis-sr-topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step5/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step6/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step6/show_ip_route.ref
index e930657f8d..e930657f8d 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step6/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step6/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step6/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step6/show_ipv6_route.ref
index ca61c6e81f..ca61c6e81f 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step6/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step6/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step6/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step6/show_mpls_table.ref
index eb95fa94c9..eb95fa94c9 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step6/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step6/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref
index 761cb2fd2f..761cb2fd2f 120000
--- a/tests/topotests/isis-sr-topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step6/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step7/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step7/show_ip_route.ref
index f5ac45504e..f5ac45504e 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step7/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step7/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step7/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step7/show_ipv6_route.ref
index 1599c88122..1599c88122 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step7/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step7/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step7/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step7/show_mpls_table.ref
index 19b0beb164..19b0beb164 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step7/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step7/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref
index 761cb2fd2f..761cb2fd2f 120000
--- a/tests/topotests/isis-sr-topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step7/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step8/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step8/show_ip_route.ref
index e930657f8d..e930657f8d 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step8/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step8/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step8/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step8/show_ipv6_route.ref
index ca61c6e81f..ca61c6e81f 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step8/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step8/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step8/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step8/show_mpls_table.ref
index eb95fa94c9..eb95fa94c9 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step8/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step8/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref
index 761cb2fd2f..761cb2fd2f 120000
--- a/tests/topotests/isis-sr-topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step8/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step9/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt4/step9/show_ip_route.ref
index a2b939a418..a2b939a418 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step9/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step9/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step9/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt4/step9/show_ipv6_route.ref
index 844f6becf9..844f6becf9 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step9/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step9/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step9/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt4/step9/show_mpls_table.ref
index 5805bf3556..5805bf3556 100644
--- a/tests/topotests/isis-sr-topo1/rt4/step9/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step9/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref
index 761cb2fd2f..761cb2fd2f 120000
--- a/tests/topotests/isis-sr-topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt4/step9/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt4/zebra.conf b/tests/topotests/isis_sr_topo1/rt4/zebra.conf
index 5889901c56..5889901c56 100644
--- a/tests/topotests/isis-sr-topo1/rt4/zebra.conf
+++ b/tests/topotests/isis_sr_topo1/rt4/zebra.conf
diff --git a/tests/topotests/isis-sr-topo1/rt5/isisd.conf b/tests/topotests/isis_sr_topo1/rt5/isisd.conf
index f7beea796c..f7beea796c 100644
--- a/tests/topotests/isis-sr-topo1/rt5/isisd.conf
+++ b/tests/topotests/isis_sr_topo1/rt5/isisd.conf
diff --git a/tests/topotests/isis-sr-topo1/rt5/step1/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step1/show_ip_route.ref
index 0497bd8399..0497bd8399 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step1/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step1/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step1/show_ipv6_route.ref
index 294567edc8..294567edc8 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step1/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step1/show_mpls_table.ref
index 99d1f773b7..99d1f773b7 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
index 1ff8c2cd4e..1ff8c2cd4e 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step10/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step10/show_ip_route.ref
index 29f4782482..29f4782482 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step10/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step10/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step10/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step10/show_ipv6_route.ref
index c02d3cfaea..c02d3cfaea 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step10/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step10/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step10/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step10/show_mpls_table.ref
index 7cfea2a329..7cfea2a329 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step10/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step10/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref
index 7cdaabf53f..7cdaabf53f 120000
--- a/tests/topotests/isis-sr-topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step10/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step2/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step2/show_ip_route.ref
index dc61b86410..dc61b86410 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step2/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step2/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step2/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step2/show_ipv6_route.ref
index fa426317ba..fa426317ba 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step2/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step2/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step2/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step2/show_mpls_table.ref
index 08f1635a39..08f1635a39 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step2/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step2/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref
index d9ac0a8d00..d9ac0a8d00 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step3/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step3/show_ip_route.ref
index 2d983c43b6..2d983c43b6 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step3/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step3/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step3/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step3/show_ipv6_route.ref
index a3e705f384..a3e705f384 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step3/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step3/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step3/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step3/show_mpls_table.ref
index 9980058b12..9980058b12 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step3/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step3/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref
index 0b8e6ba5b9..0b8e6ba5b9 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step4/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step4/show_ip_route.ref
index 0a64db60f6..0a64db60f6 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step4/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step4/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step4/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step4/show_ipv6_route.ref
index e9f8fe227c..e9f8fe227c 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step4/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step4/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step4/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step4/show_mpls_table.ref
index a84ed90b25..a84ed90b25 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step4/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step4/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref
index d9ac0a8d00..d9ac0a8d00 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step4/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step5/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step5/show_ip_route.ref
index 88485477e3..88485477e3 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step5/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step5/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step5/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step5/show_ipv6_route.ref
index 60c645092e..60c645092e 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step5/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step5/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step5/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step5/show_mpls_table.ref
index 36c21b041f..36c21b041f 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step5/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step5/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref
index 7cdaabf53f..7cdaabf53f 120000
--- a/tests/topotests/isis-sr-topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step5/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step6/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step6/show_ip_route.ref
index 0a64db60f6..0a64db60f6 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step6/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step6/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step6/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step6/show_ipv6_route.ref
index e9f8fe227c..e9f8fe227c 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step6/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step6/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step6/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step6/show_mpls_table.ref
index a84ed90b25..a84ed90b25 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step6/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step6/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref
index 7cdaabf53f..7cdaabf53f 120000
--- a/tests/topotests/isis-sr-topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step6/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step7/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step7/show_ip_route.ref
index 769bc4d31e..769bc4d31e 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step7/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step7/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step7/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step7/show_ipv6_route.ref
index e05cc1e282..e05cc1e282 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step7/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step7/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step7/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step7/show_mpls_table.ref
index c98da7effd..c98da7effd 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step7/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step7/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref
index 7cdaabf53f..7cdaabf53f 120000
--- a/tests/topotests/isis-sr-topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step7/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step8/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step8/show_ip_route.ref
index 0a64db60f6..0a64db60f6 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step8/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step8/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step8/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step8/show_ipv6_route.ref
index e9f8fe227c..e9f8fe227c 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step8/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step8/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step8/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step8/show_mpls_table.ref
index a84ed90b25..a84ed90b25 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step8/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step8/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref
index 7cdaabf53f..7cdaabf53f 120000
--- a/tests/topotests/isis-sr-topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step8/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step9/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt5/step9/show_ip_route.ref
index 34cbf68b21..34cbf68b21 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step9/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step9/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step9/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt5/step9/show_ipv6_route.ref
index c02d3cfaea..c02d3cfaea 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step9/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step9/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step9/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt5/step9/show_mpls_table.ref
index 7cfea2a329..7cfea2a329 100644
--- a/tests/topotests/isis-sr-topo1/rt5/step9/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step9/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref
index 7cdaabf53f..7cdaabf53f 120000
--- a/tests/topotests/isis-sr-topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt5/step9/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt5/zebra.conf b/tests/topotests/isis_sr_topo1/rt5/zebra.conf
index a0c8f2cd7e..a0c8f2cd7e 100644
--- a/tests/topotests/isis-sr-topo1/rt5/zebra.conf
+++ b/tests/topotests/isis_sr_topo1/rt5/zebra.conf
diff --git a/tests/topotests/isis-sr-topo1/rt6/isisd.conf b/tests/topotests/isis_sr_topo1/rt6/isisd.conf
index a29b78f0a4..a29b78f0a4 100644
--- a/tests/topotests/isis-sr-topo1/rt6/isisd.conf
+++ b/tests/topotests/isis_sr_topo1/rt6/isisd.conf
diff --git a/tests/topotests/isis-sr-topo1/rt6/step1/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step1/show_ip_route.ref
index 7b62b0a9c6..7b62b0a9c6 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step1/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step1/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step1/show_ipv6_route.ref
index 834cdfe6ca..834cdfe6ca 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step1/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step1/show_mpls_table.ref
index 2c526e74f0..2c526e74f0 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
index 734832358f..734832358f 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step10/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step10/show_ip_route.ref
index d430ef5a33..d430ef5a33 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step10/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step10/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step10/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step10/show_ipv6_route.ref
index 834cdfe6ca..834cdfe6ca 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step10/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step10/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step10/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step10/show_mpls_table.ref
index be87ed90a0..be87ed90a0 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step10/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step10/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step10/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step2/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step2/show_ip_route.ref
index 4b204dbc4c..4b204dbc4c 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step2/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step2/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step2/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step2/show_ipv6_route.ref
index 834cdfe6ca..834cdfe6ca 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step2/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step2/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step2/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step2/show_mpls_table.ref
index 2c526e74f0..2c526e74f0 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step2/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step2/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step3/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step3/show_ip_route.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step3/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step3/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step3/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step3/show_ipv6_route.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step3/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step3/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step3/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step3/show_mpls_table.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step3/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step3/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step3/show_yang_interface_isis_adjacencies.ref
index 0db3279e44..0db3279e44 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step4/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step4/show_ip_route.ref
index 4b204dbc4c..4b204dbc4c 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step4/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step4/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step4/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step4/show_ipv6_route.ref
index 834cdfe6ca..834cdfe6ca 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step4/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step4/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step4/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step4/show_mpls_table.ref
index be87ed90a0..be87ed90a0 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step4/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step4/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step4/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step5/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step5/show_ip_route.ref
index 4b204dbc4c..4b204dbc4c 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step5/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step5/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step5/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step5/show_ipv6_route.ref
index 834cdfe6ca..834cdfe6ca 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step5/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step5/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step5/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step5/show_mpls_table.ref
index be87ed90a0..be87ed90a0 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step5/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step5/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step5/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step6/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step6/show_ip_route.ref
index 4b204dbc4c..4b204dbc4c 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step6/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step6/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step6/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step6/show_ipv6_route.ref
index 834cdfe6ca..834cdfe6ca 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step6/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step6/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step6/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step6/show_mpls_table.ref
index be87ed90a0..be87ed90a0 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step6/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step6/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step6/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step7/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step7/show_ip_route.ref
index 1787988207..1787988207 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step7/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step7/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step7/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step7/show_ipv6_route.ref
index 367d0ed173..367d0ed173 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step7/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step7/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step7/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step7/show_mpls_table.ref
index b44dda298e..b44dda298e 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step7/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step7/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step7/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step8/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step8/show_ip_route.ref
index 4b204dbc4c..4b204dbc4c 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step8/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step8/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step8/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step8/show_ipv6_route.ref
index 834cdfe6ca..834cdfe6ca 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step8/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step8/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step8/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step8/show_mpls_table.ref
index be87ed90a0..be87ed90a0 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step8/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step8/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step8/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step9/show_ip_route.ref b/tests/topotests/isis_sr_topo1/rt6/step9/show_ip_route.ref
index 4b204dbc4c..4b204dbc4c 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step9/show_ip_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step9/show_ip_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step9/show_ipv6_route.ref b/tests/topotests/isis_sr_topo1/rt6/step9/show_ipv6_route.ref
index 834cdfe6ca..834cdfe6ca 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step9/show_ipv6_route.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step9/show_ipv6_route.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step9/show_mpls_table.ref b/tests/topotests/isis_sr_topo1/rt6/step9/show_mpls_table.ref
index be87ed90a0..be87ed90a0 100644
--- a/tests/topotests/isis-sr-topo1/rt6/step9/show_mpls_table.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step9/show_mpls_table.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_sr_topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref
index 0879b84d23..0879b84d23 120000
--- a/tests/topotests/isis-sr-topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_sr_topo1/rt6/step9/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-sr-topo1/rt6/zebra.conf b/tests/topotests/isis_sr_topo1/rt6/zebra.conf
index 6084010a93..6084010a93 100644
--- a/tests/topotests/isis-sr-topo1/rt6/zebra.conf
+++ b/tests/topotests/isis_sr_topo1/rt6/zebra.conf
diff --git a/tests/topotests/isis-sr-topo1/test_isis_sr_topo1.py b/tests/topotests/isis_sr_topo1/test_isis_sr_topo1.py
index c22bd65d2d..c22bd65d2d 100644
--- a/tests/topotests/isis-sr-topo1/test_isis_sr_topo1.py
+++ b/tests/topotests/isis_sr_topo1/test_isis_sr_topo1.py
diff --git a/tests/topotests/isis-tilfa-topo1/__init__.py b/tests/topotests/isis_tilfa_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/__init__.py
+++ b/tests/topotests/isis_tilfa_topo1/__init__.py
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/isisd.conf b/tests/topotests/isis_tilfa_topo1/rt1/isisd.conf
index a447a2aa5a..a447a2aa5a 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/isisd.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt1/isisd.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step1/show_ip_route.ref b/tests/topotests/isis_tilfa_topo1/rt1/step1/show_ip_route.ref
index 92b7437324..92b7437324 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step1/show_ip_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step1/show_ipv6_route.ref b/tests/topotests/isis_tilfa_topo1/rt1/step1/show_ipv6_route.ref
index 3232121a0f..3232121a0f 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step1/show_mpls_table.ref b/tests/topotests/isis_tilfa_topo1/rt1/step1/show_mpls_table.ref
index aa0357d750..aa0357d750 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_tilfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
index 26f0dffa7a..26f0dffa7a 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step2/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step2/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step2/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step2/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step2/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step2/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step2/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step2/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step2/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step2/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step2/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step2/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step3/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step3/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step3/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step3/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step3/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step3/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step3/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step3/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step3/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step3/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step3/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step3/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step4/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step4/show_ip_route.ref.diff
index 10b336f5b8..10b336f5b8 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step4/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step4/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step4/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step4/show_ipv6_route.ref.diff
index 904aaa1ce2..904aaa1ce2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step4/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step4/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step4/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step4/show_mpls_table.ref.diff
index d7d8753131..d7d8753131 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step4/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step4/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step5/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step5/show_ip_route.ref.diff
index b583fa97bd..b583fa97bd 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step5/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step5/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step5/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step5/show_ipv6_route.ref.diff
index d608abec98..d608abec98 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step5/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step5/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step5/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step5/show_mpls_table.ref.diff
index b5161fcd55..b5161fcd55 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step5/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step5/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step6/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step6/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step6/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step6/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step6/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step6/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step6/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step6/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step6/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step6/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step6/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step6/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step7/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step7/show_ip_route.ref.diff
index 726aed514f..726aed514f 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step7/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step7/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step7/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step7/show_ipv6_route.ref.diff
index 2049f6fa19..2049f6fa19 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step7/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step7/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step7/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step7/show_mpls_table.ref.diff
index 22301ba1ff..22301ba1ff 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step7/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step7/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step8/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step8/show_ip_route.ref.diff
index 4a1d4805a4..4a1d4805a4 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step8/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step8/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step8/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step8/show_ipv6_route.ref.diff
index eaece74e48..eaece74e48 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step8/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step8/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step8/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step8/show_mpls_table.ref.diff
index 46c17de019..46c17de019 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step8/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step8/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step9/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step9/show_ip_route.ref.diff
index 06efdc96ce..06efdc96ce 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step9/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step9/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step9/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step9/show_ipv6_route.ref.diff
index a58f2d447c..a58f2d447c 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step9/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step9/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/step9/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt1/step9/show_mpls_table.ref.diff
index c0a1ac592b..c0a1ac592b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/step9/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt1/step9/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt1/zebra.conf b/tests/topotests/isis_tilfa_topo1/rt1/zebra.conf
index 9d71d3005f..9d71d3005f 100644
--- a/tests/topotests/isis-tilfa-topo1/rt1/zebra.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt1/zebra.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/isisd.conf b/tests/topotests/isis_tilfa_topo1/rt2/isisd.conf
index 1a756e2c72..1a756e2c72 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/isisd.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt2/isisd.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step1/show_ip_route.ref b/tests/topotests/isis_tilfa_topo1/rt2/step1/show_ip_route.ref
index 7e1ccd10a2..7e1ccd10a2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step1/show_ip_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step1/show_ipv6_route.ref b/tests/topotests/isis_tilfa_topo1/rt2/step1/show_ipv6_route.ref
index 6d31f6f26b..6d31f6f26b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step1/show_mpls_table.ref b/tests/topotests/isis_tilfa_topo1/rt2/step1/show_mpls_table.ref
index b9b906a31d..b9b906a31d 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_tilfa_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
index 1ea72a528b..1ea72a528b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step2/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step2/show_ip_route.ref.diff
index 90e0895639..90e0895639 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step2/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step2/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step2/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step2/show_ipv6_route.ref.diff
index 2d19f20f63..2d19f20f63 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step2/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step2/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step2/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step2/show_mpls_table.ref.diff
index 01fc74a60b..01fc74a60b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step2/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step2/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step3/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step3/show_ip_route.ref.diff
index d93f036229..d93f036229 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step3/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step3/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step3/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step3/show_ipv6_route.ref.diff
index 68b618e91d..68b618e91d 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step3/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step3/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step3/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step3/show_mpls_table.ref.diff
index 966e153a6b..966e153a6b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step3/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step3/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step4/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step4/show_ip_route.ref.diff
index dd75d76b9b..dd75d76b9b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step4/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step4/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step4/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step4/show_ipv6_route.ref.diff
index 63731237ec..63731237ec 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step4/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step4/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step4/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step4/show_mpls_table.ref.diff
index 3872ce4980..3872ce4980 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step4/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step4/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step5/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step5/show_ip_route.ref.diff
index 4d5636436c..4d5636436c 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step5/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step5/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step5/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step5/show_ipv6_route.ref.diff
index f9e0276f85..f9e0276f85 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step5/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step5/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step5/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step5/show_mpls_table.ref.diff
index 6aebbd6c82..6aebbd6c82 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step5/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step5/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step6/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step6/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step6/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step6/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step6/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step6/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step6/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step6/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step6/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step6/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step6/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step6/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step7/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step7/show_ip_route.ref.diff
index 5e73b97844..5e73b97844 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step7/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step7/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step7/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step7/show_ipv6_route.ref.diff
index 5dc4e59151..5dc4e59151 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step7/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step7/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step7/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step7/show_mpls_table.ref.diff
index 6c0d7392f0..6c0d7392f0 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step7/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step7/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step8/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step8/show_ip_route.ref.diff
index f5df607613..f5df607613 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step8/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step8/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step8/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step8/show_ipv6_route.ref.diff
index 125f36b1b4..125f36b1b4 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step8/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step8/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step8/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step8/show_mpls_table.ref.diff
index a1d5d795c5..a1d5d795c5 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step8/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step8/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step9/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step9/show_ip_route.ref.diff
index 2475c639c1..2475c639c1 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step9/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step9/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step9/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step9/show_ipv6_route.ref.diff
index 2d21fbcde2..2d21fbcde2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step9/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step9/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/step9/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt2/step9/show_mpls_table.ref.diff
index bc0ec3157e..bc0ec3157e 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/step9/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt2/step9/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt2/zebra.conf b/tests/topotests/isis_tilfa_topo1/rt2/zebra.conf
index dcb0686dc2..dcb0686dc2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt2/zebra.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt2/zebra.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/isisd.conf b/tests/topotests/isis_tilfa_topo1/rt3/isisd.conf
index 986bf2804a..986bf2804a 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/isisd.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt3/isisd.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step1/show_ip_route.ref b/tests/topotests/isis_tilfa_topo1/rt3/step1/show_ip_route.ref
index d70e9fe882..d70e9fe882 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step1/show_ip_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step1/show_ipv6_route.ref b/tests/topotests/isis_tilfa_topo1/rt3/step1/show_ipv6_route.ref
index 058d33609b..058d33609b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step1/show_mpls_table.ref b/tests/topotests/isis_tilfa_topo1/rt3/step1/show_mpls_table.ref
index 1912df3f05..1912df3f05 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_tilfa_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
index d174b4a475..d174b4a475 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step2/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step2/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step2/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step2/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step2/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step2/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step2/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step2/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step2/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step2/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step2/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step2/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step3/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step3/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step3/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step3/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step3/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step3/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step3/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step3/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step3/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step3/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step3/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step3/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step4/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step4/show_ip_route.ref.diff
index 9ba73b057a..9ba73b057a 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step4/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step4/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step4/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step4/show_ipv6_route.ref.diff
index 04f61c4eb4..04f61c4eb4 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step4/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step4/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step4/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step4/show_mpls_table.ref.diff
index b3588ca791..b3588ca791 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step4/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step4/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step5/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step5/show_ip_route.ref.diff
index 1af024fc2e..1af024fc2e 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step5/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step5/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step5/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step5/show_ipv6_route.ref.diff
index 7cc79d0e58..7cc79d0e58 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step5/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step5/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step5/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step5/show_mpls_table.ref.diff
index 75a0f01f55..75a0f01f55 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step5/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step5/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step6/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step6/show_ip_route.ref.diff
index c814a2876b..c814a2876b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step6/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step6/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step6/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step6/show_ipv6_route.ref.diff
index 6f9405f20c..6f9405f20c 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step6/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step6/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step6/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step6/show_mpls_table.ref.diff
index d8c39685de..d8c39685de 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step6/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step6/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step7/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step7/show_ip_route.ref.diff
index c928fcdb4b..c928fcdb4b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step7/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step7/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step7/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step7/show_ipv6_route.ref.diff
index 0170971781..0170971781 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step7/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step7/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step7/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step7/show_mpls_table.ref.diff
index d7a3ed978f..d7a3ed978f 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step7/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step7/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step8/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step8/show_ip_route.ref.diff
index 41a7ff3255..41a7ff3255 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step8/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step8/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step8/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step8/show_ipv6_route.ref.diff
index bd49f8606b..bd49f8606b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step8/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step8/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step8/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step8/show_mpls_table.ref.diff
index 4cc69b66f2..4cc69b66f2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step8/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step8/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step9/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step9/show_ip_route.ref.diff
index cc0a482eee..cc0a482eee 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step9/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step9/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step9/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step9/show_ipv6_route.ref.diff
index 650b982f0b..650b982f0b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step9/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step9/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/step9/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt3/step9/show_mpls_table.ref.diff
index 8ce4f1d266..8ce4f1d266 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/step9/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt3/step9/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt3/zebra.conf b/tests/topotests/isis_tilfa_topo1/rt3/zebra.conf
index 3254529386..3254529386 100644
--- a/tests/topotests/isis-tilfa-topo1/rt3/zebra.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt3/zebra.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/isisd.conf b/tests/topotests/isis_tilfa_topo1/rt4/isisd.conf
index 7d411069d1..7d411069d1 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/isisd.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt4/isisd.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step1/show_ip_route.ref b/tests/topotests/isis_tilfa_topo1/rt4/step1/show_ip_route.ref
index 0ef5d1bc3f..0ef5d1bc3f 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step1/show_ip_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step1/show_ipv6_route.ref b/tests/topotests/isis_tilfa_topo1/rt4/step1/show_ipv6_route.ref
index b640df30c1..b640df30c1 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step1/show_mpls_table.ref b/tests/topotests/isis_tilfa_topo1/rt4/step1/show_mpls_table.ref
index f60937ccbc..f60937ccbc 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_tilfa_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
index 2eb64b6fc9..2eb64b6fc9 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step2/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step2/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step2/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step2/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step2/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step2/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step2/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step2/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step2/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step2/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step2/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step2/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step3/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step3/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step3/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step3/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step3/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step3/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step3/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step3/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step3/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step3/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step3/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step3/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step4/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step4/show_ip_route.ref.diff
index 8b115c2058..8b115c2058 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step4/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step4/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step4/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step4/show_ipv6_route.ref.diff
index 7f39285089..7f39285089 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step4/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step4/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step4/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step4/show_mpls_table.ref.diff
index 3dcd36c176..3dcd36c176 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step4/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step4/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step5/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step5/show_ip_route.ref.diff
index 484a3147dc..484a3147dc 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step5/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step5/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step5/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step5/show_ipv6_route.ref.diff
index 3ad0085120..3ad0085120 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step5/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step5/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step5/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step5/show_mpls_table.ref.diff
index 20e363375b..20e363375b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step5/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step5/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step6/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step6/show_ip_route.ref.diff
index 9070414730..9070414730 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step6/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step6/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step6/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step6/show_ipv6_route.ref.diff
index 57a57647a1..57a57647a1 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step6/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step6/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step6/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step6/show_mpls_table.ref.diff
index 94f87854d1..94f87854d1 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step6/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step6/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step7/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step7/show_ip_route.ref.diff
index e54873d5ab..e54873d5ab 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step7/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step7/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step7/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step7/show_ipv6_route.ref.diff
index 92e08f99a0..92e08f99a0 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step7/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step7/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step7/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step7/show_mpls_table.ref.diff
index fb614ebf6a..fb614ebf6a 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step7/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step7/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step8/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step8/show_ip_route.ref.diff
index 252da6e764..252da6e764 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step8/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step8/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step8/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step8/show_ipv6_route.ref.diff
index 7057d2166a..7057d2166a 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step8/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step8/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step8/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step8/show_mpls_table.ref.diff
index 3dc4303b9b..3dc4303b9b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step8/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step8/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step9/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step9/show_ip_route.ref.diff
index 56f9cc534f..56f9cc534f 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step9/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step9/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step9/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step9/show_ipv6_route.ref.diff
index 41e552177a..41e552177a 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step9/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step9/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/step9/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt4/step9/show_mpls_table.ref.diff
index 627e292518..627e292518 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/step9/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt4/step9/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt4/zebra.conf b/tests/topotests/isis_tilfa_topo1/rt4/zebra.conf
index 4945897e9d..4945897e9d 100644
--- a/tests/topotests/isis-tilfa-topo1/rt4/zebra.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt4/zebra.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/isisd.conf b/tests/topotests/isis_tilfa_topo1/rt5/isisd.conf
index be52eb0322..be52eb0322 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/isisd.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt5/isisd.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step1/show_ip_route.ref b/tests/topotests/isis_tilfa_topo1/rt5/step1/show_ip_route.ref
index 93740e22e0..93740e22e0 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step1/show_ip_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step1/show_ipv6_route.ref b/tests/topotests/isis_tilfa_topo1/rt5/step1/show_ipv6_route.ref
index 6dafa69adb..6dafa69adb 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step1/show_mpls_table.ref b/tests/topotests/isis_tilfa_topo1/rt5/step1/show_mpls_table.ref
index 0c5861b5e8..0c5861b5e8 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_tilfa_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
index 1ff8c2cd4e..1ff8c2cd4e 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step2/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step2/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step2/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step2/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step2/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step2/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step2/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step2/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step2/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step2/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step2/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step2/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step3/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step3/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step3/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step3/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step3/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step3/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step3/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step3/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step3/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step3/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step3/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step3/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step4/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step4/show_ip_route.ref.diff
index 7545a31b9b..7545a31b9b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step4/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step4/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step4/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step4/show_ipv6_route.ref.diff
index 1de62bb58e..1de62bb58e 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step4/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step4/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step4/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step4/show_mpls_table.ref.diff
index b3d5252430..b3d5252430 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step4/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step4/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step5/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step5/show_ip_route.ref.diff
index be5d83f463..be5d83f463 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step5/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step5/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step5/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step5/show_ipv6_route.ref.diff
index a856019622..a856019622 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step5/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step5/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step5/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step5/show_mpls_table.ref.diff
index 74caa8620e..74caa8620e 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step5/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step5/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step6/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step6/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step6/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step6/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step6/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step6/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step6/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step6/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step6/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step6/show_mpls_table.ref.diff
index 2883c046fd..2883c046fd 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step6/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step6/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step7/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step7/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step7/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step7/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step7/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step7/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step7/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step7/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step7/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step7/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step7/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step7/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step8/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step8/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step8/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step8/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step8/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step8/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step8/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step8/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step8/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step8/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step8/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step8/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step9/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step9/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step9/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step9/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step9/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step9/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step9/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step9/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/step9/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt5/step9/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/step9/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt5/step9/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt5/zebra.conf b/tests/topotests/isis_tilfa_topo1/rt5/zebra.conf
index 4cfea1a59f..4cfea1a59f 100644
--- a/tests/topotests/isis-tilfa-topo1/rt5/zebra.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt5/zebra.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/isisd.conf b/tests/topotests/isis_tilfa_topo1/rt6/isisd.conf
index db47622a10..db47622a10 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/isisd.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt6/isisd.conf
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step1/show_ip_route.ref b/tests/topotests/isis_tilfa_topo1/rt6/step1/show_ip_route.ref
index b9b43c4139..b9b43c4139 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step1/show_ip_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step1/show_ip_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step1/show_ipv6_route.ref b/tests/topotests/isis_tilfa_topo1/rt6/step1/show_ipv6_route.ref
index 1b1942939d..1b1942939d 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step1/show_ipv6_route.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step1/show_ipv6_route.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step1/show_mpls_table.ref b/tests/topotests/isis_tilfa_topo1/rt6/step1/show_mpls_table.ref
index 5b52a16f48..5b52a16f48 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step1/show_mpls_table.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step1/show_mpls_table.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/isis_tilfa_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
index 734832358f..734832358f 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step2/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step2/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step2/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step2/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step2/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step2/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step2/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step2/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step2/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step2/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step2/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step2/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step3/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step3/show_ip_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step3/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step3/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step3/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step3/show_ipv6_route.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step3/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step3/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step3/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step3/show_mpls_table.ref.diff
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step3/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step3/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step4/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step4/show_ip_route.ref.diff
index 7c2f00419a..7c2f00419a 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step4/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step4/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step4/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step4/show_ipv6_route.ref.diff
index 70f872e9de..70f872e9de 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step4/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step4/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step4/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step4/show_mpls_table.ref.diff
index c191763a73..c191763a73 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step4/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step4/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step5/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step5/show_ip_route.ref.diff
index 9f017d2492..9f017d2492 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step5/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step5/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step5/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step5/show_ipv6_route.ref.diff
index 1209504e94..1209504e94 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step5/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step5/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step5/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step5/show_mpls_table.ref.diff
index abf7c2a32d..abf7c2a32d 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step5/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step5/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step6/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step6/show_ip_route.ref.diff
index f318f95e21..f318f95e21 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step6/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step6/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step6/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step6/show_ipv6_route.ref.diff
index 9208491fc8..9208491fc8 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step6/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step6/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step6/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step6/show_mpls_table.ref.diff
index aee8969ded..aee8969ded 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step6/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step6/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step7/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step7/show_ip_route.ref.diff
index 0e6c3ff5cd..0e6c3ff5cd 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step7/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step7/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step7/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step7/show_ipv6_route.ref.diff
index 2fe46c8265..2fe46c8265 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step7/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step7/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step7/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step7/show_mpls_table.ref.diff
index 179a4f460b..179a4f460b 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step7/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step7/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step8/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step8/show_ip_route.ref.diff
index 9d5c440a22..9d5c440a22 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step8/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step8/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step8/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step8/show_ipv6_route.ref.diff
index 21cab20a47..21cab20a47 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step8/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step8/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step8/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step8/show_mpls_table.ref.diff
index 760c5542cb..760c5542cb 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step8/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step8/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step9/show_ip_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step9/show_ip_route.ref.diff
index ee296470c0..ee296470c0 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step9/show_ip_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step9/show_ip_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step9/show_ipv6_route.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step9/show_ipv6_route.ref.diff
index bebca4dcf1..bebca4dcf1 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step9/show_ipv6_route.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step9/show_ipv6_route.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/step9/show_mpls_table.ref.diff b/tests/topotests/isis_tilfa_topo1/rt6/step9/show_mpls_table.ref.diff
index 57347d15be..57347d15be 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/step9/show_mpls_table.ref.diff
+++ b/tests/topotests/isis_tilfa_topo1/rt6/step9/show_mpls_table.ref.diff
diff --git a/tests/topotests/isis-tilfa-topo1/rt6/zebra.conf b/tests/topotests/isis_tilfa_topo1/rt6/zebra.conf
index 6084010a93..6084010a93 100644
--- a/tests/topotests/isis-tilfa-topo1/rt6/zebra.conf
+++ b/tests/topotests/isis_tilfa_topo1/rt6/zebra.conf
diff --git a/tests/topotests/isis-tilfa-topo1/test_isis_tilfa_topo1.py b/tests/topotests/isis_tilfa_topo1/test_isis_tilfa_topo1.py
index 00cb623999..00cb623999 100755
--- a/tests/topotests/isis-tilfa-topo1/test_isis_tilfa_topo1.py
+++ b/tests/topotests/isis_tilfa_topo1/test_isis_tilfa_topo1.py
diff --git a/tests/topotests/isis-topo1-vrf/__init__.py b/tests/topotests/isis_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-topo1-vrf/__init__.py
+++ b/tests/topotests/isis_topo1/__init__.py
diff --git a/tests/topotests/isis-topo1/r1/isisd.conf b/tests/topotests/isis_topo1/r1/isisd.conf
index 4e3761e5a1..4e3761e5a1 100644
--- a/tests/topotests/isis-topo1/r1/isisd.conf
+++ b/tests/topotests/isis_topo1/r1/isisd.conf
diff --git a/tests/topotests/isis-topo1/r1/r1_route.json b/tests/topotests/isis_topo1/r1/r1_route.json
index f94233a80f..f94233a80f 100644
--- a/tests/topotests/isis-topo1/r1/r1_route.json
+++ b/tests/topotests/isis_topo1/r1/r1_route.json
diff --git a/tests/topotests/isis-topo1/r1/r1_route6.json b/tests/topotests/isis_topo1/r1/r1_route6.json
index bd09839fea..bd09839fea 100644
--- a/tests/topotests/isis-topo1/r1/r1_route6.json
+++ b/tests/topotests/isis_topo1/r1/r1_route6.json
diff --git a/tests/topotests/isis-topo1/r1/r1_route6_linux.json b/tests/topotests/isis_topo1/r1/r1_route6_linux.json
index 139747c1cd..139747c1cd 100644
--- a/tests/topotests/isis-topo1/r1/r1_route6_linux.json
+++ b/tests/topotests/isis_topo1/r1/r1_route6_linux.json
diff --git a/tests/topotests/isis-topo1/r1/r1_route_linux.json b/tests/topotests/isis_topo1/r1/r1_route_linux.json
index 6420dec5d7..6420dec5d7 100644
--- a/tests/topotests/isis-topo1/r1/r1_route_linux.json
+++ b/tests/topotests/isis_topo1/r1/r1_route_linux.json
diff --git a/tests/topotests/isis-topo1/r1/r1_topology.json b/tests/topotests/isis_topo1/r1/r1_topology.json
index 6d2bbb80c9..337d6bf5ef 100644
--- a/tests/topotests/isis-topo1/r1/r1_topology.json
+++ b/tests/topotests/isis_topo1/r1/r1_topology.json
@@ -18,9 +18,9 @@
"vertex": "r1"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP",
+ "metric": "0",
+ "parent": "r1(4)",
+ "type": "IP internal",
"vertex": "10.0.20.0/24"
},
{
@@ -32,27 +32,27 @@
"vertex": "r3"
},
{
- "interface": "r3",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r1-eth0",
- "type": "IP",
+ "interface": "r1-eth0",
+ "metric": "10",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP TE",
"vertex": "10.0.10.0/24"
},
{
- "interface": "r3",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r1-eth0",
- "type": "IP",
+ "interface": "r1-eth0",
+ "metric": "10",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP TE",
"vertex": "10.0.20.0/24"
},
{
- "interface": "r3",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r1-eth0",
- "type": "IP",
+ "interface": "r1-eth0",
+ "metric": "10",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP TE",
"vertex": "10.254.0.3/32"
}
],
@@ -61,9 +61,9 @@
"vertex": "r1"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP6",
+ "metric": "0",
+ "parent": "r1(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:1:1::/64"
},
{
@@ -75,17 +75,19 @@
"vertex": "r3"
},
{
- "interface": "r3",
- "next-hop": "10",
- "parent": "r1-eth0",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r1-eth0",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:2:1::/64"
},
{
- "interface": "r3",
- "next-hop": "10",
- "parent": "r1-eth0",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r1-eth0",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:f::3/128"
}
]
diff --git a/tests/topotests/isis-topo1/r1/zebra.conf b/tests/topotests/isis_topo1/r1/zebra.conf
index 23cf6252a6..23cf6252a6 100644
--- a/tests/topotests/isis-topo1/r1/zebra.conf
+++ b/tests/topotests/isis_topo1/r1/zebra.conf
diff --git a/tests/topotests/isis-topo1/r2/isisd.conf b/tests/topotests/isis_topo1/r2/isisd.conf
index 14db0940ec..14db0940ec 100644
--- a/tests/topotests/isis-topo1/r2/isisd.conf
+++ b/tests/topotests/isis_topo1/r2/isisd.conf
diff --git a/tests/topotests/isis-topo1/r2/r2_route.json b/tests/topotests/isis_topo1/r2/r2_route.json
index aab651eff0..aab651eff0 100644
--- a/tests/topotests/isis-topo1/r2/r2_route.json
+++ b/tests/topotests/isis_topo1/r2/r2_route.json
diff --git a/tests/topotests/isis-topo1/r2/r2_route6.json b/tests/topotests/isis_topo1/r2/r2_route6.json
index 78c31b3cc5..78c31b3cc5 100644
--- a/tests/topotests/isis-topo1/r2/r2_route6.json
+++ b/tests/topotests/isis_topo1/r2/r2_route6.json
diff --git a/tests/topotests/isis-topo1/r2/r2_route6_linux.json b/tests/topotests/isis_topo1/r2/r2_route6_linux.json
index 50688615a7..50688615a7 100644
--- a/tests/topotests/isis-topo1/r2/r2_route6_linux.json
+++ b/tests/topotests/isis_topo1/r2/r2_route6_linux.json
diff --git a/tests/topotests/isis-topo1/r2/r2_route_linux.json b/tests/topotests/isis_topo1/r2/r2_route_linux.json
index dd3035a1ac..dd3035a1ac 100644
--- a/tests/topotests/isis-topo1/r2/r2_route_linux.json
+++ b/tests/topotests/isis_topo1/r2/r2_route_linux.json
diff --git a/tests/topotests/isis-topo1/r2/r2_topology.json b/tests/topotests/isis_topo1/r2/r2_topology.json
index 396c618caa..de90fb5a32 100644
--- a/tests/topotests/isis-topo1/r2/r2_topology.json
+++ b/tests/topotests/isis_topo1/r2/r2_topology.json
@@ -18,9 +18,9 @@
"vertex": "r2"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP",
+ "metric": "0",
+ "parent": "r2(4)",
+ "type": "IP internal",
"vertex": "10.0.21.0/24"
},
{
@@ -32,27 +32,27 @@
"vertex": "r4"
},
{
- "interface": "r4",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r2-eth0",
- "type": "IP",
+ "interface": "r2-eth0",
+ "metric": "10",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP TE",
"vertex": "10.0.11.0/24"
},
{
- "interface": "r4",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r2-eth0",
- "type": "IP",
+ "interface": "r2-eth0",
+ "metric": "10",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP TE",
"vertex": "10.0.21.0/24"
},
{
- "interface": "r4",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r2-eth0",
- "type": "IP",
+ "interface": "r2-eth0",
+ "metric": "10",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP TE",
"vertex": "10.254.0.4/32"
}
],
@@ -61,9 +61,9 @@
"vertex": "r2"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP6",
+ "metric": "0",
+ "parent": "r2(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:1:2::/64"
},
{
@@ -75,17 +75,19 @@
"vertex": "r4"
},
{
- "interface": "r4",
- "next-hop": "10",
- "parent": "r2-eth0",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r2-eth0",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:2:2::/64"
},
{
- "interface": "r4",
- "next-hop": "10",
- "parent": "r2-eth0",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r2-eth0",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:f::4/128"
}
]
diff --git a/tests/topotests/isis-topo1/r2/zebra.conf b/tests/topotests/isis_topo1/r2/zebra.conf
index cf6f8f67d4..cf6f8f67d4 100644
--- a/tests/topotests/isis-topo1/r2/zebra.conf
+++ b/tests/topotests/isis_topo1/r2/zebra.conf
diff --git a/tests/topotests/isis-topo1/r3/isisd.conf b/tests/topotests/isis_topo1/r3/isisd.conf
index 6f36c0fa36..6f36c0fa36 100644
--- a/tests/topotests/isis-topo1/r3/isisd.conf
+++ b/tests/topotests/isis_topo1/r3/isisd.conf
diff --git a/tests/topotests/isis-topo1/r3/r3_route.json b/tests/topotests/isis_topo1/r3/r3_route.json
index 61d05e80bb..61d05e80bb 100644
--- a/tests/topotests/isis-topo1/r3/r3_route.json
+++ b/tests/topotests/isis_topo1/r3/r3_route.json
diff --git a/tests/topotests/isis-topo1/r3/r3_route6.json b/tests/topotests/isis_topo1/r3/r3_route6.json
index 41040240ea..41040240ea 100644
--- a/tests/topotests/isis-topo1/r3/r3_route6.json
+++ b/tests/topotests/isis_topo1/r3/r3_route6.json
diff --git a/tests/topotests/isis-topo1/r3/r3_route6_linux.json b/tests/topotests/isis_topo1/r3/r3_route6_linux.json
index 78993ff420..78993ff420 100644
--- a/tests/topotests/isis-topo1/r3/r3_route6_linux.json
+++ b/tests/topotests/isis_topo1/r3/r3_route6_linux.json
diff --git a/tests/topotests/isis-topo1/r3/r3_route_linux.json b/tests/topotests/isis_topo1/r3/r3_route_linux.json
index 04a2418d00..04a2418d00 100644
--- a/tests/topotests/isis-topo1/r3/r3_route_linux.json
+++ b/tests/topotests/isis_topo1/r3/r3_route_linux.json
diff --git a/tests/topotests/isis-topo1/r3/r3_topology.json b/tests/topotests/isis_topo1/r3/r3_topology.json
index 5ab58c41a6..2d36f9b427 100644
--- a/tests/topotests/isis-topo1/r3/r3_topology.json
+++ b/tests/topotests/isis_topo1/r3/r3_topology.json
@@ -6,9 +6,9 @@
"vertex": "r3"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP",
+ "metric": "0",
+ "parent": "r3(4)",
+ "type": "IP internal",
"vertex": "10.0.10.0/24"
},
{
@@ -20,27 +20,27 @@
"vertex": "r5"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r3-eth1",
- "type": "IP",
+ "interface": "r3-eth1",
+ "metric": "10",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP TE",
"vertex": "10.0.10.0/24"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r3-eth1",
- "type": "IP",
+ "interface": "r3-eth1",
+ "metric": "10",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP TE",
"vertex": "10.0.11.0/24"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r3-eth1",
- "type": "IP",
+ "interface": "r3-eth1",
+ "metric": "10",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP TE",
"vertex": "10.254.0.5/32"
},
{
@@ -51,19 +51,19 @@
"vertex": "r4"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "20",
- "parent": "r3-eth1",
- "type": "IP",
+ "interface": "r3-eth1",
+ "metric": "20",
+ "next-hop": "r5",
+ "parent": "r4(4)",
+ "type": "IP TE",
"vertex": "10.0.21.0/24"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "20",
- "parent": "r3-eth1",
- "type": "IP",
+ "interface": "r3-eth1",
+ "metric": "20",
+ "next-hop": "r5",
+ "parent": "r4(4)",
+ "type": "IP TE",
"vertex": "10.254.0.4/32"
}
],
@@ -72,9 +72,9 @@
"vertex": "r3"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP6",
+ "metric": "0",
+ "parent": "r3(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:2:1::/64"
},
{
@@ -86,17 +86,19 @@
"vertex": "r5"
},
{
- "interface": "r5",
- "next-hop": "10",
- "parent": "r3-eth1",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r3-eth1",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:2:2::/64"
},
{
- "interface": "r5",
- "next-hop": "10",
- "parent": "r3-eth1",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r3-eth1",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:f::5/128"
},
{
@@ -107,17 +109,19 @@
"vertex": "r4"
},
{
- "interface": "r5",
- "next-hop": "20",
- "parent": "r3-eth1",
- "type": "IP6",
+ "metric": "20",
+ "interface": "r3-eth1",
+ "next-hop": "r5",
+ "parent": "r4(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:1:2::/64"
},
{
- "interface": "r5",
- "next-hop": "20",
- "parent": "r3-eth1",
- "type": "IP6",
+ "metric": "20",
+ "interface": "r3-eth1",
+ "next-hop": "r5",
+ "parent": "r4(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:f::4/128"
}
]
@@ -128,9 +132,9 @@
"vertex": "r3"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP",
+ "metric": "0",
+ "parent": "r3(4)",
+ "type": "IP internal",
"vertex": "10.0.20.0/24"
},
{
@@ -142,19 +146,19 @@
"vertex": "r1"
},
{
- "interface": "r1",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r3-eth0",
- "type": "IP",
+ "interface": "r3-eth0",
+ "metric": "10",
+ "next-hop": "r1",
+ "parent": "r1(4)",
+ "type": "IP TE",
"vertex": "10.0.20.0/24"
},
{
- "interface": "r1",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r3-eth0",
- "type": "IP",
+ "interface": "r3-eth0",
+ "metric": "10",
+ "next-hop": "r1",
+ "parent": "r1(4)",
+ "type": "IP TE",
"vertex": "10.254.0.1/32"
}
],
@@ -163,9 +167,9 @@
"vertex": "r3"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP6",
+ "metric": "0",
+ "parent": "r3(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:1:1::/64"
},
{
@@ -177,10 +181,11 @@
"vertex": "r1"
},
{
- "interface": "r1",
- "next-hop": "10",
- "parent": "r3-eth0",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r3-eth0",
+ "next-hop": "r1",
+ "parent": "r1(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:f::1/128"
}
]
diff --git a/tests/topotests/isis-topo1/r3/zebra.conf b/tests/topotests/isis_topo1/r3/zebra.conf
index 1e4c0d752e..1e4c0d752e 100644
--- a/tests/topotests/isis-topo1/r3/zebra.conf
+++ b/tests/topotests/isis_topo1/r3/zebra.conf
diff --git a/tests/topotests/isis-topo1/r4/isisd.conf b/tests/topotests/isis_topo1/r4/isisd.conf
index 502e035f50..502e035f50 100644
--- a/tests/topotests/isis-topo1/r4/isisd.conf
+++ b/tests/topotests/isis_topo1/r4/isisd.conf
diff --git a/tests/topotests/isis-topo1/r4/r4_route.json b/tests/topotests/isis_topo1/r4/r4_route.json
index 79361af4b5..79361af4b5 100644
--- a/tests/topotests/isis-topo1/r4/r4_route.json
+++ b/tests/topotests/isis_topo1/r4/r4_route.json
diff --git a/tests/topotests/isis-topo1/r4/r4_route6.json b/tests/topotests/isis_topo1/r4/r4_route6.json
index c0ace9a193..c0ace9a193 100644
--- a/tests/topotests/isis-topo1/r4/r4_route6.json
+++ b/tests/topotests/isis_topo1/r4/r4_route6.json
diff --git a/tests/topotests/isis-topo1/r4/r4_route6_linux.json b/tests/topotests/isis_topo1/r4/r4_route6_linux.json
index 32ea366396..32ea366396 100644
--- a/tests/topotests/isis-topo1/r4/r4_route6_linux.json
+++ b/tests/topotests/isis_topo1/r4/r4_route6_linux.json
diff --git a/tests/topotests/isis-topo1/r4/r4_route_linux.json b/tests/topotests/isis_topo1/r4/r4_route_linux.json
index 5d6553f70d..5d6553f70d 100644
--- a/tests/topotests/isis-topo1/r4/r4_route_linux.json
+++ b/tests/topotests/isis_topo1/r4/r4_route_linux.json
diff --git a/tests/topotests/isis-topo1/r4/r4_topology.json b/tests/topotests/isis_topo1/r4/r4_topology.json
index ae74a60948..e7d7841912 100644
--- a/tests/topotests/isis-topo1/r4/r4_topology.json
+++ b/tests/topotests/isis_topo1/r4/r4_topology.json
@@ -6,9 +6,9 @@
"vertex": "r4"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP",
+ "metric": "0",
+ "parent": "r4(4)",
+ "type": "IP internal",
"vertex": "10.0.11.0/24"
},
{
@@ -20,27 +20,27 @@
"vertex": "r5"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r4-eth1",
- "type": "IP",
+ "interface": "r4-eth1",
+ "metric": "10",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP TE",
"vertex": "10.0.10.0/24"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r4-eth1",
- "type": "IP",
+ "interface": "r4-eth1",
+ "metric": "10",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP TE",
"vertex": "10.0.11.0/24"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r4-eth1",
- "type": "IP",
+ "interface": "r4-eth1",
+ "metric": "10",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP TE",
"vertex": "10.254.0.5/32"
},
{
@@ -51,19 +51,19 @@
"vertex": "r3"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "20",
- "parent": "r4-eth1",
- "type": "IP",
+ "interface": "r4-eth1",
+ "metric": "20",
+ "next-hop": "r5",
+ "parent": "r3(4)",
+ "type": "IP TE",
"vertex": "10.0.20.0/24"
},
{
- "interface": "r5",
- "metric": "TE",
- "next-hop": "20",
- "parent": "r4-eth1",
- "type": "IP",
+ "interface": "r4-eth1",
+ "metric": "20",
+ "next-hop": "r5",
+ "parent": "r3(4)",
+ "type": "IP TE",
"vertex": "10.254.0.3/32"
}
],
@@ -72,9 +72,9 @@
"vertex": "r4"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP6",
+ "metric": "0",
+ "parent": "r4(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:2:2::/64"
},
{
@@ -86,17 +86,19 @@
"vertex": "r5"
},
{
- "interface": "r5",
- "next-hop": "10",
- "parent": "r4-eth1",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r4-eth1",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:2:1::/64"
},
{
- "interface": "r5",
- "next-hop": "10",
- "parent": "r4-eth1",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r4-eth1",
+ "next-hop": "r5",
+ "parent": "r5(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:f::5/128"
},
{
@@ -107,17 +109,19 @@
"vertex": "r3"
},
{
- "interface": "r5",
- "next-hop": "20",
- "parent": "r4-eth1",
- "type": "IP6",
+ "metric": "20",
+ "interface": "r4-eth1",
+ "next-hop": "r5",
+ "parent": "r3(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:1:1::/64"
},
{
- "interface": "r5",
- "next-hop": "20",
- "parent": "r4-eth1",
- "type": "IP6",
+ "metric": "20",
+ "interface": "r4-eth1",
+ "next-hop": "r5",
+ "parent": "r3(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:f::3/128"
}
]
@@ -128,9 +132,9 @@
"vertex": "r4"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP",
+ "metric": "0",
+ "parent": "r4(4)",
+ "type": "IP internal",
"vertex": "10.0.21.0/24"
},
{
@@ -142,19 +146,19 @@
"vertex": "r2"
},
{
- "interface": "r2",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r4-eth0",
- "type": "IP",
+ "interface": "r4-eth0",
+ "metric": "10",
+ "next-hop": "r2",
+ "parent": "r2(4)",
+ "type": "IP TE",
"vertex": "10.0.21.0/24"
},
{
- "interface": "r2",
- "metric": "TE",
- "next-hop": "10",
- "parent": "r4-eth0",
- "type": "IP",
+ "interface": "r4-eth0",
+ "metric": "10",
+ "next-hop": "r2",
+ "parent": "r2(4)",
+ "type": "IP TE",
"vertex": "10.254.0.2/32"
}
],
@@ -163,9 +167,9 @@
"vertex": "r4"
},
{
- "metric": "internal",
- "parent": "0",
- "type": "IP6",
+ "metric": "0",
+ "parent": "r4(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:1:2::/64"
},
{
@@ -177,10 +181,11 @@
"vertex": "r2"
},
{
- "interface": "r2",
- "next-hop": "10",
- "parent": "r4-eth0",
- "type": "IP6",
+ "metric": "10",
+ "interface": "r4-eth0",
+ "next-hop": "r2",
+ "parent": "r2(4)",
+ "type": "IP6 internal",
"vertex": "2001:db8:f::2/128"
}
]
diff --git a/tests/topotests/isis-topo1/r4/zebra.conf b/tests/topotests/isis_topo1/r4/zebra.conf
index 5ca9a3db72..5ca9a3db72 100644
--- a/tests/topotests/isis-topo1/r4/zebra.conf
+++ b/tests/topotests/isis_topo1/r4/zebra.conf
diff --git a/tests/topotests/isis-topo1/r5/isisd.conf b/tests/topotests/isis_topo1/r5/isisd.conf
index 42493a4991..42493a4991 100644
--- a/tests/topotests/isis-topo1/r5/isisd.conf
+++ b/tests/topotests/isis_topo1/r5/isisd.conf
diff --git a/tests/topotests/isis-topo1/r5/r5_route.json b/tests/topotests/isis_topo1/r5/r5_route.json
index cca844b27c..cca844b27c 100644
--- a/tests/topotests/isis-topo1/r5/r5_route.json
+++ b/tests/topotests/isis_topo1/r5/r5_route.json
diff --git a/tests/topotests/isis-topo1/r5/r5_route6.json b/tests/topotests/isis_topo1/r5/r5_route6.json
index b9468764d4..b9468764d4 100644
--- a/tests/topotests/isis-topo1/r5/r5_route6.json
+++ b/tests/topotests/isis_topo1/r5/r5_route6.json
diff --git a/tests/topotests/isis-topo1/r5/r5_route6_linux.json b/tests/topotests/isis_topo1/r5/r5_route6_linux.json
index a7343b5330..a7343b5330 100644
--- a/tests/topotests/isis-topo1/r5/r5_route6_linux.json
+++ b/tests/topotests/isis_topo1/r5/r5_route6_linux.json
diff --git a/tests/topotests/isis-topo1/r5/r5_route_linux.json b/tests/topotests/isis_topo1/r5/r5_route_linux.json
index b809896468..b809896468 100644
--- a/tests/topotests/isis-topo1/r5/r5_route_linux.json
+++ b/tests/topotests/isis_topo1/r5/r5_route_linux.json
diff --git a/tests/topotests/isis_topo1/r5/r5_topology.json b/tests/topotests/isis_topo1/r5/r5_topology.json
new file mode 100644
index 0000000000..3d887b7cea
--- /dev/null
+++ b/tests/topotests/isis_topo1/r5/r5_topology.json
@@ -0,0 +1,156 @@
+{
+ "1": {
+ "level-1": {
+ "ipv4": [
+ {
+ "vertex": "r5"
+ },
+ {
+ "metric": "0",
+ "parent": "r5(4)",
+ "type": "IP internal",
+ "vertex": "10.0.10.0/24"
+ },
+ {
+ "metric": "0",
+ "parent": "r5(4)",
+ "type": "IP internal",
+ "vertex": "10.0.11.0/24"
+ },
+ {
+ "interface": "r5-eth0",
+ "metric": "10",
+ "next-hop": "r3",
+ "parent": "r5(4)",
+ "type": "TE-IS",
+ "vertex": "r3"
+ },
+ {
+ "interface": "r5-eth1",
+ "metric": "10",
+ "next-hop": "r4",
+ "parent": "r5(4)",
+ "type": "TE-IS",
+ "vertex": "r4"
+ },
+ {
+ "interface": "r5-eth0",
+ "metric": "10",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP TE",
+ "vertex": "10.0.10.0/24"
+ },
+ {
+ "interface": "r5-eth0",
+ "metric": "10",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP TE",
+ "vertex": "10.0.20.0/24"
+ },
+ {
+ "interface": "r5-eth0",
+ "metric": "10",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP TE",
+ "vertex": "10.254.0.3/32"
+ },
+ {
+ "interface": "r5-eth1",
+ "metric": "10",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP TE",
+ "vertex": "10.0.11.0/24"
+ },
+ {
+ "interface": "r5-eth1",
+ "metric": "10",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP TE",
+ "vertex": "10.0.21.0/24"
+ },
+ {
+ "interface": "r5-eth1",
+ "metric": "10",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP TE",
+ "vertex": "10.254.0.4/32"
+ }
+ ],
+ "ipv6": [
+ {
+ "vertex": "r5"
+ },
+ {
+ "metric": "0",
+ "parent": "r5(4)",
+ "type": "IP6 internal",
+ "vertex": "2001:db8:2:1::/64"
+ },
+ {
+ "metric": "0",
+ "parent": "r5(4)",
+ "type": "IP6 internal",
+ "vertex": "2001:db8:2:2::/64"
+ },
+ {
+ "interface": "r5-eth0",
+ "metric": "10",
+ "next-hop": "r3",
+ "parent": "r5(4)",
+ "type": "TE-IS",
+ "vertex": "r3"
+ },
+ {
+ "interface": "r5-eth1",
+ "metric": "10",
+ "next-hop": "r4",
+ "parent": "r5(4)",
+ "type": "TE-IS",
+ "vertex": "r4"
+ },
+ {
+ "metric": "10",
+ "interface": "r5-eth0",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP6 internal",
+ "vertex": "2001:db8:1:1::/64"
+ },
+ {
+ "metric": "10",
+ "interface": "r5-eth0",
+ "next-hop": "r3",
+ "parent": "r3(4)",
+ "type": "IP6 internal",
+ "vertex": "2001:db8:f::3/128"
+ },
+ {
+ "metric": "10",
+ "interface": "r5-eth1",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP6 internal",
+ "vertex": "2001:db8:1:2::/64"
+ },
+ {
+ "metric": "10",
+ "interface": "r5-eth1",
+ "next-hop": "r4",
+ "parent": "r4(4)",
+ "type": "IP6 internal",
+ "vertex": "2001:db8:f::4/128"
+ }
+ ]
+ },
+ "level-2": {
+ "ipv4": [],
+ "ipv6": []
+ }
+ }
+}
diff --git a/tests/topotests/isis-topo1/r5/zebra.conf b/tests/topotests/isis_topo1/r5/zebra.conf
index 48fed69662..48fed69662 100644
--- a/tests/topotests/isis-topo1/r5/zebra.conf
+++ b/tests/topotests/isis_topo1/r5/zebra.conf
diff --git a/tests/topotests/isis-topo1/test_isis_topo1.dot b/tests/topotests/isis_topo1/test_isis_topo1.dot
index 01f9ba780f..01f9ba780f 100644
--- a/tests/topotests/isis-topo1/test_isis_topo1.dot
+++ b/tests/topotests/isis_topo1/test_isis_topo1.dot
diff --git a/tests/topotests/isis-topo1/test_isis_topo1.jpg b/tests/topotests/isis_topo1/test_isis_topo1.jpg
index 4ad730f2a0..4ad730f2a0 100644
--- a/tests/topotests/isis-topo1/test_isis_topo1.jpg
+++ b/tests/topotests/isis_topo1/test_isis_topo1.jpg
Binary files differ
diff --git a/tests/topotests/isis-topo1/test_isis_topo1.py b/tests/topotests/isis_topo1/test_isis_topo1.py
index e7618c7bce..083a8b1e8d 100644
--- a/tests/topotests/isis-topo1/test_isis_topo1.py
+++ b/tests/topotests/isis_topo1/test_isis_topo1.py
@@ -47,6 +47,20 @@ from mininet.topo import Topo
pytestmark = [pytest.mark.isisd]
+VERTEX_TYPE_LIST = [
+ "pseudo_IS",
+ "pseudo_TE-IS",
+ "IS",
+ "TE-IS",
+ "ES",
+ "IP internal",
+ "IP external",
+ "IP TE",
+ "IP6 internal",
+ "IP6 external",
+ "UNKNOWN",
+]
+
class ISISTopo1(Topo):
"Simple two layer ISIS topology"
@@ -263,6 +277,7 @@ def parse_topology(lines, level):
areas = {}
area = None
ipv = None
+ vertex_type_regex = "|".join(VERTEX_TYPE_LIST)
for line in lines:
area_match = re.match(r"Area (.+):", line)
@@ -282,44 +297,57 @@ def parse_topology(lines, level):
ipv = "ipv4"
continue
- item_match = re.match(r"([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)", line)
- if item_match is not None:
+ item_match = re.match(
+ r"([^\s]+) ([^\s]+) ([^\s]+) ([^\s]+) ([^\s]+) ([^\s]+)", line
+ )
+ if (
+ item_match is not None
+ and item_match.group(1) == "Vertex"
+ and item_match.group(2) == "Type"
+ and item_match.group(3) == "Metric"
+ and item_match.group(4) == "Next-Hop"
+ and item_match.group(5) == "Interface"
+ and item_match.group(6) == "Parent"
+ ):
# Skip header
- if (
- item_match.group(1) == "Vertex"
- and item_match.group(2) == "Type"
- and item_match.group(3) == "Metric"
- and item_match.group(4) == "Next-Hop"
- and item_match.group(5) == "Interface"
- and item_match.group(6) == "Parent"
- ):
- continue
+ continue
+ item_match = re.match(
+ r"([^\s]+) ({}) ([0]|([1-9][0-9]*)) ([^\s]+) ([^\s]+) ([^\s]+)".format(
+ vertex_type_regex
+ ),
+ line,
+ )
+ if item_match is not None:
areas[area][level][ipv].append(
{
"vertex": item_match.group(1),
"type": item_match.group(2),
"metric": item_match.group(3),
- "next-hop": item_match.group(4),
- "interface": item_match.group(5),
- "parent": item_match.group(6),
+ "next-hop": item_match.group(5),
+ "interface": item_match.group(6),
+ "parent": item_match.group(7),
}
)
continue
- item_match = re.match(r"([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)", line)
+ item_match = re.match(
+ r"([^\s]+) ({}) ([0]|([1-9][0-9]*)) ([^\s]+)".format(vertex_type_regex),
+ line,
+ )
+
if item_match is not None:
areas[area][level][ipv].append(
{
"vertex": item_match.group(1),
"type": item_match.group(2),
"metric": item_match.group(3),
- "parent": item_match.group(4),
+ "parent": item_match.group(5),
}
)
continue
- item_match = re.match(r"([^ ]+)", line)
+ item_match = re.match(r"([^\s]+)", line)
if item_match is not None:
areas[area][level][ipv].append({"vertex": item_match.group(1)})
continue
diff --git a/tests/topotests/isis-topo1/__init__.py b/tests/topotests/isis_topo1_vrf/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/isis-topo1/__init__.py
+++ b/tests/topotests/isis_topo1_vrf/__init__.py
diff --git a/tests/topotests/isis-topo1-vrf/r1/isisd.conf b/tests/topotests/isis_topo1_vrf/r1/isisd.conf
index 5fb4c14d0b..5fb4c14d0b 100755
--- a/tests/topotests/isis-topo1-vrf/r1/isisd.conf
+++ b/tests/topotests/isis_topo1_vrf/r1/isisd.conf
diff --git a/tests/topotests/isis-topo1-vrf/r1/r1_route.json b/tests/topotests/isis_topo1_vrf/r1/r1_route.json
index f0a3593a4c..f0a3593a4c 100644
--- a/tests/topotests/isis-topo1-vrf/r1/r1_route.json
+++ b/tests/topotests/isis_topo1_vrf/r1/r1_route.json
diff --git a/tests/topotests/isis-topo1-vrf/r1/r1_route6.json b/tests/topotests/isis_topo1_vrf/r1/r1_route6.json
index 888b9e2c42..888b9e2c42 100644
--- a/tests/topotests/isis-topo1-vrf/r1/r1_route6.json
+++ b/tests/topotests/isis_topo1_vrf/r1/r1_route6.json
diff --git a/tests/topotests/isis-topo1-vrf/r1/r1_route6_linux.json b/tests/topotests/isis_topo1_vrf/r1/r1_route6_linux.json
index d1ace402ba..d1ace402ba 100755
--- a/tests/topotests/isis-topo1-vrf/r1/r1_route6_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r1/r1_route6_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r1/r1_route_linux.json b/tests/topotests/isis_topo1_vrf/r1/r1_route_linux.json
index 6af22297e9..6af22297e9 100755
--- a/tests/topotests/isis-topo1-vrf/r1/r1_route_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r1/r1_route_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r1/r1_topology.json b/tests/topotests/isis_topo1_vrf/r1/r1_topology.json
index 1a6fe6d5c6..1a6fe6d5c6 100644
--- a/tests/topotests/isis-topo1-vrf/r1/r1_topology.json
+++ b/tests/topotests/isis_topo1_vrf/r1/r1_topology.json
diff --git a/tests/topotests/isis-topo1-vrf/r1/zebra.conf b/tests/topotests/isis_topo1_vrf/r1/zebra.conf
index fa1c02e5f8..fa1c02e5f8 100755
--- a/tests/topotests/isis-topo1-vrf/r1/zebra.conf
+++ b/tests/topotests/isis_topo1_vrf/r1/zebra.conf
diff --git a/tests/topotests/isis-topo1-vrf/r2/isisd.conf b/tests/topotests/isis_topo1_vrf/r2/isisd.conf
index 0d2bc7ab72..0d2bc7ab72 100755
--- a/tests/topotests/isis-topo1-vrf/r2/isisd.conf
+++ b/tests/topotests/isis_topo1_vrf/r2/isisd.conf
diff --git a/tests/topotests/isis-topo1-vrf/r2/r2_route.json b/tests/topotests/isis_topo1_vrf/r2/r2_route.json
index a26cdfad8e..a26cdfad8e 100644
--- a/tests/topotests/isis-topo1-vrf/r2/r2_route.json
+++ b/tests/topotests/isis_topo1_vrf/r2/r2_route.json
diff --git a/tests/topotests/isis-topo1-vrf/r2/r2_route6.json b/tests/topotests/isis_topo1_vrf/r2/r2_route6.json
index b01789b8d9..b01789b8d9 100644
--- a/tests/topotests/isis-topo1-vrf/r2/r2_route6.json
+++ b/tests/topotests/isis_topo1_vrf/r2/r2_route6.json
diff --git a/tests/topotests/isis-topo1-vrf/r2/r2_route6_linux.json b/tests/topotests/isis_topo1_vrf/r2/r2_route6_linux.json
index 27423e1936..27423e1936 100755
--- a/tests/topotests/isis-topo1-vrf/r2/r2_route6_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r2/r2_route6_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r2/r2_route_linux.json b/tests/topotests/isis_topo1_vrf/r2/r2_route_linux.json
index 744b0780f3..744b0780f3 100755
--- a/tests/topotests/isis-topo1-vrf/r2/r2_route_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r2/r2_route_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r2/r2_topology.json b/tests/topotests/isis_topo1_vrf/r2/r2_topology.json
index a77f7977f9..a77f7977f9 100644
--- a/tests/topotests/isis-topo1-vrf/r2/r2_topology.json
+++ b/tests/topotests/isis_topo1_vrf/r2/r2_topology.json
diff --git a/tests/topotests/isis-topo1-vrf/r2/zebra.conf b/tests/topotests/isis_topo1_vrf/r2/zebra.conf
index a62af1749e..a62af1749e 100755
--- a/tests/topotests/isis-topo1-vrf/r2/zebra.conf
+++ b/tests/topotests/isis_topo1_vrf/r2/zebra.conf
diff --git a/tests/topotests/isis-topo1-vrf/r3/isisd.conf b/tests/topotests/isis_topo1_vrf/r3/isisd.conf
index 66092407ab..66092407ab 100755
--- a/tests/topotests/isis-topo1-vrf/r3/isisd.conf
+++ b/tests/topotests/isis_topo1_vrf/r3/isisd.conf
diff --git a/tests/topotests/isis-topo1-vrf/r3/r3_route.json b/tests/topotests/isis_topo1_vrf/r3/r3_route.json
index 9717df5c1a..9717df5c1a 100644
--- a/tests/topotests/isis-topo1-vrf/r3/r3_route.json
+++ b/tests/topotests/isis_topo1_vrf/r3/r3_route.json
diff --git a/tests/topotests/isis-topo1-vrf/r3/r3_route6.json b/tests/topotests/isis_topo1_vrf/r3/r3_route6.json
index 31a1e4620f..31a1e4620f 100644
--- a/tests/topotests/isis-topo1-vrf/r3/r3_route6.json
+++ b/tests/topotests/isis_topo1_vrf/r3/r3_route6.json
diff --git a/tests/topotests/isis-topo1-vrf/r3/r3_route6_linux.json b/tests/topotests/isis_topo1_vrf/r3/r3_route6_linux.json
index bc527d2e1e..bc527d2e1e 100755
--- a/tests/topotests/isis-topo1-vrf/r3/r3_route6_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r3/r3_route6_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r3/r3_route_linux.json b/tests/topotests/isis_topo1_vrf/r3/r3_route_linux.json
index 515d376475..515d376475 100755
--- a/tests/topotests/isis-topo1-vrf/r3/r3_route_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r3/r3_route_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r3/r3_topology.json b/tests/topotests/isis_topo1_vrf/r3/r3_topology.json
index 1e5d331965..1e5d331965 100644
--- a/tests/topotests/isis-topo1-vrf/r3/r3_topology.json
+++ b/tests/topotests/isis_topo1_vrf/r3/r3_topology.json
diff --git a/tests/topotests/isis-topo1-vrf/r3/zebra.conf b/tests/topotests/isis_topo1_vrf/r3/zebra.conf
index ac0b810fce..ac0b810fce 100755
--- a/tests/topotests/isis-topo1-vrf/r3/zebra.conf
+++ b/tests/topotests/isis_topo1_vrf/r3/zebra.conf
diff --git a/tests/topotests/isis-topo1-vrf/r4/isisd.conf b/tests/topotests/isis_topo1_vrf/r4/isisd.conf
index 05815e8418..05815e8418 100755
--- a/tests/topotests/isis-topo1-vrf/r4/isisd.conf
+++ b/tests/topotests/isis_topo1_vrf/r4/isisd.conf
diff --git a/tests/topotests/isis-topo1-vrf/r4/r4_route.json b/tests/topotests/isis_topo1_vrf/r4/r4_route.json
index 6cb79b0301..6cb79b0301 100644
--- a/tests/topotests/isis-topo1-vrf/r4/r4_route.json
+++ b/tests/topotests/isis_topo1_vrf/r4/r4_route.json
diff --git a/tests/topotests/isis-topo1-vrf/r4/r4_route6.json b/tests/topotests/isis_topo1_vrf/r4/r4_route6.json
index 88a91749c2..88a91749c2 100644
--- a/tests/topotests/isis-topo1-vrf/r4/r4_route6.json
+++ b/tests/topotests/isis_topo1_vrf/r4/r4_route6.json
diff --git a/tests/topotests/isis-topo1-vrf/r4/r4_route6_linux.json b/tests/topotests/isis_topo1_vrf/r4/r4_route6_linux.json
index b1cd5b9db9..b1cd5b9db9 100755
--- a/tests/topotests/isis-topo1-vrf/r4/r4_route6_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r4/r4_route6_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r4/r4_route_linux.json b/tests/topotests/isis_topo1_vrf/r4/r4_route_linux.json
index 3198b85789..3198b85789 100755
--- a/tests/topotests/isis-topo1-vrf/r4/r4_route_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r4/r4_route_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r4/r4_topology.json b/tests/topotests/isis_topo1_vrf/r4/r4_topology.json
index 34f5ac9ca4..34f5ac9ca4 100644
--- a/tests/topotests/isis-topo1-vrf/r4/r4_topology.json
+++ b/tests/topotests/isis_topo1_vrf/r4/r4_topology.json
diff --git a/tests/topotests/isis-topo1-vrf/r4/zebra.conf b/tests/topotests/isis_topo1_vrf/r4/zebra.conf
index 9c8941f7a5..9c8941f7a5 100755
--- a/tests/topotests/isis-topo1-vrf/r4/zebra.conf
+++ b/tests/topotests/isis_topo1_vrf/r4/zebra.conf
diff --git a/tests/topotests/isis-topo1-vrf/r5/isisd.conf b/tests/topotests/isis_topo1_vrf/r5/isisd.conf
index f663c33fe9..f663c33fe9 100755
--- a/tests/topotests/isis-topo1-vrf/r5/isisd.conf
+++ b/tests/topotests/isis_topo1_vrf/r5/isisd.conf
diff --git a/tests/topotests/isis-topo1-vrf/r5/r5_route.json b/tests/topotests/isis_topo1_vrf/r5/r5_route.json
index 5efa36bce6..5efa36bce6 100644
--- a/tests/topotests/isis-topo1-vrf/r5/r5_route.json
+++ b/tests/topotests/isis_topo1_vrf/r5/r5_route.json
diff --git a/tests/topotests/isis-topo1-vrf/r5/r5_route6.json b/tests/topotests/isis_topo1_vrf/r5/r5_route6.json
index 5e8f6364af..5e8f6364af 100644
--- a/tests/topotests/isis-topo1-vrf/r5/r5_route6.json
+++ b/tests/topotests/isis_topo1_vrf/r5/r5_route6.json
diff --git a/tests/topotests/isis-topo1-vrf/r5/r5_route6_linux.json b/tests/topotests/isis_topo1_vrf/r5/r5_route6_linux.json
index 3db3c93ea6..3db3c93ea6 100755
--- a/tests/topotests/isis-topo1-vrf/r5/r5_route6_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r5/r5_route6_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r5/r5_route_linux.json b/tests/topotests/isis_topo1_vrf/r5/r5_route_linux.json
index 6a38ba864a..6a38ba864a 100755
--- a/tests/topotests/isis-topo1-vrf/r5/r5_route_linux.json
+++ b/tests/topotests/isis_topo1_vrf/r5/r5_route_linux.json
diff --git a/tests/topotests/isis-topo1-vrf/r5/r5_topology.json b/tests/topotests/isis_topo1_vrf/r5/r5_topology.json
index ace56536e9..ace56536e9 100644
--- a/tests/topotests/isis-topo1-vrf/r5/r5_topology.json
+++ b/tests/topotests/isis_topo1_vrf/r5/r5_topology.json
diff --git a/tests/topotests/isis-topo1-vrf/r5/zebra.conf b/tests/topotests/isis_topo1_vrf/r5/zebra.conf
index c6bc6302fc..c6bc6302fc 100755
--- a/tests/topotests/isis-topo1-vrf/r5/zebra.conf
+++ b/tests/topotests/isis_topo1_vrf/r5/zebra.conf
diff --git a/tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.dot b/tests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.dot
index 01f9ba780f..01f9ba780f 100755
--- a/tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.dot
+++ b/tests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.dot
diff --git a/tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.jpg b/tests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.jpg
index 4ad730f2a0..4ad730f2a0 100755
--- a/tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.jpg
+++ b/tests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.jpg
Binary files differ
diff --git a/tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.py b/tests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.py
index b7fe0c2ddb..b7fe0c2ddb 100644
--- a/tests/topotests/isis-topo1-vrf/test_isis_topo1_vrf.py
+++ b/tests/topotests/isis_topo1_vrf/test_isis_topo1_vrf.py
diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/ldpd.conf b/tests/topotests/ldp_oc_acl_topo1/r1/ldpd.conf
index 85bb970fdf..85bb970fdf 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r1/ldpd.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r1/ldpd.conf
diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/ospfd.conf b/tests/topotests/ldp_oc_acl_topo1/r1/ospfd.conf
index 877e14ff36..877e14ff36 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r1/ospfd.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r1/ospfd.conf
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 aa3f74fc5f..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
diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/show_ip_route.ref b/tests/topotests/ldp_oc_acl_topo1/r1/show_ip_route.ref
index 2131668fc3..2131668fc3 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r1/show_ip_route.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r1/show_ip_route.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_all_binding.ref b/tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_all_binding.ref
index 99a59668f8..99a59668f8 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_all_binding.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_all_binding.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_binding.ref b/tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_binding.ref
index ccc8413646..ccc8413646 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_binding.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_discovery.ref b/tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_discovery.ref
index b349f4418f..b349f4418f 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_neighbor.ref b/tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_neighbor.ref
index 4bff444a46..4bff444a46 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r1/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r1/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r1/zebra.conf b/tests/topotests/ldp_oc_acl_topo1/r1/zebra.conf
index 83aea46e64..83aea46e64 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r1/zebra.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r1/zebra.conf
diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/ldpd.conf b/tests/topotests/ldp_oc_acl_topo1/r2/ldpd.conf
index e1a552c701..e1a552c701 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r2/ldpd.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r2/ldpd.conf
diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/ospfd.conf b/tests/topotests/ldp_oc_acl_topo1/r2/ospfd.conf
index 8cba1529e8..8cba1529e8 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r2/ospfd.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r2/ospfd.conf
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 aa68198957..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
diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/show_ip_route.ref b/tests/topotests/ldp_oc_acl_topo1/r2/show_ip_route.ref
index 4b1d31a5d3..4b1d31a5d3 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r2/show_ip_route.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r2/show_ip_route.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_all_binding.ref b/tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_all_binding.ref
index 95fb847c1e..95fb847c1e 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_all_binding.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_all_binding.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_binding.ref b/tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_binding.ref
index ea32de3eda..ea32de3eda 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_binding.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_discovery.ref b/tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_discovery.ref
index 8129570082..8129570082 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_neighbor.ref b/tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_neighbor.ref
index eed35289ea..eed35289ea 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r2/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r2/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r2/zebra.conf b/tests/topotests/ldp_oc_acl_topo1/r2/zebra.conf
index 1f1e3e391a..1f1e3e391a 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r2/zebra.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r2/zebra.conf
diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/ldpd.conf b/tests/topotests/ldp_oc_acl_topo1/r3/ldpd.conf
index 4e66b140ac..4e66b140ac 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r3/ldpd.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r3/ldpd.conf
diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/ospfd.conf b/tests/topotests/ldp_oc_acl_topo1/r3/ospfd.conf
index 0d3a74c4ac..0d3a74c4ac 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r3/ospfd.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r3/ospfd.conf
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 905774fc46..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
diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/show_ip_route.ref b/tests/topotests/ldp_oc_acl_topo1/r3/show_ip_route.ref
index 4d115caf3e..4d115caf3e 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r3/show_ip_route.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r3/show_ip_route.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_all_binding.ref b/tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_all_binding.ref
index 100dd307ea..100dd307ea 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_all_binding.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_all_binding.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_binding.ref b/tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_binding.ref
index bb1b2b3023..bb1b2b3023 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_binding.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_discovery.ref b/tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_discovery.ref
index c3a07e7e38..c3a07e7e38 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_neighbor.ref b/tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_neighbor.ref
index 4bff444a46..4bff444a46 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r3/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r3/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r3/zebra.conf b/tests/topotests/ldp_oc_acl_topo1/r3/zebra.conf
index 234c215ddf..234c215ddf 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r3/zebra.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r3/zebra.conf
diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/ldpd.conf b/tests/topotests/ldp_oc_acl_topo1/r4/ldpd.conf
index 6b7d28f983..6b7d28f983 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r4/ldpd.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r4/ldpd.conf
diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/ospfd.conf b/tests/topotests/ldp_oc_acl_topo1/r4/ospfd.conf
index 7bbd228d02..7bbd228d02 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r4/ospfd.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r4/ospfd.conf
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 67593952ca..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
diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/show_ip_route.ref b/tests/topotests/ldp_oc_acl_topo1/r4/show_ip_route.ref
index 223cbded84..223cbded84 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r4/show_ip_route.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r4/show_ip_route.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_all_binding.ref b/tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_all_binding.ref
index 2a46c40346..2a46c40346 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_all_binding.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_all_binding.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_binding.ref b/tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_binding.ref
index 2a46c40346..2a46c40346 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_binding.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_discovery.ref b/tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_discovery.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_neighbor.ref b/tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_neighbor.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r4/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_oc_acl_topo1/r4/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-oc-acl-topo1/r4/zebra.conf b/tests/topotests/ldp_oc_acl_topo1/r4/zebra.conf
index 7e291053e5..7e291053e5 100644
--- a/tests/topotests/ldp-oc-acl-topo1/r4/zebra.conf
+++ b/tests/topotests/ldp_oc_acl_topo1/r4/zebra.conf
diff --git a/tests/topotests/ldp-oc-acl-topo1/test_ldp_oc_acl_topo1.dot b/tests/topotests/ldp_oc_acl_topo1/test_ldp_oc_acl_topo1.dot
index 62058e3cb1..62058e3cb1 100644
--- a/tests/topotests/ldp-oc-acl-topo1/test_ldp_oc_acl_topo1.dot
+++ b/tests/topotests/ldp_oc_acl_topo1/test_ldp_oc_acl_topo1.dot
diff --git a/tests/topotests/ldp-oc-acl-topo1/test_ldp_oc_acl_topo1.py b/tests/topotests/ldp_oc_acl_topo1/test_ldp_oc_acl_topo1.py
index 9aa4024598..9aa4024598 100644
--- a/tests/topotests/ldp-oc-acl-topo1/test_ldp_oc_acl_topo1.py
+++ b/tests/topotests/ldp_oc_acl_topo1/test_ldp_oc_acl_topo1.py
diff --git a/tests/topotests/ldp-oc-topo1/r1/ldpd.conf b/tests/topotests/ldp_oc_topo1/r1/ldpd.conf
index 2a8e023832..2a8e023832 100644
--- a/tests/topotests/ldp-oc-topo1/r1/ldpd.conf
+++ b/tests/topotests/ldp_oc_topo1/r1/ldpd.conf
diff --git a/tests/topotests/ldp-oc-topo1/r1/ospfd.conf b/tests/topotests/ldp_oc_topo1/r1/ospfd.conf
index 877e14ff36..877e14ff36 100644
--- a/tests/topotests/ldp-oc-topo1/r1/ospfd.conf
+++ b/tests/topotests/ldp_oc_topo1/r1/ospfd.conf
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 aa3f74fc5f..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
diff --git a/tests/topotests/ldp-oc-topo1/r1/show_ip_route.ref b/tests/topotests/ldp_oc_topo1/r1/show_ip_route.ref
index 2131668fc3..2131668fc3 100644
--- a/tests/topotests/ldp-oc-topo1/r1/show_ip_route.ref
+++ b/tests/topotests/ldp_oc_topo1/r1/show_ip_route.ref
diff --git a/tests/topotests/ldp-oc-topo1/r1/show_ldp_binding.ref b/tests/topotests/ldp_oc_topo1/r1/show_ldp_binding.ref
index 99a59668f8..99a59668f8 100644
--- a/tests/topotests/ldp-oc-topo1/r1/show_ldp_binding.ref
+++ b/tests/topotests/ldp_oc_topo1/r1/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-oc-topo1/r1/show_ldp_discovery.ref b/tests/topotests/ldp_oc_topo1/r1/show_ldp_discovery.ref
index b349f4418f..b349f4418f 100644
--- a/tests/topotests/ldp-oc-topo1/r1/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_oc_topo1/r1/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-oc-topo1/r1/show_ldp_neighbor.ref b/tests/topotests/ldp_oc_topo1/r1/show_ldp_neighbor.ref
index 4bff444a46..4bff444a46 100644
--- a/tests/topotests/ldp-oc-topo1/r1/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_oc_topo1/r1/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-oc-topo1/r1/zebra.conf b/tests/topotests/ldp_oc_topo1/r1/zebra.conf
index 83aea46e64..83aea46e64 100644
--- a/tests/topotests/ldp-oc-topo1/r1/zebra.conf
+++ b/tests/topotests/ldp_oc_topo1/r1/zebra.conf
diff --git a/tests/topotests/ldp-oc-topo1/r2/ldpd.conf b/tests/topotests/ldp_oc_topo1/r2/ldpd.conf
index e1a552c701..e1a552c701 100644
--- a/tests/topotests/ldp-oc-topo1/r2/ldpd.conf
+++ b/tests/topotests/ldp_oc_topo1/r2/ldpd.conf
diff --git a/tests/topotests/ldp-oc-topo1/r2/ospfd.conf b/tests/topotests/ldp_oc_topo1/r2/ospfd.conf
index 8cba1529e8..8cba1529e8 100644
--- a/tests/topotests/ldp-oc-topo1/r2/ospfd.conf
+++ b/tests/topotests/ldp_oc_topo1/r2/ospfd.conf
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 aa68198957..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
diff --git a/tests/topotests/ldp-oc-topo1/r2/show_ip_route.ref b/tests/topotests/ldp_oc_topo1/r2/show_ip_route.ref
index 4b1d31a5d3..4b1d31a5d3 100644
--- a/tests/topotests/ldp-oc-topo1/r2/show_ip_route.ref
+++ b/tests/topotests/ldp_oc_topo1/r2/show_ip_route.ref
diff --git a/tests/topotests/ldp-oc-topo1/r2/show_ldp_binding.ref b/tests/topotests/ldp_oc_topo1/r2/show_ldp_binding.ref
index 95fb847c1e..95fb847c1e 100644
--- a/tests/topotests/ldp-oc-topo1/r2/show_ldp_binding.ref
+++ b/tests/topotests/ldp_oc_topo1/r2/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-oc-topo1/r2/show_ldp_discovery.ref b/tests/topotests/ldp_oc_topo1/r2/show_ldp_discovery.ref
index 8129570082..8129570082 100644
--- a/tests/topotests/ldp-oc-topo1/r2/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_oc_topo1/r2/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-oc-topo1/r2/show_ldp_neighbor.ref b/tests/topotests/ldp_oc_topo1/r2/show_ldp_neighbor.ref
index eed35289ea..eed35289ea 100644
--- a/tests/topotests/ldp-oc-topo1/r2/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_oc_topo1/r2/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-oc-topo1/r2/zebra.conf b/tests/topotests/ldp_oc_topo1/r2/zebra.conf
index 1f1e3e391a..1f1e3e391a 100644
--- a/tests/topotests/ldp-oc-topo1/r2/zebra.conf
+++ b/tests/topotests/ldp_oc_topo1/r2/zebra.conf
diff --git a/tests/topotests/ldp-oc-topo1/r3/ldpd.conf b/tests/topotests/ldp_oc_topo1/r3/ldpd.conf
index 4e66b140ac..4e66b140ac 100644
--- a/tests/topotests/ldp-oc-topo1/r3/ldpd.conf
+++ b/tests/topotests/ldp_oc_topo1/r3/ldpd.conf
diff --git a/tests/topotests/ldp-oc-topo1/r3/ospfd.conf b/tests/topotests/ldp_oc_topo1/r3/ospfd.conf
index 0d3a74c4ac..0d3a74c4ac 100644
--- a/tests/topotests/ldp-oc-topo1/r3/ospfd.conf
+++ b/tests/topotests/ldp_oc_topo1/r3/ospfd.conf
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 905774fc46..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
diff --git a/tests/topotests/ldp-oc-topo1/r3/show_ip_route.ref b/tests/topotests/ldp_oc_topo1/r3/show_ip_route.ref
index 4d115caf3e..4d115caf3e 100644
--- a/tests/topotests/ldp-oc-topo1/r3/show_ip_route.ref
+++ b/tests/topotests/ldp_oc_topo1/r3/show_ip_route.ref
diff --git a/tests/topotests/ldp-oc-topo1/r3/show_ldp_binding.ref b/tests/topotests/ldp_oc_topo1/r3/show_ldp_binding.ref
index 100dd307ea..100dd307ea 100644
--- a/tests/topotests/ldp-oc-topo1/r3/show_ldp_binding.ref
+++ b/tests/topotests/ldp_oc_topo1/r3/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-oc-topo1/r3/show_ldp_discovery.ref b/tests/topotests/ldp_oc_topo1/r3/show_ldp_discovery.ref
index c3a07e7e38..c3a07e7e38 100644
--- a/tests/topotests/ldp-oc-topo1/r3/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_oc_topo1/r3/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-oc-topo1/r3/show_ldp_neighbor.ref b/tests/topotests/ldp_oc_topo1/r3/show_ldp_neighbor.ref
index 4bff444a46..4bff444a46 100644
--- a/tests/topotests/ldp-oc-topo1/r3/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_oc_topo1/r3/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-oc-topo1/r3/zebra.conf b/tests/topotests/ldp_oc_topo1/r3/zebra.conf
index 234c215ddf..234c215ddf 100644
--- a/tests/topotests/ldp-oc-topo1/r3/zebra.conf
+++ b/tests/topotests/ldp_oc_topo1/r3/zebra.conf
diff --git a/tests/topotests/ldp-oc-topo1/r4/ldpd.conf b/tests/topotests/ldp_oc_topo1/r4/ldpd.conf
index 6b7d28f983..6b7d28f983 100644
--- a/tests/topotests/ldp-oc-topo1/r4/ldpd.conf
+++ b/tests/topotests/ldp_oc_topo1/r4/ldpd.conf
diff --git a/tests/topotests/ldp-oc-topo1/r4/ospfd.conf b/tests/topotests/ldp_oc_topo1/r4/ospfd.conf
index 7bbd228d02..7bbd228d02 100644
--- a/tests/topotests/ldp-oc-topo1/r4/ospfd.conf
+++ b/tests/topotests/ldp_oc_topo1/r4/ospfd.conf
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 67593952ca..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
diff --git a/tests/topotests/ldp-oc-topo1/r4/show_ip_route.ref b/tests/topotests/ldp_oc_topo1/r4/show_ip_route.ref
index 223cbded84..223cbded84 100644
--- a/tests/topotests/ldp-oc-topo1/r4/show_ip_route.ref
+++ b/tests/topotests/ldp_oc_topo1/r4/show_ip_route.ref
diff --git a/tests/topotests/ldp-oc-topo1/r4/show_ldp_binding.ref b/tests/topotests/ldp_oc_topo1/r4/show_ldp_binding.ref
index 2a46c40346..2a46c40346 100644
--- a/tests/topotests/ldp-oc-topo1/r4/show_ldp_binding.ref
+++ b/tests/topotests/ldp_oc_topo1/r4/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-oc-topo1/r4/show_ldp_discovery.ref b/tests/topotests/ldp_oc_topo1/r4/show_ldp_discovery.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-oc-topo1/r4/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_oc_topo1/r4/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-oc-topo1/r4/show_ldp_neighbor.ref b/tests/topotests/ldp_oc_topo1/r4/show_ldp_neighbor.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-oc-topo1/r4/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_oc_topo1/r4/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-oc-topo1/r4/zebra.conf b/tests/topotests/ldp_oc_topo1/r4/zebra.conf
index 7e291053e5..7e291053e5 100644
--- a/tests/topotests/ldp-oc-topo1/r4/zebra.conf
+++ b/tests/topotests/ldp_oc_topo1/r4/zebra.conf
diff --git a/tests/topotests/ldp-oc-topo1/test_ldp_oc_topo1.dot b/tests/topotests/ldp_oc_topo1/test_ldp_oc_topo1.dot
index 62058e3cb1..62058e3cb1 100644
--- a/tests/topotests/ldp-oc-topo1/test_ldp_oc_topo1.dot
+++ b/tests/topotests/ldp_oc_topo1/test_ldp_oc_topo1.dot
diff --git a/tests/topotests/ldp-oc-topo1/test_ldp_oc_topo1.py b/tests/topotests/ldp_oc_topo1/test_ldp_oc_topo1.py
index aef22c395d..aef22c395d 100644
--- a/tests/topotests/ldp-oc-topo1/test_ldp_oc_topo1.py
+++ b/tests/topotests/ldp_oc_topo1/test_ldp_oc_topo1.py
diff --git a/tests/topotests/ldp-snmp/ce1/zebra.conf b/tests/topotests/ldp_snmp/ce1/zebra.conf
index 6f165e2724..6f165e2724 100644
--- a/tests/topotests/ldp-snmp/ce1/zebra.conf
+++ b/tests/topotests/ldp_snmp/ce1/zebra.conf
diff --git a/tests/topotests/ldp-snmp/ce2/zebra.conf b/tests/topotests/ldp_snmp/ce2/zebra.conf
index ac02d0f9a4..ac02d0f9a4 100644
--- a/tests/topotests/ldp-snmp/ce2/zebra.conf
+++ b/tests/topotests/ldp_snmp/ce2/zebra.conf
diff --git a/tests/topotests/ldp-snmp/ce3/zebra.conf b/tests/topotests/ldp_snmp/ce3/zebra.conf
index c6a5824d15..c6a5824d15 100644
--- a/tests/topotests/ldp-snmp/ce3/zebra.conf
+++ b/tests/topotests/ldp_snmp/ce3/zebra.conf
diff --git a/tests/topotests/ldp-snmp/r1/isisd.conf b/tests/topotests/ldp_snmp/r1/isisd.conf
index da2970d94e..da2970d94e 100644
--- a/tests/topotests/ldp-snmp/r1/isisd.conf
+++ b/tests/topotests/ldp_snmp/r1/isisd.conf
diff --git a/tests/topotests/ldp-snmp/r1/ldpd.conf b/tests/topotests/ldp_snmp/r1/ldpd.conf
index 01fc039b09..01fc039b09 100644
--- a/tests/topotests/ldp-snmp/r1/ldpd.conf
+++ b/tests/topotests/ldp_snmp/r1/ldpd.conf
diff --git a/tests/topotests/ldp-snmp/r1/show_ip_route.ref b/tests/topotests/ldp_snmp/r1/show_ip_route.ref
index b1a55ba103..b1a55ba103 100644
--- a/tests/topotests/ldp-snmp/r1/show_ip_route.ref
+++ b/tests/topotests/ldp_snmp/r1/show_ip_route.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_isis_interface_detail.ref b/tests/topotests/ldp_snmp/r1/show_isis_interface_detail.ref
index d8fb27af8c..d8fb27af8c 100644
--- a/tests/topotests/ldp-snmp/r1/show_isis_interface_detail.ref
+++ b/tests/topotests/ldp_snmp/r1/show_isis_interface_detail.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_isis_interface_detail_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r1/show_isis_interface_detail_r1_eth1_shutdown.ref
index f77d65ebc1..f77d65ebc1 100644
--- a/tests/topotests/ldp-snmp/r1/show_isis_interface_detail_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r1/show_isis_interface_detail_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_isis_interface_detail_r2_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r1/show_isis_interface_detail_r2_eth1_shutdown.ref
index f77d65ebc1..f77d65ebc1 100644
--- a/tests/topotests/ldp-snmp/r1/show_isis_interface_detail_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r1/show_isis_interface_detail_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_isis_ldp_sync.ref b/tests/topotests/ldp_snmp/r1/show_isis_ldp_sync.ref
index b699e8c145..b699e8c145 100644
--- a/tests/topotests/ldp-snmp/r1/show_isis_ldp_sync.ref
+++ b/tests/topotests/ldp_snmp/r1/show_isis_ldp_sync.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref
index c28cd4cc7d..c28cd4cc7d 100644
--- a/tests/topotests/ldp-snmp/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref
index c63bbea77f..c63bbea77f 100644
--- a/tests/topotests/ldp-snmp/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_l2vpn_binding.ref b/tests/topotests/ldp_snmp/r1/show_l2vpn_binding.ref
index b3de7e2c66..b3de7e2c66 100644
--- a/tests/topotests/ldp-snmp/r1/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_snmp/r1/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_l2vpn_vc.ref b/tests/topotests/ldp_snmp/r1/show_l2vpn_vc.ref
index 29e9df1089..29e9df1089 100644
--- a/tests/topotests/ldp-snmp/r1/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_snmp/r1/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_ldp_binding.ref b/tests/topotests/ldp_snmp/r1/show_ldp_binding.ref
index b3a12ec53f..b3a12ec53f 100644
--- a/tests/topotests/ldp-snmp/r1/show_ldp_binding.ref
+++ b/tests/topotests/ldp_snmp/r1/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_ldp_discovery.ref b/tests/topotests/ldp_snmp/r1/show_ldp_discovery.ref
index 9301e60c67..9301e60c67 100644
--- a/tests/topotests/ldp-snmp/r1/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_snmp/r1/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_ldp_igp_sync.ref b/tests/topotests/ldp_snmp/r1/show_ldp_igp_sync.ref
index 54d015fef9..54d015fef9 100644
--- a/tests/topotests/ldp-snmp/r1/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_snmp/r1/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
index 2232069f68..2232069f68 100644
--- a/tests/topotests/ldp-snmp/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_ldp_neighbor.ref b/tests/topotests/ldp_snmp/r1/show_ldp_neighbor.ref
index 40d8ebeb90..40d8ebeb90 100644
--- a/tests/topotests/ldp-snmp/r1/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_snmp/r1/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-snmp/r1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/ldp_snmp/r1/show_yang_interface_isis_adjacencies.ref
index 6138d03672..6138d03672 100644
--- a/tests/topotests/ldp-snmp/r1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/ldp_snmp/r1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/ldp-snmp/r1/snmpd.conf b/tests/topotests/ldp_snmp/r1/snmpd.conf
index b37911da36..b37911da36 100644
--- a/tests/topotests/ldp-snmp/r1/snmpd.conf
+++ b/tests/topotests/ldp_snmp/r1/snmpd.conf
diff --git a/tests/topotests/ldp-snmp/r1/zebra.conf b/tests/topotests/ldp_snmp/r1/zebra.conf
index ea047355ad..ea047355ad 100644
--- a/tests/topotests/ldp-snmp/r1/zebra.conf
+++ b/tests/topotests/ldp_snmp/r1/zebra.conf
diff --git a/tests/topotests/ldp-snmp/r2/isisd.conf b/tests/topotests/ldp_snmp/r2/isisd.conf
index b29a2b93ee..b29a2b93ee 100644
--- a/tests/topotests/ldp-snmp/r2/isisd.conf
+++ b/tests/topotests/ldp_snmp/r2/isisd.conf
diff --git a/tests/topotests/ldp-snmp/r2/ldpd.conf b/tests/topotests/ldp_snmp/r2/ldpd.conf
index c93e1a6ac5..c93e1a6ac5 100644
--- a/tests/topotests/ldp-snmp/r2/ldpd.conf
+++ b/tests/topotests/ldp_snmp/r2/ldpd.conf
diff --git a/tests/topotests/ldp-snmp/r2/ospfd.conf b/tests/topotests/ldp_snmp/r2/ospfd.conf
index f93f6aed56..f93f6aed56 100644
--- a/tests/topotests/ldp-snmp/r2/ospfd.conf
+++ b/tests/topotests/ldp_snmp/r2/ospfd.conf
diff --git a/tests/topotests/ldp-snmp/r2/show_ip_route.ref b/tests/topotests/ldp_snmp/r2/show_ip_route.ref
index 04f141aba4..04f141aba4 100644
--- a/tests/topotests/ldp-snmp/r2/show_ip_route.ref
+++ b/tests/topotests/ldp_snmp/r2/show_ip_route.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_isis_interface_detail.ref b/tests/topotests/ldp_snmp/r2/show_isis_interface_detail.ref
index 844aa9402a..844aa9402a 100644
--- a/tests/topotests/ldp-snmp/r2/show_isis_interface_detail.ref
+++ b/tests/topotests/ldp_snmp/r2/show_isis_interface_detail.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_isis_interface_detail_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r2/show_isis_interface_detail_r1_eth1_shutdown.ref
index 821ec70ba5..821ec70ba5 100644
--- a/tests/topotests/ldp-snmp/r2/show_isis_interface_detail_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r2/show_isis_interface_detail_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_isis_interface_detail_r2_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r2/show_isis_interface_detail_r2_eth1_shutdown.ref
index 821ec70ba5..821ec70ba5 100644
--- a/tests/topotests/ldp-snmp/r2/show_isis_interface_detail_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r2/show_isis_interface_detail_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_isis_ldp_sync.ref b/tests/topotests/ldp_snmp/r2/show_isis_ldp_sync.ref
index 433d89bd16..433d89bd16 100644
--- a/tests/topotests/ldp-snmp/r2/show_isis_ldp_sync.ref
+++ b/tests/topotests/ldp_snmp/r2/show_isis_ldp_sync.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref
index 2f3eae47c8..2f3eae47c8 100644
--- a/tests/topotests/ldp-snmp/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref
index c3d97a3c73..c3d97a3c73 100644
--- a/tests/topotests/ldp-snmp/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_l2vpn_binding.ref b/tests/topotests/ldp_snmp/r2/show_l2vpn_binding.ref
index 42c5a1cbd9..42c5a1cbd9 100644
--- a/tests/topotests/ldp-snmp/r2/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_snmp/r2/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_l2vpn_vc.ref b/tests/topotests/ldp_snmp/r2/show_l2vpn_vc.ref
index 942ed23a1e..942ed23a1e 100644
--- a/tests/topotests/ldp-snmp/r2/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_snmp/r2/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_ldp_binding.ref b/tests/topotests/ldp_snmp/r2/show_ldp_binding.ref
index c641fb47e6..c641fb47e6 100644
--- a/tests/topotests/ldp-snmp/r2/show_ldp_binding.ref
+++ b/tests/topotests/ldp_snmp/r2/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_ldp_discovery.ref b/tests/topotests/ldp_snmp/r2/show_ldp_discovery.ref
index 26801acade..26801acade 100644
--- a/tests/topotests/ldp-snmp/r2/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_snmp/r2/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_ldp_igp_sync.ref b/tests/topotests/ldp_snmp/r2/show_ldp_igp_sync.ref
index f2b24d7d62..f2b24d7d62 100644
--- a/tests/topotests/ldp-snmp/r2/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_snmp/r2/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
index b5508dd35c..b5508dd35c 100644
--- a/tests/topotests/ldp-snmp/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref
index f2b24d7d62..f2b24d7d62 100644
--- a/tests/topotests/ldp-snmp/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_ldp_neighbor.ref b/tests/topotests/ldp_snmp/r2/show_ldp_neighbor.ref
index eed35289ea..eed35289ea 100644
--- a/tests/topotests/ldp-snmp/r2/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_snmp/r2/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-snmp/r2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/ldp_snmp/r2/show_yang_interface_isis_adjacencies.ref
index 4dd6ddd76b..4dd6ddd76b 100644
--- a/tests/topotests/ldp-snmp/r2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/ldp_snmp/r2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/ldp-snmp/r2/snmpd.conf b/tests/topotests/ldp_snmp/r2/snmpd.conf
index 0f779b8b91..0f779b8b91 100644
--- a/tests/topotests/ldp-snmp/r2/snmpd.conf
+++ b/tests/topotests/ldp_snmp/r2/snmpd.conf
diff --git a/tests/topotests/ldp-snmp/r2/zebra.conf b/tests/topotests/ldp_snmp/r2/zebra.conf
index c244442876..c244442876 100644
--- a/tests/topotests/ldp-snmp/r2/zebra.conf
+++ b/tests/topotests/ldp_snmp/r2/zebra.conf
diff --git a/tests/topotests/ldp-snmp/r3/isisd.conf b/tests/topotests/ldp_snmp/r3/isisd.conf
index 4c8499f23d..4c8499f23d 100644
--- a/tests/topotests/ldp-snmp/r3/isisd.conf
+++ b/tests/topotests/ldp_snmp/r3/isisd.conf
diff --git a/tests/topotests/ldp-snmp/r3/ldpd.conf b/tests/topotests/ldp_snmp/r3/ldpd.conf
index b7eeb258f1..b7eeb258f1 100644
--- a/tests/topotests/ldp-snmp/r3/ldpd.conf
+++ b/tests/topotests/ldp_snmp/r3/ldpd.conf
diff --git a/tests/topotests/ldp-snmp/r3/show_ip_route.ref b/tests/topotests/ldp_snmp/r3/show_ip_route.ref
index 22504046ed..22504046ed 100644
--- a/tests/topotests/ldp-snmp/r3/show_ip_route.ref
+++ b/tests/topotests/ldp_snmp/r3/show_ip_route.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_isis_interface_detail.ref b/tests/topotests/ldp_snmp/r3/show_isis_interface_detail.ref
index e323f61f25..e323f61f25 100644
--- a/tests/topotests/ldp-snmp/r3/show_isis_interface_detail.ref
+++ b/tests/topotests/ldp_snmp/r3/show_isis_interface_detail.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_isis_interface_detail_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r3/show_isis_interface_detail_r1_eth1_shutdown.ref
index e323f61f25..e323f61f25 100644
--- a/tests/topotests/ldp-snmp/r3/show_isis_interface_detail_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r3/show_isis_interface_detail_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_isis_interface_detail_r2_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r3/show_isis_interface_detail_r2_eth1_shutdown.ref
index e323f61f25..e323f61f25 100644
--- a/tests/topotests/ldp-snmp/r3/show_isis_interface_detail_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r3/show_isis_interface_detail_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_isis_ldp_sync.ref b/tests/topotests/ldp_snmp/r3/show_isis_ldp_sync.ref
index 9cb70a4758..9cb70a4758 100644
--- a/tests/topotests/ldp-snmp/r3/show_isis_ldp_sync.ref
+++ b/tests/topotests/ldp_snmp/r3/show_isis_ldp_sync.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref
index 9cb70a4758..9cb70a4758 100644
--- a/tests/topotests/ldp-snmp/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref
index 9cb70a4758..9cb70a4758 100644
--- a/tests/topotests/ldp-snmp/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_l2vpn_binding.ref b/tests/topotests/ldp_snmp/r3/show_l2vpn_binding.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-snmp/r3/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_snmp/r3/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_l2vpn_vc.ref b/tests/topotests/ldp_snmp/r3/show_l2vpn_vc.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-snmp/r3/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_snmp/r3/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_ldp_binding.ref b/tests/topotests/ldp_snmp/r3/show_ldp_binding.ref
index e54bd6e755..e54bd6e755 100644
--- a/tests/topotests/ldp-snmp/r3/show_ldp_binding.ref
+++ b/tests/topotests/ldp_snmp/r3/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_ldp_discovery.ref b/tests/topotests/ldp_snmp/r3/show_ldp_discovery.ref
index 42fa98d4da..42fa98d4da 100644
--- a/tests/topotests/ldp-snmp/r3/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_snmp/r3/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_ldp_igp_sync.ref b/tests/topotests/ldp_snmp/r3/show_ldp_igp_sync.ref
index 73261830c9..73261830c9 100644
--- a/tests/topotests/ldp-snmp/r3/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_snmp/r3/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_snmp/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
index 73261830c9..73261830c9 100644
--- a/tests/topotests/ldp-snmp/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_snmp/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_ldp_neighbor.ref b/tests/topotests/ldp_snmp/r3/show_ldp_neighbor.ref
index 5c482da697..5c482da697 100644
--- a/tests/topotests/ldp-snmp/r3/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_snmp/r3/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-snmp/r3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/ldp_snmp/r3/show_yang_interface_isis_adjacencies.ref
index 0922192361..0922192361 100644
--- a/tests/topotests/ldp-snmp/r3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/ldp_snmp/r3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/ldp-snmp/r3/zebra.conf b/tests/topotests/ldp_snmp/r3/zebra.conf
index b1919bd296..b1919bd296 100644
--- a/tests/topotests/ldp-snmp/r3/zebra.conf
+++ b/tests/topotests/ldp_snmp/r3/zebra.conf
diff --git a/tests/topotests/ldp-snmp/test_ldp_snmp_topo1.py b/tests/topotests/ldp_snmp/test_ldp_snmp_topo1.py
index f47d906157..f47d906157 100644
--- a/tests/topotests/ldp-snmp/test_ldp_snmp_topo1.py
+++ b/tests/topotests/ldp_snmp/test_ldp_snmp_topo1.py
diff --git a/tests/topotests/ldp-sync-isis-topo1/ce1/zebra.conf b/tests/topotests/ldp_sync_isis_topo1/ce1/zebra.conf
index 6f165e2724..6f165e2724 100644
--- a/tests/topotests/ldp-sync-isis-topo1/ce1/zebra.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/ce1/zebra.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/ce2/zebra.conf b/tests/topotests/ldp_sync_isis_topo1/ce2/zebra.conf
index ac02d0f9a4..ac02d0f9a4 100644
--- a/tests/topotests/ldp-sync-isis-topo1/ce2/zebra.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/ce2/zebra.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/ce3/zebra.conf b/tests/topotests/ldp_sync_isis_topo1/ce3/zebra.conf
index c6a5824d15..c6a5824d15 100644
--- a/tests/topotests/ldp-sync-isis-topo1/ce3/zebra.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/ce3/zebra.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/isisd.conf b/tests/topotests/ldp_sync_isis_topo1/r1/isisd.conf
index da2970d94e..da2970d94e 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/isisd.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/isisd.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/ldpd.conf b/tests/topotests/ldp_sync_isis_topo1/r1/ldpd.conf
index b9c32d3000..b9c32d3000 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/ldpd.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/ldpd.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_ip_route.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_ip_route.ref
index b1a55ba103..b1a55ba103 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_ip_route.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_ip_route.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail.ref
index d8fb27af8c..d8fb27af8c 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail_r1_eth1_shutdown.ref
index f77d65ebc1..f77d65ebc1 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail_r2_eth1_shutdown.ref
index f77d65ebc1..f77d65ebc1 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_interface_detail_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_interface_detail_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync.ref
index b699e8c145..b699e8c145 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref
index c28cd4cc7d..c28cd4cc7d 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref
index c63bbea77f..c63bbea77f 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_isis_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_l2vpn_binding.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_l2vpn_binding.ref
index b3de7e2c66..b3de7e2c66 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_l2vpn_vc.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_l2vpn_vc.ref
index 29e9df1089..29e9df1089 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_binding.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_binding.ref
index b3a12ec53f..b3a12ec53f 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_binding.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_discovery.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_discovery.ref
index 9301e60c67..9301e60c67 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_igp_sync.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_igp_sync.ref
index 54d015fef9..54d015fef9 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
index 2232069f68..2232069f68 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_neighbor.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_neighbor.ref
index 40d8ebeb90..40d8ebeb90 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/show_yang_interface_isis_adjacencies.ref b/tests/topotests/ldp_sync_isis_topo1/r1/show_yang_interface_isis_adjacencies.ref
index 6138d03672..6138d03672 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r1/zebra.conf b/tests/topotests/ldp_sync_isis_topo1/r1/zebra.conf
index ea047355ad..ea047355ad 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r1/zebra.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r1/zebra.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/isisd.conf b/tests/topotests/ldp_sync_isis_topo1/r2/isisd.conf
index b29a2b93ee..b29a2b93ee 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/isisd.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/isisd.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/ldpd.conf b/tests/topotests/ldp_sync_isis_topo1/r2/ldpd.conf
index 52398b1b72..52398b1b72 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/ldpd.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/ldpd.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_ip_route.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_ip_route.ref
index 04f141aba4..04f141aba4 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_ip_route.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_ip_route.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail.ref
index 844aa9402a..844aa9402a 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail_r1_eth1_shutdown.ref
index 821ec70ba5..821ec70ba5 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail_r2_eth1_shutdown.ref
index 821ec70ba5..821ec70ba5 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_interface_detail_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_interface_detail_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync.ref
index 433d89bd16..433d89bd16 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref
index 2f3eae47c8..2f3eae47c8 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref
index c3d97a3c73..c3d97a3c73 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_isis_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_l2vpn_binding.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_l2vpn_binding.ref
index 42c5a1cbd9..42c5a1cbd9 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_l2vpn_vc.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_l2vpn_vc.ref
index 942ed23a1e..942ed23a1e 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_binding.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_binding.ref
index c641fb47e6..c641fb47e6 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_binding.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_discovery.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_discovery.ref
index 26801acade..26801acade 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync.ref
index f2b24d7d62..f2b24d7d62 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
index b5508dd35c..b5508dd35c 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref
index f2b24d7d62..f2b24d7d62 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_igp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_neighbor.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_neighbor.ref
index eed35289ea..eed35289ea 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/show_yang_interface_isis_adjacencies.ref b/tests/topotests/ldp_sync_isis_topo1/r2/show_yang_interface_isis_adjacencies.ref
index 4dd6ddd76b..4dd6ddd76b 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r2/zebra.conf b/tests/topotests/ldp_sync_isis_topo1/r2/zebra.conf
index c244442876..c244442876 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r2/zebra.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r2/zebra.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/isisd.conf b/tests/topotests/ldp_sync_isis_topo1/r3/isisd.conf
index 4c8499f23d..4c8499f23d 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/isisd.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/isisd.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/ldpd.conf b/tests/topotests/ldp_sync_isis_topo1/r3/ldpd.conf
index 2935caf13b..2935caf13b 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/ldpd.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/ldpd.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_ip_route.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_ip_route.ref
index 22504046ed..22504046ed 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_ip_route.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_ip_route.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail.ref
index e323f61f25..e323f61f25 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail_r1_eth1_shutdown.ref
index e323f61f25..e323f61f25 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail_r2_eth1_shutdown.ref
index e323f61f25..e323f61f25 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_interface_detail_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_interface_detail_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync.ref
index 7180f84d1a..7180f84d1a 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref
index 7180f84d1a..7180f84d1a 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref
index 7180f84d1a..7180f84d1a 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_isis_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_l2vpn_binding.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_l2vpn_binding.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_l2vpn_vc.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_l2vpn_vc.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_binding.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_binding.ref
index e54bd6e755..e54bd6e755 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_binding.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_discovery.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_discovery.ref
index 42fa98d4da..42fa98d4da 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_igp_sync.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_igp_sync.ref
index 73261830c9..73261830c9 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
index 73261830c9..73261830c9 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_neighbor.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_neighbor.ref
index 5c482da697..5c482da697 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/show_yang_interface_isis_adjacencies.ref b/tests/topotests/ldp_sync_isis_topo1/r3/show_yang_interface_isis_adjacencies.ref
index 0922192361..0922192361 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/show_yang_interface_isis_adjacencies.ref
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/show_yang_interface_isis_adjacencies.ref
diff --git a/tests/topotests/ldp-sync-isis-topo1/r3/zebra.conf b/tests/topotests/ldp_sync_isis_topo1/r3/zebra.conf
index b1919bd296..b1919bd296 100644
--- a/tests/topotests/ldp-sync-isis-topo1/r3/zebra.conf
+++ b/tests/topotests/ldp_sync_isis_topo1/r3/zebra.conf
diff --git a/tests/topotests/ldp-sync-isis-topo1/test_ldp_sync_isis_topo1.dot b/tests/topotests/ldp_sync_isis_topo1/test_ldp_sync_isis_topo1.dot
index 4f1bd22f7c..4f1bd22f7c 100644
--- a/tests/topotests/ldp-sync-isis-topo1/test_ldp_sync_isis_topo1.dot
+++ b/tests/topotests/ldp_sync_isis_topo1/test_ldp_sync_isis_topo1.dot
diff --git a/tests/topotests/ldp-sync-isis-topo1/test_ldp_sync_isis_topo1.py b/tests/topotests/ldp_sync_isis_topo1/test_ldp_sync_isis_topo1.py
index 331e6fafd4..331e6fafd4 100644
--- a/tests/topotests/ldp-sync-isis-topo1/test_ldp_sync_isis_topo1.py
+++ b/tests/topotests/ldp_sync_isis_topo1/test_ldp_sync_isis_topo1.py
diff --git a/tests/topotests/ldp-sync-ospf-topo1/ce1/zebra.conf b/tests/topotests/ldp_sync_ospf_topo1/ce1/zebra.conf
index 6f165e2724..6f165e2724 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/ce1/zebra.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/ce1/zebra.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/ce2/zebra.conf b/tests/topotests/ldp_sync_ospf_topo1/ce2/zebra.conf
index ac02d0f9a4..ac02d0f9a4 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/ce2/zebra.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/ce2/zebra.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/ce3/zebra.conf b/tests/topotests/ldp_sync_ospf_topo1/ce3/zebra.conf
index c6a5824d15..c6a5824d15 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/ce3/zebra.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/ce3/zebra.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/ldpd.conf b/tests/topotests/ldp_sync_ospf_topo1/r1/ldpd.conf
index b9c32d3000..b9c32d3000 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/ldpd.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/ldpd.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/ospf-nbrs.txt b/tests/topotests/ldp_sync_ospf_topo1/r1/ospf-nbrs.txt
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/ospf-nbrs.txt
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/ospf-nbrs.txt
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/ospfd.conf b/tests/topotests/ldp_sync_ospf_topo1/r1/ospfd.conf
index eefcd1e71c..eefcd1e71c 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/ospfd.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/ospfd.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface.ref
index 8b2884786d..8b2884786d 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface_r1_eth1_shutdown.ref
index b1a263e422..b1a263e422 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface_r2_eth1_shutdown.ref
index 0c147338e3..0c147338e3 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_interface_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_interface_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_neighbor.json b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_neighbor.json
index 3bfda39071..3bfda39071 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_ospf_neighbor.json
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_ospf_neighbor.json
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_route.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_route.ref
index fdb81f212d..fdb81f212d 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ip_route.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ip_route.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_l2vpn_binding.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_l2vpn_binding.ref
index b3de7e2c66..b3de7e2c66 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_l2vpn_vc.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_l2vpn_vc.ref
index 29e9df1089..29e9df1089 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_binding.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_binding.ref
index b3a12ec53f..b3a12ec53f 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_binding.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_discovery.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_discovery.ref
index 9301e60c67..9301e60c67 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_igp_sync.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_igp_sync.ref
index 54d015fef9..54d015fef9 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
index 2232069f68..2232069f68 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_neighbor.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_neighbor.ref
index 40d8ebeb90..40d8ebeb90 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync.ref
index 3782071bf9..3782071bf9 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync_r1_eth1_shutdown.ref
index c2642c6483..c2642c6483 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync_r2_eth1_shutdown.ref
index 6f180b048a..6f180b048a 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/show_ospf_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/show_ospf_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r1/zebra.conf b/tests/topotests/ldp_sync_ospf_topo1/r1/zebra.conf
index ea047355ad..ea047355ad 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r1/zebra.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r1/zebra.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/ldpd.conf b/tests/topotests/ldp_sync_ospf_topo1/r2/ldpd.conf
index 52398b1b72..52398b1b72 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/ldpd.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/ldpd.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/ospfd.conf b/tests/topotests/ldp_sync_ospf_topo1/r2/ospfd.conf
index f93f6aed56..f93f6aed56 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/ospfd.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/ospfd.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface.ref
index 82806721e7..82806721e7 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface_r1_eth1_shutdown.ref
index 71e8af1778..71e8af1778 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface_r2_eth1_shutdown.ref
index af9a9c80e5..af9a9c80e5 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_interface_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_interface_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_neighbor.json b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_neighbor.json
index 5b7a5ebbb9..5b7a5ebbb9 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_ospf_neighbor.json
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_ospf_neighbor.json
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_route.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_route.ref
index 6056feffe3..6056feffe3 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ip_route.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ip_route.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_l2vpn_binding.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_l2vpn_binding.ref
index 42c5a1cbd9..42c5a1cbd9 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_l2vpn_vc.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_l2vpn_vc.ref
index 942ed23a1e..942ed23a1e 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_binding.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_binding.ref
index c641fb47e6..c641fb47e6 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_binding.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_discovery.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_discovery.ref
index 26801acade..26801acade 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_igp_sync.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_igp_sync.ref
index f2b24d7d62..f2b24d7d62 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
index b5508dd35c..b5508dd35c 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_neighbor.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_neighbor.ref
index eed35289ea..eed35289ea 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync.ref
index 6c27a10427..6c27a10427 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync_r1_eth1_shutdown.ref
index 889f69ed7f..889f69ed7f 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync_r2_eth1_shutdown.ref
index d9036e124b..d9036e124b 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/show_ospf_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/show_ospf_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r2/zebra.conf b/tests/topotests/ldp_sync_ospf_topo1/r2/zebra.conf
index c244442876..c244442876 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r2/zebra.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r2/zebra.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/ldpd.conf b/tests/topotests/ldp_sync_ospf_topo1/r3/ldpd.conf
index 2935caf13b..2935caf13b 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/ldpd.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/ldpd.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/ospfd.conf b/tests/topotests/ldp_sync_ospf_topo1/r3/ospfd.conf
index 09eea759ad..09eea759ad 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/ospfd.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/ospfd.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface.ref
index aec97b30cb..aec97b30cb 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface_r1_eth1_shutdown.ref
index aec97b30cb..aec97b30cb 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface_r2_eth1_shutdown.ref
index aec97b30cb..aec97b30cb 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_interface_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_interface_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_neighbor.json b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_neighbor.json
index 1b29b9f947..1b29b9f947 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_ospf_neighbor.json
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_ospf_neighbor.json
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_route.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_route.ref
index fc96ada443..fc96ada443 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ip_route.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ip_route.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_l2vpn_binding.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_l2vpn_binding.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_l2vpn_vc.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_l2vpn_vc.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_binding.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_binding.ref
index e54bd6e755..e54bd6e755 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_binding.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_discovery.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_discovery.ref
index 42fa98d4da..42fa98d4da 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_igp_sync.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_igp_sync.ref
index 73261830c9..73261830c9 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_igp_sync.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_igp_sync.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
index 73261830c9..73261830c9 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_igp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_neighbor.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_neighbor.ref
index 5c482da697..5c482da697 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync.ref
index b417ab040a..b417ab040a 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync_r1_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync_r1_eth1_shutdown.ref
index b417ab040a..b417ab040a 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync_r1_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync_r1_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync_r2_eth1_shutdown.ref b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync_r2_eth1_shutdown.ref
index b417ab040a..b417ab040a 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/show_ospf_ldp_sync_r2_eth1_shutdown.ref
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/show_ospf_ldp_sync_r2_eth1_shutdown.ref
diff --git a/tests/topotests/ldp-sync-ospf-topo1/r3/zebra.conf b/tests/topotests/ldp_sync_ospf_topo1/r3/zebra.conf
index b1919bd296..b1919bd296 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/r3/zebra.conf
+++ b/tests/topotests/ldp_sync_ospf_topo1/r3/zebra.conf
diff --git a/tests/topotests/ldp-sync-ospf-topo1/test_ldp_sync_ospf_topo1.dot b/tests/topotests/ldp_sync_ospf_topo1/test_ldp_sync_ospf_topo1.dot
index 4f1bd22f7c..4f1bd22f7c 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/test_ldp_sync_ospf_topo1.dot
+++ b/tests/topotests/ldp_sync_ospf_topo1/test_ldp_sync_ospf_topo1.dot
diff --git a/tests/topotests/ldp-sync-ospf-topo1/test_ldp_sync_ospf_topo1.py b/tests/topotests/ldp_sync_ospf_topo1/test_ldp_sync_ospf_topo1.py
index 57b45e5fdf..57b45e5fdf 100644
--- a/tests/topotests/ldp-sync-ospf-topo1/test_ldp_sync_ospf_topo1.py
+++ b/tests/topotests/ldp_sync_ospf_topo1/test_ldp_sync_ospf_topo1.py
diff --git a/tests/topotests/ldp-topo1/r1/ip_mpls_route.ref b/tests/topotests/ldp_topo1/r1/ip_mpls_route.ref
index a13c1d459b..a13c1d459b 100644
--- a/tests/topotests/ldp-topo1/r1/ip_mpls_route.ref
+++ b/tests/topotests/ldp_topo1/r1/ip_mpls_route.ref
diff --git a/tests/topotests/ldp-topo1/r1/ldpd.conf b/tests/topotests/ldp_topo1/r1/ldpd.conf
index 3c6cbddc2a..3c6cbddc2a 100644
--- a/tests/topotests/ldp-topo1/r1/ldpd.conf
+++ b/tests/topotests/ldp_topo1/r1/ldpd.conf
diff --git a/tests/topotests/ldp-topo1/r1/ospfd.conf b/tests/topotests/ldp_topo1/r1/ospfd.conf
index 87d5703d9e..87d5703d9e 100644
--- a/tests/topotests/ldp-topo1/r1/ospfd.conf
+++ b/tests/topotests/ldp_topo1/r1/ospfd.conf
diff --git a/tests/topotests/ldp-topo1/r1/show_ipv4_route.ref b/tests/topotests/ldp_topo1/r1/show_ipv4_route.ref
index 7d398887c4..7d398887c4 100644
--- a/tests/topotests/ldp-topo1/r1/show_ipv4_route.ref
+++ b/tests/topotests/ldp_topo1/r1/show_ipv4_route.ref
diff --git a/tests/topotests/ldp-topo1/r1/show_mpls_ldp_binding.ref b/tests/topotests/ldp_topo1/r1/show_mpls_ldp_binding.ref
index 32aa60c30d..32aa60c30d 100644
--- a/tests/topotests/ldp-topo1/r1/show_mpls_ldp_binding.ref
+++ b/tests/topotests/ldp_topo1/r1/show_mpls_ldp_binding.ref
diff --git a/tests/topotests/ldp-topo1/r1/show_mpls_ldp_discovery.ref b/tests/topotests/ldp_topo1/r1/show_mpls_ldp_discovery.ref
index 373755ab87..373755ab87 100644
--- a/tests/topotests/ldp-topo1/r1/show_mpls_ldp_discovery.ref
+++ b/tests/topotests/ldp_topo1/r1/show_mpls_ldp_discovery.ref
diff --git a/tests/topotests/ldp-topo1/r1/show_mpls_ldp_interface.ref b/tests/topotests/ldp_topo1/r1/show_mpls_ldp_interface.ref
index 0fb15d2da7..0fb15d2da7 100644
--- a/tests/topotests/ldp-topo1/r1/show_mpls_ldp_interface.ref
+++ b/tests/topotests/ldp_topo1/r1/show_mpls_ldp_interface.ref
diff --git a/tests/topotests/ldp-topo1/r1/show_mpls_ldp_neighbor.ref b/tests/topotests/ldp_topo1/r1/show_mpls_ldp_neighbor.ref
index 29e264ff3c..29e264ff3c 100644
--- a/tests/topotests/ldp-topo1/r1/show_mpls_ldp_neighbor.ref
+++ b/tests/topotests/ldp_topo1/r1/show_mpls_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-topo1/r1/show_mpls_table.ref b/tests/topotests/ldp_topo1/r1/show_mpls_table.ref
index 7e24359af3..7e24359af3 100644
--- a/tests/topotests/ldp-topo1/r1/show_mpls_table.ref
+++ b/tests/topotests/ldp_topo1/r1/show_mpls_table.ref
diff --git a/tests/topotests/ldp-topo1/r1/zebra.conf b/tests/topotests/ldp_topo1/r1/zebra.conf
index 55b4b0e9c6..55b4b0e9c6 100644
--- a/tests/topotests/ldp-topo1/r1/zebra.conf
+++ b/tests/topotests/ldp_topo1/r1/zebra.conf
diff --git a/tests/topotests/ldp-topo1/r2/ip_mpls_route.ref b/tests/topotests/ldp_topo1/r2/ip_mpls_route.ref
index f962070c36..f962070c36 100644
--- a/tests/topotests/ldp-topo1/r2/ip_mpls_route.ref
+++ b/tests/topotests/ldp_topo1/r2/ip_mpls_route.ref
diff --git a/tests/topotests/ldp-topo1/r2/ldpd.conf b/tests/topotests/ldp_topo1/r2/ldpd.conf
index bfdef21b75..bfdef21b75 100644
--- a/tests/topotests/ldp-topo1/r2/ldpd.conf
+++ b/tests/topotests/ldp_topo1/r2/ldpd.conf
diff --git a/tests/topotests/ldp-topo1/r2/ospfd.conf b/tests/topotests/ldp_topo1/r2/ospfd.conf
index dbed6189c8..dbed6189c8 100644
--- a/tests/topotests/ldp-topo1/r2/ospfd.conf
+++ b/tests/topotests/ldp_topo1/r2/ospfd.conf
diff --git a/tests/topotests/ldp-topo1/r2/show_ipv4_route.ref b/tests/topotests/ldp_topo1/r2/show_ipv4_route.ref
index 90e18962a8..90e18962a8 100644
--- a/tests/topotests/ldp-topo1/r2/show_ipv4_route.ref
+++ b/tests/topotests/ldp_topo1/r2/show_ipv4_route.ref
diff --git a/tests/topotests/ldp-topo1/r2/show_mpls_ldp_binding.ref b/tests/topotests/ldp_topo1/r2/show_mpls_ldp_binding.ref
index d7df72e854..d7df72e854 100644
--- a/tests/topotests/ldp-topo1/r2/show_mpls_ldp_binding.ref
+++ b/tests/topotests/ldp_topo1/r2/show_mpls_ldp_binding.ref
diff --git a/tests/topotests/ldp-topo1/r2/show_mpls_ldp_discovery.ref b/tests/topotests/ldp_topo1/r2/show_mpls_ldp_discovery.ref
index 6405b5e388..6405b5e388 100644
--- a/tests/topotests/ldp-topo1/r2/show_mpls_ldp_discovery.ref
+++ b/tests/topotests/ldp_topo1/r2/show_mpls_ldp_discovery.ref
diff --git a/tests/topotests/ldp-topo1/r2/show_mpls_ldp_interface.ref b/tests/topotests/ldp_topo1/r2/show_mpls_ldp_interface.ref
index f9fc98408c..f9fc98408c 100644
--- a/tests/topotests/ldp-topo1/r2/show_mpls_ldp_interface.ref
+++ b/tests/topotests/ldp_topo1/r2/show_mpls_ldp_interface.ref
diff --git a/tests/topotests/ldp-topo1/r2/show_mpls_ldp_neighbor.ref b/tests/topotests/ldp_topo1/r2/show_mpls_ldp_neighbor.ref
index 1172cbfc2b..1172cbfc2b 100644
--- a/tests/topotests/ldp-topo1/r2/show_mpls_ldp_neighbor.ref
+++ b/tests/topotests/ldp_topo1/r2/show_mpls_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-topo1/r2/show_mpls_table.ref b/tests/topotests/ldp_topo1/r2/show_mpls_table.ref
index df05a6b31a..df05a6b31a 100644
--- a/tests/topotests/ldp-topo1/r2/show_mpls_table.ref
+++ b/tests/topotests/ldp_topo1/r2/show_mpls_table.ref
diff --git a/tests/topotests/ldp-topo1/r2/zebra.conf b/tests/topotests/ldp_topo1/r2/zebra.conf
index dd1dbac32b..dd1dbac32b 100644
--- a/tests/topotests/ldp-topo1/r2/zebra.conf
+++ b/tests/topotests/ldp_topo1/r2/zebra.conf
diff --git a/tests/topotests/ldp-topo1/r3/ip_mpls_route.ref b/tests/topotests/ldp_topo1/r3/ip_mpls_route.ref
index 21750b4a23..21750b4a23 100644
--- a/tests/topotests/ldp-topo1/r3/ip_mpls_route.ref
+++ b/tests/topotests/ldp_topo1/r3/ip_mpls_route.ref
diff --git a/tests/topotests/ldp-topo1/r3/ldpd.conf b/tests/topotests/ldp_topo1/r3/ldpd.conf
index dbf1d72b5f..dbf1d72b5f 100644
--- a/tests/topotests/ldp-topo1/r3/ldpd.conf
+++ b/tests/topotests/ldp_topo1/r3/ldpd.conf
diff --git a/tests/topotests/ldp-topo1/r3/ospfd.conf b/tests/topotests/ldp_topo1/r3/ospfd.conf
index bd86fe4f24..bd86fe4f24 100644
--- a/tests/topotests/ldp-topo1/r3/ospfd.conf
+++ b/tests/topotests/ldp_topo1/r3/ospfd.conf
diff --git a/tests/topotests/ldp-topo1/r3/show_ipv4_route.ref b/tests/topotests/ldp_topo1/r3/show_ipv4_route.ref
index 9b9c763339..9b9c763339 100644
--- a/tests/topotests/ldp-topo1/r3/show_ipv4_route.ref
+++ b/tests/topotests/ldp_topo1/r3/show_ipv4_route.ref
diff --git a/tests/topotests/ldp-topo1/r3/show_mpls_ldp_binding.ref b/tests/topotests/ldp_topo1/r3/show_mpls_ldp_binding.ref
index 058a245f59..058a245f59 100644
--- a/tests/topotests/ldp-topo1/r3/show_mpls_ldp_binding.ref
+++ b/tests/topotests/ldp_topo1/r3/show_mpls_ldp_binding.ref
diff --git a/tests/topotests/ldp-topo1/r3/show_mpls_ldp_discovery.ref b/tests/topotests/ldp_topo1/r3/show_mpls_ldp_discovery.ref
index e3dbf06c2e..e3dbf06c2e 100644
--- a/tests/topotests/ldp-topo1/r3/show_mpls_ldp_discovery.ref
+++ b/tests/topotests/ldp_topo1/r3/show_mpls_ldp_discovery.ref
diff --git a/tests/topotests/ldp-topo1/r3/show_mpls_ldp_interface.ref b/tests/topotests/ldp_topo1/r3/show_mpls_ldp_interface.ref
index 243811e3a9..243811e3a9 100644
--- a/tests/topotests/ldp-topo1/r3/show_mpls_ldp_interface.ref
+++ b/tests/topotests/ldp_topo1/r3/show_mpls_ldp_interface.ref
diff --git a/tests/topotests/ldp-topo1/r3/show_mpls_ldp_neighbor.ref b/tests/topotests/ldp_topo1/r3/show_mpls_ldp_neighbor.ref
index 769f78277b..769f78277b 100644
--- a/tests/topotests/ldp-topo1/r3/show_mpls_ldp_neighbor.ref
+++ b/tests/topotests/ldp_topo1/r3/show_mpls_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-topo1/r3/show_mpls_table.ref b/tests/topotests/ldp_topo1/r3/show_mpls_table.ref
index 3978895613..3978895613 100644
--- a/tests/topotests/ldp-topo1/r3/show_mpls_table.ref
+++ b/tests/topotests/ldp_topo1/r3/show_mpls_table.ref
diff --git a/tests/topotests/ldp-topo1/r3/zebra.conf b/tests/topotests/ldp_topo1/r3/zebra.conf
index 456820fdb4..456820fdb4 100644
--- a/tests/topotests/ldp-topo1/r3/zebra.conf
+++ b/tests/topotests/ldp_topo1/r3/zebra.conf
diff --git a/tests/topotests/ldp-topo1/r4/ip_mpls_route.ref b/tests/topotests/ldp_topo1/r4/ip_mpls_route.ref
index aef2fefd57..aef2fefd57 100644
--- a/tests/topotests/ldp-topo1/r4/ip_mpls_route.ref
+++ b/tests/topotests/ldp_topo1/r4/ip_mpls_route.ref
diff --git a/tests/topotests/ldp-topo1/r4/ldpd.conf b/tests/topotests/ldp_topo1/r4/ldpd.conf
index 8f3533527d..8f3533527d 100644
--- a/tests/topotests/ldp-topo1/r4/ldpd.conf
+++ b/tests/topotests/ldp_topo1/r4/ldpd.conf
diff --git a/tests/topotests/ldp-topo1/r4/ospfd.conf b/tests/topotests/ldp_topo1/r4/ospfd.conf
index 5aae885a12..5aae885a12 100644
--- a/tests/topotests/ldp-topo1/r4/ospfd.conf
+++ b/tests/topotests/ldp_topo1/r4/ospfd.conf
diff --git a/tests/topotests/ldp-topo1/r4/show_ipv4_route.ref b/tests/topotests/ldp_topo1/r4/show_ipv4_route.ref
index 7444cc924b..7444cc924b 100644
--- a/tests/topotests/ldp-topo1/r4/show_ipv4_route.ref
+++ b/tests/topotests/ldp_topo1/r4/show_ipv4_route.ref
diff --git a/tests/topotests/ldp-topo1/r4/show_mpls_ldp_binding.ref b/tests/topotests/ldp_topo1/r4/show_mpls_ldp_binding.ref
index 1e9dfa3d16..1e9dfa3d16 100644
--- a/tests/topotests/ldp-topo1/r4/show_mpls_ldp_binding.ref
+++ b/tests/topotests/ldp_topo1/r4/show_mpls_ldp_binding.ref
diff --git a/tests/topotests/ldp-topo1/r4/show_mpls_ldp_discovery.ref b/tests/topotests/ldp_topo1/r4/show_mpls_ldp_discovery.ref
index a7026570db..a7026570db 100644
--- a/tests/topotests/ldp-topo1/r4/show_mpls_ldp_discovery.ref
+++ b/tests/topotests/ldp_topo1/r4/show_mpls_ldp_discovery.ref
diff --git a/tests/topotests/ldp-topo1/r4/show_mpls_ldp_interface.ref b/tests/topotests/ldp_topo1/r4/show_mpls_ldp_interface.ref
index dd57656f15..dd57656f15 100644
--- a/tests/topotests/ldp-topo1/r4/show_mpls_ldp_interface.ref
+++ b/tests/topotests/ldp_topo1/r4/show_mpls_ldp_interface.ref
diff --git a/tests/topotests/ldp-topo1/r4/show_mpls_ldp_neighbor.ref b/tests/topotests/ldp_topo1/r4/show_mpls_ldp_neighbor.ref
index 7c60522f9b..7c60522f9b 100644
--- a/tests/topotests/ldp-topo1/r4/show_mpls_ldp_neighbor.ref
+++ b/tests/topotests/ldp_topo1/r4/show_mpls_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-topo1/r4/show_mpls_table.ref b/tests/topotests/ldp_topo1/r4/show_mpls_table.ref
index 174dcebd4d..174dcebd4d 100644
--- a/tests/topotests/ldp-topo1/r4/show_mpls_table.ref
+++ b/tests/topotests/ldp_topo1/r4/show_mpls_table.ref
diff --git a/tests/topotests/ldp-topo1/r4/zebra.conf b/tests/topotests/ldp_topo1/r4/zebra.conf
index 4a270af578..4a270af578 100644
--- a/tests/topotests/ldp-topo1/r4/zebra.conf
+++ b/tests/topotests/ldp_topo1/r4/zebra.conf
diff --git a/tests/topotests/ldp-topo1/test_ldp_topo1.py b/tests/topotests/ldp_topo1/test_ldp_topo1.py
index 06e7734094..06e7734094 100644
--- a/tests/topotests/ldp-topo1/test_ldp_topo1.py
+++ b/tests/topotests/ldp_topo1/test_ldp_topo1.py
diff --git a/tests/topotests/ldp-vpls-topo1/__init__.py b/tests/topotests/ldp_vpls_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/ldp-vpls-topo1/__init__.py
+++ b/tests/topotests/ldp_vpls_topo1/__init__.py
diff --git a/tests/topotests/ldp-vpls-topo1/ce1/zebra.conf b/tests/topotests/ldp_vpls_topo1/ce1/zebra.conf
index 6f165e2724..6f165e2724 100644
--- a/tests/topotests/ldp-vpls-topo1/ce1/zebra.conf
+++ b/tests/topotests/ldp_vpls_topo1/ce1/zebra.conf
diff --git a/tests/topotests/ldp-vpls-topo1/ce2/zebra.conf b/tests/topotests/ldp_vpls_topo1/ce2/zebra.conf
index ac02d0f9a4..ac02d0f9a4 100644
--- a/tests/topotests/ldp-vpls-topo1/ce2/zebra.conf
+++ b/tests/topotests/ldp_vpls_topo1/ce2/zebra.conf
diff --git a/tests/topotests/ldp-vpls-topo1/ce3/zebra.conf b/tests/topotests/ldp_vpls_topo1/ce3/zebra.conf
index c6a5824d15..c6a5824d15 100644
--- a/tests/topotests/ldp-vpls-topo1/ce3/zebra.conf
+++ b/tests/topotests/ldp_vpls_topo1/ce3/zebra.conf
diff --git a/tests/topotests/ldp-vpls-topo1/r1/ldpd.conf b/tests/topotests/ldp_vpls_topo1/r1/ldpd.conf
index a1c0c822d6..a1c0c822d6 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/ldpd.conf
+++ b/tests/topotests/ldp_vpls_topo1/r1/ldpd.conf
diff --git a/tests/topotests/ldp-vpls-topo1/r1/ospf-nbrs.txt b/tests/topotests/ldp_vpls_topo1/r1/ospf-nbrs.txt
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/ospf-nbrs.txt
+++ b/tests/topotests/ldp_vpls_topo1/r1/ospf-nbrs.txt
diff --git a/tests/topotests/ldp-vpls-topo1/r1/ospfd.conf b/tests/topotests/ldp_vpls_topo1/r1/ospfd.conf
index a66fb92ba3..a66fb92ba3 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/ospfd.conf
+++ b/tests/topotests/ldp_vpls_topo1/r1/ospfd.conf
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 7e281abb5f..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
diff --git a/tests/topotests/ldp-vpls-topo1/r1/show_ip_route.ref b/tests/topotests/ldp_vpls_topo1/r1/show_ip_route.ref
index fdb81f212d..fdb81f212d 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/show_ip_route.ref
+++ b/tests/topotests/ldp_vpls_topo1/r1/show_ip_route.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r1/show_l2vpn_binding.ref b/tests/topotests/ldp_vpls_topo1/r1/show_l2vpn_binding.ref
index b3de7e2c66..b3de7e2c66 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_vpls_topo1/r1/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r1/show_l2vpn_vc.ref b/tests/topotests/ldp_vpls_topo1/r1/show_l2vpn_vc.ref
index 29e9df1089..29e9df1089 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_vpls_topo1/r1/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r1/show_ldp_binding.ref b/tests/topotests/ldp_vpls_topo1/r1/show_ldp_binding.ref
index b3a12ec53f..b3a12ec53f 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/show_ldp_binding.ref
+++ b/tests/topotests/ldp_vpls_topo1/r1/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r1/show_ldp_discovery.ref b/tests/topotests/ldp_vpls_topo1/r1/show_ldp_discovery.ref
index 9301e60c67..9301e60c67 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_vpls_topo1/r1/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r1/show_ldp_neighbor.ref b/tests/topotests/ldp_vpls_topo1/r1/show_ldp_neighbor.ref
index 40d8ebeb90..40d8ebeb90 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_vpls_topo1/r1/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r1/zebra.conf b/tests/topotests/ldp_vpls_topo1/r1/zebra.conf
index ea047355ad..ea047355ad 100644
--- a/tests/topotests/ldp-vpls-topo1/r1/zebra.conf
+++ b/tests/topotests/ldp_vpls_topo1/r1/zebra.conf
diff --git a/tests/topotests/ldp-vpls-topo1/r2/ldpd.conf b/tests/topotests/ldp_vpls_topo1/r2/ldpd.conf
index 06e5973040..06e5973040 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/ldpd.conf
+++ b/tests/topotests/ldp_vpls_topo1/r2/ldpd.conf
diff --git a/tests/topotests/ldp-vpls-topo1/r2/ospfd.conf b/tests/topotests/ldp_vpls_topo1/r2/ospfd.conf
index b4692feec8..b4692feec8 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/ospfd.conf
+++ b/tests/topotests/ldp_vpls_topo1/r2/ospfd.conf
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 22fd98f519..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
diff --git a/tests/topotests/ldp-vpls-topo1/r2/show_ip_route.ref b/tests/topotests/ldp_vpls_topo1/r2/show_ip_route.ref
index 6056feffe3..6056feffe3 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/show_ip_route.ref
+++ b/tests/topotests/ldp_vpls_topo1/r2/show_ip_route.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r2/show_l2vpn_binding.ref b/tests/topotests/ldp_vpls_topo1/r2/show_l2vpn_binding.ref
index 42c5a1cbd9..42c5a1cbd9 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_vpls_topo1/r2/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r2/show_l2vpn_vc.ref b/tests/topotests/ldp_vpls_topo1/r2/show_l2vpn_vc.ref
index 942ed23a1e..942ed23a1e 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_vpls_topo1/r2/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r2/show_ldp_binding.ref b/tests/topotests/ldp_vpls_topo1/r2/show_ldp_binding.ref
index c641fb47e6..c641fb47e6 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/show_ldp_binding.ref
+++ b/tests/topotests/ldp_vpls_topo1/r2/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r2/show_ldp_discovery.ref b/tests/topotests/ldp_vpls_topo1/r2/show_ldp_discovery.ref
index 26801acade..26801acade 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_vpls_topo1/r2/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r2/show_ldp_neighbor.ref b/tests/topotests/ldp_vpls_topo1/r2/show_ldp_neighbor.ref
index eed35289ea..eed35289ea 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_vpls_topo1/r2/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r2/zebra.conf b/tests/topotests/ldp_vpls_topo1/r2/zebra.conf
index c244442876..c244442876 100644
--- a/tests/topotests/ldp-vpls-topo1/r2/zebra.conf
+++ b/tests/topotests/ldp_vpls_topo1/r2/zebra.conf
diff --git a/tests/topotests/ldp-vpls-topo1/r3/ldpd.conf b/tests/topotests/ldp_vpls_topo1/r3/ldpd.conf
index 57a203bce3..57a203bce3 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/ldpd.conf
+++ b/tests/topotests/ldp_vpls_topo1/r3/ldpd.conf
diff --git a/tests/topotests/ldp-vpls-topo1/r3/ospfd.conf b/tests/topotests/ldp_vpls_topo1/r3/ospfd.conf
index 2413bfa9d5..2413bfa9d5 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/ospfd.conf
+++ b/tests/topotests/ldp_vpls_topo1/r3/ospfd.conf
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 970eb2fc1d..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
diff --git a/tests/topotests/ldp-vpls-topo1/r3/show_ip_route.ref b/tests/topotests/ldp_vpls_topo1/r3/show_ip_route.ref
index fc96ada443..fc96ada443 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/show_ip_route.ref
+++ b/tests/topotests/ldp_vpls_topo1/r3/show_ip_route.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r3/show_l2vpn_binding.ref b/tests/topotests/ldp_vpls_topo1/r3/show_l2vpn_binding.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/show_l2vpn_binding.ref
+++ b/tests/topotests/ldp_vpls_topo1/r3/show_l2vpn_binding.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r3/show_l2vpn_vc.ref b/tests/topotests/ldp_vpls_topo1/r3/show_l2vpn_vc.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/show_l2vpn_vc.ref
+++ b/tests/topotests/ldp_vpls_topo1/r3/show_l2vpn_vc.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r3/show_ldp_binding.ref b/tests/topotests/ldp_vpls_topo1/r3/show_ldp_binding.ref
index e54bd6e755..e54bd6e755 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/show_ldp_binding.ref
+++ b/tests/topotests/ldp_vpls_topo1/r3/show_ldp_binding.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r3/show_ldp_discovery.ref b/tests/topotests/ldp_vpls_topo1/r3/show_ldp_discovery.ref
index 42fa98d4da..42fa98d4da 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/show_ldp_discovery.ref
+++ b/tests/topotests/ldp_vpls_topo1/r3/show_ldp_discovery.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r3/show_ldp_neighbor.ref b/tests/topotests/ldp_vpls_topo1/r3/show_ldp_neighbor.ref
index 5c482da697..5c482da697 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/show_ldp_neighbor.ref
+++ b/tests/topotests/ldp_vpls_topo1/r3/show_ldp_neighbor.ref
diff --git a/tests/topotests/ldp-vpls-topo1/r3/zebra.conf b/tests/topotests/ldp_vpls_topo1/r3/zebra.conf
index 6b1eaa2ca0..6b1eaa2ca0 100644
--- a/tests/topotests/ldp-vpls-topo1/r3/zebra.conf
+++ b/tests/topotests/ldp_vpls_topo1/r3/zebra.conf
diff --git a/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.dot b/tests/topotests/ldp_vpls_topo1/test_ldp_vpls_topo1.dot
index 4f1bd22f7c..4f1bd22f7c 100644
--- a/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.dot
+++ b/tests/topotests/ldp_vpls_topo1/test_ldp_vpls_topo1.dot
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 4d26732ea7..4d26732ea7 100644
--- a/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.pdf
+++ b/tests/topotests/ldp_vpls_topo1/test_ldp_vpls_topo1.pdf
Binary files differ
diff --git a/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.py b/tests/topotests/ldp_vpls_topo1/test_ldp_vpls_topo1.py
index 0ea7aca3eb..0ea7aca3eb 100644
--- a/tests/topotests/ldp-vpls-topo1/test_ldp_vpls_topo1.py
+++ b/tests/topotests/ldp_vpls_topo1/test_ldp_vpls_topo1.py
diff --git a/tests/topotests/multicast-pim-bsm-topo1/mcast_pim_bsmp_01.json b/tests/topotests/multicast_pim_bsm_topo1/mcast_pim_bsmp_01.json
index 14cb0bee1d..14cb0bee1d 100644
--- a/tests/topotests/multicast-pim-bsm-topo1/mcast_pim_bsmp_01.json
+++ b/tests/topotests/multicast_pim_bsm_topo1/mcast_pim_bsmp_01.json
diff --git a/tests/topotests/multicast-pim-bsm-topo1/test_mcast_pim_bsmp_01.py b/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
index cd398a5111..cd398a5111 100644
--- a/tests/topotests/multicast-pim-bsm-topo1/test_mcast_pim_bsmp_01.py
+++ b/tests/topotests/multicast_pim_bsm_topo1/test_mcast_pim_bsmp_01.py
diff --git a/tests/topotests/multicast-pim-bsm-topo2/mcast_pim_bsmp_02.json b/tests/topotests/multicast_pim_bsm_topo2/mcast_pim_bsmp_02.json
index 14cb0bee1d..14cb0bee1d 100644
--- a/tests/topotests/multicast-pim-bsm-topo2/mcast_pim_bsmp_02.json
+++ b/tests/topotests/multicast_pim_bsm_topo2/mcast_pim_bsmp_02.json
diff --git a/tests/topotests/multicast-pim-bsm-topo2/test_mcast_pim_bsmp_02.py b/tests/topotests/multicast_pim_bsm_topo2/test_mcast_pim_bsmp_02.py
index 199746d5f6..199746d5f6 100644
--- a/tests/topotests/multicast-pim-bsm-topo2/test_mcast_pim_bsmp_02.py
+++ b/tests/topotests/multicast_pim_bsm_topo2/test_mcast_pim_bsmp_02.py
diff --git a/tests/topotests/multicast-pim-sm-topo1/multicast_pim_sm_topo1.json b/tests/topotests/multicast_pim_sm_topo1/multicast_pim_sm_topo1.json
index 71454c2ab2..71454c2ab2 100644
--- a/tests/topotests/multicast-pim-sm-topo1/multicast_pim_sm_topo1.json
+++ b/tests/topotests/multicast_pim_sm_topo1/multicast_pim_sm_topo1.json
diff --git a/tests/topotests/multicast-pim-sm-topo1/test_multicast_pim_sm_topo1.py b/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py
index e55e30270d..e55e30270d 100755
--- a/tests/topotests/multicast-pim-sm-topo1/test_multicast_pim_sm_topo1.py
+++ b/tests/topotests/multicast_pim_sm_topo1/test_multicast_pim_sm_topo1.py
diff --git a/tests/topotests/multicast-pim-sm-topo2/multicast_pim_sm_topo2.json b/tests/topotests/multicast_pim_sm_topo2/multicast_pim_sm_topo2.json
index 71454c2ab2..71454c2ab2 100644
--- a/tests/topotests/multicast-pim-sm-topo2/multicast_pim_sm_topo2.json
+++ b/tests/topotests/multicast_pim_sm_topo2/multicast_pim_sm_topo2.json
diff --git a/tests/topotests/multicast-pim-sm-topo2/test_multicast_pim_sm_topo2.py b/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py
index 7e409c2a05..7e409c2a05 100755
--- a/tests/topotests/multicast-pim-sm-topo2/test_multicast_pim_sm_topo2.py
+++ b/tests/topotests/multicast_pim_sm_topo2/test_multicast_pim_sm_topo2.py
diff --git a/tests/topotests/multicast-pim-sm-topo3/multicast_pim_sm_topo3.json b/tests/topotests/multicast_pim_sm_topo3/multicast_pim_sm_topo3.json
index f582f4929d..f582f4929d 100644
--- a/tests/topotests/multicast-pim-sm-topo3/multicast_pim_sm_topo3.json
+++ b/tests/topotests/multicast_pim_sm_topo3/multicast_pim_sm_topo3.json
diff --git a/tests/topotests/multicast-pim-sm-topo3/multicast_pim_sm_topo4.json b/tests/topotests/multicast_pim_sm_topo3/multicast_pim_sm_topo4.json
index 4635dac7d2..4635dac7d2 100644
--- a/tests/topotests/multicast-pim-sm-topo3/multicast_pim_sm_topo4.json
+++ b/tests/topotests/multicast_pim_sm_topo3/multicast_pim_sm_topo4.json
diff --git a/tests/topotests/multicast-pim-sm-topo3/test_multicast_pim_sm_topo3.py b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo3.py
index 33f476de44..33f476de44 100755
--- a/tests/topotests/multicast-pim-sm-topo3/test_multicast_pim_sm_topo3.py
+++ b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo3.py
diff --git a/tests/topotests/multicast-pim-sm-topo3/test_multicast_pim_sm_topo4.py b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py
index 1081b764ac..1081b764ac 100755
--- a/tests/topotests/multicast-pim-sm-topo3/test_multicast_pim_sm_topo4.py
+++ b/tests/topotests/multicast_pim_sm_topo3/test_multicast_pim_sm_topo4.py
diff --git a/tests/topotests/multicast-pim-static-rp-topo1/__init__.py b/tests/topotests/multicast_pim_static_rp_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/multicast-pim-static-rp-topo1/__init__.py
+++ b/tests/topotests/multicast_pim_static_rp_topo1/__init__.py
diff --git a/tests/topotests/multicast-pim-static-rp-topo1/multicast_pim_static_rp.json b/tests/topotests/multicast_pim_static_rp_topo1/multicast_pim_static_rp.json
index 6d6c047b00..6d6c047b00 100644
--- a/tests/topotests/multicast-pim-static-rp-topo1/multicast_pim_static_rp.json
+++ b/tests/topotests/multicast_pim_static_rp_topo1/multicast_pim_static_rp.json
diff --git a/tests/topotests/multicast-pim-static-rp-topo1/test_multicast_pim_static_rp.py b/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py
index e90230eb3b..7bef57b629 100755
--- a/tests/topotests/multicast-pim-static-rp-topo1/test_multicast_pim_static_rp.py
+++ b/tests/topotests/multicast_pim_static_rp_topo1/test_multicast_pim_static_rp.py
@@ -101,9 +101,9 @@ import os
import sys
import json
import time
-import pytest
from time import sleep
import datetime
+import pytest
# Save the Current Working Directory to find configuration files.
CWD = os.path.dirname(os.path.realpath(__file__))
@@ -114,9 +114,12 @@ sys.path.append(os.path.join(CWD, "../lib/"))
# pylint: disable=C0413
# Import topogen and topotest helpers
-from lib.topogen import Topogen, get_topogen
from mininet.topo import Topo
+from lib.topogen import Topogen, get_topogen
+from lib.topolog import logger
+from lib.topojson import build_topo_from_json, build_config_from_json
+
from lib.common_config import (
start_topology,
write_test_header,
@@ -149,16 +152,14 @@ from lib.pim import (
clear_ip_mroute,
clear_ip_mroute_verify,
)
-from lib.topolog import logger
-from lib.topojson import build_topo_from_json, build_config_from_json
# Reading the data from JSON File for topology and configuration creation
jsonFile = "{}/multicast_pim_static_rp.json".format(CWD)
try:
with open(jsonFile, "r") as topoJson:
- topo = json.load(topoJson)
+ TOPO = json.load(topoJson)
except IOError:
- logger.info("Could not read file:", jsonFile)
+ logger.info("Could not read file: %s", jsonFile)
# Global variables
GROUP_RANGE_ALL = "224.0.0.0/4"
@@ -203,7 +204,11 @@ class CreateTopo(Topo):
tgen = get_topogen(self)
# Building topology from json file
- build_topo_from_json(tgen, topo)
+ build_topo_from_json(tgen, TOPO)
+
+ def dumdum(self):
+ """ Dummy """
+ print("%s", self.name)
def setup_module(mod):
@@ -212,10 +217,9 @@ def setup_module(mod):
* `mod`: module name
"""
- global topo
testsuite_run_time = time.asctime(time.localtime(time.time()))
- logger.info("Testsuite start time: {}".format(testsuite_run_time))
+ logger.info("Testsuite start time: %s", testsuite_run_time)
logger.info("=" * 40)
topology = """
@@ -229,7 +233,7 @@ def setup_module(mod):
r4
"""
- logger.info("Master Topology: \n {}".format(topology))
+ logger.info("Master Topology: \n %s", topology)
logger.info("Running setup_module to create topology")
@@ -239,7 +243,7 @@ def setup_module(mod):
# ... and here it calls Mininet initialization functions.
# get list of daemons needs to be started for this suite.
- daemons = topo_daemons(tgen, topo)
+ daemons = topo_daemons(tgen, TOPO)
# Starting topology, create tmp files which are loaded to routers
# to start deamons and then start routers
@@ -250,10 +254,10 @@ def setup_module(mod):
pytest.skip(tgen.errors)
# Creating configuration from JSON
- build_config_from_json(tgen, topo)
+ build_config_from_json(tgen, TOPO)
# Verify PIM neighbors
- result = verify_pim_neighbors(tgen, topo)
+ result = verify_pim_neighbors(tgen, TOPO)
assert result is True, "setup_module :Failed \n Error:" " {}".format(result)
logger.info("Running setup_module() done")
@@ -269,9 +273,7 @@ def teardown_module():
# Stop toplogy and Remove tmp files
tgen.stop_topology()
- logger.info(
- "Testsuite end time: {}".format(time.asctime(time.localtime(time.time())))
- )
+ logger.info("Testsuite end time: %s", time.asctime(time.localtime(time.time())))
logger.info("=" * 40)
@@ -335,9 +337,9 @@ def verify_mroute_repopulated(uptime_before, uptime_after):
)
return errormsg
- d1 = datetime.datetime.strptime(uptime_before[group][source], "%H:%M:%S")
- d2 = datetime.datetime.strptime(uptime_after[group][source], "%H:%M:%S")
- if d2 >= d1:
+ d_1 = datetime.datetime.strptime(uptime_before[group][source], "%H:%M:%S")
+ d_2 = datetime.datetime.strptime(uptime_after[group][source], "%H:%M:%S")
+ if d_2 >= d_1:
errormsg = "mroute (%s, %s) is not " "repopulated [FAILED!!]" % (
source,
group,
@@ -360,7 +362,7 @@ def verify_state_incremented(state_before, state_after):
"""
for router, state_data in state_before.items():
- for state, value in state_data.items():
+ for state, _ in state_data.items():
if state_before[router][state] >= state_after[router][state]:
errormsg = (
"[DUT: %s]: state %s value has not"
@@ -422,7 +424,7 @@ def test_add_delete_static_RP_p0(request):
step("r1: Verify show ip igmp group without any IGMP join")
dut = "r1"
interface = "r1-r0-eth0"
- result = verify_igmp_groups(tgen, dut, interface, GROUP_ADDRESS, expected=False)
+ result = verify_igmp_groups(tgen, dut, interface, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: igmp group present without any IGMP join \n Error: {}".format(
@@ -436,8 +438,9 @@ def test_add_delete_static_RP_p0(request):
state_before = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase {} : Failed \n state_before is not dictionary\n Error: {}".format(
+ tc_name, result
+ )
step("r0 : Send IGMP join")
result = iperfSendIGMPJoin(tgen, "r0", GROUP_ADDRESS, join_interval=1)
@@ -453,7 +456,7 @@ def test_add_delete_static_RP_p0(request):
iif = "r1-r2-eth1"
rp_address = "1.0.2.17"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -487,12 +490,12 @@ def test_add_delete_static_RP_p0(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify RP info")
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE, expected=False
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert (
result is not True
@@ -501,16 +504,14 @@ def test_add_delete_static_RP_p0(request):
)
step("r1: Verify upstream IIF interface")
- result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS, expected=False)
+ result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: upstream IIF interface present \n Error: {}".format(tc_name, result)
)
step("r1: Verify upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, STAR, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: upstream join state is up and join timer is running \n Error: {}".format(
@@ -519,13 +520,13 @@ def test_add_delete_static_RP_p0(request):
)
step("r1: Verify PIM state")
- result = verify_pim_state(tgen, dut, iif, oif, GROUP_ADDRESS, expected=False)
+ result = verify_pim_state(tgen, dut, iif, oif, GROUP_ADDRESS)
assert result is not True, "Testcase {} :Failed \n Error: {}".format(
tc_name, result
)
step("r1: Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert (
result is not True
), "Testcase {} : Failed \n " "r1: mroutes are still present \n Error: {}".format(
@@ -536,8 +537,9 @@ def test_add_delete_static_RP_p0(request):
state_after = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase {} : Failed \n state_before is not dictionary \n Error: {}".format(
+ tc_name, result
+ )
result = verify_state_incremented(state_before, state_after)
assert result is True, "Testcase{} : Failed Error: {}".format(tc_name, result)
@@ -576,7 +578,7 @@ def test_SPT_RPT_path_same_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -604,7 +606,7 @@ def test_SPT_RPT_path_same_p1(request):
rp_address = "1.0.2.17"
iif = "lo"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -684,9 +686,7 @@ def test_SPT_RPT_path_same_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (S, G) upstream join state is up and join timer is running\n Error: {}".format(
@@ -732,7 +732,7 @@ def test_not_reachable_static_RP_p0(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -754,8 +754,9 @@ def test_not_reachable_static_RP_p0(request):
state_before = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
step("Enable IGMP on r1 interface and send IGMP " "join (225.1.1.1) to r1")
step("Configure r2 loopback interface as RP")
@@ -770,7 +771,7 @@ def test_not_reachable_static_RP_p0(request):
iif = "r1-r2-eth1"
rp_address = "1.0.2.17"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -810,7 +811,7 @@ def test_not_reachable_static_RP_p0(request):
step("r1: Check RP detail using show ip pim rp-info OIF should be unknown")
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, "Unknown", rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, "Unknown", rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -818,7 +819,7 @@ def test_not_reachable_static_RP_p0(request):
"r1 : OIL should be same and IIF should be cleared on R1 verify"
"using show ip pim state"
)
- result = verify_pim_state(tgen, dut, iif, oif, GROUP_ADDRESS, expected=False)
+ result = verify_pim_state(tgen, dut, iif, oif, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"OIL is not same and IIF is not cleared on R1 \n Error: {}".format(
@@ -827,7 +828,7 @@ def test_not_reachable_static_RP_p0(request):
)
step("r1: upstream IIF should be unknown , verify using show ip pim" "upstream")
- result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS, expected=False)
+ result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: upstream IIF is not unknown \n Error: {}".format(tc_name, result)
@@ -837,9 +838,7 @@ def test_not_reachable_static_RP_p0(request):
"r1: join state should not be joined and join timer should stop,"
"verify using show ip pim upstream"
)
- result = verify_join_state_and_timer(
- tgen, dut, iif, STAR, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: join state is joined and timer is not stopped \n Error: {}".format(
@@ -854,21 +853,22 @@ def test_not_reachable_static_RP_p0(request):
state_after = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
result = verify_state_incremented(state_before, state_after)
assert result is True, "Testcase{} : Failed Error: {}".format(tc_name, result)
step("r1: (*, G) cleared from mroute table using show ip mroute")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: (*, G) are not cleared from mroute table \n Error: {}".format(
tc_name, result
)
)
- logger.info("Expected behavior: {}".format(result))
+ logger.info("Expected behavior: %s", result)
# Uncomment next line for debugging
# tgen.mininet_cli()
@@ -898,7 +898,7 @@ def test_add_RP_after_join_received_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -924,7 +924,7 @@ def test_add_RP_after_join_received_p1(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify rp-info")
@@ -932,7 +932,7 @@ def test_add_RP_after_join_received_p1(request):
rp_address = "1.0.2.17"
iif = "r1-r2-eth1"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE, expected=False
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert (
result is not True
@@ -945,8 +945,9 @@ def test_add_RP_after_join_received_p1(request):
state_before = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
step("r0 : Send IGMP join (225.1.1.1) to r1, when rp is not configured" "in r1")
result = iperfSendIGMPJoin(tgen, "r0", GROUP_ADDRESS, join_interval=1)
@@ -958,7 +959,7 @@ def test_add_RP_after_join_received_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify upstream IIF interface")
- result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS, expected=False)
+ result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: upstream IFF interface is present \n Error: {}".format(tc_name, result)
@@ -966,9 +967,7 @@ def test_add_RP_after_join_received_p1(request):
step("r1: Verify upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, STAR, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: upstream join state is joined and timer is running \n Error: {}".format(
@@ -977,7 +976,7 @@ def test_add_RP_after_join_received_p1(request):
)
step("r1: Verify PIM state")
- result = verify_pim_state(tgen, dut, iif, oif, GROUP_ADDRESS, expected=False)
+ result = verify_pim_state(tgen, dut, iif, oif, GROUP_ADDRESS)
assert (
result is not True
), "Testcase {} : Failed \n " "r1: PIM state is up\n Error: {}".format(
@@ -985,7 +984,7 @@ def test_add_RP_after_join_received_p1(request):
)
step("r1: Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert (
result is not True
), "Testcase {} : Failed \n " "r1: mroutes are still present\n Error: {}".format(
@@ -1006,12 +1005,12 @@ def test_add_RP_after_join_received_p1(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify rp-info")
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -1030,13 +1029,14 @@ def test_add_RP_after_join_received_p1(request):
step("r1 : Verify ip mroutes")
result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
- logger.info("Expected behavior: {}".format(result))
+ logger.info("Expected behavior: %s", result)
state_after = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
result = verify_state_incremented(state_before, state_after)
assert result is True, "Testcase {} : Failed Error: {}".format(tc_name, result)
@@ -1068,7 +1068,7 @@ def test_reachable_static_RP_after_join_p0(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -1083,8 +1083,9 @@ def test_reachable_static_RP_after_join_p0(request):
state_before = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
step("r1: Make RP un-reachable")
dut = "r1"
@@ -1098,7 +1099,7 @@ def test_reachable_static_RP_after_join_p0(request):
step("r1: Verify rp-info")
rp_address = "1.0.2.17"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_ADDRESS, "Unknown", rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_ADDRESS, "Unknown", rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -1113,16 +1114,14 @@ def test_reachable_static_RP_after_join_p0(request):
step("r1 : Verify upstream IIF interface")
iif = "r1-r2-eth1"
- result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS, expected=False)
+ result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: upstream IIF interface is present\n Error: {}".format(tc_name, result)
)
step("r1 : Verify upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, STAR, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: upstream join state is joined and timer is running\n Error: {}".format(
@@ -1131,7 +1130,7 @@ def test_reachable_static_RP_after_join_p0(request):
)
step("r1 : Verify PIM state")
- result = verify_pim_state(tgen, dut, iif, oif, GROUP_ADDRESS, expected=False)
+ result = verify_pim_state(tgen, dut, iif, oif, GROUP_ADDRESS)
assert (
result is not True
), "Testcase {} : Failed \n " "r1: PIM state is up\n Error: {}".format(
@@ -1139,7 +1138,7 @@ def test_reachable_static_RP_after_join_p0(request):
)
step("r1 : Verify ip mroutes")
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert (
result is not True
), "Testcase {} : Failed \n " "r1: mroutes are still present\n Error: {}".format(
@@ -1156,7 +1155,7 @@ def test_reachable_static_RP_after_join_p0(request):
step("r1 : Verify rp-info")
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -1175,14 +1174,15 @@ def test_reachable_static_RP_after_join_p0(request):
step("r1 : Verify ip mroutes")
result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
- logger.info("Expected behavior: {}".format(result))
+ logger.info("Expected behavior: %s", result)
step("r1 : Verify pim interface traffic")
state_after = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
result = verify_state_incremented(state_before, state_after)
assert result is True, "Testcase{} : Failed Error: {}".format(tc_name, result)
@@ -1235,7 +1235,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -1272,8 +1272,9 @@ def test_send_join_on_higher_preffered_rp_p1(request):
state_before = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
step("r0 : Send IGMP join for 225.1.1.1")
result = iperfSendIGMPJoin(tgen, "r0", GROUP_ADDRESS, join_interval=1)
@@ -1299,21 +1300,21 @@ def test_send_join_on_higher_preffered_rp_p1(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 : Verify RP info for group 224.0.0.0/4")
rp_address_1 = "1.0.2.17"
iif = "r1-r2-eth1"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address_1, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address_1, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 : Verify RP info for group 225.1.1.1")
rp_address_2 = "1.0.4.17"
iif = "r1-r4-eth3"
- result = verify_pim_rp_info(tgen, topo, dut, GROUP_RANGE, iif, rp_address_2, SOURCE)
+ result = verify_pim_rp_info(tgen, TOPO, dut, GROUP_RANGE, iif, rp_address_2, SOURCE)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 : Verify join is sent to higher preferred RP")
@@ -1321,8 +1322,9 @@ def test_send_join_on_higher_preffered_rp_p1(request):
state_after = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
result = verify_state_incremented(state_before, state_after)
assert result is True, "Testcase{} : Failed Error: {}".format(tc_name, result)
@@ -1344,7 +1346,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("r1 : Verify joinTx, pruneTx count before RP gets deleted")
state_dict = {"r1": {"r1-r2-eth1": ["joinTx"], "r1-r4-eth3": ["pruneTx"]}}
@@ -1352,8 +1354,9 @@ def test_send_join_on_higher_preffered_rp_p1(request):
state_before = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_before, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
step("r1 : Delete RP configuration for 225.1.1.1")
input_dict = {
@@ -1370,21 +1373,19 @@ def test_send_join_on_higher_preffered_rp_p1(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 : Verify rp-info for group 224.0.0.0/4")
iif = "r1-r2-eth1"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address_1, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address_1, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1 : Verify rp-info for group 225.1.1.1")
iif = "r1-r4-eth3"
- result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE, oif, rp_address_2, SOURCE, expected=False
- )
+ result = verify_pim_rp_info(tgen, TOPO, dut, GROUP_RANGE, oif, rp_address_2, SOURCE)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: rp-info is present for group 225.1.1.1 \n Error: {}".format(
@@ -1399,7 +1400,7 @@ def test_send_join_on_higher_preffered_rp_p1(request):
iif = "r1-r2-eth1"
result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
- logger.info("Expected behavior: {}".format(result))
+ logger.info("Expected behavior: %s", result)
step(
"r1 : Verify IIF and OIL in show ip pim state updated when higher"
@@ -1433,8 +1434,9 @@ def test_send_join_on_higher_preffered_rp_p1(request):
state_after = verify_pim_interface_traffic(tgen, state_dict)
assert isinstance(
state_after, dict
- ), "Testcase{} : Failed \n state_before is not dictionary \n "
- "Error: {}".format(tc_name, result)
+ ), "Testcase{} : Failed \n state_before is not dictionary \n " "Error: {}".format(
+ tc_name, result
+ )
result = verify_state_incremented(state_before, state_after)
assert result is True, "Testcase{} : Failed Error: {}".format(tc_name, result)
@@ -1472,7 +1474,7 @@ def test_RP_configured_as_LHR_1_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -1532,7 +1534,7 @@ def test_RP_configured_as_LHR_1_p1(request):
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Configure r1(LHR) as RP")
@@ -1579,7 +1581,7 @@ def test_RP_configured_as_LHR_1_p1(request):
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
shutdown_bringup_interface(tgen, "r1", "lo", False)
@@ -1592,7 +1594,7 @@ def test_RP_configured_as_LHR_1_p1(request):
rp_address = "1.0.1.17"
iif = "lo"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -1641,9 +1643,7 @@ def test_RP_configured_as_LHR_1_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (S, G) upstream join state is joined and join"
@@ -1688,7 +1688,7 @@ def test_RP_configured_as_LHR_2_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -1748,7 +1748,7 @@ def test_RP_configured_as_LHR_2_p1(request):
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1, r2, r3, r4: Configure r1(LHR) as RP")
@@ -1795,14 +1795,14 @@ def test_RP_configured_as_LHR_2_p1(request):
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify RP info")
dut = "r1"
rp_address = "1.0.1.17"
iif = "lo"
- result = verify_pim_rp_info(tgen, topo, dut, GROUP_ADDRESS, iif, rp_address, SOURCE)
+ result = verify_pim_rp_info(tgen, TOPO, dut, GROUP_ADDRESS, iif, rp_address, SOURCE)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r5: Send multicast traffic for group 225.1.1.1")
@@ -1850,9 +1850,7 @@ def test_RP_configured_as_LHR_2_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (S,G) upstream state is joined and join timer is running\n Error: {}".format(
@@ -1898,7 +1896,7 @@ def test_RP_configured_as_FHR_1_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -1957,7 +1955,7 @@ def test_RP_configured_as_FHR_1_p1(request):
}
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1, r2, r3, r4: Configure r3(FHR) as RP")
@@ -2004,7 +2002,7 @@ def test_RP_configured_as_FHR_1_p1(request):
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify RP info")
@@ -2012,7 +2010,7 @@ def test_RP_configured_as_FHR_1_p1(request):
rp_address = "1.0.3.17"
iif = "r1-r3-eth2"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -2060,9 +2058,7 @@ def test_RP_configured_as_FHR_1_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (S,G) upstream state is joined and join timer is running\n Error: {}".format(
@@ -2107,7 +2103,7 @@ def test_RP_configured_as_FHR_2_p2(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -2167,7 +2163,7 @@ def test_RP_configured_as_FHR_2_p2(request):
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1, r2, r3, r4: Configure r3(FHR) as RP")
@@ -2214,7 +2210,7 @@ def test_RP_configured_as_FHR_2_p2(request):
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify RP info")
@@ -2222,7 +2218,7 @@ def test_RP_configured_as_FHR_2_p2(request):
rp_address = "1.0.3.17"
iif = "r1-r3-eth2"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -2271,9 +2267,7 @@ def test_RP_configured_as_FHR_2_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (S,G) upstream state is joined and join timer is running\n Error: {}".format(
@@ -2320,7 +2314,7 @@ def test_SPT_RPT_path_different_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -2335,7 +2329,7 @@ def test_SPT_RPT_path_different_p1(request):
dut = "r2"
rp_address = "1.0.2.17"
iif = "lo"
- result = verify_pim_rp_info(tgen, topo, dut, GROUP_ADDRESS, iif, rp_address, SOURCE)
+ result = verify_pim_rp_info(tgen, TOPO, dut, GROUP_ADDRESS, iif, rp_address, SOURCE)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r0: Send IGMP join")
@@ -2400,9 +2394,7 @@ def test_SPT_RPT_path_different_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (S,G) upstream state is joined and join timer is running\n Error: {}".format(
@@ -2424,9 +2416,7 @@ def test_SPT_RPT_path_different_p1(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r2: (S,G) upstream state is joined and join timer is running\n Error: {}".format(
@@ -2475,7 +2465,7 @@ def test_clear_pim_configuration_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -2492,7 +2482,7 @@ def test_clear_pim_configuration_p1(request):
rp_address = "1.0.2.17"
oif = "lo"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, oif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, oif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -2572,7 +2562,7 @@ def test_restart_pimd_process_p2(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -2589,7 +2579,7 @@ def test_restart_pimd_process_p2(request):
rp_address = "1.0.2.17"
oif = "lo"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, oif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, oif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -2655,9 +2645,7 @@ def test_restart_pimd_process_p2(request):
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
- result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS, expected=False
- )
+ result = verify_join_state_and_timer(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (S,G) upstream state is joined and join timer is running\n Error: {}".format(
@@ -2676,7 +2664,7 @@ def test_restart_pimd_process_p2(request):
logger.info("waiting for 10 sec to make sure old mroute time is higher")
sleep(10)
uptime_before = verify_ip_mroutes(
- tgen, dut, STAR, GROUP_ADDRESS, iif, oil, return_uptime=True, wait=60
+ tgen, dut, STAR, GROUP_ADDRESS, iif, oil, return_uptime=True, mwait=60
)
assert isinstance(uptime_before, dict), "Testcase{} : Failed Error: {}".format(
tc_name, result
@@ -2692,7 +2680,7 @@ def test_restart_pimd_process_p2(request):
sleep(5)
uptime_after = verify_ip_mroutes(
- tgen, dut, STAR, GROUP_ADDRESS, iif, oil, return_uptime=True, wait=10
+ tgen, dut, STAR, GROUP_ADDRESS, iif, oil, return_uptime=True, mwait=10
)
assert isinstance(uptime_after, dict), "Testcase{} : Failed Error: {}".format(
tc_name, result
@@ -2731,7 +2719,7 @@ def test_multiple_groups_same_RP_address_p2(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -2754,79 +2742,79 @@ def test_multiple_groups_same_RP_address_p2(request):
rp_address = "1.0.2.17"
oif = "lo"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, oif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, oif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
- GROUP_ADDRESS_LIST = GROUP_ADDRESS_LIST_1 + GROUP_ADDRESS_LIST_2
+ group_address_list = GROUP_ADDRESS_LIST_1 + GROUP_ADDRESS_LIST_2
step("r0: Send IGMP join for 10 groups")
- result = iperfSendIGMPJoin(tgen, "r0", GROUP_ADDRESS_LIST, join_interval=1)
+ result = iperfSendIGMPJoin(tgen, "r0", group_address_list, join_interval=1)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify IGMP groups")
dut = "r1"
oif = "r1-r0-eth0"
- result = verify_igmp_groups(tgen, dut, oif, GROUP_ADDRESS_LIST)
+ result = verify_igmp_groups(tgen, dut, oif, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r5: Send multicast traffic for group 225.1.1.1")
- result = iperfSendTraffic(tgen, "r5", GROUP_ADDRESS_LIST, 32, 2500)
+ result = iperfSendTraffic(tgen, "r5", group_address_list, 32, 2500)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) upstream IIF interface")
dut = "r1"
iif = "r1-r2-eth1"
- result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS_LIST)
+ result = verify_upstream_iif(tgen, dut, iif, STAR, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) upstream join state and join timer")
- result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS_LIST)
+ result = verify_join_state_and_timer(tgen, dut, iif, STAR, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
iif = "r1-r3-eth2"
- result = verify_upstream_iif(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST)
+ result = verify_upstream_iif(tgen, dut, iif, SOURCE_ADDRESS, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST
+ tgen, dut, iif, SOURCE_ADDRESS, group_address_list
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
dut = "r2"
iif = "lo"
- result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS_LIST)
+ result = verify_upstream_iif(tgen, dut, iif, STAR, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream join state and join timer")
- result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS_LIST)
+ result = verify_join_state_and_timer(tgen, dut, iif, STAR, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
dut = "r3"
iif = "r3-r5-eth3"
- result = verify_upstream_iif(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST)
+ result = verify_upstream_iif(tgen, dut, iif, SOURCE_ADDRESS, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, group_address_list
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -2837,20 +2825,20 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream IIF interface")
dut = "r2"
iif = "r2-r3-eth1"
result = verify_upstream_iif(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, joinState="NotJoined"
+ tgen, dut, iif, SOURCE_ADDRESS, group_address_list, joinState="NotJoined"
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, group_address_list
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -2861,7 +2849,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r2: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Delete RP configuration")
@@ -2879,7 +2867,7 @@ def test_multiple_groups_same_RP_address_p2(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Shut the interface r1-r2-eth1 from R1 to R2")
@@ -2905,7 +2893,7 @@ def test_multiple_groups_same_RP_address_p2(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Shut the interface r1-r0-eth0 from R1 to R2")
@@ -2919,59 +2907,59 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r1: Verify (*, G) upstream IIF interface")
dut = "r1"
iif = "r1-r2-eth1"
- result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS_LIST)
+ result = verify_upstream_iif(tgen, dut, iif, STAR, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) upstream join state and join timer")
- result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS_LIST)
+ result = verify_join_state_and_timer(tgen, dut, iif, STAR, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) ip mroutes")
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream IIF interface")
iif = "r1-r3-eth2"
- result = verify_upstream_iif(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST)
+ result = verify_upstream_iif(tgen, dut, iif, SOURCE_ADDRESS, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST
+ tgen, dut, iif, SOURCE_ADDRESS, group_address_list
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (S, G) ip mroutes")
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream IIF interface")
dut = "r2"
iif = "lo"
- result = verify_upstream_iif(tgen, dut, iif, STAR, GROUP_ADDRESS_LIST)
+ result = verify_upstream_iif(tgen, dut, iif, STAR, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) upstream join state and join timer")
- result = verify_join_state_and_timer(tgen, dut, iif, STAR, GROUP_ADDRESS_LIST)
+ result = verify_join_state_and_timer(tgen, dut, iif, STAR, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (*, G) ip mroutes")
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, STAR, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream IIF interface")
dut = "r2"
iif = "r2-r3-eth1"
result = verify_upstream_iif(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, joinState="NotJoined"
+ tgen, dut, iif, SOURCE_ADDRESS, group_address_list, joinState="NotJoined"
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, group_address_list
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -2982,18 +2970,18 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r2: Verify (S, G) ip mroutes")
oif = "none"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream IIF interface")
dut = "r3"
iif = "r3-r5-eth3"
- result = verify_upstream_iif(tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST)
+ result = verify_upstream_iif(tgen, dut, iif, SOURCE_ADDRESS, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r3: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, group_address_list
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -3004,7 +2992,7 @@ def test_multiple_groups_same_RP_address_p2(request):
step("r3: Verify (S, G) ip mroutes")
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, GROUP_ADDRESS_LIST, iif, oif)
+ result = verify_ip_mroutes(tgen, dut, SOURCE_ADDRESS, group_address_list, iif, oif)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
write_test_footer(tc_name)
@@ -3040,7 +3028,7 @@ def test_multiple_groups_different_RP_address_p2(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -3060,7 +3048,7 @@ def test_multiple_groups_different_RP_address_p2(request):
}
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
input_dict = {
@@ -3085,7 +3073,7 @@ def test_multiple_groups_different_RP_address_p2(request):
}
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Verify RP info")
@@ -3093,7 +3081,7 @@ def test_multiple_groups_different_RP_address_p2(request):
rp_address = "1.0.2.17"
oif = "lo"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_LIST_1, oif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_LIST_1, oif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -3101,23 +3089,23 @@ def test_multiple_groups_different_RP_address_p2(request):
dut = "r4"
rp_address = "1.0.4.17"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_LIST_2, oif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_LIST_2, oif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
- GROUP_ADDRESS_LIST = GROUP_ADDRESS_LIST_1 + GROUP_ADDRESS_LIST_2
+ group_address_list = GROUP_ADDRESS_LIST_1 + GROUP_ADDRESS_LIST_2
step("r0: Send IGMP join")
- result = iperfSendIGMPJoin(tgen, "r0", GROUP_ADDRESS_LIST, join_interval=1)
+ result = iperfSendIGMPJoin(tgen, "r0", group_address_list, join_interval=1)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify IGMP groups")
dut = "r1"
oif = "r1-r0-eth0"
- result = verify_igmp_groups(tgen, dut, oif, GROUP_ADDRESS_LIST)
+ result = verify_igmp_groups(tgen, dut, oif, group_address_list)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r5: Send multicast traffic for group 225.1.1.1")
- result = iperfSendTraffic(tgen, "r5", GROUP_ADDRESS_LIST, 32, 2500)
+ result = iperfSendTraffic(tgen, "r5", group_address_list, 32, 2500)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Verify (*, G) upstream IIF interface")
@@ -3175,7 +3163,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r2: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -3199,7 +3187,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r3: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -3271,7 +3259,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r4: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -3295,7 +3283,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r3: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2
)
assert result is not True, "Testcase {} :Failed \n Error: {}".format(
tc_name, result
@@ -3333,7 +3321,7 @@ def test_multiple_groups_different_RP_address_p2(request):
}
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1, r2, r3, r4: Re-configure RP")
@@ -3359,7 +3347,7 @@ def test_multiple_groups_different_RP_address_p2(request):
}
},
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Shut the interface r1-r2-eth1 from R1 to R2")
@@ -3448,7 +3436,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r2: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -3472,7 +3460,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r3: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_1
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -3544,7 +3532,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r4: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -3568,7 +3556,7 @@ def test_multiple_groups_different_RP_address_p2(request):
step("r3: Verify (S, G) upstream join state and join timer")
result = verify_join_state_and_timer(
- tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2, expected=False
+ tgen, dut, iif, SOURCE_ADDRESS, GROUP_ADDRESS_LIST_2
)
assert result is not True, (
"Testcase {} : Failed \n "
@@ -3611,7 +3599,7 @@ def test_shutdown_primary_path_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -3630,7 +3618,7 @@ def test_shutdown_primary_path_p1(request):
rp_address = "1.0.2.17"
iif = "r1-r2-eth1"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -3701,7 +3689,7 @@ def test_shutdown_primary_path_p1(request):
dut = "r1"
iif = "r1-r3-eth2"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: (*,G) mroutes are not cleared after shut of R1 to R3 link\n Error: {}".format(
@@ -3713,7 +3701,7 @@ def test_shutdown_primary_path_p1(request):
dut = "r2"
iif = "lo"
oif = "r2-r3-eth1"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is not True, (
"Testcase {} : Failed \n "
"r2: (*,G) mroutes are not cleared after shut of R1 to R3 link\n Error: {}".format(
@@ -3725,7 +3713,7 @@ def test_shutdown_primary_path_p1(request):
dut = "r3"
iif = "r3-r2-eth1"
oif = "r3-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is not True, (
"Testcase {} : Failed \n "
"r3: (*,G) mroutes are not cleared after shut of R1 to R3 link\n Error: {}".format(
@@ -3804,7 +3792,7 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -3821,7 +3809,7 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
rp_address = "1.0.2.17"
iif = "r1-r2-eth1"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -3863,7 +3851,7 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r1: Shut the interface r1-r2-eth1 from R1 to R2")
@@ -3890,7 +3878,7 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
dut = "r1"
iif = "r1-r2-eth1"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: (*,G) mroutes are not cleared after shut of R1 to R0 link\n Error: {}".format(
@@ -3902,7 +3890,7 @@ def test_delete_RP_shut_noshut_upstream_interface_p1(request):
dut = "r2"
iif = "lo"
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is not True, (
"Testcase {} : Failed \n "
"r2: (*,G) mroutes are not cleared after shut of R1 to R0 link\n Error: {}".format(
@@ -3937,7 +3925,7 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
reset_config_on_routers(tgen)
kill_iperf(tgen)
clear_ip_mroute(tgen)
- clear_ip_pim_interface_traffic(tgen, topo)
+ clear_ip_pim_interface_traffic(tgen, TOPO)
step("pre-configuration to send IGMP join and multicast traffic")
result = config_to_send_igmp_join_and_traffic(tgen, tc_name)
@@ -3954,7 +3942,7 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
rp_address = "1.0.2.17"
iif = "r1-r2-eth1"
result = verify_pim_rp_info(
- tgen, topo, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
+ tgen, TOPO, dut, GROUP_RANGE_ALL, iif, rp_address, SOURCE
)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
@@ -3995,7 +3983,7 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
}
}
- result = create_pim_config(tgen, topo, input_dict)
+ result = create_pim_config(tgen, TOPO, input_dict)
assert result is True, "Testcase {} :Failed \n Error: {}".format(tc_name, result)
step("r2: Shut the RP interface lo")
@@ -4017,7 +4005,7 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
dut = "r1"
iif = "r1-r2-eth1"
oif = "r1-r0-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is not True, (
"Testcase {} : Failed \n "
"r1: (*,G) mroutes are not cleared after shut of R1 to R2 and R3 link\n Error: {}".format(
@@ -4029,7 +4017,7 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
dut = "r2"
iif = "lo"
oif = "r2-r1-eth0"
- result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif, expected=False)
+ result = verify_ip_mroutes(tgen, dut, STAR, GROUP_ADDRESS, iif, oif)
assert result is not True, (
"Testcase {} : Failed \n "
"r2: (*,G) mroutes are not cleared after shut of R1 to R2 and R3 link\n Error: {}".format(
@@ -4041,5 +4029,5 @@ def test_delete_RP_shut_noshut_RP_interface_p1(request):
if __name__ == "__main__":
- args = ["-s"] + sys.argv[1:]
- sys.exit(pytest.main(args))
+ ARGS = ["-s"] + sys.argv[1:]
+ sys.exit(pytest.main(ARGS))
diff --git a/tests/topotests/nhrp-topo/r1/nhrp4_cache.json b/tests/topotests/nhrp_topo/r1/nhrp4_cache.json
index 6426a939be..6426a939be 100644
--- a/tests/topotests/nhrp-topo/r1/nhrp4_cache.json
+++ b/tests/topotests/nhrp_topo/r1/nhrp4_cache.json
diff --git a/tests/topotests/nhrp-topo/r1/nhrp_route4.json b/tests/topotests/nhrp_topo/r1/nhrp_route4.json
index 68b5a6ece2..68b5a6ece2 100644
--- a/tests/topotests/nhrp-topo/r1/nhrp_route4.json
+++ b/tests/topotests/nhrp_topo/r1/nhrp_route4.json
diff --git a/tests/topotests/nhrp-topo/r1/nhrpd.conf b/tests/topotests/nhrp_topo/r1/nhrpd.conf
index 04114bdbe6..04114bdbe6 100644
--- a/tests/topotests/nhrp-topo/r1/nhrpd.conf
+++ b/tests/topotests/nhrp_topo/r1/nhrpd.conf
diff --git a/tests/topotests/nhrp-topo/r1/zebra.conf b/tests/topotests/nhrp_topo/r1/zebra.conf
index b45670fcb2..b45670fcb2 100644
--- a/tests/topotests/nhrp-topo/r1/zebra.conf
+++ b/tests/topotests/nhrp_topo/r1/zebra.conf
diff --git a/tests/topotests/nhrp-topo/r2/nhrp4_cache.json b/tests/topotests/nhrp_topo/r2/nhrp4_cache.json
index 34558e0c28..34558e0c28 100644
--- a/tests/topotests/nhrp-topo/r2/nhrp4_cache.json
+++ b/tests/topotests/nhrp_topo/r2/nhrp4_cache.json
diff --git a/tests/topotests/nhrp-topo/r2/nhrp_route4.json b/tests/topotests/nhrp_topo/r2/nhrp_route4.json
index 7393cba893..7393cba893 100644
--- a/tests/topotests/nhrp-topo/r2/nhrp_route4.json
+++ b/tests/topotests/nhrp_topo/r2/nhrp_route4.json
diff --git a/tests/topotests/nhrp-topo/r2/nhrpd.conf b/tests/topotests/nhrp_topo/r2/nhrpd.conf
index e4f6fb7445..e4f6fb7445 100644
--- a/tests/topotests/nhrp-topo/r2/nhrpd.conf
+++ b/tests/topotests/nhrp_topo/r2/nhrpd.conf
diff --git a/tests/topotests/nhrp-topo/r2/zebra.conf b/tests/topotests/nhrp_topo/r2/zebra.conf
index 9f40d4d72e..9f40d4d72e 100644
--- a/tests/topotests/nhrp-topo/r2/zebra.conf
+++ b/tests/topotests/nhrp_topo/r2/zebra.conf
diff --git a/tests/topotests/nhrp-topo/r3/zebra.conf b/tests/topotests/nhrp_topo/r3/zebra.conf
index 6d3d267978..6d3d267978 100644
--- a/tests/topotests/nhrp-topo/r3/zebra.conf
+++ b/tests/topotests/nhrp_topo/r3/zebra.conf
diff --git a/tests/topotests/nhrp-topo/test_nhrp_topo.dot b/tests/topotests/nhrp_topo/test_nhrp_topo.dot
index 6b68fb398f..6b68fb398f 100644
--- a/tests/topotests/nhrp-topo/test_nhrp_topo.dot
+++ b/tests/topotests/nhrp_topo/test_nhrp_topo.dot
diff --git a/tests/topotests/nhrp-topo/test_nhrp_topo.py b/tests/topotests/nhrp_topo/test_nhrp_topo.py
index 1687961f34..1687961f34 100644
--- a/tests/topotests/nhrp-topo/test_nhrp_topo.py
+++ b/tests/topotests/nhrp_topo/test_nhrp_topo.py
diff --git a/tests/topotests/ospf-sr-te-topo1/dst/zebra.conf b/tests/topotests/ospf-sr-te-topo1/dst/zebra.conf
new file mode 100644
index 0000000000..4cb50fdb27
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/dst/zebra.conf
@@ -0,0 +1,23 @@
+log file zebra.log
+!
+hostname dst
+!
+debug zebra kernel
+debug zebra packet
+debug zebra mpls
+!
+interface lo
+ ip address 9.9.9.2/32
+ ipv6 address 2001:db8:1066::2/128
+!
+interface eth-rt6
+ ip address 10.0.11.2/24
+ link-params
+ enable
+ exit-link-params
+!
+!
+ip forwarding
+!
+line vty
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt1/bgpd.conf b/tests/topotests/ospf-sr-te-topo1/rt1/bgpd.conf
new file mode 100644
index 0000000000..efc03701b5
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt1/bgpd.conf
@@ -0,0 +1,16 @@
+log file bgpd.log
+!
+router bgp 1
+ bgp router-id 1.1.1.1
+ neighbor 6.6.6.6 remote-as 1
+ neighbor 6.6.6.6 update-source lo
+ !
+ address-family ipv4 unicast
+ redistribute static
+ neighbor 6.6.6.6 next-hop-self
+ neighbor 6.6.6.6 route-map SET_SR_POLICY in
+ exit-address-family
+!
+route-map SET_SR_POLICY permit 10
+ set sr-te color 1
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt1/ospfd.conf b/tests/topotests/ospf-sr-te-topo1/rt1/ospfd.conf
new file mode 100644
index 0000000000..225ac93528
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt1/ospfd.conf
@@ -0,0 +1,36 @@
+password 1
+hostname rt1
+log file ospfd.log
+!
+debug ospf sr
+debug ospf te
+debug ospf event
+debug ospf lsa
+debug ospf zebra
+!
+interface lo
+ ip ospf area 0.0.0.0
+!
+interface eth-sw1
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+router ospf
+ ospf router-id 1.1.1.1
+ network 1.1.1.1/32 area 0.0.0.0
+ network 10.0.0.0/16 area 0.0.0.0
+ capability opaque
+ !ospf opaque-lsa
+ mpls-te on
+ mpls-te export
+ mpls-te router-address 1.1.1.1
+ router-info area 0.0.0.0
+ passive-interface lo
+ segment-routing on
+ segment-routing global-block 16000 23999
+ !segment-routing local-block 15000 15999
+ segment-routing node-msd 8
+ segment-routing prefix 1.1.1.1/32 index 10
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt1/pathd.conf b/tests/topotests/ospf-sr-te-topo1/rt1/pathd.conf
new file mode 100644
index 0000000000..55d5857f5d
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt1/pathd.conf
@@ -0,0 +1,27 @@
+log file pathd.log
+!
+hostname rt1
+!
+segment-routing
+ traffic-eng
+ mpls-te on
+ mpls-te import ospfv2
+ segment-list default
+ index 10 nai adjacency 10.0.1.1 10.0.1.2
+ index 20 nai adjacency 10.0.2.2 10.0.2.4
+ index 30 nai adjacency 10.0.7.4 10.0.7.6
+
+
+ !
+ segment-list test
+ index 10 nai adjacency 10.0.1.1 10.0.1.2
+ index 20 nai adjacency 10.0.2.2 10.0.2.4
+ index 30 nai adjacency 10.0.6.4 10.0.6.5
+ index 40 nai adjacency 10.0.8.5 10.0.8.6
+ !
+ policy color 1 endpoint 6.6.6.6
+ name default
+ binding-sid 1111
+ !
+ !
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt1/step2/show_operational_data.ref b/tests/topotests/ospf-sr-te-topo1/rt1/step2/show_operational_data.ref
new file mode 100644
index 0000000000..4ef8d946f2
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt1/step2/show_operational_data.ref
@@ -0,0 +1,13 @@
+{
+ "frr-pathd:pathd": {
+ "srte": {
+ "policy": [
+ {
+ "color": 1,
+ "endpoint": "6.6.6.6",
+ "is-operational": false
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/topotests/ospf-sr-te-topo1/rt1/step2/show_operational_data_with_candidate.ref b/tests/topotests/ospf-sr-te-topo1/rt1/step2/show_operational_data_with_candidate.ref
new file mode 100644
index 0000000000..9b28f6a42b
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt1/step2/show_operational_data_with_candidate.ref
@@ -0,0 +1,20 @@
+{
+ "frr-pathd:pathd": {
+ "srte": {
+ "policy": [
+ {
+ "color": 1,
+ "endpoint": "6.6.6.6",
+ "is-operational": true,
+ "candidate-path": [
+ {
+ "preference": 100,
+ "discriminator": "*",
+ "is-best-candidate-path": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/topotests/ospf-sr-te-topo1/rt1/step3/show_operational_data_with_single_candidate.ref b/tests/topotests/ospf-sr-te-topo1/rt1/step3/show_operational_data_with_single_candidate.ref
new file mode 100644
index 0000000000..9b28f6a42b
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt1/step3/show_operational_data_with_single_candidate.ref
@@ -0,0 +1,20 @@
+{
+ "frr-pathd:pathd": {
+ "srte": {
+ "policy": [
+ {
+ "color": 1,
+ "endpoint": "6.6.6.6",
+ "is-operational": true,
+ "candidate-path": [
+ {
+ "preference": 100,
+ "discriminator": "*",
+ "is-best-candidate-path": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/topotests/ospf-sr-te-topo1/rt1/step3/show_operational_data_with_two_candidates.ref b/tests/topotests/ospf-sr-te-topo1/rt1/step3/show_operational_data_with_two_candidates.ref
new file mode 100644
index 0000000000..249117198a
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt1/step3/show_operational_data_with_two_candidates.ref
@@ -0,0 +1,25 @@
+{
+ "frr-pathd:pathd": {
+ "srte": {
+ "policy": [
+ {
+ "color": 1,
+ "endpoint": "6.6.6.6",
+ "is-operational": true,
+ "candidate-path": [
+ {
+ "preference": 100,
+ "discriminator": "*",
+ "is-best-candidate-path": false
+ },
+ {
+ "preference": 200,
+ "discriminator": "*",
+ "is-best-candidate-path": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/topotests/ospf-sr-te-topo1/rt1/zebra.conf b/tests/topotests/ospf-sr-te-topo1/rt1/zebra.conf
new file mode 100644
index 0000000000..dd686ea3da
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt1/zebra.conf
@@ -0,0 +1,21 @@
+log file zebra.log
+!
+hostname rt1
+!
+debug zebra kernel
+debug zebra packet
+debug zebra mpls
+!
+interface lo
+ ip address 1.1.1.1/32
+!
+interface eth-sw1
+ ip address 10.0.1.1/24
+ link-params
+ enable
+ exit-link-params
+!
+ip forwarding
+!
+line vty
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt2/ospfd.conf b/tests/topotests/ospf-sr-te-topo1/rt2/ospfd.conf
new file mode 100644
index 0000000000..f6a7bbb621
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt2/ospfd.conf
@@ -0,0 +1,47 @@
+hostname rt2
+log file ospfd.log
+!
+debug ospf sr
+debug ospf te
+debug ospf event
+debug ospf lsa
+debug ospf zebra
+!
+interface lo
+ ip ospf area 0.0.0.0
+!
+interface eth-sw1
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt4-1
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt4-2
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+router ospf
+ ospf router-id 2.2.2.2
+ network 2.2.2.2/32 area 0.0.0.0
+ network 10.0.0.0/16 area 0.0.0.0
+ capability opaque
+ !ospf opaque-lsa
+ mpls-te on
+ !mpls-te export
+ mpls-te router-address 2.2.2.2
+ router-info area 0.0.0.0
+ passive-interface lo
+ segment-routing on
+ segment-routing global-block 16000 23999
+ !segment-routing local-block 15000 15999
+ segment-routing node-msd 8
+ segment-routing prefix 2.2.2.2/32 index 20
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt2/zebra.conf b/tests/topotests/ospf-sr-te-topo1/rt2/zebra.conf
new file mode 100644
index 0000000000..ddd50ba520
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt2/zebra.conf
@@ -0,0 +1,35 @@
+log file zebra.log
+!
+hostname rt2
+!
+debug zebra kernel
+debug zebra packet
+debug zebra mpls
+!
+interface lo
+ ip address 2.2.2.2/32
+!
+interface eth-sw1
+ ip address 10.0.1.2/24
+ link-params
+ enable
+ exit-link-params
+!
+interface eth-rt4-1
+ ip address 10.0.2.2/24
+ link-params
+ enable
+ exit-link-params
+!
+!
+interface eth-rt4-2
+ ip address 10.0.3.2/24
+ link-params
+ enable
+ exit-link-params
+!
+!
+ip forwarding
+!
+line vty
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt3/ospfd.conf b/tests/topotests/ospf-sr-te-topo1/rt3/ospfd.conf
new file mode 100644
index 0000000000..5f71cd8484
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt3/ospfd.conf
@@ -0,0 +1,46 @@
+hostname rt3
+log file ospfd.log
+!
+debug ospf sr
+debug ospf te
+debug ospf event
+debug ospf lsa
+debug ospf zebra
+!
+interface lo
+ ip ospf area 0.0.0.0
+!
+interface eth-sw1
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt5-1
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt5-2
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+router ospf
+ ospf router-id 3.3.3.3
+ network 3.3.3.3/32 area 0.0.0.0
+ network 10.0.0.0/16 area 0.0.0.0
+ capability opaque
+ !ospf opaque-lsa
+ mpls-te on
+ !mpls-te export
+ mpls-te router-address 3.3.3.3
+ router-info area 0.0.0.0
+ segment-routing on
+ segment-routing global-block 16000 23999
+ !segment-routing local-block 15000 15999
+ segment-routing node-msd 8
+ segment-routing prefix 3.3.3.3/32 index 30
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt3/zebra.conf b/tests/topotests/ospf-sr-te-topo1/rt3/zebra.conf
new file mode 100644
index 0000000000..0825b5c8bf
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt3/zebra.conf
@@ -0,0 +1,33 @@
+log file zebra.log
+!
+hostname rt3
+!
+debug zebra kernel
+debug zebra packet
+debug zebra mpls
+!
+interface lo
+ ip address 3.3.3.3/32
+!
+interface eth-sw1
+ ip address 10.0.1.3/24
+ link-params
+ enable
+ exit-link-params
+!!
+interface eth-rt5-1
+ ip address 10.0.4.3/24
+ link-params
+ enable
+ exit-link-params
+!!
+interface eth-rt5-2
+ ip address 10.0.5.3/24
+ link-params
+ enable
+ exit-link-params
+!!
+ip forwarding
+!
+line vty
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt4/ospfd.conf b/tests/topotests/ospf-sr-te-topo1/rt4/ospfd.conf
new file mode 100644
index 0000000000..d4862cd233
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt4/ospfd.conf
@@ -0,0 +1,53 @@
+hostname rt4
+log file ospfd.log
+!
+debug ospf sr
+debug ospf te
+debug ospf event
+debug ospf lsa
+debug ospf zebra
+!
+interface lo
+ ip ospf area 0.0.0.0
+!
+interface eth-rt2-1
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt2-2
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt5
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt6
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+router ospf
+ ospf router-id 4.4.4.4
+ network 4.4.4.4/32 area 0.0.0.0
+ network 10.0.0.0/16 area 0.0.0.0
+ capability opaque
+ !ospf opaque-lsa
+ mpls-te on
+ !mpls-te export
+ mpls-te router-address 4.4.4.4
+ router-info area 0.0.0.0
+ passive-interface lo
+ segment-routing on
+ segment-routing global-block 16000 23999
+ !segment-routing local-block 15000 15999
+ segment-routing node-msd 8
+ segment-routing prefix 4.4.4.4/32 index 40
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt4/zebra.conf b/tests/topotests/ospf-sr-te-topo1/rt4/zebra.conf
new file mode 100644
index 0000000000..c6d1f4f40e
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt4/zebra.conf
@@ -0,0 +1,43 @@
+log file zebra.log
+!
+hostname rt4
+!
+debug zebra kernel
+debug zebra packet
+debug zebra mpls
+!
+interface lo
+ ip address 4.4.4.4/32
+!
+interface eth-rt2-1
+ ip address 10.0.2.4/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+interface eth-rt2-2
+ ip address 10.0.3.4/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+interface eth-rt5
+ ip address 10.0.6.4/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+interface eth-rt6
+ ip address 10.0.7.4/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+ip forwarding
+!
+line vty
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt5/ospfd.conf b/tests/topotests/ospf-sr-te-topo1/rt5/ospfd.conf
new file mode 100644
index 0000000000..fdc0dcfdb7
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt5/ospfd.conf
@@ -0,0 +1,53 @@
+hostname rt5
+log file ospfd.log
+!
+debug ospf sr
+debug ospf te
+debug ospf event
+debug ospf lsa
+debug ospf zebra
+!
+interface lo
+ ip ospf area 0.0.0.0
+!
+interface eth-rt3-1
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt3-2
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt4
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt6
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+router ospf
+ ospf router-id 5.5.5.5
+ network 5.5.5.5/32 area 0.0.0.0
+ network 10.0.0.0/16 area 0.0.0.0
+ capability opaque
+! ospf opaque-lsa
+ mpls-te on
+! mpls-te export
+ mpls-te router-address 5.5.5.5
+ router-info area 0.0.0.0
+ passive-interface lo
+ segment-routing on
+ segment-routing global-block 16000 23999
+! segment-routing local-block 15000 15999
+ segment-routing node-msd 8
+ segment-routing prefix 5.5.5.5/32 index 50
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt5/zebra.conf b/tests/topotests/ospf-sr-te-topo1/rt5/zebra.conf
new file mode 100644
index 0000000000..96b732d398
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt5/zebra.conf
@@ -0,0 +1,43 @@
+log file zebra.log
+!
+hostname rt5
+!
+debug zebra kernel
+debug zebra packet
+debug zebra mpls
+!
+interface lo
+ ip address 5.5.5.5/32
+!
+interface eth-rt3-1
+ ip address 10.0.4.5/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+interface eth-rt3-2
+ ip address 10.0.5.5/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+interface eth-rt4
+ ip address 10.0.6.5/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+interface eth-rt6
+ ip address 10.0.8.5/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+ip forwarding
+!
+line vty
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt6/bgpd.conf b/tests/topotests/ospf-sr-te-topo1/rt6/bgpd.conf
new file mode 100644
index 0000000000..e72ee52fce
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt6/bgpd.conf
@@ -0,0 +1,12 @@
+log file bgpd.log
+!
+router bgp 1
+ bgp router-id 6.6.6.6
+ neighbor 1.1.1.1 remote-as 1
+ neighbor 1.1.1.1 update-source lo
+ !
+ address-family ipv4 unicast
+ redistribute static
+ neighbor 1.1.1.1 next-hop-self
+ exit-address-family
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt6/ospfd.conf b/tests/topotests/ospf-sr-te-topo1/rt6/ospfd.conf
new file mode 100644
index 0000000000..c06565be0b
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt6/ospfd.conf
@@ -0,0 +1,41 @@
+hostname rt6
+log file ospfd.log
+!
+debug ospf sr
+debug ospf te
+debug ospf event
+debug ospf lsa
+debug ospf zebra
+!
+interface lo
+ ip ospf area 0.0.0.0
+!
+interface eth-rt4
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+interface eth-rt5
+ ip ospf network point-to-point
+ ip ospf hello-interval 2
+ ip ospf dead-interval 10
+ ip ospf area 0.0.0.0
+!
+router ospf
+ ospf router-id 6.6.6.6
+ network 6.6.6.6/32 area 0.0.0.0
+ network 10.0.0.0/16 area 0.0.0.0
+ capability opaque
+! ospf opaque-lsa
+ mpls-te on
+ mpls-te export
+ mpls-te router-address 6.6.6.6
+ router-info area 0.0.0.0
+ passive-interface lo
+ segment-routing on
+ segment-routing global-block 16000 23999
+! segment-routing local-block 15000 15999
+ segment-routing node-msd 8
+ segment-routing prefix 6.6.6.6/32 index 60
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt6/pathd.conf b/tests/topotests/ospf-sr-te-topo1/rt6/pathd.conf
new file mode 100644
index 0000000000..696df2214b
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt6/pathd.conf
@@ -0,0 +1,25 @@
+log file pathd.log
+!
+hostname rt6
+!
+segment-routing
+ traffic-eng
+ mpls-te on
+ mpls-te import ospfv2
+ segment-list default
+ index 10 nai adjacency 10.0.7.6 10.0.7.4
+ index 20 nai adjacency 10.0.2.4 10.0.2.2
+ index 30 nai adjacency 10.0.1.2 10.0.1.1
+ !
+ segment-list test
+ index 10 nai adjacency 10.0.8.6 10.0.8.5
+ index 20 nai adjacency 10.0.6.5 10.0.6.4
+ index 30 nai adjacency 10.0.2.4 10.0.2.2
+ index 40 nai adjacency 10.0.1.2 10.0.1.1
+ !
+ policy color 1 endpoint 1.1.1.1
+ name default
+ binding-sid 6666
+ !
+ !
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/rt6/step2/show_operational_data.ref b/tests/topotests/ospf-sr-te-topo1/rt6/step2/show_operational_data.ref
new file mode 100644
index 0000000000..241c80bdd7
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt6/step2/show_operational_data.ref
@@ -0,0 +1,13 @@
+{
+ "frr-pathd:pathd": {
+ "srte": {
+ "policy": [
+ {
+ "color": 1,
+ "endpoint": "1.1.1.1",
+ "is-operational": false
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/topotests/ospf-sr-te-topo1/rt6/step2/show_operational_data_with_candidate.ref b/tests/topotests/ospf-sr-te-topo1/rt6/step2/show_operational_data_with_candidate.ref
new file mode 100644
index 0000000000..20ea69e386
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt6/step2/show_operational_data_with_candidate.ref
@@ -0,0 +1,19 @@
+{
+ "frr-pathd:pathd": {
+ "srte": {
+ "policy": [
+ {
+ "color": 1,
+ "endpoint": "1.1.1.1",
+ "is-operational": true,
+ "candidate-path": [
+ {
+ "preference": 100,
+ "is-best-candidate-path": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/topotests/ospf-sr-te-topo1/rt6/step3/show_operational_data_with_single_candidate.ref b/tests/topotests/ospf-sr-te-topo1/rt6/step3/show_operational_data_with_single_candidate.ref
new file mode 100644
index 0000000000..20ea69e386
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt6/step3/show_operational_data_with_single_candidate.ref
@@ -0,0 +1,19 @@
+{
+ "frr-pathd:pathd": {
+ "srte": {
+ "policy": [
+ {
+ "color": 1,
+ "endpoint": "1.1.1.1",
+ "is-operational": true,
+ "candidate-path": [
+ {
+ "preference": 100,
+ "is-best-candidate-path": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/topotests/ospf-sr-te-topo1/rt6/step3/show_operational_data_with_two_candidates.ref b/tests/topotests/ospf-sr-te-topo1/rt6/step3/show_operational_data_with_two_candidates.ref
new file mode 100644
index 0000000000..10cafe9091
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt6/step3/show_operational_data_with_two_candidates.ref
@@ -0,0 +1,23 @@
+{
+ "frr-pathd:pathd": {
+ "srte": {
+ "policy": [
+ {
+ "color": 1,
+ "endpoint": "1.1.1.1",
+ "is-operational": true,
+ "candidate-path": [
+ {
+ "preference": 100,
+ "is-best-candidate-path": false
+ },
+ {
+ "preference": 200,
+ "is-best-candidate-path": true
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/tests/topotests/ospf-sr-te-topo1/rt6/zebra.conf b/tests/topotests/ospf-sr-te-topo1/rt6/zebra.conf
new file mode 100644
index 0000000000..360837c4ca
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/rt6/zebra.conf
@@ -0,0 +1,38 @@
+log file zebra.log
+!
+hostname rt6
+!
+debug zebra kernel
+debug zebra packet
+debug zebra mpls
+!
+interface lo
+ ip address 6.6.6.6/32
+!
+interface eth-rt4
+ ip address 10.0.7.6/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+interface eth-rt5
+ ip address 10.0.8.6/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+interface eth-dst
+ ip address 10.0.11.1/24
+ link-params
+ enable
+ exit-link-params
+!!
+!
+ip forwarding
+!
+ip route 9.9.9.2/32 10.0.11.2
+!
+line vty
+!
diff --git a/tests/topotests/ospf-sr-te-topo1/test_ospf_sr_te_topo1.py b/tests/topotests/ospf-sr-te-topo1/test_ospf_sr_te_topo1.py
new file mode 100755
index 0000000000..6c1122ab72
--- /dev/null
+++ b/tests/topotests/ospf-sr-te-topo1/test_ospf_sr_te_topo1.py
@@ -0,0 +1,640 @@
+#!/usr/bin/env python
+
+#
+# test_ospf_sr_te_topo1.py
+#
+# Copyright (c) 2021 by
+# Volta Networks
+#
+# Permission to use, copy, modify, and/or distribute this software
+# for any purpose with or without fee is hereby granted, provided
+# that the above copyright notice and this permission notice appear
+# in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND NETDEF DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NETDEF BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY
+# DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+# WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+# ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+# OF THIS SOFTWARE.
+#
+
+"""
+test_ospf_sr_te_topo1.py:
+
+ +---------+
+ | |
+ | RT1 |
+ | 1.1.1.1 |
+ | |
+ +---------+
+ |eth-sw1
+ |
+ |
+ |
+ +---------+ | +---------+
+ | | | | |
+ | RT2 |eth-sw1 | eth-sw1| RT3 |
+ | 2.2.2.2 +----------+ + 3.3.3.3 |
+ | | 10.0.1.0/24 | |
+ +---------+ +---------+
+ eth-rt4-1| eth-rt5-1| |eth-rt5-2
+ | | |
+ 10.0.2.0/24| 10.0.4.0/24| |10.0.5.0/24
+ | | |
+ eth-rt2-1| eth-rt3-1| |eth-rt3-2
+ +---------+ +---------+
+ | | | |
+ | RT4 | 10.0.6.0/24 | RT5 |
+ | 4.4.4.4 +---------------------+ 5.5.5.5 |
+ | |eth-rt5 eth-rt4| |
+ +---------+ +---------+
+ eth-rt6| |eth-rt6
+ | |
+ 10.0.7.0/24| |10.0.8.0/24
+ | +---------+ |
+ | | | |
+ | | RT6 | |
+ +----------+ 6.6.6.6 +-----------+
+ eth-rt4| |eth-rt5
+ +---------+
+ |eth-dst (.1)
+ |
+ |10.0.11.0/24
+ |
+ |eth-rt6 (.2)
+ +---------+
+ | |
+ | DST |
+ | 9.9.9.2 |
+ | |
+ +---------+
+
+"""
+
+import os
+import sys
+import pytest
+import json
+import re
+from time import sleep
+from functools import partial
+
+# Save the Current Working Directory to find configuration files.
+CWD = os.path.dirname(os.path.realpath(__file__))
+sys.path.append(os.path.join(CWD, "../"))
+
+# pylint: disable=C0413
+# Import topogen and topotest helpers
+from lib import topotest
+from lib.topogen import Topogen, TopoRouter, get_topogen
+from lib.topolog import logger
+
+# Required to instantiate the topology builder class.
+from mininet.topo import Topo
+
+pytestmark = [pytest.mark.bgpd, pytest.mark.ospfd, pytest.mark.pathd]
+
+
+class TemplateTopo(Topo):
+ "Test topology builder"
+
+ def build(self, *_args, **_opts):
+ "Build function"
+ tgen = get_topogen(self)
+
+ #
+ # Define FRR Routers
+ #
+ for router in ["rt1", "rt2", "rt3", "rt4", "rt5", "rt6", "dst"]:
+ tgen.add_router(router)
+
+ #
+ # Define connections
+ #
+ switch = tgen.add_switch("s1")
+ switch.add_link(tgen.gears["rt1"], nodeif="eth-sw1")
+ switch.add_link(tgen.gears["rt2"], nodeif="eth-sw1")
+ #switch.add_link(tgen.gears["rt3"], nodeif="eth-sw1")
+
+ switch = tgen.add_switch("s2")
+ switch.add_link(tgen.gears["rt2"], nodeif="eth-rt4-1")
+ switch.add_link(tgen.gears["rt4"], nodeif="eth-rt2-1")
+
+ #switch = tgen.add_switch("s3")
+ #switch.add_link(tgen.gears["rt2"], nodeif="eth-rt4-2")
+ #switch.add_link(tgen.gears["rt4"], nodeif="eth-rt2-2")
+
+ switch = tgen.add_switch("s4")
+ switch.add_link(tgen.gears["rt3"], nodeif="eth-rt5-1")
+ switch.add_link(tgen.gears["rt5"], nodeif="eth-rt3-1")
+
+ switch = tgen.add_switch("s5")
+ switch.add_link(tgen.gears["rt3"], nodeif="eth-rt5-2")
+ switch.add_link(tgen.gears["rt5"], nodeif="eth-rt3-2")
+
+ switch = tgen.add_switch("s6")
+ switch.add_link(tgen.gears["rt4"], nodeif="eth-rt5")
+ switch.add_link(tgen.gears["rt5"], nodeif="eth-rt4")
+
+ switch = tgen.add_switch("s7")
+ switch.add_link(tgen.gears["rt4"], nodeif="eth-rt6")
+ switch.add_link(tgen.gears["rt6"], nodeif="eth-rt4")
+
+ switch = tgen.add_switch("s8")
+ switch.add_link(tgen.gears["rt5"], nodeif="eth-rt6")
+ switch.add_link(tgen.gears["rt6"], nodeif="eth-rt5")
+
+ switch = tgen.add_switch("s9")
+ switch.add_link(tgen.gears["rt6"], nodeif="eth-dst")
+ switch.add_link(tgen.gears["dst"], nodeif="eth-rt6")
+
+
+def setup_module(mod):
+ "Sets up the pytest environment"
+
+ tgen = Topogen(TemplateTopo, mod.__name__)
+
+ frrdir = tgen.config.get(tgen.CONFIG_SECTION, "frrdir")
+ if not os.path.isfile(os.path.join(frrdir, "pathd")):
+ pytest.skip("pathd daemon wasn't built in:"+frrdir)
+
+ tgen.start_topology()
+
+ router_list = tgen.routers()
+
+ # For all registered routers, load the zebra configuration file
+ for rname, router in router_list.items():
+ router.load_config(
+ TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))
+ )
+ router.load_config(
+ TopoRouter.RD_OSPF, os.path.join(CWD, "{}/ospfd.conf".format(rname))
+ )
+ router.load_config(
+ TopoRouter.RD_PATH, os.path.join(CWD, "{}/pathd.conf".format(rname))
+ )
+ router.load_config(
+ TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))
+ )
+
+ tgen.start_router()
+
+
+def teardown_module(mod):
+ "Teardown the pytest environment"
+ tgen = get_topogen()
+
+ # This function tears down the whole topology.
+ tgen.stop_topology()
+
+
+def setup_testcase(msg):
+ logger.info(msg)
+ tgen = get_topogen()
+
+ # Skip if previous fatal error condition is raised
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ return tgen
+
+
+def print_cmd_result(rname, command):
+ print(get_topogen().gears[rname].vtysh_cmd(command, isjson=False))
+
+
+def compare_json_test(router, command, reference, exact):
+ output = router.vtysh_cmd(command, isjson=True)
+ result = topotest.json_cmp(output, reference)
+
+ # Note: topotest.json_cmp() just checks on inclusion of keys.
+ # For exact matching also compare the other way around.
+ if not result and exact:
+ return topotest.json_cmp(reference, output)
+ else:
+ return result
+
+
+def cmp_json_output(rname, command, reference, exact=False):
+ "Compare router JSON output"
+
+ logger.info('Comparing router "%s" "%s" output', rname, command)
+
+ tgen = get_topogen()
+ filename = "{}/{}/{}".format(CWD, rname, reference)
+ expected = json.loads(open(filename).read())
+
+ # Run test function until we get an result. Wait at most 60 seconds.
+ test_func = partial(compare_json_test, tgen.gears[rname], command, expected, exact)
+ _, diff = topotest.run_and_expect(test_func, None, count=60, wait=0.5)
+ assertmsg = '"{}" JSON output mismatches the expected result'.format(rname)
+ assert diff is None, assertmsg
+
+
+def cmp_json_output_exact(rname, command, reference):
+ return cmp_json_output(rname, command, reference, True)
+
+
+def add_candidate_path(rname, endpoint, pref, name, segment_list="default"):
+ get_topogen().net[rname].cmd(
+ """ \
+ vtysh -c "conf t" \
+ -c "segment-routing" \
+ -c "traffic-eng" \
+ -c "policy color 1 endpoint """
+ + endpoint
+ + """" \
+ -c "candidate-path preference """
+ + str(pref)
+ + """ name """
+ + name
+ + """ explicit segment-list """
+ + segment_list
+ + '''"'''
+ )
+
+
+def delete_candidate_path(rname, endpoint, pref):
+ get_topogen().net[rname].cmd(
+ """ \
+ vtysh -c "conf t" \
+ -c "segment-routing" \
+ -c "traffic-eng" \
+ -c "policy color 1 endpoint """
+ + endpoint
+ + """" \
+ -c "no candidate-path preference """
+ + str(pref)
+ + '''"'''
+ )
+
+
+def add_segment(rname, name, index, label):
+ get_topogen().net[rname].cmd(
+ """ \
+ vtysh -c "conf t" \
+ -c "segment-routing" \
+ -c "traffic-eng" \
+ -c "segment-list """
+ + name
+ + """" \
+ -c "index """
+ + str(index)
+ + """ mpls label """
+ + str(label)
+ + '''"'''
+ )
+
+
+def delete_segment(rname, name, index):
+ get_topogen().net[rname].cmd(
+ """ \
+ vtysh -c "conf t" \
+ -c "segment-routing" \
+ -c "traffic-eng" \
+ -c "segment-list """
+ + name
+ + """" \
+ -c "no index """
+ + str(index)
+ + '''"'''
+ )
+
+
+def add_segment_adj(rname, name, index, src, dst):
+ get_topogen().net[rname].cmd(
+ """ \
+ vtysh -c "conf t" \
+ -c "segment-routing" \
+ -c "traffic-eng" \
+ -c "segment-list """
+ + name
+ + """" \
+ -c "index """
+ + str(index)
+ + """ nai adjacency """
+ + str(src)
+ + """ """
+ + str(dst)
+ + '''"'''
+ )
+
+
+def create_sr_policy(rname, endpoint, bsid):
+ get_topogen().net[rname].cmd(
+ """ \
+ vtysh -c "conf t" \
+ -c "segment-routing" \
+ -c "traffic-eng" \
+ -c "policy color 1 endpoint """
+ + endpoint
+ + """" \
+ -c "name default" \
+ -c "binding-sid """
+ + str(bsid)
+ + '''"'''
+ )
+
+
+def delete_sr_policy(rname, endpoint):
+ get_topogen().net[rname].cmd(
+ """ \
+ vtysh -c "conf t" \
+ -c "segment-routing" \
+ -c "traffic-eng" \
+ -c "no policy color 1 endpoint """
+ + endpoint
+ + '''"'''
+ )
+
+
+def create_prefix_sid(rname, prefix, sid):
+ get_topogen().net[rname].cmd(
+ """ \
+ vtysh -c "conf t" \
+ -c "router ospf " \
+ -c "segment-routing prefix """
+ + prefix
+ + " index "
+ + str(sid)
+ + '''"'''
+ )
+
+
+def delete_prefix_sid(rname, prefix):
+ get_topogen().net[rname].cmd(
+ ''' \
+ vtysh -c "conf t" \
+ -c "router ospf " \
+ -c "no segment-routing prefix "'''
+ + prefix
+ )
+
+
+def check_bsid(rt, bsid, fn_name, positive):
+ """
+ Search for a bsid in rt1 and rt6
+ Positive means that check is true is bsid is found
+ Positive="False" means that check is true is bsid is NOT found
+ """
+
+ logger.info('Checking "%s" bsid "%s" for router "%s" ', positive, bsid, rt)
+
+ count = 0
+ candidate_key = bsid
+ candidate_output = ""
+ # First wait for convergence
+ tgen = get_topogen()
+ while count < 30:
+ matched = False
+ matched_key = False
+ sleep(1)
+ count += 1
+ router = tgen.gears[rt]
+ candidate_output = router.vtysh_cmd("show mpls table json")
+ candidate_output_json = json.loads(candidate_output)
+ for item in candidate_output_json.items():
+ # logger.info('item "%s"', item)
+ if item[0] == candidate_key:
+ matched_key = True
+ if positive:
+ break
+ if positive:
+ if matched_key:
+ matched = True
+ assertmsg = "{} don't has entry {} but is was expected".format(
+ router.name, candidate_key)
+ else:
+ if not matched_key:
+ matched = True
+ assertmsg = "{} has entry {} but is wans't expected".format(
+ router.name, candidate_key)
+ if matched:
+ logger.info('Success "%s" in "%s"', router.name, fn_name)
+ return
+ assert matched, assertmsg
+
+
+#
+# Step 1
+#
+# Checking the MPLS table using a single SR Policy and a single Candidate Path
+# Segment list are base in adjacency that query TED
+#
+def test_srte_init_step1():
+ setup_testcase("Test (step 1): wait OSPF convergence / label distribution")
+
+ check_bsid("rt1", "1111", test_srte_init_step1.__name__, False)
+ check_bsid("rt6", "6666", test_srte_init_step1.__name__, False)
+
+
+def test_srte_add_candidate_check_mpls_table_step1():
+ setup_testcase("Test (step 1): check MPLS table regarding the added Candidate Path")
+
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ add_candidate_path(rname, endpoint, 100, "default")
+ check_bsid(rname, "1111" if rname == "rt1" else "6666", test_srte_init_step1.__name__, True)
+ delete_candidate_path(rname, endpoint, 100)
+
+
+def test_srte_reinstall_sr_policy_check_mpls_table_step1():
+ setup_testcase(
+ "Test (step 1): check MPLS table after the SR Policy was removed and reinstalled"
+ )
+
+ for rname, endpoint, bsid in [("rt1", "6.6.6.6", 1111), ("rt6", "1.1.1.1", 6666)]:
+ add_candidate_path(rname, endpoint, 100, "default")
+ delete_sr_policy(rname, endpoint)
+ check_bsid(rname, bsid, test_srte_init_step1.__name__, False)
+ create_sr_policy(rname, endpoint, bsid)
+ add_candidate_path(rname, endpoint, 100, "default")
+ check_bsid(rname, "1111" if rname == "rt1" else "6666", test_srte_init_step1.__name__, True)
+ delete_candidate_path(rname, endpoint, 100)
+
+
+#
+# Step 2
+#
+# Checking pathd operational data using a single SR Policy and a single Candidate Path
+# Segment list are base in adjacency that query TED
+#
+def test_srte_bare_policy_step2():
+ setup_testcase("Test (step 2): bare SR Policy should not be operational")
+
+ for rname in ["rt1", "rt6"]:
+ cmp_json_output_exact(
+ rname,
+ "show yang operational-data /frr-pathd:pathd pathd",
+ "step2/show_operational_data.ref",
+ )
+
+
+def test_srte_add_candidate_check_operational_data_step2():
+ setup_testcase(
+ "Test (step 2): add single Candidate Path, SR Policy should be operational"
+ )
+
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ add_candidate_path(rname, endpoint, 100, "default")
+ cmp_json_output(
+ rname,
+ "show yang operational-data /frr-pathd:pathd pathd",
+ "step2/show_operational_data_with_candidate.ref",
+ )
+
+
+def test_srte_config_remove_candidate_check_operational_data_step2():
+ setup_testcase(
+ "Test (step 2): remove single Candidate Path, SR Policy should not be operational anymore"
+ )
+
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ delete_candidate_path(rname, endpoint, 100)
+ cmp_json_output_exact(
+ rname,
+ "show yang operational-data /frr-pathd:pathd pathd",
+ "step2/show_operational_data.ref",
+ )
+
+
+#
+# Step 3
+#
+# Testing the Candidate Path selection
+# Segment list are based in adjacencies resolved by query TED
+#
+def test_srte_add_two_candidates_step3():
+ setup_testcase("Test (step 3): second Candidate Path has higher Priority")
+
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ for pref, cand_name in [("100", "first"), ("200", "second")]:
+ add_candidate_path(rname, endpoint, pref, cand_name)
+ cmp_json_output(
+ rname,
+ "show yang operational-data /frr-pathd:pathd pathd",
+ "step3/show_operational_data_with_two_candidates.ref",
+ )
+
+ # cleanup
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ for pref in ["100", "200"]:
+ delete_candidate_path(rname, endpoint, pref)
+
+
+def test_srte_add_two_candidates_with_reverse_priority_step3():
+ setup_testcase("Test (step 3): second Candidate Path has lower Priority")
+
+ # Use reversed priorities here
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ for pref, cand_name in [("200", "first"), ("100", "second")]:
+ add_candidate_path(rname, endpoint, pref, cand_name)
+ cmp_json_output(
+ rname,
+ "show yang operational-data /frr-pathd:pathd pathd",
+ "step3/show_operational_data_with_two_candidates.ref",
+ )
+
+ # cleanup
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ for pref in ["100", "200"]:
+ delete_candidate_path(rname, endpoint, pref)
+
+
+def test_srte_remove_best_candidate_step3():
+ setup_testcase("Test (step 3): delete the Candidate Path with higher priority")
+
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ for pref, cand_name in [("100", "first"), ("200", "second")]:
+ add_candidate_path(rname, endpoint, pref, cand_name)
+
+ # Delete candidate with higher priority
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ delete_candidate_path(rname, endpoint, 200)
+
+ # Candidate with lower priority should get active now
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ cmp_json_output(
+ rname,
+ "show yang operational-data /frr-pathd:pathd pathd",
+ "step3/show_operational_data_with_single_candidate.ref",
+ )
+ # cleanup
+ delete_candidate_path(rname, endpoint, 100)
+
+
+#
+# Step 4
+#
+# Checking MPLS table with a single SR Policy and a Candidate Path with different Segment Lists and other modifications
+# Segment list are base in adjacency that query TED
+#
+def test_srte_change_segment_list_check_mpls_table_step4():
+ setup_testcase("Test (step 4): check MPLS table for changed Segment List")
+
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ add_candidate_path(rname, endpoint, 100, "default")
+ # now change the segment list name
+ add_candidate_path(rname, endpoint, 100, "default", "test")
+ check_bsid(rname, "1111" if rname == "rt1" else "6666", test_srte_init_step1.__name__, True)
+ delete_segment(rname, "test", 10)
+ delete_segment(rname, "test", 20)
+ delete_segment(rname, "test", 30)
+ delete_segment(rname, "test", 40)
+ if rname == "rt1":
+ add_segment_adj(rname, "test", 10, "10.0.1.1", "10.0.1.2")
+ add_segment_adj(rname, "test", 20, "10.0.2.2", "10.0.2.4")
+ add_segment_adj(rname, "test", 30, "10.0.6.4", "10.0.6.5")
+ add_segment_adj(rname, "test", 40, "10.0.8.5", "10.0.8.6")
+ else:
+ add_segment_adj(rname, "test", 10, "10.0.8.6", "10.0.8.5")
+ add_segment_adj(rname, "test", 20, "10.0.6.5", "10.0.6.4")
+ add_segment_adj(rname, "test", 30, "10.0.2.4", "10.0.2.2")
+ add_segment_adj(rname, "test", 40, "10.0.1.2", "10.0.1.1")
+ check_bsid(rname, "1111" if rname == "rt1" else "6666", test_srte_init_step1.__name__, True)
+ delete_candidate_path(rname, endpoint, 100)
+
+
+def test_srte_change_sl_priority_error_ted_check_mpls_table_step4():
+ setup_testcase("Test (step 4): check MPLS table keeps low prio sl")
+
+ for rname, endpoint in [("rt1", "6.6.6.6"), ("rt6", "1.1.1.1")]:
+ add_candidate_path(rname, endpoint, 100, "default")
+ # now change the segment list name
+ add_candidate_path(rname, endpoint, 200, "test", "test")
+ check_bsid(rname, "1111" if rname == "rt1" else "6666", test_srte_init_step1.__name__, True)
+ delete_segment(rname, "test", 10)
+ delete_segment(rname, "test", 20)
+ delete_segment(rname, "test", 30)
+ delete_segment(rname, "test", 40)
+ # These won't resolv
+ if rname == "rt1":
+ add_segment_adj(rname, "test", 10, "10.0.1.99", "10.0.1.99")
+ add_segment_adj(rname, "test", 20, "10.0.2.99", "10.0.2.99")
+ add_segment_adj(rname, "test", 30, "10.0.6.99", "10.0.6.99")
+ add_segment_adj(rname, "test", 40, "10.0.8.99", "10.0.8.99")
+ else:
+ add_segment_adj(rname, "test", 10, "10.0.8.99", "10.0.8.99")
+ add_segment_adj(rname, "test", 20, "10.0.6.99", "10.0.6.99")
+ add_segment_adj(rname, "test", 30, "10.0.2.99", "10.0.2.99")
+ add_segment_adj(rname, "test", 40, "10.0.1.99", "10.0.1.99")
+ # So policy sticks with default sl even higher prio
+ check_bsid(rname, "1111" if rname == "rt1" else "6666", test_srte_init_step1.__name__, True)
+ delete_candidate_path(rname, endpoint, 100)
+
+
+# Memory leak test template
+def test_memory_leak():
+ "Run the memory leak test and report results."
+ tgen = get_topogen()
+ if not tgen.is_memleak_enabled():
+ pytest.skip("Memory leak test/report is disabled")
+
+ tgen.report_memory_leaks()
+
+
+if __name__ == "__main__":
+ args = ["-s"] + sys.argv[1:]
+ sys.exit(pytest.main(args))
diff --git a/tests/topotests/ospf6-topo1/README.md b/tests/topotests/ospf6_topo1/README.md
index 526c019c6a..526c019c6a 100644
--- a/tests/topotests/ospf6-topo1/README.md
+++ b/tests/topotests/ospf6_topo1/README.md
diff --git a/tests/topotests/ospf6-topo1-vrf/r1/ip_6_address.nhg.ref b/tests/topotests/ospf6_topo1/r1/ip_6_address.nhg.ref
index 11fd9fe3c4..11fd9fe3c4 100644
--- a/tests/topotests/ospf6-topo1-vrf/r1/ip_6_address.nhg.ref
+++ b/tests/topotests/ospf6_topo1/r1/ip_6_address.nhg.ref
diff --git a/tests/topotests/ospf6-topo1/r1/ip_6_address.ref b/tests/topotests/ospf6_topo1/r1/ip_6_address.ref
index 8c48f22381..8c48f22381 100644
--- a/tests/topotests/ospf6-topo1/r1/ip_6_address.ref
+++ b/tests/topotests/ospf6_topo1/r1/ip_6_address.ref
diff --git a/tests/topotests/ospf6-topo1/r1/ospf6d.conf b/tests/topotests/ospf6_topo1/r1/ospf6d.conf
index 9f7e058931..9f7e058931 100644
--- a/tests/topotests/ospf6-topo1/r1/ospf6d.conf
+++ b/tests/topotests/ospf6_topo1/r1/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo1/r1/show_ipv6_route.ref b/tests/topotests/ospf6_topo1/r1/show_ipv6_route.ref
index a2ddf7c5ae..a2ddf7c5ae 100644
--- a/tests/topotests/ospf6-topo1/r1/show_ipv6_route.ref
+++ b/tests/topotests/ospf6_topo1/r1/show_ipv6_route.ref
diff --git a/tests/topotests/ospf6-topo1/r1/zebra.conf b/tests/topotests/ospf6_topo1/r1/zebra.conf
index dfbcea8d21..dfbcea8d21 100644
--- a/tests/topotests/ospf6-topo1/r1/zebra.conf
+++ b/tests/topotests/ospf6_topo1/r1/zebra.conf
diff --git a/tests/topotests/ospf6-topo1/r2/ip_6_address.nhg.ref b/tests/topotests/ospf6_topo1/r2/ip_6_address.nhg.ref
index 032acb5341..032acb5341 100644
--- a/tests/topotests/ospf6-topo1/r2/ip_6_address.nhg.ref
+++ b/tests/topotests/ospf6_topo1/r2/ip_6_address.nhg.ref
diff --git a/tests/topotests/ospf6-topo1/r2/ip_6_address.ref b/tests/topotests/ospf6_topo1/r2/ip_6_address.ref
index edb6c864be..edb6c864be 100644
--- a/tests/topotests/ospf6-topo1/r2/ip_6_address.ref
+++ b/tests/topotests/ospf6_topo1/r2/ip_6_address.ref
diff --git a/tests/topotests/ospf6-topo1/r2/ospf6d.conf b/tests/topotests/ospf6_topo1/r2/ospf6d.conf
index 26ebc2c0ea..26ebc2c0ea 100644
--- a/tests/topotests/ospf6-topo1/r2/ospf6d.conf
+++ b/tests/topotests/ospf6_topo1/r2/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo1/r2/show_ipv6_route.ref b/tests/topotests/ospf6_topo1/r2/show_ipv6_route.ref
index 1f642b1b22..1f642b1b22 100644
--- a/tests/topotests/ospf6-topo1/r2/show_ipv6_route.ref
+++ b/tests/topotests/ospf6_topo1/r2/show_ipv6_route.ref
diff --git a/tests/topotests/ospf6-topo1/r2/zebra.conf b/tests/topotests/ospf6_topo1/r2/zebra.conf
index f05d1a60ff..f05d1a60ff 100644
--- a/tests/topotests/ospf6-topo1/r2/zebra.conf
+++ b/tests/topotests/ospf6_topo1/r2/zebra.conf
diff --git a/tests/topotests/ospf6-topo1/r3/ip_6_address.nhg.ref b/tests/topotests/ospf6_topo1/r3/ip_6_address.nhg.ref
index 101fcc95b4..101fcc95b4 100644
--- a/tests/topotests/ospf6-topo1/r3/ip_6_address.nhg.ref
+++ b/tests/topotests/ospf6_topo1/r3/ip_6_address.nhg.ref
diff --git a/tests/topotests/ospf6-topo1/r3/ip_6_address.ref b/tests/topotests/ospf6_topo1/r3/ip_6_address.ref
index 1a3a4ea86f..1a3a4ea86f 100644
--- a/tests/topotests/ospf6-topo1/r3/ip_6_address.ref
+++ b/tests/topotests/ospf6_topo1/r3/ip_6_address.ref
diff --git a/tests/topotests/ospf6-topo1/r3/ospf6d.conf b/tests/topotests/ospf6_topo1/r3/ospf6d.conf
index e902496530..e902496530 100644
--- a/tests/topotests/ospf6-topo1/r3/ospf6d.conf
+++ b/tests/topotests/ospf6_topo1/r3/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo1/r3/show_ipv6_route.ref b/tests/topotests/ospf6_topo1/r3/show_ipv6_route.ref
index 8e3afa583a..8e3afa583a 100644
--- a/tests/topotests/ospf6-topo1/r3/show_ipv6_route.ref
+++ b/tests/topotests/ospf6_topo1/r3/show_ipv6_route.ref
diff --git a/tests/topotests/ospf6-topo1/r3/zebra.conf b/tests/topotests/ospf6_topo1/r3/zebra.conf
index d8051c350d..d8051c350d 100644
--- a/tests/topotests/ospf6-topo1/r3/zebra.conf
+++ b/tests/topotests/ospf6_topo1/r3/zebra.conf
diff --git a/tests/topotests/ospf6-topo1/r4/ip_6_address.nhg.ref b/tests/topotests/ospf6_topo1/r4/ip_6_address.nhg.ref
index 4f11670ce3..4f11670ce3 100644
--- a/tests/topotests/ospf6-topo1/r4/ip_6_address.nhg.ref
+++ b/tests/topotests/ospf6_topo1/r4/ip_6_address.nhg.ref
diff --git a/tests/topotests/ospf6-topo1/r4/ip_6_address.ref b/tests/topotests/ospf6_topo1/r4/ip_6_address.ref
index cb3b745de5..cb3b745de5 100644
--- a/tests/topotests/ospf6-topo1/r4/ip_6_address.ref
+++ b/tests/topotests/ospf6_topo1/r4/ip_6_address.ref
diff --git a/tests/topotests/ospf6-topo1/r4/ospf6d.conf b/tests/topotests/ospf6_topo1/r4/ospf6d.conf
index 5607a789de..5607a789de 100644
--- a/tests/topotests/ospf6-topo1/r4/ospf6d.conf
+++ b/tests/topotests/ospf6_topo1/r4/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo1/r4/show_ipv6_route.ref b/tests/topotests/ospf6_topo1/r4/show_ipv6_route.ref
index 0df652ffb3..0df652ffb3 100644
--- a/tests/topotests/ospf6-topo1/r4/show_ipv6_route.ref
+++ b/tests/topotests/ospf6_topo1/r4/show_ipv6_route.ref
diff --git a/tests/topotests/ospf6-topo1/r4/zebra.conf b/tests/topotests/ospf6_topo1/r4/zebra.conf
index cada58bd01..cada58bd01 100644
--- a/tests/topotests/ospf6-topo1/r4/zebra.conf
+++ b/tests/topotests/ospf6_topo1/r4/zebra.conf
diff --git a/tests/topotests/ospf6-topo1/test_ospf6_topo1.py b/tests/topotests/ospf6_topo1/test_ospf6_topo1.py
index f8c3476e18..f8c3476e18 100644
--- a/tests/topotests/ospf6-topo1/test_ospf6_topo1.py
+++ b/tests/topotests/ospf6_topo1/test_ospf6_topo1.py
diff --git a/tests/topotests/ospf6-topo1-vrf/README.md b/tests/topotests/ospf6_topo1_vrf/README.md
index 3ed0b8fbe2..3ed0b8fbe2 100644
--- a/tests/topotests/ospf6-topo1-vrf/README.md
+++ b/tests/topotests/ospf6_topo1_vrf/README.md
diff --git a/tests/topotests/ospf6-topo1/r1/ip_6_address.nhg.ref b/tests/topotests/ospf6_topo1_vrf/r1/ip_6_address.nhg.ref
index 11fd9fe3c4..11fd9fe3c4 100644
--- a/tests/topotests/ospf6-topo1/r1/ip_6_address.nhg.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r1/ip_6_address.nhg.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r1/ip_6_address.ref b/tests/topotests/ospf6_topo1_vrf/r1/ip_6_address.ref
index f17e1fed16..f17e1fed16 100644
--- a/tests/topotests/ospf6-topo1-vrf/r1/ip_6_address.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r1/ip_6_address.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r1/ospf6d.conf b/tests/topotests/ospf6_topo1_vrf/r1/ospf6d.conf
index ed480354e4..ed480354e4 100644
--- a/tests/topotests/ospf6-topo1-vrf/r1/ospf6d.conf
+++ b/tests/topotests/ospf6_topo1_vrf/r1/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo1-vrf/r1/show_ipv6_vrf_route.ref b/tests/topotests/ospf6_topo1_vrf/r1/show_ipv6_vrf_route.ref
index a2ddf7c5ae..a2ddf7c5ae 100644
--- a/tests/topotests/ospf6-topo1-vrf/r1/show_ipv6_vrf_route.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r1/show_ipv6_vrf_route.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r1/zebra.conf b/tests/topotests/ospf6_topo1_vrf/r1/zebra.conf
index abe8a9bc45..abe8a9bc45 100644
--- a/tests/topotests/ospf6-topo1-vrf/r1/zebra.conf
+++ b/tests/topotests/ospf6_topo1_vrf/r1/zebra.conf
diff --git a/tests/topotests/ospf6-topo1-vrf/r2/ip_6_address.ref b/tests/topotests/ospf6_topo1_vrf/r2/ip_6_address.ref
index 1a3e67bb09..1a3e67bb09 100644
--- a/tests/topotests/ospf6-topo1-vrf/r2/ip_6_address.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r2/ip_6_address.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r2/ospf6d.conf b/tests/topotests/ospf6_topo1_vrf/r2/ospf6d.conf
index 485771e7d5..485771e7d5 100644
--- a/tests/topotests/ospf6-topo1-vrf/r2/ospf6d.conf
+++ b/tests/topotests/ospf6_topo1_vrf/r2/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo1-vrf/r2/show_ipv6_vrf_route.ref b/tests/topotests/ospf6_topo1_vrf/r2/show_ipv6_vrf_route.ref
index 3289619414..3289619414 100644
--- a/tests/topotests/ospf6-topo1-vrf/r2/show_ipv6_vrf_route.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r2/show_ipv6_vrf_route.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r2/zebra.conf b/tests/topotests/ospf6_topo1_vrf/r2/zebra.conf
index e1011bd3b6..e1011bd3b6 100644
--- a/tests/topotests/ospf6-topo1-vrf/r2/zebra.conf
+++ b/tests/topotests/ospf6_topo1_vrf/r2/zebra.conf
diff --git a/tests/topotests/ospf6-topo1-vrf/r3/ip_6_address.ref b/tests/topotests/ospf6_topo1_vrf/r3/ip_6_address.ref
index d70027fb9e..d70027fb9e 100644
--- a/tests/topotests/ospf6-topo1-vrf/r3/ip_6_address.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r3/ip_6_address.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r3/ospf6d.conf b/tests/topotests/ospf6_topo1_vrf/r3/ospf6d.conf
index f5837bf6fd..f5837bf6fd 100644
--- a/tests/topotests/ospf6-topo1-vrf/r3/ospf6d.conf
+++ b/tests/topotests/ospf6_topo1_vrf/r3/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo1-vrf/r3/show_ipv6_vrf_route.ref b/tests/topotests/ospf6_topo1_vrf/r3/show_ipv6_vrf_route.ref
index ac713190ff..ac713190ff 100644
--- a/tests/topotests/ospf6-topo1-vrf/r3/show_ipv6_vrf_route.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r3/show_ipv6_vrf_route.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r3/zebra.conf b/tests/topotests/ospf6_topo1_vrf/r3/zebra.conf
index f489f3ac73..f489f3ac73 100644
--- a/tests/topotests/ospf6-topo1-vrf/r3/zebra.conf
+++ b/tests/topotests/ospf6_topo1_vrf/r3/zebra.conf
diff --git a/tests/topotests/ospf6-topo1-vrf/r4/ip_6_address.ref b/tests/topotests/ospf6_topo1_vrf/r4/ip_6_address.ref
index 0883f3c588..0883f3c588 100644
--- a/tests/topotests/ospf6-topo1-vrf/r4/ip_6_address.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r4/ip_6_address.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r4/ospf6d.conf b/tests/topotests/ospf6_topo1_vrf/r4/ospf6d.conf
index ab67d06ff4..ab67d06ff4 100644
--- a/tests/topotests/ospf6-topo1-vrf/r4/ospf6d.conf
+++ b/tests/topotests/ospf6_topo1_vrf/r4/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo1-vrf/r4/show_ipv6_vrf_route.ref b/tests/topotests/ospf6_topo1_vrf/r4/show_ipv6_vrf_route.ref
index 0df652ffb3..0df652ffb3 100644
--- a/tests/topotests/ospf6-topo1-vrf/r4/show_ipv6_vrf_route.ref
+++ b/tests/topotests/ospf6_topo1_vrf/r4/show_ipv6_vrf_route.ref
diff --git a/tests/topotests/ospf6-topo1-vrf/r4/zebra.conf b/tests/topotests/ospf6_topo1_vrf/r4/zebra.conf
index c59116df8c..c59116df8c 100644
--- a/tests/topotests/ospf6-topo1-vrf/r4/zebra.conf
+++ b/tests/topotests/ospf6_topo1_vrf/r4/zebra.conf
diff --git a/tests/topotests/ospf6-topo1-vrf/test_ospf6_topo1_vrf.py b/tests/topotests/ospf6_topo1_vrf/test_ospf6_topo1_vrf.py
index fa2784ee7e..fa2784ee7e 100755
--- a/tests/topotests/ospf6-topo1-vrf/test_ospf6_topo1_vrf.py
+++ b/tests/topotests/ospf6_topo1_vrf/test_ospf6_topo1_vrf.py
diff --git a/tests/topotests/ospf6-topo2/r1/ospf6d.conf b/tests/topotests/ospf6_topo2/r1/ospf6d.conf
index c403fcd8dc..c403fcd8dc 100644
--- a/tests/topotests/ospf6-topo2/r1/ospf6d.conf
+++ b/tests/topotests/ospf6_topo2/r1/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo2/r1/zebra.conf b/tests/topotests/ospf6_topo2/r1/zebra.conf
index 7fee2da8ba..7fee2da8ba 100644
--- a/tests/topotests/ospf6-topo2/r1/zebra.conf
+++ b/tests/topotests/ospf6_topo2/r1/zebra.conf
diff --git a/tests/topotests/ospf6-topo2/r2/ospf6d.conf b/tests/topotests/ospf6_topo2/r2/ospf6d.conf
index d4bb0e2a41..d4bb0e2a41 100644
--- a/tests/topotests/ospf6-topo2/r2/ospf6d.conf
+++ b/tests/topotests/ospf6_topo2/r2/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo2/r2/zebra.conf b/tests/topotests/ospf6_topo2/r2/zebra.conf
index 891945a4e7..891945a4e7 100644
--- a/tests/topotests/ospf6-topo2/r2/zebra.conf
+++ b/tests/topotests/ospf6_topo2/r2/zebra.conf
diff --git a/tests/topotests/ospf6-topo2/r3/ospf6d.conf b/tests/topotests/ospf6_topo2/r3/ospf6d.conf
index aaef00d5bb..aaef00d5bb 100644
--- a/tests/topotests/ospf6-topo2/r3/ospf6d.conf
+++ b/tests/topotests/ospf6_topo2/r3/ospf6d.conf
diff --git a/tests/topotests/ospf6-topo2/r3/zebra.conf b/tests/topotests/ospf6_topo2/r3/zebra.conf
index dea2fe4778..dea2fe4778 100644
--- a/tests/topotests/ospf6-topo2/r3/zebra.conf
+++ b/tests/topotests/ospf6_topo2/r3/zebra.conf
diff --git a/tests/topotests/ospf6-topo2/test_ospf6_topo2.dot b/tests/topotests/ospf6_topo2/test_ospf6_topo2.dot
index ba7a36f2b5..ba7a36f2b5 100644
--- a/tests/topotests/ospf6-topo2/test_ospf6_topo2.dot
+++ b/tests/topotests/ospf6_topo2/test_ospf6_topo2.dot
diff --git a/tests/topotests/ospf6-topo2/test_ospf6_topo2.png b/tests/topotests/ospf6_topo2/test_ospf6_topo2.png
index ee1de60736..ee1de60736 100644
--- a/tests/topotests/ospf6-topo2/test_ospf6_topo2.png
+++ b/tests/topotests/ospf6_topo2/test_ospf6_topo2.png
Binary files differ
diff --git a/tests/topotests/ospf6-topo2/test_ospf6_topo2.py b/tests/topotests/ospf6_topo2/test_ospf6_topo2.py
index efc8565bb3..efc8565bb3 100644
--- a/tests/topotests/ospf6-topo2/test_ospf6_topo2.py
+++ b/tests/topotests/ospf6_topo2/test_ospf6_topo2.py
diff --git a/tests/topotests/ospf-dual-stack/test_ospf_dual_stack.dot b/tests/topotests/ospf_dual_stack/test_ospf_dual_stack.dot
index 2c6d0aab16..2c6d0aab16 100644
--- a/tests/topotests/ospf-dual-stack/test_ospf_dual_stack.dot
+++ b/tests/topotests/ospf_dual_stack/test_ospf_dual_stack.dot
diff --git a/tests/topotests/ospf-dual-stack/test_ospf_dual_stack.jpg b/tests/topotests/ospf_dual_stack/test_ospf_dual_stack.jpg
index 44efda8390..44efda8390 100644
--- a/tests/topotests/ospf-dual-stack/test_ospf_dual_stack.jpg
+++ b/tests/topotests/ospf_dual_stack/test_ospf_dual_stack.jpg
Binary files differ
diff --git a/tests/topotests/ospf-dual-stack/test_ospf_dual_stack.json b/tests/topotests/ospf_dual_stack/test_ospf_dual_stack.json
index c8a3ce783b..c8a3ce783b 100644
--- a/tests/topotests/ospf-dual-stack/test_ospf_dual_stack.json
+++ b/tests/topotests/ospf_dual_stack/test_ospf_dual_stack.json
diff --git a/tests/topotests/ospf-dual-stack/test_ospf_dual_stack.py b/tests/topotests/ospf_dual_stack/test_ospf_dual_stack.py
index 5e7802fa04..5e7802fa04 100644
--- a/tests/topotests/ospf-dual-stack/test_ospf_dual_stack.py
+++ b/tests/topotests/ospf_dual_stack/test_ospf_dual_stack.py
diff --git a/tests/topotests/ospf-sr-topo1/__init__.py b/tests/topotests/ospf_sr_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/ospf-sr-topo1/__init__.py
+++ b/tests/topotests/ospf_sr_topo1/__init__.py
diff --git a/tests/topotests/ospf-sr-topo1/rt1/ospfd.conf b/tests/topotests/ospf_sr_topo1/rt1/ospfd.conf
index 94dba7c061..94dba7c061 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/ospfd.conf
+++ b/tests/topotests/ospf_sr_topo1/rt1/ospfd.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step1/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step1/show_ip_route.ref
index 374184e60a..374184e60a 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step1/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step1/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step1/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step1/show_mpls_table.ref
index de906c270d..de906c270d 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step1/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step1/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step10/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step10/show_ip_route.ref
index 37f73629fd..37f73629fd 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step10/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step10/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step10/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step10/show_mpls_table.ref
index 2006392564..2006392564 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step10/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step10/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step2/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step2/show_ip_route.ref
index 37f73629fd..37f73629fd 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step2/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step2/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step2/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step2/show_mpls_table.ref
index de906c270d..de906c270d 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step2/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step2/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step3/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step3/show_ip_route.ref
index f6ead5cb91..f6ead5cb91 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step3/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step3/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step3/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step3/show_mpls_table.ref
index 96e05913ed..96e05913ed 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step3/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step3/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step4/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step4/show_ip_route.ref
index 37f73629fd..37f73629fd 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step4/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step4/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step4/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step4/show_mpls_table.ref
index de906c270d..de906c270d 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step4/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step4/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step5/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step5/show_ip_route.ref
index f2b8924b85..f2b8924b85 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step5/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step5/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step5/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step5/show_mpls_table.ref
index 96e05913ed..96e05913ed 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step5/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step5/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step6/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step6/show_ip_route.ref
index 37f73629fd..37f73629fd 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step6/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step6/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step6/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step6/show_mpls_table.ref
index de906c270d..de906c270d 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step6/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step6/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step7/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step7/show_ip_route.ref
index 37f73629fd..37f73629fd 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step7/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step7/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step7/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step7/show_mpls_table.ref
index de906c270d..de906c270d 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step7/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step7/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step8/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step8/show_ip_route.ref
index 37f73629fd..37f73629fd 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step8/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step8/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step8/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step8/show_mpls_table.ref
index de906c270d..de906c270d 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step8/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step8/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step9/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt1/step9/show_ip_route.ref
index 37f73629fd..37f73629fd 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step9/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step9/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/step9/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt1/step9/show_mpls_table.ref
index 2006392564..2006392564 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/step9/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt1/step9/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt1/zebra.conf b/tests/topotests/ospf_sr_topo1/rt1/zebra.conf
index 7d3139a80e..7d3139a80e 100644
--- a/tests/topotests/ospf-sr-topo1/rt1/zebra.conf
+++ b/tests/topotests/ospf_sr_topo1/rt1/zebra.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt2/ospfd.conf b/tests/topotests/ospf_sr_topo1/rt2/ospfd.conf
index b47e788062..b47e788062 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/ospfd.conf
+++ b/tests/topotests/ospf_sr_topo1/rt2/ospfd.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step1/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step1/show_ip_route.ref
index 3dde042b51..3dde042b51 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step1/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step1/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step1/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step1/show_mpls_table.ref
index eba7c403d3..eba7c403d3 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step1/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step1/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step10/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step10/show_ip_route.ref
index 9a06059df2..9a06059df2 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step10/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step10/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step10/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step10/show_mpls_table.ref
index be44a7521d..be44a7521d 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step10/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step10/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step2/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step2/show_ip_route.ref
index 384aac032d..384aac032d 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step2/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step2/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step2/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step2/show_mpls_table.ref
index 5088aa2f7a..5088aa2f7a 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step2/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step2/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step3/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step3/show_ip_route.ref
index 879cd1e0c5..879cd1e0c5 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step3/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step3/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step3/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step3/show_mpls_table.ref
index 6333e7f7f9..6333e7f7f9 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step3/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step3/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step4/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step4/show_ip_route.ref
index 384aac032d..384aac032d 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step4/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step4/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step4/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step4/show_mpls_table.ref
index 5088aa2f7a..5088aa2f7a 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step4/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step4/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step5/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step5/show_ip_route.ref
index 07edd42dc8..07edd42dc8 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step5/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step5/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step5/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step5/show_mpls_table.ref
index 6333e7f7f9..6333e7f7f9 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step5/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step5/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step6/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step6/show_ip_route.ref
index 384aac032d..384aac032d 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step6/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step6/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step6/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step6/show_mpls_table.ref
index 5088aa2f7a..5088aa2f7a 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step6/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step6/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step7/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step7/show_ip_route.ref
index 274931bef7..274931bef7 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step7/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step7/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step7/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step7/show_mpls_table.ref
index cd23725a80..cd23725a80 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step7/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step7/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step8/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step8/show_ip_route.ref
index 384aac032d..384aac032d 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step8/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step8/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step8/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step8/show_mpls_table.ref
index 5088aa2f7a..5088aa2f7a 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step8/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step8/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step9/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt2/step9/show_ip_route.ref
index c71515f3ff..c71515f3ff 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step9/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step9/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/step9/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt2/step9/show_mpls_table.ref
index 2f06641f7f..2f06641f7f 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/step9/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt2/step9/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt2/zebra.conf b/tests/topotests/ospf_sr_topo1/rt2/zebra.conf
index c4ed4276d9..c4ed4276d9 100644
--- a/tests/topotests/ospf-sr-topo1/rt2/zebra.conf
+++ b/tests/topotests/ospf_sr_topo1/rt2/zebra.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt3/ospfd.conf b/tests/topotests/ospf_sr_topo1/rt3/ospfd.conf
index 238d82ff97..238d82ff97 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/ospfd.conf
+++ b/tests/topotests/ospf_sr_topo1/rt3/ospfd.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step1/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step1/show_ip_route.ref
index 4b1500ef97..4b1500ef97 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step1/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step1/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step1/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step1/show_mpls_table.ref
index 39cc3e8ffd..39cc3e8ffd 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step1/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step1/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step10/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step10/show_ip_route.ref
index 14a2ac1e8a..14a2ac1e8a 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step10/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step10/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step10/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step10/show_mpls_table.ref
index a0f7c790a0..a0f7c790a0 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step10/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step10/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step2/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step2/show_ip_route.ref
index 63c6a1845f..63c6a1845f 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step2/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step2/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step2/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step2/show_mpls_table.ref
index 1ab2242b7e..1ab2242b7e 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step2/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step2/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step3/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step3/show_ip_route.ref
index 0894c51cf2..0894c51cf2 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step3/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step3/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step3/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step3/show_mpls_table.ref
index 4dcaedeca1..4dcaedeca1 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step3/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step3/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step4/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step4/show_ip_route.ref
index 63c6a1845f..63c6a1845f 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step4/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step4/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step4/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step4/show_mpls_table.ref
index 1ab2242b7e..1ab2242b7e 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step4/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step4/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step5/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step5/show_ip_route.ref
index 3e74ff039c..3e74ff039c 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step5/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step5/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step5/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step5/show_mpls_table.ref
index 4dcaedeca1..4dcaedeca1 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step5/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step5/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step6/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step6/show_ip_route.ref
index 63c6a1845f..63c6a1845f 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step6/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step6/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step6/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step6/show_mpls_table.ref
index 1ab2242b7e..1ab2242b7e 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step6/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step6/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step7/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step7/show_ip_route.ref
index 41544d4296..41544d4296 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step7/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step7/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step7/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step7/show_mpls_table.ref
index bf055bad78..bf055bad78 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step7/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step7/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step8/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step8/show_ip_route.ref
index 63c6a1845f..63c6a1845f 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step8/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step8/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step8/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step8/show_mpls_table.ref
index 1ab2242b7e..1ab2242b7e 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step8/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step8/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step9/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt3/step9/show_ip_route.ref
index 14a2ac1e8a..14a2ac1e8a 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step9/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step9/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/step9/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt3/step9/show_mpls_table.ref
index a0f7c790a0..a0f7c790a0 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/step9/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt3/step9/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt3/zebra.conf b/tests/topotests/ospf_sr_topo1/rt3/zebra.conf
index 89a781fe3c..89a781fe3c 100644
--- a/tests/topotests/ospf-sr-topo1/rt3/zebra.conf
+++ b/tests/topotests/ospf_sr_topo1/rt3/zebra.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt4/ospfd.conf b/tests/topotests/ospf_sr_topo1/rt4/ospfd.conf
index b12e0729ad..b12e0729ad 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/ospfd.conf
+++ b/tests/topotests/ospf_sr_topo1/rt4/ospfd.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step1/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step1/show_ip_route.ref
index 4a2d3aa10f..4a2d3aa10f 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step1/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step1/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step1/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step1/show_mpls_table.ref
index 3246d22842..3246d22842 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step1/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step1/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step10/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step10/show_ip_route.ref
index db4cf5b3f5..db4cf5b3f5 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step10/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step10/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step10/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step10/show_mpls_table.ref
index 58cf526a83..58cf526a83 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step10/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step10/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step2/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step2/show_ip_route.ref
index c44b3eef30..c44b3eef30 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step2/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step2/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step2/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step2/show_mpls_table.ref
index 05f9f28cbd..05f9f28cbd 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step2/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step2/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step3/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step3/show_ip_route.ref
index a078dd2daf..a078dd2daf 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step3/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step3/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step3/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step3/show_mpls_table.ref
index f5515636d2..f5515636d2 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step3/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step3/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step4/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step4/show_ip_route.ref
index b63812ab1d..b63812ab1d 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step4/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step4/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step4/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step4/show_mpls_table.ref
index f2e56c2e19..f2e56c2e19 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step4/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step4/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step5/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step5/show_ip_route.ref
index 3157ae1ea1..3157ae1ea1 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step5/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step5/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step5/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step5/show_mpls_table.ref
index 8213840652..8213840652 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step5/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step5/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step6/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step6/show_ip_route.ref
index b63812ab1d..b63812ab1d 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step6/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step6/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step6/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step6/show_mpls_table.ref
index f2e56c2e19..f2e56c2e19 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step6/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step6/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step7/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step7/show_ip_route.ref
index 775d8c4034..775d8c4034 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step7/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step7/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step7/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step7/show_mpls_table.ref
index 8a5fdef806..8a5fdef806 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step7/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step7/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step8/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step8/show_ip_route.ref
index b63812ab1d..b63812ab1d 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step8/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step8/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step8/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step8/show_mpls_table.ref
index f2e56c2e19..f2e56c2e19 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step8/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step8/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step9/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt4/step9/show_ip_route.ref
index 48e306d393..48e306d393 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step9/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step9/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/step9/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt4/step9/show_mpls_table.ref
index 275abab715..275abab715 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/step9/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt4/step9/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt4/zebra.conf b/tests/topotests/ospf_sr_topo1/rt4/zebra.conf
index 13c621eb31..13c621eb31 100644
--- a/tests/topotests/ospf-sr-topo1/rt4/zebra.conf
+++ b/tests/topotests/ospf_sr_topo1/rt4/zebra.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt5/ospfd.conf b/tests/topotests/ospf_sr_topo1/rt5/ospfd.conf
index 4e7b24c03a..4e7b24c03a 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/ospfd.conf
+++ b/tests/topotests/ospf_sr_topo1/rt5/ospfd.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step1/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step1/show_ip_route.ref
index 0a43788a18..0a43788a18 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step1/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step1/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step1/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step1/show_mpls_table.ref
index e8c46085be..e8c46085be 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step1/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step1/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step10/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step10/show_ip_route.ref
index 2bad2eb7bf..2bad2eb7bf 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step10/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step10/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step10/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step10/show_mpls_table.ref
index c5ed18d76f..c5ed18d76f 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step10/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step10/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step2/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step2/show_ip_route.ref
index 3572ec713f..3572ec713f 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step2/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step2/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step2/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step2/show_mpls_table.ref
index d9cadeb513..d9cadeb513 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step2/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step2/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step3/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step3/show_ip_route.ref
index 2f7b0cc242..2f7b0cc242 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step3/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step3/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step3/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step3/show_mpls_table.ref
index 7c78d2ce53..7c78d2ce53 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step3/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step3/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step4/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step4/show_ip_route.ref
index 1a12715086..1a12715086 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step4/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step4/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step4/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step4/show_mpls_table.ref
index 42e476e9d1..42e476e9d1 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step4/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step4/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step5/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step5/show_ip_route.ref
index e50fa10ccb..e50fa10ccb 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step5/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step5/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step5/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step5/show_mpls_table.ref
index bb95379228..bb95379228 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step5/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step5/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step6/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step6/show_ip_route.ref
index 1a12715086..1a12715086 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step6/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step6/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step6/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step6/show_mpls_table.ref
index 42e476e9d1..42e476e9d1 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step6/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step6/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step7/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step7/show_ip_route.ref
index 15a024d18b..15a024d18b 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step7/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step7/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step7/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step7/show_mpls_table.ref
index cff0d25e25..cff0d25e25 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step7/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step7/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step8/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step8/show_ip_route.ref
index 1a12715086..1a12715086 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step8/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step8/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step8/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step8/show_mpls_table.ref
index 42e476e9d1..42e476e9d1 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step8/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step8/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step9/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt5/step9/show_ip_route.ref
index d9ddad2462..d9ddad2462 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step9/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step9/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/step9/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt5/step9/show_mpls_table.ref
index c5ed18d76f..c5ed18d76f 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/step9/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt5/step9/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt5/zebra.conf b/tests/topotests/ospf_sr_topo1/rt5/zebra.conf
index ca2d6df665..ca2d6df665 100644
--- a/tests/topotests/ospf-sr-topo1/rt5/zebra.conf
+++ b/tests/topotests/ospf_sr_topo1/rt5/zebra.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt6/ospfd.conf b/tests/topotests/ospf_sr_topo1/rt6/ospfd.conf
index c6d07d169e..c6d07d169e 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/ospfd.conf
+++ b/tests/topotests/ospf_sr_topo1/rt6/ospfd.conf
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step1/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step1/show_ip_route.ref
index 9f05ec7688..9f05ec7688 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step1/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step1/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step1/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step1/show_mpls_table.ref
index baa2314454..baa2314454 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step1/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step1/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step10/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step10/show_ip_route.ref
index 6abb3805a2..6abb3805a2 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step10/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step10/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step10/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step10/show_mpls_table.ref
index 09ecec29d9..09ecec29d9 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step10/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step10/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step2/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step2/show_ip_route.ref
index 80b3c426d4..80b3c426d4 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step2/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step2/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step2/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step2/show_mpls_table.ref
index baa2314454..baa2314454 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step2/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step2/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step3/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step3/show_ip_route.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step3/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step3/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step3/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step3/show_mpls_table.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step3/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step3/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step4/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step4/show_ip_route.ref
index 80b3c426d4..80b3c426d4 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step4/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step4/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step4/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step4/show_mpls_table.ref
index 09ecec29d9..09ecec29d9 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step4/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step4/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step5/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step5/show_ip_route.ref
index 0e4b3eba12..0e4b3eba12 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step5/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step5/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step5/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step5/show_mpls_table.ref
index 2c63c08510..2c63c08510 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step5/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step5/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step6/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step6/show_ip_route.ref
index 80b3c426d4..80b3c426d4 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step6/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step6/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step6/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step6/show_mpls_table.ref
index 09ecec29d9..09ecec29d9 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step6/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step6/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step7/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step7/show_ip_route.ref
index aa2329a04a..aa2329a04a 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step7/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step7/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step7/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step7/show_mpls_table.ref
index 800b1ae2fd..800b1ae2fd 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step7/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step7/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step8/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step8/show_ip_route.ref
index 80b3c426d4..80b3c426d4 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step8/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step8/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step8/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step8/show_mpls_table.ref
index 09ecec29d9..09ecec29d9 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step8/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step8/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step9/show_ip_route.ref b/tests/topotests/ospf_sr_topo1/rt6/step9/show_ip_route.ref
index 80b3c426d4..80b3c426d4 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step9/show_ip_route.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step9/show_ip_route.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/step9/show_mpls_table.ref b/tests/topotests/ospf_sr_topo1/rt6/step9/show_mpls_table.ref
index 09ecec29d9..09ecec29d9 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/step9/show_mpls_table.ref
+++ b/tests/topotests/ospf_sr_topo1/rt6/step9/show_mpls_table.ref
diff --git a/tests/topotests/ospf-sr-topo1/rt6/zebra.conf b/tests/topotests/ospf_sr_topo1/rt6/zebra.conf
index 4b739d0bca..4b739d0bca 100644
--- a/tests/topotests/ospf-sr-topo1/rt6/zebra.conf
+++ b/tests/topotests/ospf_sr_topo1/rt6/zebra.conf
diff --git a/tests/topotests/ospf-sr-topo1/test_ospf_sr_topo1.py b/tests/topotests/ospf_sr_topo1/test_ospf_sr_topo1.py
index b6e5e14830..b6e5e14830 100644
--- a/tests/topotests/ospf-sr-topo1/test_ospf_sr_topo1.py
+++ b/tests/topotests/ospf_sr_topo1/test_ospf_sr_topo1.py
diff --git a/tests/topotests/ospf-te-topo1/__init__.py b/tests/topotests/ospf_te_topo1/__init__.py
index e69de29bb2..e69de29bb2 100755
--- a/tests/topotests/ospf-te-topo1/__init__.py
+++ b/tests/topotests/ospf_te_topo1/__init__.py
diff --git a/tests/topotests/ospf-te-topo1/r1/ospfd.conf b/tests/topotests/ospf_te_topo1/r1/ospfd.conf
index 312dd2697e..312dd2697e 100644
--- a/tests/topotests/ospf-te-topo1/r1/ospfd.conf
+++ b/tests/topotests/ospf_te_topo1/r1/ospfd.conf
diff --git a/tests/topotests/ospf-te-topo1/r1/zebra.conf b/tests/topotests/ospf_te_topo1/r1/zebra.conf
index 7c5dc3ffe0..7c5dc3ffe0 100644
--- a/tests/topotests/ospf-te-topo1/r1/zebra.conf
+++ b/tests/topotests/ospf_te_topo1/r1/zebra.conf
diff --git a/tests/topotests/ospf-te-topo1/r2/ospfd.conf b/tests/topotests/ospf_te_topo1/r2/ospfd.conf
index e9c3f65bc2..e9c3f65bc2 100644
--- a/tests/topotests/ospf-te-topo1/r2/ospfd.conf
+++ b/tests/topotests/ospf_te_topo1/r2/ospfd.conf
diff --git a/tests/topotests/ospf-te-topo1/r2/zebra.conf b/tests/topotests/ospf_te_topo1/r2/zebra.conf
index 69e10191f3..69e10191f3 100644
--- a/tests/topotests/ospf-te-topo1/r2/zebra.conf
+++ b/tests/topotests/ospf_te_topo1/r2/zebra.conf
diff --git a/tests/topotests/ospf-te-topo1/r3/ospfd.conf b/tests/topotests/ospf_te_topo1/r3/ospfd.conf
index caa5f1e1eb..caa5f1e1eb 100644
--- a/tests/topotests/ospf-te-topo1/r3/ospfd.conf
+++ b/tests/topotests/ospf_te_topo1/r3/ospfd.conf
diff --git a/tests/topotests/ospf-te-topo1/r3/zebra.conf b/tests/topotests/ospf_te_topo1/r3/zebra.conf
index 4cf9077085..4cf9077085 100644
--- a/tests/topotests/ospf-te-topo1/r3/zebra.conf
+++ b/tests/topotests/ospf_te_topo1/r3/zebra.conf
diff --git a/tests/topotests/ospf-te-topo1/r4/ospfd.conf b/tests/topotests/ospf_te_topo1/r4/ospfd.conf
index e454673153..e454673153 100644
--- a/tests/topotests/ospf-te-topo1/r4/ospfd.conf
+++ b/tests/topotests/ospf_te_topo1/r4/ospfd.conf
diff --git a/tests/topotests/ospf-te-topo1/r4/zebra.conf b/tests/topotests/ospf_te_topo1/r4/zebra.conf
index 18c003b230..18c003b230 100644
--- a/tests/topotests/ospf-te-topo1/r4/zebra.conf
+++ b/tests/topotests/ospf_te_topo1/r4/zebra.conf
diff --git a/tests/topotests/ospf-te-topo1/reference/ted_step1.json b/tests/topotests/ospf_te_topo1/reference/ted_step1.json
index 9624292ccd..9624292ccd 100644
--- a/tests/topotests/ospf-te-topo1/reference/ted_step1.json
+++ b/tests/topotests/ospf_te_topo1/reference/ted_step1.json
diff --git a/tests/topotests/ospf-te-topo1/reference/ted_step2.json b/tests/topotests/ospf_te_topo1/reference/ted_step2.json
index 623d1dc7e0..623d1dc7e0 100644
--- a/tests/topotests/ospf-te-topo1/reference/ted_step2.json
+++ b/tests/topotests/ospf_te_topo1/reference/ted_step2.json
diff --git a/tests/topotests/ospf-te-topo1/reference/ted_step3.json b/tests/topotests/ospf_te_topo1/reference/ted_step3.json
index 117011a43a..117011a43a 100644
--- a/tests/topotests/ospf-te-topo1/reference/ted_step3.json
+++ b/tests/topotests/ospf_te_topo1/reference/ted_step3.json
diff --git a/tests/topotests/ospf-te-topo1/reference/ted_step4.json b/tests/topotests/ospf_te_topo1/reference/ted_step4.json
index 5c2dee1e4b..5c2dee1e4b 100644
--- a/tests/topotests/ospf-te-topo1/reference/ted_step4.json
+++ b/tests/topotests/ospf_te_topo1/reference/ted_step4.json
diff --git a/tests/topotests/ospf-te-topo1/reference/ted_step5.json b/tests/topotests/ospf_te_topo1/reference/ted_step5.json
index 47e747f3ca..47e747f3ca 100644
--- a/tests/topotests/ospf-te-topo1/reference/ted_step5.json
+++ b/tests/topotests/ospf_te_topo1/reference/ted_step5.json
diff --git a/tests/topotests/ospf-te-topo1/reference/ted_step6.json b/tests/topotests/ospf_te_topo1/reference/ted_step6.json
index 74bd83fbdb..74bd83fbdb 100644
--- a/tests/topotests/ospf-te-topo1/reference/ted_step6.json
+++ b/tests/topotests/ospf_te_topo1/reference/ted_step6.json
diff --git a/tests/topotests/ospf-te-topo1/reference/ted_step7.json b/tests/topotests/ospf_te_topo1/reference/ted_step7.json
index 1cea9f0455..1cea9f0455 100644
--- a/tests/topotests/ospf-te-topo1/reference/ted_step7.json
+++ b/tests/topotests/ospf_te_topo1/reference/ted_step7.json
diff --git a/tests/topotests/ospf-te-topo1/test_ospf_te_topo1.py b/tests/topotests/ospf_te_topo1/test_ospf_te_topo1.py
index 32f9b3453e..32f9b3453e 100644
--- a/tests/topotests/ospf-te-topo1/test_ospf_te_topo1.py
+++ b/tests/topotests/ospf_te_topo1/test_ospf_te_topo1.py
diff --git a/tests/topotests/ospf-tilfa-topo1/__init__.py b/tests/topotests/ospf_tilfa_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/ospf-tilfa-topo1/__init__.py
+++ b/tests/topotests/ospf_tilfa_topo1/__init__.py
diff --git a/tests/topotests/ospf-tilfa-topo1/rt1/ospfd.conf b/tests/topotests/ospf_tilfa_topo1/rt1/ospfd.conf
index eaef49225f..eaef49225f 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt1/ospfd.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt1/ospfd.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt1/step1/show_ip_route_initial.ref b/tests/topotests/ospf_tilfa_topo1/rt1/step1/show_ip_route_initial.ref
index 0ad2aaeade..0ad2aaeade 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt1/step1/show_ip_route_initial.ref
+++ b/tests/topotests/ospf_tilfa_topo1/rt1/step1/show_ip_route_initial.ref
diff --git a/tests/topotests/ospf-tilfa-topo1/rt1/step2/show_ip_route_initial.ref b/tests/topotests/ospf_tilfa_topo1/rt1/step2/show_ip_route_initial.ref
index 0ad2aaeade..0ad2aaeade 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt1/step2/show_ip_route_initial.ref
+++ b/tests/topotests/ospf_tilfa_topo1/rt1/step2/show_ip_route_initial.ref
diff --git a/tests/topotests/ospf-tilfa-topo1/rt1/step2/show_ip_route_link_protection.ref b/tests/topotests/ospf_tilfa_topo1/rt1/step2/show_ip_route_link_protection.ref
index 968570e193..968570e193 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt1/step2/show_ip_route_link_protection.ref
+++ b/tests/topotests/ospf_tilfa_topo1/rt1/step2/show_ip_route_link_protection.ref
diff --git a/tests/topotests/ospf-tilfa-topo1/rt1/step3/show_ip_route_initial.ref b/tests/topotests/ospf_tilfa_topo1/rt1/step3/show_ip_route_initial.ref
index 0ad2aaeade..0ad2aaeade 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt1/step3/show_ip_route_initial.ref
+++ b/tests/topotests/ospf_tilfa_topo1/rt1/step3/show_ip_route_initial.ref
diff --git a/tests/topotests/ospf-tilfa-topo1/rt1/step3/show_ip_route_node_protection.ref b/tests/topotests/ospf_tilfa_topo1/rt1/step3/show_ip_route_node_protection.ref
index 46a80d298e..46a80d298e 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt1/step3/show_ip_route_node_protection.ref
+++ b/tests/topotests/ospf_tilfa_topo1/rt1/step3/show_ip_route_node_protection.ref
diff --git a/tests/topotests/ospf-tilfa-topo1/rt1/zebra.conf b/tests/topotests/ospf_tilfa_topo1/rt1/zebra.conf
index bf0e77a17b..bf0e77a17b 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt1/zebra.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt1/zebra.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt2/ospfd.conf b/tests/topotests/ospf_tilfa_topo1/rt2/ospfd.conf
index 7548aad7f8..7548aad7f8 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt2/ospfd.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt2/ospfd.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt2/zebra.conf b/tests/topotests/ospf_tilfa_topo1/rt2/zebra.conf
index add2933571..add2933571 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt2/zebra.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt2/zebra.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt3/ospfd.conf b/tests/topotests/ospf_tilfa_topo1/rt3/ospfd.conf
index 6258295b6f..6258295b6f 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt3/ospfd.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt3/ospfd.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt3/zebra.conf b/tests/topotests/ospf_tilfa_topo1/rt3/zebra.conf
index 1bb64bc585..1bb64bc585 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt3/zebra.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt3/zebra.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt4/ospfd.conf b/tests/topotests/ospf_tilfa_topo1/rt4/ospfd.conf
index ad02214017..ad02214017 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt4/ospfd.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt4/ospfd.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt4/zebra.conf b/tests/topotests/ospf_tilfa_topo1/rt4/zebra.conf
index 306f0d4925..306f0d4925 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt4/zebra.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt4/zebra.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt5/ospfd.conf b/tests/topotests/ospf_tilfa_topo1/rt5/ospfd.conf
index 1b95858f53..1b95858f53 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt5/ospfd.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt5/ospfd.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/rt5/zebra.conf b/tests/topotests/ospf_tilfa_topo1/rt5/zebra.conf
index 46f759580e..46f759580e 100644
--- a/tests/topotests/ospf-tilfa-topo1/rt5/zebra.conf
+++ b/tests/topotests/ospf_tilfa_topo1/rt5/zebra.conf
diff --git a/tests/topotests/ospf-tilfa-topo1/test_ospf_tilfa_topo1.py b/tests/topotests/ospf_tilfa_topo1/test_ospf_tilfa_topo1.py
index 489690471c..489690471c 100644
--- a/tests/topotests/ospf-tilfa-topo1/test_ospf_tilfa_topo1.py
+++ b/tests/topotests/ospf_tilfa_topo1/test_ospf_tilfa_topo1.py
diff --git a/tests/topotests/ospf-topo1-vrf/__init__.py b/tests/topotests/ospf_topo1/__init__.py
index e69de29bb2..e69de29bb2 100755
--- a/tests/topotests/ospf-topo1-vrf/__init__.py
+++ b/tests/topotests/ospf_topo1/__init__.py
diff --git a/tests/topotests/ospf-topo1/r1/ospf6d.conf b/tests/topotests/ospf_topo1/r1/ospf6d.conf
index ca3497b4a5..ca3497b4a5 100644
--- a/tests/topotests/ospf-topo1/r1/ospf6d.conf
+++ b/tests/topotests/ospf_topo1/r1/ospf6d.conf
diff --git a/tests/topotests/ospf-topo1/r1/ospf6route.txt b/tests/topotests/ospf_topo1/r1/ospf6route.txt
index 1bfd6942ea..1bfd6942ea 100644
--- a/tests/topotests/ospf-topo1/r1/ospf6route.txt
+++ b/tests/topotests/ospf_topo1/r1/ospf6route.txt
diff --git a/tests/topotests/ospf-topo1/r1/ospf6route_down.txt b/tests/topotests/ospf_topo1/r1/ospf6route_down.txt
index 1ce96c86c0..1ce96c86c0 100644
--- a/tests/topotests/ospf-topo1/r1/ospf6route_down.txt
+++ b/tests/topotests/ospf_topo1/r1/ospf6route_down.txt
diff --git a/tests/topotests/ospf-topo1/r1/ospf6route_ecmp.txt b/tests/topotests/ospf_topo1/r1/ospf6route_ecmp.txt
index 4df6e5ec00..4df6e5ec00 100644
--- a/tests/topotests/ospf-topo1/r1/ospf6route_ecmp.txt
+++ b/tests/topotests/ospf_topo1/r1/ospf6route_ecmp.txt
diff --git a/tests/topotests/ospf-topo1/r1/ospfd.conf b/tests/topotests/ospf_topo1/r1/ospfd.conf
index 3b5aa192c5..3b5aa192c5 100644
--- a/tests/topotests/ospf-topo1/r1/ospfd.conf
+++ b/tests/topotests/ospf_topo1/r1/ospfd.conf
diff --git a/tests/topotests/ospf-topo1/r1/ospfroute.txt b/tests/topotests/ospf_topo1/r1/ospfroute.txt
index db648722f5..db648722f5 100644
--- a/tests/topotests/ospf-topo1/r1/ospfroute.txt
+++ b/tests/topotests/ospf_topo1/r1/ospfroute.txt
diff --git a/tests/topotests/ospf-topo1/r1/ospfroute_down.txt b/tests/topotests/ospf_topo1/r1/ospfroute_down.txt
index 5c07d81334..5c07d81334 100644
--- a/tests/topotests/ospf-topo1/r1/ospfroute_down.txt
+++ b/tests/topotests/ospf_topo1/r1/ospfroute_down.txt
diff --git a/tests/topotests/ospf-topo1/r1/zebra.conf b/tests/topotests/ospf_topo1/r1/zebra.conf
index f6e8efe7f2..f6e8efe7f2 100644
--- a/tests/topotests/ospf-topo1/r1/zebra.conf
+++ b/tests/topotests/ospf_topo1/r1/zebra.conf
diff --git a/tests/topotests/ospf-topo1/r2/ospf6d.conf b/tests/topotests/ospf_topo1/r2/ospf6d.conf
index 44047e1a4e..44047e1a4e 100644
--- a/tests/topotests/ospf-topo1/r2/ospf6d.conf
+++ b/tests/topotests/ospf_topo1/r2/ospf6d.conf
diff --git a/tests/topotests/ospf-topo1/r2/ospf6route.txt b/tests/topotests/ospf_topo1/r2/ospf6route.txt
index 7d3ce5b207..7d3ce5b207 100644
--- a/tests/topotests/ospf-topo1/r2/ospf6route.txt
+++ b/tests/topotests/ospf_topo1/r2/ospf6route.txt
diff --git a/tests/topotests/ospf-topo1/r2/ospf6route_down.txt b/tests/topotests/ospf_topo1/r2/ospf6route_down.txt
index acfffc9f1c..acfffc9f1c 100644
--- a/tests/topotests/ospf-topo1/r2/ospf6route_down.txt
+++ b/tests/topotests/ospf_topo1/r2/ospf6route_down.txt
diff --git a/tests/topotests/ospf-topo1/r2/ospf6route_ecmp.txt b/tests/topotests/ospf_topo1/r2/ospf6route_ecmp.txt
index f58b501e31..f58b501e31 100644
--- a/tests/topotests/ospf-topo1/r2/ospf6route_ecmp.txt
+++ b/tests/topotests/ospf_topo1/r2/ospf6route_ecmp.txt
diff --git a/tests/topotests/ospf-topo1/r2/ospfd.conf b/tests/topotests/ospf_topo1/r2/ospfd.conf
index 1a7ccdf728..1a7ccdf728 100644
--- a/tests/topotests/ospf-topo1/r2/ospfd.conf
+++ b/tests/topotests/ospf_topo1/r2/ospfd.conf
diff --git a/tests/topotests/ospf-topo1/r2/ospfroute.txt b/tests/topotests/ospf_topo1/r2/ospfroute.txt
index 79b389baab..79b389baab 100644
--- a/tests/topotests/ospf-topo1/r2/ospfroute.txt
+++ b/tests/topotests/ospf_topo1/r2/ospfroute.txt
diff --git a/tests/topotests/ospf-topo1/r2/ospfroute_down.txt b/tests/topotests/ospf_topo1/r2/ospfroute_down.txt
index b8411e19f3..b8411e19f3 100644
--- a/tests/topotests/ospf-topo1/r2/ospfroute_down.txt
+++ b/tests/topotests/ospf_topo1/r2/ospfroute_down.txt
diff --git a/tests/topotests/ospf-topo1/r2/zebra.conf b/tests/topotests/ospf_topo1/r2/zebra.conf
index 407416cdc4..407416cdc4 100644
--- a/tests/topotests/ospf-topo1/r2/zebra.conf
+++ b/tests/topotests/ospf_topo1/r2/zebra.conf
diff --git a/tests/topotests/ospf-topo1/r3/ospf6d.conf b/tests/topotests/ospf_topo1/r3/ospf6d.conf
index 13ad9a7356..13ad9a7356 100644
--- a/tests/topotests/ospf-topo1/r3/ospf6d.conf
+++ b/tests/topotests/ospf_topo1/r3/ospf6d.conf
diff --git a/tests/topotests/ospf-topo1/r3/ospf6route.txt b/tests/topotests/ospf_topo1/r3/ospf6route.txt
index b123c42650..b123c42650 100644
--- a/tests/topotests/ospf-topo1/r3/ospf6route.txt
+++ b/tests/topotests/ospf_topo1/r3/ospf6route.txt
diff --git a/tests/topotests/ospf-topo1/r3/ospf6route_down.txt b/tests/topotests/ospf_topo1/r3/ospf6route_down.txt
index ed69a8376b..ed69a8376b 100644
--- a/tests/topotests/ospf-topo1/r3/ospf6route_down.txt
+++ b/tests/topotests/ospf_topo1/r3/ospf6route_down.txt
diff --git a/tests/topotests/ospf-topo1/r3/ospf6route_ecmp.txt b/tests/topotests/ospf_topo1/r3/ospf6route_ecmp.txt
index 54e575adcb..54e575adcb 100644
--- a/tests/topotests/ospf-topo1/r3/ospf6route_ecmp.txt
+++ b/tests/topotests/ospf_topo1/r3/ospf6route_ecmp.txt
diff --git a/tests/topotests/ospf-topo1/r3/ospfd.conf b/tests/topotests/ospf_topo1/r3/ospfd.conf
index 3b378c0f27..3b378c0f27 100644
--- a/tests/topotests/ospf-topo1/r3/ospfd.conf
+++ b/tests/topotests/ospf_topo1/r3/ospfd.conf
diff --git a/tests/topotests/ospf-topo1/r3/ospfroute.txt b/tests/topotests/ospf_topo1/r3/ospfroute.txt
index c7799065d9..c7799065d9 100644
--- a/tests/topotests/ospf-topo1/r3/ospfroute.txt
+++ b/tests/topotests/ospf_topo1/r3/ospfroute.txt
diff --git a/tests/topotests/ospf-topo1/r3/ospfroute_down.txt b/tests/topotests/ospf_topo1/r3/ospfroute_down.txt
index 692a74aa6c..692a74aa6c 100644
--- a/tests/topotests/ospf-topo1/r3/ospfroute_down.txt
+++ b/tests/topotests/ospf_topo1/r3/ospfroute_down.txt
diff --git a/tests/topotests/ospf-topo1/r3/zebra.conf b/tests/topotests/ospf_topo1/r3/zebra.conf
index a635a889bb..a635a889bb 100644
--- a/tests/topotests/ospf-topo1/r3/zebra.conf
+++ b/tests/topotests/ospf_topo1/r3/zebra.conf
diff --git a/tests/topotests/ospf-topo1/r4/ospf6d.conf b/tests/topotests/ospf_topo1/r4/ospf6d.conf
index f9bde0e83c..f9bde0e83c 100644
--- a/tests/topotests/ospf-topo1/r4/ospf6d.conf
+++ b/tests/topotests/ospf_topo1/r4/ospf6d.conf
diff --git a/tests/topotests/ospf-topo1/r4/ospf6route.txt b/tests/topotests/ospf_topo1/r4/ospf6route.txt
index ceeee2cac8..ceeee2cac8 100644
--- a/tests/topotests/ospf-topo1/r4/ospf6route.txt
+++ b/tests/topotests/ospf_topo1/r4/ospf6route.txt
diff --git a/tests/topotests/ospf-topo1/r4/ospf6route_down.txt b/tests/topotests/ospf_topo1/r4/ospf6route_down.txt
index 4ad636dd98..4ad636dd98 100644
--- a/tests/topotests/ospf-topo1/r4/ospf6route_down.txt
+++ b/tests/topotests/ospf_topo1/r4/ospf6route_down.txt
diff --git a/tests/topotests/ospf-topo1/r4/ospf6route_ecmp.txt b/tests/topotests/ospf_topo1/r4/ospf6route_ecmp.txt
index b5cb10b72b..b5cb10b72b 100644
--- a/tests/topotests/ospf-topo1/r4/ospf6route_ecmp.txt
+++ b/tests/topotests/ospf_topo1/r4/ospf6route_ecmp.txt
diff --git a/tests/topotests/ospf-topo1/r4/ospfd.conf b/tests/topotests/ospf_topo1/r4/ospfd.conf
index 52d29322f8..52d29322f8 100644
--- a/tests/topotests/ospf-topo1/r4/ospfd.conf
+++ b/tests/topotests/ospf_topo1/r4/ospfd.conf
diff --git a/tests/topotests/ospf-topo1/r4/ospfroute.txt b/tests/topotests/ospf_topo1/r4/ospfroute.txt
index b582ef043b..b582ef043b 100644
--- a/tests/topotests/ospf-topo1/r4/ospfroute.txt
+++ b/tests/topotests/ospf_topo1/r4/ospfroute.txt
diff --git a/tests/topotests/ospf-topo1/r4/ospfroute_down.txt b/tests/topotests/ospf_topo1/r4/ospfroute_down.txt
index b0bd0eec78..b0bd0eec78 100644
--- a/tests/topotests/ospf-topo1/r4/ospfroute_down.txt
+++ b/tests/topotests/ospf_topo1/r4/ospfroute_down.txt
diff --git a/tests/topotests/ospf-topo1/r4/zebra.conf b/tests/topotests/ospf_topo1/r4/zebra.conf
index 39ecbb2401..39ecbb2401 100644
--- a/tests/topotests/ospf-topo1/r4/zebra.conf
+++ b/tests/topotests/ospf_topo1/r4/zebra.conf
diff --git a/tests/topotests/ospf-topo1/test_ospf_topo1.dot b/tests/topotests/ospf_topo1/test_ospf_topo1.dot
index 469a7ea792..469a7ea792 100644
--- a/tests/topotests/ospf-topo1/test_ospf_topo1.dot
+++ b/tests/topotests/ospf_topo1/test_ospf_topo1.dot
diff --git a/tests/topotests/ospf-topo1/test_ospf_topo1.jpg b/tests/topotests/ospf_topo1/test_ospf_topo1.jpg
index 1e931709e0..1e931709e0 100644
--- a/tests/topotests/ospf-topo1/test_ospf_topo1.jpg
+++ b/tests/topotests/ospf_topo1/test_ospf_topo1.jpg
Binary files differ
diff --git a/tests/topotests/ospf-topo1/test_ospf_topo1.py b/tests/topotests/ospf_topo1/test_ospf_topo1.py
index 42634ce906..42634ce906 100644
--- a/tests/topotests/ospf-topo1/test_ospf_topo1.py
+++ b/tests/topotests/ospf_topo1/test_ospf_topo1.py
diff --git a/tests/topotests/ospf-topo1/__init__.py b/tests/topotests/ospf_topo1_vrf/__init__.py
index e69de29bb2..e69de29bb2 100755
--- a/tests/topotests/ospf-topo1/__init__.py
+++ b/tests/topotests/ospf_topo1_vrf/__init__.py
diff --git a/tests/topotests/ospf-topo1-vrf/r1/ospfd.conf b/tests/topotests/ospf_topo1_vrf/r1/ospfd.conf
index 9a68635568..9a68635568 100644
--- a/tests/topotests/ospf-topo1-vrf/r1/ospfd.conf
+++ b/tests/topotests/ospf_topo1_vrf/r1/ospfd.conf
diff --git a/tests/topotests/ospf-topo1-vrf/r1/ospfroute.txt b/tests/topotests/ospf_topo1_vrf/r1/ospfroute.txt
index 134a10a454..134a10a454 100644
--- a/tests/topotests/ospf-topo1-vrf/r1/ospfroute.txt
+++ b/tests/topotests/ospf_topo1_vrf/r1/ospfroute.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r1/ospfroute_down.txt b/tests/topotests/ospf_topo1_vrf/r1/ospfroute_down.txt
index 083d77126c..083d77126c 100644
--- a/tests/topotests/ospf-topo1-vrf/r1/ospfroute_down.txt
+++ b/tests/topotests/ospf_topo1_vrf/r1/ospfroute_down.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r1/zebra.conf b/tests/topotests/ospf_topo1_vrf/r1/zebra.conf
index e826793657..e826793657 100644
--- a/tests/topotests/ospf-topo1-vrf/r1/zebra.conf
+++ b/tests/topotests/ospf_topo1_vrf/r1/zebra.conf
diff --git a/tests/topotests/ospf-topo1-vrf/r1/zebraroute.txt b/tests/topotests/ospf_topo1_vrf/r1/zebraroute.txt
index d72aa3b8e5..d72aa3b8e5 100644
--- a/tests/topotests/ospf-topo1-vrf/r1/zebraroute.txt
+++ b/tests/topotests/ospf_topo1_vrf/r1/zebraroute.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r1/zebraroutedown.txt b/tests/topotests/ospf_topo1_vrf/r1/zebraroutedown.txt
index 5ea6bdc04d..5ea6bdc04d 100644
--- a/tests/topotests/ospf-topo1-vrf/r1/zebraroutedown.txt
+++ b/tests/topotests/ospf_topo1_vrf/r1/zebraroutedown.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r2/ospfd.conf b/tests/topotests/ospf_topo1_vrf/r2/ospfd.conf
index ad481a996d..ad481a996d 100644
--- a/tests/topotests/ospf-topo1-vrf/r2/ospfd.conf
+++ b/tests/topotests/ospf_topo1_vrf/r2/ospfd.conf
diff --git a/tests/topotests/ospf-topo1-vrf/r2/ospfroute.txt b/tests/topotests/ospf_topo1_vrf/r2/ospfroute.txt
index a49cb77249..a49cb77249 100644
--- a/tests/topotests/ospf-topo1-vrf/r2/ospfroute.txt
+++ b/tests/topotests/ospf_topo1_vrf/r2/ospfroute.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r2/ospfroute_down.txt b/tests/topotests/ospf_topo1_vrf/r2/ospfroute_down.txt
index 2227bedf07..2227bedf07 100644
--- a/tests/topotests/ospf-topo1-vrf/r2/ospfroute_down.txt
+++ b/tests/topotests/ospf_topo1_vrf/r2/ospfroute_down.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r2/zebra.conf b/tests/topotests/ospf_topo1_vrf/r2/zebra.conf
index 8dcb713da6..8dcb713da6 100644
--- a/tests/topotests/ospf-topo1-vrf/r2/zebra.conf
+++ b/tests/topotests/ospf_topo1_vrf/r2/zebra.conf
diff --git a/tests/topotests/ospf-topo1-vrf/r2/zebraroute.txt b/tests/topotests/ospf_topo1_vrf/r2/zebraroute.txt
index ce5e5f3bab..ce5e5f3bab 100644
--- a/tests/topotests/ospf-topo1-vrf/r2/zebraroute.txt
+++ b/tests/topotests/ospf_topo1_vrf/r2/zebraroute.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r2/zebraroutedown.txt b/tests/topotests/ospf_topo1_vrf/r2/zebraroutedown.txt
index 157811ec77..157811ec77 100644
--- a/tests/topotests/ospf-topo1-vrf/r2/zebraroutedown.txt
+++ b/tests/topotests/ospf_topo1_vrf/r2/zebraroutedown.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r3/ospfd.conf b/tests/topotests/ospf_topo1_vrf/r3/ospfd.conf
index d5214f734e..d5214f734e 100644
--- a/tests/topotests/ospf-topo1-vrf/r3/ospfd.conf
+++ b/tests/topotests/ospf_topo1_vrf/r3/ospfd.conf
diff --git a/tests/topotests/ospf-topo1-vrf/r3/ospfroute.txt b/tests/topotests/ospf_topo1_vrf/r3/ospfroute.txt
index 3b16bfbd55..3b16bfbd55 100644
--- a/tests/topotests/ospf-topo1-vrf/r3/ospfroute.txt
+++ b/tests/topotests/ospf_topo1_vrf/r3/ospfroute.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r3/ospfroute_down.txt b/tests/topotests/ospf_topo1_vrf/r3/ospfroute_down.txt
index 39beac7a73..39beac7a73 100644
--- a/tests/topotests/ospf-topo1-vrf/r3/ospfroute_down.txt
+++ b/tests/topotests/ospf_topo1_vrf/r3/ospfroute_down.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r3/zebra.conf b/tests/topotests/ospf_topo1_vrf/r3/zebra.conf
index b548694330..b548694330 100644
--- a/tests/topotests/ospf-topo1-vrf/r3/zebra.conf
+++ b/tests/topotests/ospf_topo1_vrf/r3/zebra.conf
diff --git a/tests/topotests/ospf-topo1-vrf/r3/zebraroute.txt b/tests/topotests/ospf_topo1_vrf/r3/zebraroute.txt
index f40b7b09af..f40b7b09af 100644
--- a/tests/topotests/ospf-topo1-vrf/r3/zebraroute.txt
+++ b/tests/topotests/ospf_topo1_vrf/r3/zebraroute.txt
diff --git a/tests/topotests/ospf-topo1-vrf/r3/zebraroutedown.txt b/tests/topotests/ospf_topo1_vrf/r3/zebraroutedown.txt
index 89cd6f56c4..89cd6f56c4 100644
--- a/tests/topotests/ospf-topo1-vrf/r3/zebraroutedown.txt
+++ b/tests/topotests/ospf_topo1_vrf/r3/zebraroutedown.txt
diff --git a/tests/topotests/ospf-topo1-vrf/test_ospf_topo1-vrf.dot b/tests/topotests/ospf_topo1_vrf/test_ospf_topo1-vrf.dot
index 789fdd7c09..789fdd7c09 100644
--- a/tests/topotests/ospf-topo1-vrf/test_ospf_topo1-vrf.dot
+++ b/tests/topotests/ospf_topo1_vrf/test_ospf_topo1-vrf.dot
diff --git a/tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.jpg b/tests/topotests/ospf_topo1_vrf/test_ospf_topo1_vrf.jpg
index 85f2e52f8e..85f2e52f8e 100644
--- a/tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.jpg
+++ b/tests/topotests/ospf_topo1_vrf/test_ospf_topo1_vrf.jpg
Binary files differ
diff --git a/tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.py b/tests/topotests/ospf_topo1_vrf/test_ospf_topo1_vrf.py
index e2cb7bff03..e2cb7bff03 100644
--- a/tests/topotests/ospf-topo1-vrf/test_ospf_topo1_vrf.py
+++ b/tests/topotests/ospf_topo1_vrf/test_ospf_topo1_vrf.py
diff --git a/tests/topotests/ospf-topo2/r1/ospf-route.json b/tests/topotests/ospf_topo2/r1/ospf-route.json
index 6beb7e9bed..6beb7e9bed 100644
--- a/tests/topotests/ospf-topo2/r1/ospf-route.json
+++ b/tests/topotests/ospf_topo2/r1/ospf-route.json
diff --git a/tests/topotests/ospf-topo2/r1/ospfd.conf b/tests/topotests/ospf_topo2/r1/ospfd.conf
index 65843cbb83..65843cbb83 100644
--- a/tests/topotests/ospf-topo2/r1/ospfd.conf
+++ b/tests/topotests/ospf_topo2/r1/ospfd.conf
diff --git a/tests/topotests/ospf-topo2/r1/v4_route.json b/tests/topotests/ospf_topo2/r1/v4_route.json
index 76c6396169..76c6396169 100644
--- a/tests/topotests/ospf-topo2/r1/v4_route.json
+++ b/tests/topotests/ospf_topo2/r1/v4_route.json
diff --git a/tests/topotests/ospf-topo2/r1/zebra.conf b/tests/topotests/ospf_topo2/r1/zebra.conf
index d96d9707c1..d96d9707c1 100644
--- a/tests/topotests/ospf-topo2/r1/zebra.conf
+++ b/tests/topotests/ospf_topo2/r1/zebra.conf
diff --git a/tests/topotests/ospf-topo2/r2/ospf-route.json b/tests/topotests/ospf_topo2/r2/ospf-route.json
index 3cfd255bfd..3cfd255bfd 100644
--- a/tests/topotests/ospf-topo2/r2/ospf-route.json
+++ b/tests/topotests/ospf_topo2/r2/ospf-route.json
diff --git a/tests/topotests/ospf-topo2/r2/ospfd.conf b/tests/topotests/ospf_topo2/r2/ospfd.conf
index b032f1a8ac..b032f1a8ac 100644
--- a/tests/topotests/ospf-topo2/r2/ospfd.conf
+++ b/tests/topotests/ospf_topo2/r2/ospfd.conf
diff --git a/tests/topotests/ospf-topo2/r2/v4_route.json b/tests/topotests/ospf_topo2/r2/v4_route.json
index 1638536388..1638536388 100644
--- a/tests/topotests/ospf-topo2/r2/v4_route.json
+++ b/tests/topotests/ospf_topo2/r2/v4_route.json
diff --git a/tests/topotests/ospf-topo2/r2/zebra.conf b/tests/topotests/ospf_topo2/r2/zebra.conf
index f9dd2c4471..f9dd2c4471 100644
--- a/tests/topotests/ospf-topo2/r2/zebra.conf
+++ b/tests/topotests/ospf_topo2/r2/zebra.conf
diff --git a/tests/topotests/ospf-topo2/test_ospf_topo2.py b/tests/topotests/ospf_topo2/test_ospf_topo2.py
index 6451f5fb32..6451f5fb32 100644
--- a/tests/topotests/ospf-topo2/test_ospf_topo2.py
+++ b/tests/topotests/ospf_topo2/test_ospf_topo2.py
diff --git a/tests/topotests/pbr-topo1/__init__.py b/tests/topotests/pbr_topo1/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/pbr-topo1/__init__.py
+++ b/tests/topotests/pbr_topo1/__init__.py
diff --git a/tests/topotests/pbr-topo1/r1/linux-rules.json b/tests/topotests/pbr_topo1/r1/linux-rules.json
index 5af4363418..5af4363418 100644
--- a/tests/topotests/pbr-topo1/r1/linux-rules.json
+++ b/tests/topotests/pbr_topo1/r1/linux-rules.json
diff --git a/tests/topotests/pbr-topo1/r1/pbr-interface.json b/tests/topotests/pbr_topo1/r1/pbr-interface.json
index e28d9fb149..e28d9fb149 100644
--- a/tests/topotests/pbr-topo1/r1/pbr-interface.json
+++ b/tests/topotests/pbr_topo1/r1/pbr-interface.json
diff --git a/tests/topotests/pbr-topo1/r1/pbr-map.json b/tests/topotests/pbr_topo1/r1/pbr-map.json
index bfa0ecb849..bfa0ecb849 100644
--- a/tests/topotests/pbr-topo1/r1/pbr-map.json
+++ b/tests/topotests/pbr_topo1/r1/pbr-map.json
diff --git a/tests/topotests/pbr-topo1/r1/pbr-nexthop-groups.json b/tests/topotests/pbr_topo1/r1/pbr-nexthop-groups.json
index 540ea28158..540ea28158 100644
--- a/tests/topotests/pbr-topo1/r1/pbr-nexthop-groups.json
+++ b/tests/topotests/pbr_topo1/r1/pbr-nexthop-groups.json
diff --git a/tests/topotests/pbr-topo1/r1/pbrd.conf b/tests/topotests/pbr_topo1/r1/pbrd.conf
index 45cb7656ab..45cb7656ab 100644
--- a/tests/topotests/pbr-topo1/r1/pbrd.conf
+++ b/tests/topotests/pbr_topo1/r1/pbrd.conf
diff --git a/tests/topotests/pbr-topo1/r1/zebra.conf b/tests/topotests/pbr_topo1/r1/zebra.conf
index 2ec947c275..2ec947c275 100644
--- a/tests/topotests/pbr-topo1/r1/zebra.conf
+++ b/tests/topotests/pbr_topo1/r1/zebra.conf
diff --git a/tests/topotests/pbr-topo1/test_pbr_topo1.py b/tests/topotests/pbr_topo1/test_pbr_topo1.py
index 1a024063b8..1a024063b8 100644
--- a/tests/topotests/pbr-topo1/test_pbr_topo1.py
+++ b/tests/topotests/pbr_topo1/test_pbr_topo1.py
diff --git a/tests/topotests/pim-basic/mcast-rx.py b/tests/topotests/pim_basic/mcast-rx.py
index 862ad46af4..862ad46af4 100755
--- a/tests/topotests/pim-basic/mcast-rx.py
+++ b/tests/topotests/pim_basic/mcast-rx.py
diff --git a/tests/topotests/pim-basic/mcast-tx.py b/tests/topotests/pim_basic/mcast-tx.py
index 87038ad5cf..87038ad5cf 100755
--- a/tests/topotests/pim-basic/mcast-tx.py
+++ b/tests/topotests/pim_basic/mcast-tx.py
diff --git a/tests/topotests/pim-basic/r1/bgpd.conf b/tests/topotests/pim_basic/r1/bgpd.conf
index 84d9598bc6..84d9598bc6 100644
--- a/tests/topotests/pim-basic/r1/bgpd.conf
+++ b/tests/topotests/pim_basic/r1/bgpd.conf
diff --git a/tests/topotests/pim-basic/r1/pimd.conf b/tests/topotests/pim_basic/r1/pimd.conf
index f64a46deb3..f64a46deb3 100644
--- a/tests/topotests/pim-basic/r1/pimd.conf
+++ b/tests/topotests/pim_basic/r1/pimd.conf
diff --git a/tests/topotests/pim-basic/r1/rp-info.json b/tests/topotests/pim_basic/r1/rp-info.json
index 1f713c2d28..1f713c2d28 100644
--- a/tests/topotests/pim-basic/r1/rp-info.json
+++ b/tests/topotests/pim_basic/r1/rp-info.json
diff --git a/tests/topotests/pim-basic/r1/zebra.conf b/tests/topotests/pim_basic/r1/zebra.conf
index e43041758b..e43041758b 100644
--- a/tests/topotests/pim-basic/r1/zebra.conf
+++ b/tests/topotests/pim_basic/r1/zebra.conf
diff --git a/tests/topotests/pim-basic/r2/pimd.conf b/tests/topotests/pim_basic/r2/pimd.conf
index 932cff6f3b..932cff6f3b 100644
--- a/tests/topotests/pim-basic/r2/pimd.conf
+++ b/tests/topotests/pim_basic/r2/pimd.conf
diff --git a/tests/topotests/pim-basic/r2/zebra.conf b/tests/topotests/pim_basic/r2/zebra.conf
index cb30858f58..cb30858f58 100644
--- a/tests/topotests/pim-basic/r2/zebra.conf
+++ b/tests/topotests/pim_basic/r2/zebra.conf
diff --git a/tests/topotests/pim-basic/r3/pimd.conf b/tests/topotests/pim_basic/r3/pimd.conf
index f94ee99930..f94ee99930 100644
--- a/tests/topotests/pim-basic/r3/pimd.conf
+++ b/tests/topotests/pim_basic/r3/pimd.conf
diff --git a/tests/topotests/pim-basic/r3/zebra.conf b/tests/topotests/pim_basic/r3/zebra.conf
index 8e58e8c66a..8e58e8c66a 100644
--- a/tests/topotests/pim-basic/r3/zebra.conf
+++ b/tests/topotests/pim_basic/r3/zebra.conf
diff --git a/tests/topotests/pim-basic/rp/bgpd.conf b/tests/topotests/pim_basic/rp/bgpd.conf
index 1bfae6059b..1bfae6059b 100644
--- a/tests/topotests/pim-basic/rp/bgpd.conf
+++ b/tests/topotests/pim_basic/rp/bgpd.conf
diff --git a/tests/topotests/pim-basic/rp/pimd.conf b/tests/topotests/pim_basic/rp/pimd.conf
index 6e35c97971..6e35c97971 100644
--- a/tests/topotests/pim-basic/rp/pimd.conf
+++ b/tests/topotests/pim_basic/rp/pimd.conf
diff --git a/tests/topotests/pim-basic/rp/upstream.json b/tests/topotests/pim_basic/rp/upstream.json
index c33dea49e9..c33dea49e9 100644
--- a/tests/topotests/pim-basic/rp/upstream.json
+++ b/tests/topotests/pim_basic/rp/upstream.json
diff --git a/tests/topotests/pim-basic/rp/zebra.conf b/tests/topotests/pim_basic/rp/zebra.conf
index 0a1359ecd0..0a1359ecd0 100644
--- a/tests/topotests/pim-basic/rp/zebra.conf
+++ b/tests/topotests/pim_basic/rp/zebra.conf
diff --git a/tests/topotests/pim-basic/test_pim.py b/tests/topotests/pim_basic/test_pim.py
index 4debbeb851..4debbeb851 100644
--- a/tests/topotests/pim-basic/test_pim.py
+++ b/tests/topotests/pim_basic/test_pim.py
diff --git a/tests/topotests/pim-basic-topo2/__init__.py b/tests/topotests/pim_basic_topo2/__init__.py
index e69de29bb2..e69de29bb2 100644
--- a/tests/topotests/pim-basic-topo2/__init__.py
+++ b/tests/topotests/pim_basic_topo2/__init__.py
diff --git a/tests/topotests/pim-basic-topo2/r1/bfdd.conf b/tests/topotests/pim_basic_topo2/r1/bfdd.conf
index 76c6f82190..76c6f82190 100644
--- a/tests/topotests/pim-basic-topo2/r1/bfdd.conf
+++ b/tests/topotests/pim_basic_topo2/r1/bfdd.conf
diff --git a/tests/topotests/pim-basic-topo2/r1/pimd.conf b/tests/topotests/pim_basic_topo2/r1/pimd.conf
index b895d7d573..b895d7d573 100644
--- a/tests/topotests/pim-basic-topo2/r1/pimd.conf
+++ b/tests/topotests/pim_basic_topo2/r1/pimd.conf
diff --git a/tests/topotests/pim-basic-topo2/r1/zebra.conf b/tests/topotests/pim_basic_topo2/r1/zebra.conf
index 6bf02a3ee8..6bf02a3ee8 100644
--- a/tests/topotests/pim-basic-topo2/r1/zebra.conf
+++ b/tests/topotests/pim_basic_topo2/r1/zebra.conf
diff --git a/tests/topotests/pim-basic-topo2/r2/bfdd.conf b/tests/topotests/pim_basic_topo2/r2/bfdd.conf
index ca61e467dc..ca61e467dc 100644
--- a/tests/topotests/pim-basic-topo2/r2/bfdd.conf
+++ b/tests/topotests/pim_basic_topo2/r2/bfdd.conf
diff --git a/tests/topotests/pim-basic-topo2/r2/pimd.conf b/tests/topotests/pim_basic_topo2/r2/pimd.conf
index 0b32ded19a..0b32ded19a 100644
--- a/tests/topotests/pim-basic-topo2/r2/pimd.conf
+++ b/tests/topotests/pim_basic_topo2/r2/pimd.conf
diff --git a/tests/topotests/pim-basic-topo2/r2/zebra.conf b/tests/topotests/pim_basic_topo2/r2/zebra.conf
index 3ceb5f0fc2..3ceb5f0fc2 100644
--- a/tests/topotests/pim-basic-topo2/r2/zebra.conf
+++ b/tests/topotests/pim_basic_topo2/r2/zebra.conf
diff --git a/tests/topotests/pim-basic-topo2/r3/bfdd.conf b/tests/topotests/pim_basic_topo2/r3/bfdd.conf
index ca61e467dc..ca61e467dc 100644
--- a/tests/topotests/pim-basic-topo2/r3/bfdd.conf
+++ b/tests/topotests/pim_basic_topo2/r3/bfdd.conf
diff --git a/tests/topotests/pim-basic-topo2/r3/pimd.conf b/tests/topotests/pim_basic_topo2/r3/pimd.conf
index 691a28ea27..691a28ea27 100644
--- a/tests/topotests/pim-basic-topo2/r3/pimd.conf
+++ b/tests/topotests/pim_basic_topo2/r3/pimd.conf
diff --git a/tests/topotests/pim-basic-topo2/r3/zebra.conf b/tests/topotests/pim_basic_topo2/r3/zebra.conf
index 3df218ee16..3df218ee16 100644
--- a/tests/topotests/pim-basic-topo2/r3/zebra.conf
+++ b/tests/topotests/pim_basic_topo2/r3/zebra.conf
diff --git a/tests/topotests/pim-basic-topo2/r4/bfdd.conf b/tests/topotests/pim_basic_topo2/r4/bfdd.conf
index ca61e467dc..ca61e467dc 100644
--- a/tests/topotests/pim-basic-topo2/r4/bfdd.conf
+++ b/tests/topotests/pim_basic_topo2/r4/bfdd.conf
diff --git a/tests/topotests/pim-basic-topo2/r4/pimd.conf b/tests/topotests/pim_basic_topo2/r4/pimd.conf
index 2277b3e1f1..2277b3e1f1 100644
--- a/tests/topotests/pim-basic-topo2/r4/pimd.conf
+++ b/tests/topotests/pim_basic_topo2/r4/pimd.conf
diff --git a/tests/topotests/pim-basic-topo2/r4/zebra.conf b/tests/topotests/pim_basic_topo2/r4/zebra.conf
index 6ac5c78fc3..6ac5c78fc3 100644
--- a/tests/topotests/pim-basic-topo2/r4/zebra.conf
+++ b/tests/topotests/pim_basic_topo2/r4/zebra.conf
diff --git a/tests/topotests/pim-basic-topo2/test_pim_basic_topo2.dot b/tests/topotests/pim_basic_topo2/test_pim_basic_topo2.dot
index 22fce27e22..22fce27e22 100644
--- a/tests/topotests/pim-basic-topo2/test_pim_basic_topo2.dot
+++ b/tests/topotests/pim_basic_topo2/test_pim_basic_topo2.dot
diff --git a/tests/topotests/pim-basic-topo2/test_pim_basic_topo2.png b/tests/topotests/pim_basic_topo2/test_pim_basic_topo2.png
index 39139a35b1..39139a35b1 100644
--- a/tests/topotests/pim-basic-topo2/test_pim_basic_topo2.png
+++ b/tests/topotests/pim_basic_topo2/test_pim_basic_topo2.png
Binary files differ
diff --git a/tests/topotests/pim-basic-topo2/test_pim_basic_topo2.py b/tests/topotests/pim_basic_topo2/test_pim_basic_topo2.py
index 883125cfc7..883125cfc7 100644
--- a/tests/topotests/pim-basic-topo2/test_pim_basic_topo2.py
+++ b/tests/topotests/pim_basic_topo2/test_pim_basic_topo2.py
diff --git a/tests/topotests/pytest.ini b/tests/topotests/pytest.ini
index 562e754f21..885c249b31 100644
--- a/tests/topotests/pytest.ini
+++ b/tests/topotests/pytest.ini
@@ -1,6 +1,6 @@
# Skip pytests example directory
[pytest]
-norecursedirs = .git example-test example-topojson-test lib docker
+norecursedirs = .git example_test example_topojson_test lib docker
# Markers
#
diff --git a/tests/topotests/rip-topo1/r1/rip_status.ref b/tests/topotests/rip_topo1/r1/rip_status.ref
index 31ad46ab2e..31ad46ab2e 100644
--- a/tests/topotests/rip-topo1/r1/rip_status.ref
+++ b/tests/topotests/rip_topo1/r1/rip_status.ref
diff --git a/tests/topotests/rip-topo1/r1/ripd.conf b/tests/topotests/rip_topo1/r1/ripd.conf
index 54f1774214..54f1774214 100644
--- a/tests/topotests/rip-topo1/r1/ripd.conf
+++ b/tests/topotests/rip_topo1/r1/ripd.conf
diff --git a/tests/topotests/rip-topo1/r1/show_ip_rip.ref b/tests/topotests/rip_topo1/r1/show_ip_rip.ref
index a0b77c886e..a0b77c886e 100644
--- a/tests/topotests/rip-topo1/r1/show_ip_rip.ref
+++ b/tests/topotests/rip_topo1/r1/show_ip_rip.ref
diff --git a/tests/topotests/rip-topo1/r1/show_ip_route.ref b/tests/topotests/rip_topo1/r1/show_ip_route.ref
index 2ff26045aa..2ff26045aa 100644
--- a/tests/topotests/rip-topo1/r1/show_ip_route.ref
+++ b/tests/topotests/rip_topo1/r1/show_ip_route.ref
diff --git a/tests/topotests/rip-topo1/r1/zebra.conf b/tests/topotests/rip_topo1/r1/zebra.conf
index 7c8f2c502b..7c8f2c502b 100644
--- a/tests/topotests/rip-topo1/r1/zebra.conf
+++ b/tests/topotests/rip_topo1/r1/zebra.conf
diff --git a/tests/topotests/rip-topo1/r2/rip_status.ref b/tests/topotests/rip_topo1/r2/rip_status.ref
index 99841a62b0..99841a62b0 100644
--- a/tests/topotests/rip-topo1/r2/rip_status.ref
+++ b/tests/topotests/rip_topo1/r2/rip_status.ref
diff --git a/tests/topotests/rip-topo1/r2/ripd.conf b/tests/topotests/rip_topo1/r2/ripd.conf
index 2e94cfa262..2e94cfa262 100644
--- a/tests/topotests/rip-topo1/r2/ripd.conf
+++ b/tests/topotests/rip_topo1/r2/ripd.conf
diff --git a/tests/topotests/rip-topo1/r2/show_ip_rip.ref b/tests/topotests/rip_topo1/r2/show_ip_rip.ref
index b61fb45eac..b61fb45eac 100644
--- a/tests/topotests/rip-topo1/r2/show_ip_rip.ref
+++ b/tests/topotests/rip_topo1/r2/show_ip_rip.ref
diff --git a/tests/topotests/rip-topo1/r2/show_ip_route.ref b/tests/topotests/rip_topo1/r2/show_ip_route.ref
index 80f51a92c7..80f51a92c7 100644
--- a/tests/topotests/rip-topo1/r2/show_ip_route.ref
+++ b/tests/topotests/rip_topo1/r2/show_ip_route.ref
diff --git a/tests/topotests/rip-topo1/r2/zebra.conf b/tests/topotests/rip_topo1/r2/zebra.conf
index c440f3a350..c440f3a350 100644
--- a/tests/topotests/rip-topo1/r2/zebra.conf
+++ b/tests/topotests/rip_topo1/r2/zebra.conf
diff --git a/tests/topotests/rip-topo1/r3/rip_status.ref b/tests/topotests/rip_topo1/r3/rip_status.ref
index 040d3c32a1..040d3c32a1 100644
--- a/tests/topotests/rip-topo1/r3/rip_status.ref
+++ b/tests/topotests/rip_topo1/r3/rip_status.ref
diff --git a/tests/topotests/rip-topo1/r3/ripd.conf b/tests/topotests/rip_topo1/r3/ripd.conf
index e27e67503f..e27e67503f 100644
--- a/tests/topotests/rip-topo1/r3/ripd.conf
+++ b/tests/topotests/rip_topo1/r3/ripd.conf
diff --git a/tests/topotests/rip-topo1/r3/show_ip_rip.ref b/tests/topotests/rip_topo1/r3/show_ip_rip.ref
index 1df299b5e6..1df299b5e6 100644
--- a/tests/topotests/rip-topo1/r3/show_ip_rip.ref
+++ b/tests/topotests/rip_topo1/r3/show_ip_rip.ref
diff --git a/tests/topotests/rip-topo1/r3/show_ip_route.ref b/tests/topotests/rip_topo1/r3/show_ip_route.ref
index 2b739f0489..2b739f0489 100644
--- a/tests/topotests/rip-topo1/r3/show_ip_route.ref
+++ b/tests/topotests/rip_topo1/r3/show_ip_route.ref
diff --git a/tests/topotests/rip-topo1/r3/zebra.conf b/tests/topotests/rip_topo1/r3/zebra.conf
index 7f145b4583..7f145b4583 100644
--- a/tests/topotests/rip-topo1/r3/zebra.conf
+++ b/tests/topotests/rip_topo1/r3/zebra.conf
diff --git a/tests/topotests/rip-topo1/test_rip_topo1.dot b/tests/topotests/rip_topo1/test_rip_topo1.dot
index f052b697ea..f052b697ea 100644
--- a/tests/topotests/rip-topo1/test_rip_topo1.dot
+++ b/tests/topotests/rip_topo1/test_rip_topo1.dot
diff --git a/tests/topotests/rip-topo1/test_rip_topo1.pdf b/tests/topotests/rip_topo1/test_rip_topo1.pdf
index c201ac1f07..c201ac1f07 100644
--- a/tests/topotests/rip-topo1/test_rip_topo1.pdf
+++ b/tests/topotests/rip_topo1/test_rip_topo1.pdf
Binary files differ
diff --git a/tests/topotests/rip-topo1/test_rip_topo1.py b/tests/topotests/rip_topo1/test_rip_topo1.py
index 78672ac871..78672ac871 100644
--- a/tests/topotests/rip-topo1/test_rip_topo1.py
+++ b/tests/topotests/rip_topo1/test_rip_topo1.py
diff --git a/tests/topotests/ripng-topo1/r1/ripng_status.ref b/tests/topotests/ripng_topo1/r1/ripng_status.ref
index b02cc69d0e..b02cc69d0e 100644
--- a/tests/topotests/ripng-topo1/r1/ripng_status.ref
+++ b/tests/topotests/ripng_topo1/r1/ripng_status.ref
diff --git a/tests/topotests/ripng-topo1/r1/ripngd.conf b/tests/topotests/ripng_topo1/r1/ripngd.conf
index 07ed7296d9..07ed7296d9 100644
--- a/tests/topotests/ripng-topo1/r1/ripngd.conf
+++ b/tests/topotests/ripng_topo1/r1/ripngd.conf
diff --git a/tests/topotests/ripng-topo1/r1/show_ipv6_ripng.ref b/tests/topotests/ripng_topo1/r1/show_ipv6_ripng.ref
index 30d0f31e18..30d0f31e18 100644
--- a/tests/topotests/ripng-topo1/r1/show_ipv6_ripng.ref
+++ b/tests/topotests/ripng_topo1/r1/show_ipv6_ripng.ref
diff --git a/tests/topotests/ripng-topo1/r1/show_ipv6_route.ref b/tests/topotests/ripng_topo1/r1/show_ipv6_route.ref
index 55fbbc34f3..55fbbc34f3 100644
--- a/tests/topotests/ripng-topo1/r1/show_ipv6_route.ref
+++ b/tests/topotests/ripng_topo1/r1/show_ipv6_route.ref
diff --git a/tests/topotests/ripng-topo1/r1/zebra.conf b/tests/topotests/ripng_topo1/r1/zebra.conf
index 11c1cdc5b9..11c1cdc5b9 100644
--- a/tests/topotests/ripng-topo1/r1/zebra.conf
+++ b/tests/topotests/ripng_topo1/r1/zebra.conf
diff --git a/tests/topotests/ripng-topo1/r2/ripng_status.ref b/tests/topotests/ripng_topo1/r2/ripng_status.ref
index 640df9a4a0..640df9a4a0 100644
--- a/tests/topotests/ripng-topo1/r2/ripng_status.ref
+++ b/tests/topotests/ripng_topo1/r2/ripng_status.ref
diff --git a/tests/topotests/ripng-topo1/r2/ripngd.conf b/tests/topotests/ripng_topo1/r2/ripngd.conf
index ef2c42195d..ef2c42195d 100644
--- a/tests/topotests/ripng-topo1/r2/ripngd.conf
+++ b/tests/topotests/ripng_topo1/r2/ripngd.conf
diff --git a/tests/topotests/ripng-topo1/r2/show_ipv6_ripng.ref b/tests/topotests/ripng_topo1/r2/show_ipv6_ripng.ref
index fe5bcc8b31..fe5bcc8b31 100644
--- a/tests/topotests/ripng-topo1/r2/show_ipv6_ripng.ref
+++ b/tests/topotests/ripng_topo1/r2/show_ipv6_ripng.ref
diff --git a/tests/topotests/ripng-topo1/r2/show_ipv6_route.ref b/tests/topotests/ripng_topo1/r2/show_ipv6_route.ref
index 72e1f926a2..72e1f926a2 100644
--- a/tests/topotests/ripng-topo1/r2/show_ipv6_route.ref
+++ b/tests/topotests/ripng_topo1/r2/show_ipv6_route.ref
diff --git a/tests/topotests/ripng-topo1/r2/zebra.conf b/tests/topotests/ripng_topo1/r2/zebra.conf
index 59006317d3..59006317d3 100644
--- a/tests/topotests/ripng-topo1/r2/zebra.conf
+++ b/tests/topotests/ripng_topo1/r2/zebra.conf
diff --git a/tests/topotests/ripng-topo1/r3/ripng_status.ref b/tests/topotests/ripng_topo1/r3/ripng_status.ref
index f4bfff0c59..f4bfff0c59 100644
--- a/tests/topotests/ripng-topo1/r3/ripng_status.ref
+++ b/tests/topotests/ripng_topo1/r3/ripng_status.ref
diff --git a/tests/topotests/ripng-topo1/r3/ripngd.conf b/tests/topotests/ripng_topo1/r3/ripngd.conf
index 506eaac442..506eaac442 100644
--- a/tests/topotests/ripng-topo1/r3/ripngd.conf
+++ b/tests/topotests/ripng_topo1/r3/ripngd.conf
diff --git a/tests/topotests/ripng-topo1/r3/show_ipv6_ripng.ref b/tests/topotests/ripng_topo1/r3/show_ipv6_ripng.ref
index 909ad663ba..909ad663ba 100644
--- a/tests/topotests/ripng-topo1/r3/show_ipv6_ripng.ref
+++ b/tests/topotests/ripng_topo1/r3/show_ipv6_ripng.ref
diff --git a/tests/topotests/ripng-topo1/r3/show_ipv6_route.ref b/tests/topotests/ripng_topo1/r3/show_ipv6_route.ref
index 25a7440111..25a7440111 100644
--- a/tests/topotests/ripng-topo1/r3/show_ipv6_route.ref
+++ b/tests/topotests/ripng_topo1/r3/show_ipv6_route.ref
diff --git a/tests/topotests/ripng-topo1/r3/zebra.conf b/tests/topotests/ripng_topo1/r3/zebra.conf
index b43ba69834..b43ba69834 100644
--- a/tests/topotests/ripng-topo1/r3/zebra.conf
+++ b/tests/topotests/ripng_topo1/r3/zebra.conf
diff --git a/tests/topotests/ripng-topo1/test_ripng_topo1.dot b/tests/topotests/ripng_topo1/test_ripng_topo1.dot
index 7d66a2a306..7d66a2a306 100644
--- a/tests/topotests/ripng-topo1/test_ripng_topo1.dot
+++ b/tests/topotests/ripng_topo1/test_ripng_topo1.dot
diff --git a/tests/topotests/ripng-topo1/test_ripng_topo1.pdf b/tests/topotests/ripng_topo1/test_ripng_topo1.pdf
index cb1adde239..cb1adde239 100644
--- a/tests/topotests/ripng-topo1/test_ripng_topo1.pdf
+++ b/tests/topotests/ripng_topo1/test_ripng_topo1.pdf
Binary files differ
diff --git a/tests/topotests/ripng-topo1/test_ripng_topo1.py b/tests/topotests/ripng_topo1/test_ripng_topo1.py
index 4a5a59cd75..4a5a59cd75 100644
--- a/tests/topotests/ripng-topo1/test_ripng_topo1.py
+++ b/tests/topotests/ripng_topo1/test_ripng_topo1.py
diff --git a/tests/topotests/route-scale/r1/installed.routes.json b/tests/topotests/route_scale/r1/installed.routes.json
index 25d209f9eb..25d209f9eb 100644
--- a/tests/topotests/route-scale/r1/installed.routes.json
+++ b/tests/topotests/route_scale/r1/installed.routes.json
diff --git a/tests/topotests/route-scale/r1/no.routes.json b/tests/topotests/route_scale/r1/no.routes.json
index abebd1b143..abebd1b143 100644
--- a/tests/topotests/route-scale/r1/no.routes.json
+++ b/tests/topotests/route_scale/r1/no.routes.json
diff --git a/tests/topotests/route-scale/r1/sharpd.conf b/tests/topotests/route_scale/r1/sharpd.conf
index 0848f34ddf..0848f34ddf 100644
--- a/tests/topotests/route-scale/r1/sharpd.conf
+++ b/tests/topotests/route_scale/r1/sharpd.conf
diff --git a/tests/topotests/route-scale/r1/zebra.conf b/tests/topotests/route_scale/r1/zebra.conf
index 48a01f48ab..48a01f48ab 100644
--- a/tests/topotests/route-scale/r1/zebra.conf
+++ b/tests/topotests/route_scale/r1/zebra.conf
diff --git a/tests/topotests/route-scale/test_route_scale.py b/tests/topotests/route_scale/test_route_scale.py
index bbd6ef8d60..bbd6ef8d60 100644
--- a/tests/topotests/route-scale/test_route_scale.py
+++ b/tests/topotests/route_scale/test_route_scale.py
diff --git a/tests/topotests/simple-snmp-test/r1/bgpd.conf b/tests/topotests/simple_snmp_test/r1/bgpd.conf
index 00d1e17670..00d1e17670 100644
--- a/tests/topotests/simple-snmp-test/r1/bgpd.conf
+++ b/tests/topotests/simple_snmp_test/r1/bgpd.conf
diff --git a/tests/topotests/simple-snmp-test/r1/isisd.conf b/tests/topotests/simple_snmp_test/r1/isisd.conf
index b5ca993da3..b5ca993da3 100644
--- a/tests/topotests/simple-snmp-test/r1/isisd.conf
+++ b/tests/topotests/simple_snmp_test/r1/isisd.conf
diff --git a/tests/topotests/simple-snmp-test/r1/snmpd.conf b/tests/topotests/simple_snmp_test/r1/snmpd.conf
index b37911da36..b37911da36 100644
--- a/tests/topotests/simple-snmp-test/r1/snmpd.conf
+++ b/tests/topotests/simple_snmp_test/r1/snmpd.conf
diff --git a/tests/topotests/simple-snmp-test/r1/zebra.conf b/tests/topotests/simple_snmp_test/r1/zebra.conf
index 5281d0055d..5281d0055d 100644
--- a/tests/topotests/simple-snmp-test/r1/zebra.conf
+++ b/tests/topotests/simple_snmp_test/r1/zebra.conf
diff --git a/tests/topotests/simple-snmp-test/test_simple_snmp.py b/tests/topotests/simple_snmp_test/test_simple_snmp.py
index 5647e2b663..5647e2b663 100755
--- a/tests/topotests/simple-snmp-test/test_simple_snmp.py
+++ b/tests/topotests/simple_snmp_test/test_simple_snmp.py
diff --git a/tests/topotests/static_routing_with_ebgp/test_static_routes_topo1_ebgp.py b/tests/topotests/static_routing_with_ebgp/test_static_routes_topo1_ebgp.py
index a4cc8e8e7a..a16c4ae297 100644
--- a/tests/topotests/static_routing_with_ebgp/test_static_routes_topo1_ebgp.py
+++ b/tests/topotests/static_routing_with_ebgp/test_static_routes_topo1_ebgp.py
@@ -40,10 +40,11 @@ import platform
CWD = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(CWD, "../"))
sys.path.append(os.path.join(CWD, "../lib/"))
+
# pylint: disable=C0413
# Import topogen and topotest helpers
-from mininet.topo import Topo
from lib.topogen import Topogen, get_topogen
+from mininet.topo import Topo
from lib.topotest import version_cmp
# Import topoJson from lib, to create topology and initial configuration
@@ -68,15 +69,14 @@ from lib.topojson import build_topo_from_json, build_config_from_json
pytestmark = [pytest.mark.bgpd, pytest.mark.staticd]
# Reading the data from JSON File for topology creation
-jsonFile = "{}/static_routes_topo1_ebgp.json".format(CWD)
+JSONFILE = "{}/static_routes_topo1_ebgp.json".format(CWD)
try:
- with open(jsonFile, "r") as topoJson:
+ with open(JSONFILE, "r") as topoJson:
topo = json.load(topoJson)
except IOError:
- assert False, "Could not read file {}".format(jsonFile)
+ assert False, "Could not read file {}".format(JSONFILE)
# Global variables
-BGP_CONVERGENCE = False
ADDR_TYPES = check_address_types()
NETWORK = {"ipv4": ["11.0.20.1/32", "11.0.20.2/32"], "ipv6": ["2::1/128", "2::2/128"]}
NETWORK2 = {"ipv4": "11.0.20.1/32", "ipv6": "2::1/128"}
@@ -98,6 +98,10 @@ class CreateTopo(Topo):
# Building topology from json file
build_topo_from_json(tgen, topo)
+ def dumdum(self):
+ """ Dummy """
+ print("%s", self.name)
+
def setup_module(mod):
"""
@@ -105,7 +109,7 @@ def setup_module(mod):
* `mod`: module name
"""
- global topo
+
testsuite_run_time = time.asctime(time.localtime(time.time()))
logger.info("Testsuite start time: {}".format(testsuite_run_time))
logger.info("=" * 40)
@@ -131,16 +135,14 @@ def setup_module(mod):
pytest.skip(error_msg)
# Checking BGP convergence
- global BGP_CONVERGENCE
- global ADDR_TYPES
+
# Don't run this test if we have any failure.
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
+
# Api call verify whether BGP is converged
- BGP_CONVERGENCE = verify_bgp_convergence(tgen, topo)
- assert BGP_CONVERGENCE is True, "setup_module :Failed \n Error: {}".format(
- BGP_CONVERGENCE
- )
+ converged = verify_bgp_convergence(tgen, topo)
+ assert converged is True, "setup_module :Failed \n Error: {}".format(converged)
logger.info("Running setup_module() done")
@@ -152,7 +154,7 @@ def teardown_module(mod):
* `mod`: module name
"""
- logger.info("Running teardown_module to delete topology")
+ logger.info("Running teardown_module to delete topology: %s", mod)
tgen = get_topogen()
@@ -166,7 +168,11 @@ def teardown_module(mod):
def populate_nh():
- NEXT_HOP_IP = {
+ """
+ Populate nexthops.
+ """
+
+ next_hop_ip = {
"nh1": {
"ipv4": topo["routers"]["r1"]["links"]["r2-link0"]["ipv4"].split("/")[0],
"ipv6": topo["routers"]["r1"]["links"]["r2-link0"]["ipv6"].split("/")[0],
@@ -176,7 +182,7 @@ def populate_nh():
"ipv6": topo["routers"]["r1"]["links"]["r2-link1"]["ipv6"].split("/")[0],
},
}
- return NEXT_HOP_IP
+ return next_hop_ip
#####################################################
@@ -199,7 +205,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
pytest.skip(tgen.errors)
reset_config_on_routers(tgen)
- NEXT_HOP_IP = populate_nh()
+ next_hop_ip = populate_nh()
step(
"Configure IPv4 static route (10.1.1.1) in R2 with next hop N1"
@@ -213,11 +219,11 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
},
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
},
]
}
@@ -233,7 +239,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"On R2, static route installed in RIB using show ip route"
" with 2 ECMP next hop "
)
- nh = [NEXT_HOP_IP["nh1"][addr_type], NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type], next_hop_ip["nh2"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
@@ -268,7 +274,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
"delete": True,
}
]
@@ -284,7 +290,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"On R2, after removing the static route with N1 , "
"route become active with nexthop N2 and vice versa."
)
- nh = NEXT_HOP_IP["nh1"][addr_type]
+ nh = next_hop_ip["nh1"][addr_type]
result = verify_rib(
tgen,
addr_type,
@@ -300,12 +306,13 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
tc_name
)
- nh = [NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Configure the static route with nexthop N1")
@@ -314,7 +321,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
}
]
}
@@ -333,7 +340,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
"delete": True,
}
]
@@ -350,7 +357,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"On R2, after removing the static route with N2 , "
"route become active with nexthop N1 and vice versa."
)
- nh = NEXT_HOP_IP["nh2"][addr_type]
+ nh = next_hop_ip["nh2"][addr_type]
result = verify_rib(
tgen,
addr_type,
@@ -360,15 +367,19 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Configure the static route with nexthop N2")
input_dict_4 = {
@@ -376,7 +387,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
}
]
}
@@ -395,14 +406,15 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
step("Only one the nexthops should be active in RIB.")
- nh = NEXT_HOP_IP["nh2"][addr_type]
+ nh = next_hop_ip["nh2"][addr_type]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
- nh = NEXT_HOP_IP["nh1"][addr_type]
+ nh = next_hop_ip["nh1"][addr_type]
result = verify_rib(
tgen,
addr_type,
@@ -412,15 +424,21 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
dut = "r3"
result = verify_bgp_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
result = verify_rib(
tgen,
@@ -431,27 +449,35 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
next_hop=nh,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
dut = "r2"
- nh = [NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in RIB".format(tc_name)
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
dut = "r2"
step("No shut the nexthop interface N1")
@@ -461,13 +487,14 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"after shut of nexthop N1 , route become active "
"with nexthop N2 and vice versa."
)
- nh = [NEXT_HOP_IP["nh1"][addr_type], NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type], next_hop_ip["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Shut nexthop interface N2")
intf = topo["routers"]["r2"]["links"]["r1-link1"]["interface"]
@@ -478,7 +505,7 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
" after shut of nexthop N1 , route become active with "
"nexthop N2 and vice versa."
)
- nh = NEXT_HOP_IP["nh2"][addr_type]
+ nh = next_hop_ip["nh2"][addr_type]
result = verify_rib(
tgen,
@@ -489,28 +516,36 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in RIB".format(tc_name)
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
step("No shut nexthop interface N2")
dut = "r2"
@@ -520,24 +555,29 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
"after shut of nexthop N1 , route become active "
"with nexthop N2 and vice versa."
)
- nh = [NEXT_HOP_IP["nh1"][addr_type], NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type], next_hop_ip["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in RIB".format(tc_name)
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -553,19 +593,26 @@ def test_static_route_2nh_p0_tc_1_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
write_test_footer(tc_name)
@@ -583,7 +630,7 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
pytest.skip(tgen.errors)
reset_config_on_routers(tgen)
- NEXT_HOP_IP = populate_nh()
+
step(
"Configure IPv4 static route (10.1.1.1) in R2 with next hop N1"
"(28.1.1.2 ) AD 10 and N2 (29.1.1.2) AD 20 , Static route next-hop"
@@ -592,19 +639,19 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
)
reset_config_on_routers(tgen)
- NEXT_HOP_IP = populate_nh()
+ next_hop_ip = populate_nh()
for addr_type in ADDR_TYPES:
input_dict_4 = {
"r2": {
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
"admin_distance": 10,
},
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
"admin_distance": 20,
},
]
@@ -625,33 +672,34 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
"admin_distance": 10,
}
]
}
}
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
rte2_nh2 = {
"r2": {
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
"admin_distance": 20,
}
]
}
}
- nh = [NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh2"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
@@ -664,8 +712,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
step("Configure IBGP IPv4 peering between R2 and R3 router.")
step("Explicit route is added in R3 for R2 nexthop rechability")
@@ -673,11 +722,11 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"r3": {
"static_routes": [
{
- "network": NEXT_HOP_IP["nh1"][addr_type] + "/32",
+ "network": next_hop_ip["nh1"][addr_type] + "/32",
"next_hop": topo["routers"]["r2"]["links"]["r3"][addr_type],
},
{
- "network": NEXT_HOP_IP["nh2"][addr_type] + "/32",
+ "network": next_hop_ip["nh2"][addr_type] + "/32",
"next_hop": topo["routers"]["r2"]["links"]["r3"][addr_type],
},
]
@@ -712,7 +761,7 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
"admin_distance": 10,
"delete": True,
}
@@ -735,13 +784,13 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
"admin_distance": 10,
}
]
}
}
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
@@ -754,26 +803,28 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
rte2_nh2 = {
"r2": {
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
"admin_distance": 20,
}
]
}
}
- nh = [NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, rte2_nh2, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
step("Configure the static route with nexthop N1")
rte1_nh1 = {
@@ -781,7 +832,7 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
"admin_distance": 10,
}
]
@@ -799,7 +850,7 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
"admin_distance": 20,
"delete": True,
}
@@ -816,7 +867,7 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"On R2, after removing the static route with N2 , "
"route become active with nexthop N1 and vice versa."
)
- nh = NEXT_HOP_IP["nh2"][addr_type]
+ nh = next_hop_ip["nh2"][addr_type]
result = verify_rib(
tgen,
addr_type,
@@ -826,15 +877,19 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Configure the static route with nexthop N2")
rte2_nh2 = {
@@ -842,7 +897,7 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"static_routes": [
{
"network": NETWORK[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
"admin_distance": 20,
}
]
@@ -862,7 +917,7 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
step("after shut of nexthop N1 , route become active with nexthop N2")
- nh = NEXT_HOP_IP["nh1"][addr_type]
+ nh = next_hop_ip["nh1"][addr_type]
result = verify_rib(
tgen,
addr_type,
@@ -872,15 +927,19 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
- nh = [NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, rte2_nh2, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("No shut the nexthop interface N1")
shutdown_bringup_interface(tgen, dut, intf, True)
@@ -889,13 +948,14 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"after shut of nexthop N1 , route become active "
"with nexthop N2 and vice versa."
)
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Shut nexthop interface N2")
intf = topo["routers"]["r2"]["links"]["r1-link1"]["interface"]
@@ -906,7 +966,7 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
" after shut of nexthop N1 , route become active with "
"nexthop N2 and vice versa."
)
- nh = NEXT_HOP_IP["nh2"][addr_type]
+ nh = next_hop_ip["nh2"][addr_type]
result = verify_rib(
tgen,
@@ -917,15 +977,19 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("No shut nexthop interface N2")
shutdown_bringup_interface(tgen, dut, intf, True)
@@ -939,33 +1003,34 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
"admin_distance": 10,
}
]
}
}
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
rte2_nh2 = {
"r2": {
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
"admin_distance": 20,
}
]
}
}
- nh = [NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh2"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
@@ -978,8 +1043,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
dut = "r3"
protocol = "bgp"
@@ -994,8 +1060,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
dut = "r2"
step("Reload the FRR router")
@@ -1013,39 +1080,41 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh1"][addr_type],
+ "next_hop": next_hop_ip["nh1"][addr_type],
"admin_distance": 10,
}
]
}
}
- nh = [NEXT_HOP_IP["nh1"][addr_type]]
+ nh = [next_hop_ip["nh1"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
dut = "r3"
protocol = "bgp"
result = verify_bgp_rib(tgen, addr_type, dut, rte1_nh1, next_hop=nh)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
rte2_nh2 = {
"r2": {
"static_routes": [
{
"network": NETWORK2[addr_type],
- "next_hop": NEXT_HOP_IP["nh2"][addr_type],
+ "next_hop": next_hop_ip["nh2"][addr_type],
"admin_distance": 20,
}
]
}
}
- nh = [NEXT_HOP_IP["nh2"][addr_type]]
+ nh = [next_hop_ip["nh2"][addr_type]]
dut = "r2"
protocol = "static"
result = verify_rib(
@@ -1058,14 +1127,16 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
dut = "r3"
protocol = "bgp"
result = verify_bgp_rib(tgen, addr_type, dut, rte2_nh2, next_hop=nh)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
result = verify_rib(
tgen,
@@ -1077,8 +1148,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
write_test_footer(tc_name)
@@ -1148,14 +1220,20 @@ def test_same_rte_from_bgp_static_p0_tc5_ebgp(request):
step("Verify on R3 , route receive on R3 BGP table ")
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
step("Verify route installed in the RIB and FIB of R3")
protocol = "bgp"
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
step(
"Configure 2 links/interfaces between R1 and R3 , keep one"
@@ -1206,15 +1284,19 @@ def test_same_rte_from_bgp_static_p0_tc5_ebgp(request):
)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in BGP RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in BGP RIB".format(
+ tc_name
+ )
protocol = "bgp"
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in RIB".format(tc_name)
step("Remove the static route on R3 configured with active" "interface")
for addr_type in ADDR_TYPES:
@@ -1249,15 +1331,19 @@ def test_same_rte_from_bgp_static_p0_tc5_ebgp(request):
)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in BGP RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in BGP RIB".format(
+ tc_name
+ )
protocol = "bgp"
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in RIB".format(tc_name)
write_test_footer(tc_name)
diff --git a/tests/topotests/static_routing_with_ebgp/test_static_routes_topo2_ebgp.py b/tests/topotests/static_routing_with_ebgp/test_static_routes_topo2_ebgp.py
index 6649915dec..bbb4370a93 100644
--- a/tests/topotests/static_routing_with_ebgp/test_static_routes_topo2_ebgp.py
+++ b/tests/topotests/static_routing_with_ebgp/test_static_routes_topo2_ebgp.py
@@ -314,8 +314,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ebgp(request):
next_hop=nh_all[addr_type],
protocol=protocol,
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
@@ -338,8 +339,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ebgp(request):
dut = "r3"
protocol = "bgp"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step(
"Remove the static route configured with nexthop N1 to N8, one"
@@ -384,8 +386,11 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed\nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed\nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by one")
for addr_type in ADDR_TYPES:
@@ -410,8 +415,11 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed\nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed\nError: Routes are" " missing in RIB".format(
+ tc_name
+ )
protocol = "static"
step("Random shut of the nexthop interfaces")
@@ -455,8 +463,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ebgp(request):
next_hop=nh_all[addr_type],
protocol=protocol,
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Remove random static route with all the nexthop")
dut = "r2"
@@ -493,8 +502,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
for addr_type in ADDR_TYPES:
input_dict_4 = {
@@ -546,8 +556,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ebgp(request):
next_hop=nh_all[addr_type],
protocol=protocol,
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Remove the redistribute static knob")
for addr_type in ADDR_TYPES:
@@ -580,8 +591,11 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
write_test_footer(tc_name)
@@ -661,8 +675,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
nh = []
for nhp in range(2, 9):
@@ -679,8 +694,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ebgp(request):
wait=2,
attempts=3,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step(
"Remove the static route configured with nexthop N1 to N8, one"
@@ -723,8 +739,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by one")
@@ -770,8 +789,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
nh = []
for nhp in range(2, 9):
nh.append(NEXT_HOP_IP["nh" + str(nhp)][addr_type])
@@ -787,8 +807,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ebgp(request):
wait=2,
attempts=3,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -815,8 +836,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -826,8 +850,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
dut = "r2"
protocol = "static"
@@ -955,8 +980,9 @@ def test_static_route_8nh_diff_AD_ebgp_ecmp_p1_tc8_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
nh = []
for nhp in range(2, 9):
@@ -971,8 +997,9 @@ def test_static_route_8nh_diff_AD_ebgp_ecmp_p1_tc8_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step(
"Remove the static route configured with nexthop N1 to N8, one"
@@ -1015,8 +1042,11 @@ def test_static_route_8nh_diff_AD_ebgp_ecmp_p1_tc8_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by one")
@@ -1062,8 +1092,9 @@ def test_static_route_8nh_diff_AD_ebgp_ecmp_p1_tc8_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
nh = []
for nhp in range(2, 9):
nh.append(NEXT_HOP_IP["nh" + str(nhp)][addr_type])
@@ -1077,8 +1108,9 @@ def test_static_route_8nh_diff_AD_ebgp_ecmp_p1_tc8_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -1105,8 +1137,11 @@ def test_static_route_8nh_diff_AD_ebgp_ecmp_p1_tc8_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -1116,8 +1151,9 @@ def test_static_route_8nh_diff_AD_ebgp_ecmp_p1_tc8_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
dut = "r2"
protocol = "static"
@@ -1230,8 +1266,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Verify that highest AD nexthop are inactive")
nh = []
@@ -1249,8 +1286,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ebgp(request):
wait=2,
attempts=3,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
@@ -1312,8 +1350,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by one")
for addr_type in ADDR_TYPES:
@@ -1355,8 +1396,10 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- "lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ "lowest AD is missing in RIB".format(tc_name)
+ )
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -1383,8 +1426,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -1394,8 +1440,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
step("Remove random static route with all the nexthop")
for addr_type in ADDR_TYPES:
@@ -1434,8 +1481,10 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Route "
- " is still present in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Route "
+ " is still present in RIB".format(tc_name)
+ )
step("Reconfigure the deleted routes and verify they are installed")
for nhp in range(1, 9):
@@ -1460,8 +1509,10 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ebgp(request):
protocol = "static"
nh = NEXT_HOP_IP["nh1"][addr_type]
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
- assert result is True, "Testcase {} : Failed \nError: Route "
- " is still present in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route "
+ " is still present in RIB".format(tc_name)
+ )
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -1577,8 +1628,9 @@ def test_static_route_delete_p0_tc11_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Verify that highest AD nexthop are inactive")
nh = []
@@ -1594,8 +1646,9 @@ def test_static_route_delete_p0_tc11_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
@@ -1647,8 +1700,11 @@ def test_static_route_delete_p0_tc11_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
for addr_type in ADDR_TYPES:
for nhp in range(1, 9):
@@ -1715,8 +1771,12 @@ def test_static_route_delete_p0_tc11_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still active in RIB".format(
+ tc_name
+ )
+
write_test_footer(tc_name)
diff --git a/tests/topotests/static_routing_with_ebgp/test_static_routes_topo3_ebgp.py b/tests/topotests/static_routing_with_ebgp/test_static_routes_topo3_ebgp.py
index 175a1123d7..8525e3655c 100644
--- a/tests/topotests/static_routing_with_ebgp/test_static_routes_topo3_ebgp.py
+++ b/tests/topotests/static_routing_with_ebgp/test_static_routes_topo3_ebgp.py
@@ -297,8 +297,9 @@ def test_staticroute_with_ecmp_p0_tc3_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
input_dict_2 = {
@@ -351,8 +352,11 @@ def test_staticroute_with_ecmp_p0_tc3_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by" "one")
@@ -379,8 +383,9 @@ def test_staticroute_with_ecmp_p0_tc3_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -407,8 +412,11 @@ def test_staticroute_with_ecmp_p0_tc3_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -418,8 +426,9 @@ def test_staticroute_with_ecmp_p0_tc3_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -429,8 +438,9 @@ def test_staticroute_with_ecmp_p0_tc3_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
write_test_footer(tc_name)
@@ -509,8 +519,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- " lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ " lowest AD is missing in RIB".format(tc_name)
+ )
nh = []
for nhp in range(2, 9):
@@ -525,8 +537,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " with high AD are active in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes "
+ " with high AD are active in RIB".format(tc_name)
+ )
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
@@ -569,8 +583,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- " lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ " lowest AD is missing in RIB".format(tc_name)
+ )
step(
"Remove the static route configured with nexthop N1 to N8, one"
@@ -613,8 +629,11 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by" "one")
for addr_type in ADDR_TYPES:
@@ -655,8 +674,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- " lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ " lowest AD is missing in RIB".format(tc_name)
+ )
nh = []
for nhp in range(2, 9):
@@ -671,8 +692,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " with high AD are active in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes "
+ " with high AD are active in RIB".format(tc_name)
+ )
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -699,8 +722,11 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -710,8 +736,9 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -740,8 +767,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- " lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ " lowest AD is missing in RIB".format(tc_name)
+ )
nh = []
for nhp in range(2, 9):
@@ -756,8 +785,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ebgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " with high AD are active in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes "
+ " with high AD are active in RIB".format(tc_name)
+ )
write_test_footer(tc_name)
@@ -818,18 +849,25 @@ def test_bgp_local_nexthop_p1_tc14_ebgp(request):
step("Verify R2 BGP table has IPv4 route")
dut = "r2"
result = verify_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB of R2".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB of R2".format(
+ tc_name
+ )
step(" Verify route did not install in the R3 BGP table, RIB/FIB")
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4, expected=False)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in BGP RIB of R2".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes is"
+ " still present in BGP RIB of R2".format(tc_name)
+ )
result = verify_rib(tgen, addr_type, dut, input_dict_4, expected=False)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB of R2".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes is"
+ " still present in RIB of R2".format(tc_name)
+ )
write_test_footer(tc_name)
@@ -889,8 +927,9 @@ def test_frr_intf_name_as_gw_gap_tc4_ebgp_p0(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, next_hop=nh
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
input_dict_nh = {
"r1": {
@@ -902,8 +941,9 @@ def test_frr_intf_name_as_gw_gap_tc4_ebgp_p0(request):
}
}
result = verify_ip_nht(tgen, input_dict_nh)
- assert result is True, "Testcase {} : Failed \nError: Nexthop is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Nexthop is" " missing in RIB".format(tc_name)
step(
"Shut / no shut IPv4 and IPv6 static next hop interface from"
@@ -925,8 +965,9 @@ def test_frr_intf_name_as_gw_gap_tc4_ebgp_p0(request):
next_hop=nh,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
shutdown_bringup_interface(tgen, dut, intf, True)
@@ -970,8 +1011,11 @@ def test_frr_intf_name_as_gw_gap_tc4_ebgp_p0(request):
next_hop=nh,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes" " still present in RIB".format(
+ tc_name
+ )
write_test_footer(tc_name)
@@ -1034,8 +1078,9 @@ def test_static_route_with_tag_p0_tc_13_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Configure route-map on R2 with allow tag1 and deny tag2")
@@ -1116,8 +1161,10 @@ def test_static_route_with_tag_p0_tc_13_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_0, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route with "
- "tag 4002 is still present in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Route with "
+ "tag 4002 is still present in RIB".format(tc_name)
+ )
dut = "r2"
input_dict_1 = {
@@ -1125,8 +1172,10 @@ def test_static_route_with_tag_p0_tc_13_ebgp(request):
}
result = verify_rib(tgen, addr_type, dut, input_dict_0, protocol=protocol)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- "tag 4001 is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ "tag 4001 is missing in RIB".format(tc_name)
+ )
step("Modify the route-map to allow tag2 and deny tag1")
# Create route map
@@ -1164,8 +1213,10 @@ def test_static_route_with_tag_p0_tc_13_ebgp(request):
}
result = verify_rib(tgen, addr_type, dut, input_dict_0, protocol=protocol)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- "tag 4002 is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ "tag 4002 is missing in RIB".format(tc_name)
+ )
input_dict_1 = {
"r2": {"static_routes": [{"network": NETWORK[addr_type], "tag": 4001}]}
@@ -1173,8 +1224,10 @@ def test_static_route_with_tag_p0_tc_13_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_1, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route with "
- "tag 4001 is still present in RIB".format(tc_name, result)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Route with "
+ "tag 4001 is still present in RIB".format(tc_name)
+ )
step("Configure one static route with 2 ECMP nexthop N1 and N2")
step("For N1 configure tag 1 and for N2 configure tag 2")
@@ -1213,8 +1266,9 @@ def test_static_route_with_tag_p0_tc_13_ebgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("shut/no shut of tag1 and tag2 nexthop")
diff --git a/tests/topotests/static_routing_with_ebgp/test_static_routes_topo4_ebgp.py b/tests/topotests/static_routing_with_ebgp/test_static_routes_topo4_ebgp.py
index 5d4950a70e..812b39797f 100644
--- a/tests/topotests/static_routing_with_ebgp/test_static_routes_topo4_ebgp.py
+++ b/tests/topotests/static_routing_with_ebgp/test_static_routes_topo4_ebgp.py
@@ -109,7 +109,7 @@ def setup_module(mod):
Set up the pytest environment.
* `mod`: module name
"""
- global topo
+
testsuite_run_time = time.asctime(time.localtime(time.time()))
logger.info("Testsuite start time: {}".format(testsuite_run_time))
logger.info("=" * 40)
@@ -135,8 +135,7 @@ def setup_module(mod):
pytest.skip(error_msg)
# Checking BGP convergence
- global BGP_CONVERGENCE
- global ADDR_TYPES
+
# Don't run this test if we have any failure.
if tgen.routers_have_failure():
pytest.skip(tgen.errors)
@@ -173,7 +172,7 @@ def teardown_module(mod):
# Tests starting
#
#####################################################
-def static_routes_rmap_pfxlist_p0_tc7_ebgp(request):
+def test_static_routes_rmap_pfxlist_p0_tc7_ebgp(request):
"""
Verify static route are blocked from route-map & prefix-list applied in BGP
nbrs
@@ -200,7 +199,7 @@ def static_routes_rmap_pfxlist_p0_tc7_ebgp(request):
)
for addr_type in ADDR_TYPES:
- # Api call to modfiy BGP timerse
+ # Api call to modify BGP timers
input_dict = {
"r2": {
"bgp": {
@@ -241,8 +240,11 @@ def static_routes_rmap_pfxlist_p0_tc7_ebgp(request):
step(" All BGP nbrs are down as authentication is mismatch on both" " the sides")
bgp_convergence = verify_bgp_convergence(tgen, topo, expected=False)
- assert bgp_convergence is not True, "Testcase {} : "
- "Failed \n BGP nbrs must be down. Error: {}".format(tc_name, bgp_convergence)
+ assert (
+ bgp_convergence is not True
+ ), "Testcase {} : " "Failed \n BGP nbrs must be down. Error: {}".format(
+ tc_name, bgp_convergence
+ )
step(
"Configure 4 IPv4 and 4 IPv6 nbrs with macthing password "
@@ -337,8 +339,9 @@ def static_routes_rmap_pfxlist_p0_tc7_ebgp(request):
"show ip prefix list"
)
result = verify_prefix_lists(tgen, input_dict_2)
- assert result is not True, "Testcase {} : Failed \n"
- " Error: {}".format(tc_name, result)
+ assert result is not True, "Testcase {} : Failed \n" " Error: {}".format(
+ tc_name, result
+ )
step("Redistribute all the routes (connected, static)")
input_dict_2_r1 = {
@@ -588,8 +591,10 @@ def static_routes_rmap_pfxlist_p0_tc7_ebgp(request):
result4 = verify_rib(
tgen, addr_type, dut, input_dict, protocol=protocol, expected=False
)
- assert result4 is not True, "Testcase {} : Failed , VM1 route is "
- "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ assert result4 is not True, (
+ "Testcase {} : Failed , VM1 route is "
+ "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ )
step(
"VM4 and VM6 IPV4 and IPv6 address are present in local and "
@@ -964,8 +969,10 @@ def static_routes_rmap_pfxlist_p0_tc7_ebgp(request):
)
input_dict = {"r1": {"static_routes": [{"network": ntwk_r2_vm1}]}}
result4 = verify_rib(tgen, addr_type, dut, input_dict)
- assert result4 is True, "Testcase {} : Failed , VM1 route is "
- "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ assert result4 is True, (
+ "Testcase {} : Failed , VM1 route is "
+ "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ )
step("vm4 should be present in FRR2")
dut = "r2"
@@ -976,8 +983,10 @@ def static_routes_rmap_pfxlist_p0_tc7_ebgp(request):
)
input_dict = {"r1": {"static_routes": [{"network": ntwk_r2_vm1}]}}
result4 = verify_rib(tgen, addr_type, dut, input_dict)
- assert result4 is True, "Testcase {} : Failed , VM1 route is "
- "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ assert result4 is True, (
+ "Testcase {} : Failed , VM1 route is "
+ "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ )
dut = "r3"
protocol = "bgp"
diff --git a/tests/topotests/static_routing_with_ibgp/test_static_routes_topo1_ibgp.py b/tests/topotests/static_routing_with_ibgp/test_static_routes_topo1_ibgp.py
index 8c2fdfca13..4e23a72423 100644
--- a/tests/topotests/static_routing_with_ibgp/test_static_routes_topo1_ibgp.py
+++ b/tests/topotests/static_routing_with_ibgp/test_static_routes_topo1_ibgp.py
@@ -242,8 +242,9 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Configure IBGP IPv4 peering between R2 and R3 router.")
step("Configure redistribute static in BGP on R2 router")
@@ -296,15 +297,19 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
nh = [NEXT_HOP_IP["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Configure the static route with nexthop N1")
@@ -359,15 +364,19 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
nh = [NEXT_HOP_IP["nh1"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Configure the static route with nexthop N2")
input_dict_4 = {
@@ -398,8 +407,9 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
nh = NEXT_HOP_IP["nh1"][addr_type]
result = verify_rib(
@@ -411,15 +421,21 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
dut = "r3"
result = verify_bgp_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
result = verify_rib(
tgen,
@@ -430,27 +446,35 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
next_hop=nh,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
dut = "r2"
nh = [NEXT_HOP_IP["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in RIB".format(tc_name)
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
dut = "r2"
step("No shut the nexthop interface N1")
@@ -465,8 +489,9 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Shut nexthop interface N2")
intf = topo["routers"]["r2"]["links"]["r1-link1"]["interface"]
@@ -488,8 +513,11 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
nh = [NEXT_HOP_IP["nh1"][addr_type]]
dut = "r2"
@@ -497,19 +525,24 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in RIB".format(tc_name)
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
step("No shut nexthop interface N2")
dut = "r2"
@@ -524,19 +557,24 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " missing in RIB".format(tc_name)
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -552,19 +590,26 @@ def test_static_route_2nh_p0_tc_1_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Route is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Route is" " still present in RIB".format(
+ tc_name
+ )
write_test_footer(tc_name)
@@ -636,8 +681,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
rte2_nh2 = {
"r2": {
@@ -663,8 +709,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
step("Configure IBGP IPv4 peering between R2 and R3 router.")
step("Explicit route is added in R3 for R2 nexthop rechability")
@@ -753,8 +800,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
rte2_nh2 = {
"r2": {
@@ -771,8 +819,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, rte2_nh2, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
step("Configure the static route with nexthop N1")
rte1_nh1 = {
@@ -825,15 +874,19 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
nh = [NEXT_HOP_IP["nh1"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Configure the static route with nexthop N2")
rte2_nh2 = {
@@ -871,15 +924,19 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
nh = [NEXT_HOP_IP["nh2"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, rte2_nh2, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("No shut the nexthop interface N1")
shutdown_bringup_interface(tgen, dut, intf, True)
@@ -893,8 +950,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("Shut nexthop interface N2")
intf = topo["routers"]["r2"]["links"]["r1-link1"]["interface"]
@@ -916,15 +974,19 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
nh = [NEXT_HOP_IP["nh1"][addr_type]]
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB".format(tc_name)
step("No shut nexthop interface N2")
shutdown_bringup_interface(tgen, dut, intf, True)
@@ -950,8 +1012,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
rte2_nh2 = {
"r2": {
@@ -977,8 +1040,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
dut = "r3"
protocol = "bgp"
@@ -993,8 +1057,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
dut = "r2"
step("Reload the FRR router")
@@ -1024,14 +1089,16 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, rte1_nh1, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
dut = "r3"
protocol = "bgp"
result = verify_bgp_rib(tgen, addr_type, dut, rte1_nh1, next_hop=nh)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "missing in RIB".format(tc_name)
rte2_nh2 = {
"r2": {
@@ -1057,14 +1124,16 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
dut = "r3"
protocol = "bgp"
result = verify_bgp_rib(tgen, addr_type, dut, rte2_nh2, next_hop=nh)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
result = verify_rib(
tgen,
@@ -1076,8 +1145,9 @@ def test_static_route_2nh_admin_dist_p0_tc_2_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- "not active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes is" "not active in RIB".format(tc_name)
write_test_footer(tc_name)
diff --git a/tests/topotests/static_routing_with_ibgp/test_static_routes_topo2_ibgp.py b/tests/topotests/static_routing_with_ibgp/test_static_routes_topo2_ibgp.py
index 644ddc02d4..ee0e01b411 100644
--- a/tests/topotests/static_routing_with_ibgp/test_static_routes_topo2_ibgp.py
+++ b/tests/topotests/static_routing_with_ibgp/test_static_routes_topo2_ibgp.py
@@ -318,8 +318,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
next_hop=nh_all[addr_type],
protocol=protocol,
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
@@ -342,8 +343,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
dut = "r3"
protocol = "bgp"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step(
"Remove the static route configured with nexthop N1 to N8, one"
@@ -388,8 +390,11 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed\nError: Routes is"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed\nError: Routes is" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by one")
for addr_type in ADDR_TYPES:
@@ -414,8 +419,11 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed\nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed\nError: Routes are" " missing in RIB".format(
+ tc_name
+ )
protocol = "static"
step("Random shut of the nexthop interfaces")
@@ -423,7 +431,7 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
# Shutdown interface
dut = "r2"
step(
- " interface which is about to be shut no shut between r1 and r2 is " "%s",
+ " interface which is about to be shut no shut between r1 and r2 is %s",
topo["routers"]["r2"]["links"]["r1-link{}".format(randnum)]["interface"],
)
intf = topo["routers"]["r2"]["links"]["r1-link{}".format(randnum)]["interface"]
@@ -459,8 +467,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
next_hop=nh_all[addr_type],
protocol=protocol,
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Remove random static route with all the nexthop")
dut = "r2"
@@ -497,8 +506,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
for addr_type in ADDR_TYPES:
input_dict_4 = {
@@ -550,8 +560,9 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
next_hop=nh_all[addr_type],
protocol=protocol,
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Remove the redistribute static knob")
for addr_type in ADDR_TYPES:
@@ -584,8 +595,11 @@ def test_static_rte_with_8ecmp_nh_p1_tc9_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
write_test_footer(tc_name)
@@ -665,8 +679,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
nh = []
for nhp in range(2, 9):
@@ -683,8 +698,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
wait=2,
attempts=3,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step(
"Remove the static route configured with nexthop N1 to N8, one"
@@ -727,8 +743,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by one")
@@ -774,8 +793,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
nh = []
for nhp in range(2, 9):
nh.append(NEXT_HOP_IP["nh" + str(nhp)][addr_type])
@@ -791,8 +811,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
wait=2,
attempts=3,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -819,8 +840,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -830,8 +854,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
protocol = "bgp"
# this is next hop reachability route in r3 as we are using ibgp
@@ -856,8 +881,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
for addr_type in ADDR_TYPES:
input_dict_4 = {"r2": {"static_routes": [{"network": PREFIX1[addr_type]}]}}
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
protocol = "static"
dut = "r2"
@@ -866,7 +892,7 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {}: Failed \n " "Error: Routes are missing in RIB".format(tc_name)
+ ), "Testcase {}: Failed \n Error: Routes are missing in RIB".format(tc_name)
protocol = "bgp"
dut = "r3"
@@ -875,7 +901,7 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {}: Failed \n " "Error: Routes are missing in RIB".format(tc_name)
+ ), "Testcase {}: Failed \n Error: Routes are missing in RIB".format(tc_name)
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -888,7 +914,7 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ ), "Testcase {} : Failed \nError: Routes are still present in RIB".format(
tc_name
)
@@ -912,7 +938,7 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ ), "Testcase {} : Failed \nError: Routes are still present in RIB".format(
tc_name
)
@@ -923,7 +949,7 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ ), "Testcase {} : Failed \nError: Routes are still present in RIB".format(
tc_name
)
@@ -964,8 +990,10 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc6_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " strill present in RIB of R3".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes are"
+ " strill present in RIB of R3".format(tc_name)
+ )
write_test_footer(tc_name)
@@ -1060,8 +1088,9 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
nh = []
for nhp in range(2, 9):
@@ -1076,8 +1105,9 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step(
"Remove the static route configured with nexthop N1 to N8, one"
@@ -1120,8 +1150,11 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by one")
@@ -1167,8 +1200,9 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
nh = []
for nhp in range(2, 9):
nh.append(NEXT_HOP_IP["nh" + str(nhp)][addr_type])
@@ -1182,8 +1216,9 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -1210,8 +1245,11 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -1221,8 +1259,9 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
dut = "r2"
protocol = "bgp"
@@ -1249,8 +1288,9 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
for addr_type in ADDR_TYPES:
input_dict_4 = {"r2": {"static_routes": [{"network": PREFIX1[addr_type]}]}}
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
protocol = "static"
dut = "r2"
@@ -1259,7 +1299,7 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {}: Failed \n " "Error: Routes are missing in RIB".format(tc_name)
+ ), "Testcase {}: Failed \n Error: Routes are missing in RIB".format(tc_name)
protocol = "bgp"
dut = "r3"
@@ -1268,7 +1308,7 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {}: Failed \n " "Error: Routes are missing in RIB".format(tc_name)
+ ), "Testcase {}: Failed \n Error: Routes are missing in RIB".format(tc_name)
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -1281,7 +1321,7 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ ), "Testcase {} : Failed \n Error: Routes are still present in RIB".format(
tc_name
)
@@ -1305,7 +1345,7 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ ), "Testcase {} : Failed \n Error: Routes are still present in RIB".format(
tc_name
)
@@ -1316,7 +1356,7 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
assert (
result is True
- ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ ), "Testcase {} : Failed \n Error: Routes are still present in RIB".format(
tc_name
)
@@ -1357,8 +1397,10 @@ def test_static_route_8nh_diff_AD_ibgp_ecmp_p1_tc7_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB of R3".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes are"
+ " still present in RIB of R3".format(tc_name)
+ )
write_test_footer(tc_name)
@@ -1453,8 +1495,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Verify that highest AD nexthop are inactive")
nh = []
@@ -1472,8 +1515,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
wait=2,
attempts=3,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
@@ -1535,8 +1579,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by one")
for addr_type in ADDR_TYPES:
@@ -1578,8 +1625,10 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- "lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ "lowest AD is missing in RIB".format(tc_name)
+ )
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -1606,8 +1655,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -1617,8 +1669,9 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
step("Remove random static route with all the nexthop")
for addr_type in ADDR_TYPES:
@@ -1657,8 +1710,10 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Route "
- " is still present in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Route "
+ " is still present in RIB".format(tc_name)
+ )
step("Reconfigure the deleted routes and verify they are installed")
for nhp in range(1, 9):
@@ -1683,8 +1738,10 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
protocol = "static"
nh = NEXT_HOP_IP["nh1"][addr_type]
result = verify_rib(tgen, addr_type, dut, input_dict_4, protocol=protocol)
- assert result is True, "Testcase {} : Failed \nError: Route "
- " is still present in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route "
+ " is still present in RIB".format(tc_name)
+ )
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -1704,9 +1761,7 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
)
assert (
result is True
- ), "Testcase {} : Failed \nError: Route " " is missing in RIB".format(
- tc_name
- )
+ ), "Testcase {} : Failed \nError: Route is missing in RIB".format(tc_name)
step("Remove the redistribute static knob")
for addr_type in ADDR_TYPES:
@@ -1750,8 +1805,11 @@ def test_static_route_8nh_diff_AD_bgp_ecmp_p1_tc10_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
write_test_footer(tc_name)
@@ -1845,8 +1903,9 @@ def test_static_route_delete_p0_tc11_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Verify that highest AD nexthop are inactive")
nh = []
@@ -1862,8 +1921,9 @@ def test_static_route_delete_p0_tc11_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " are missing in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes " " are missing in RIB".format(tc_name)
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
@@ -1915,8 +1975,11 @@ def test_static_route_delete_p0_tc11_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, protocol=protocol, expected=False
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
for addr_type in ADDR_TYPES:
for nhp in range(1, 9):
@@ -1983,8 +2046,12 @@ def test_static_route_delete_p0_tc11_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still active in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still active in RIB".format(
+ tc_name
+ )
+
write_test_footer(tc_name)
diff --git a/tests/topotests/static_routing_with_ibgp/test_static_routes_topo3_ibgp.py b/tests/topotests/static_routing_with_ibgp/test_static_routes_topo3_ibgp.py
index 8f9d88a442..c84c88ac35 100644
--- a/tests/topotests/static_routing_with_ibgp/test_static_routes_topo3_ibgp.py
+++ b/tests/topotests/static_routing_with_ibgp/test_static_routes_topo3_ibgp.py
@@ -298,8 +298,9 @@ def test_staticroute_with_ecmp_p0_tc3_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
input_dict_2 = {
@@ -352,8 +353,11 @@ def test_staticroute_with_ecmp_p0_tc3_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by" "one")
@@ -380,8 +384,9 @@ def test_staticroute_with_ecmp_p0_tc3_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -408,8 +413,11 @@ def test_staticroute_with_ecmp_p0_tc3_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -419,8 +427,9 @@ def test_staticroute_with_ecmp_p0_tc3_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -430,8 +439,9 @@ def test_staticroute_with_ecmp_p0_tc3_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \nError: Routes are"
- " missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes are" " missing in RIB".format(tc_name)
write_test_footer(tc_name)
@@ -510,8 +520,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- " lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ " lowest AD is missing in RIB".format(tc_name)
+ )
nh = []
for nhp in range(2, 9):
@@ -526,8 +538,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " with high AD are active in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes "
+ " with high AD are active in RIB".format(tc_name)
+ )
step("Configure redistribute static in BGP on R2 router")
for addr_type in ADDR_TYPES:
@@ -570,8 +584,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- " lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ " lowest AD is missing in RIB".format(tc_name)
+ )
step(
"Remove the static route configured with nexthop N1 to N8, one"
@@ -614,8 +630,11 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \nError: Routes are" " still present in RIB".format(
+ tc_name
+ )
step("Configure the static route with nexthop N1 to N8, one by" "one")
for addr_type in ADDR_TYPES:
@@ -656,8 +675,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- " lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ " lowest AD is missing in RIB".format(tc_name)
+ )
nh = []
for nhp in range(2, 9):
@@ -672,8 +693,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " with high AD are active in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes "
+ " with high AD are active in RIB".format(tc_name)
+ )
step("Random shut of the nexthop interfaces")
randnum = random.randint(0, 7)
@@ -700,8 +723,11 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \n"
- "Error: Routes are still present in RIB".format(tc_name)
+ assert (
+ result is not True
+ ), "Testcase {} : Failed \n" "Error: Routes are still present in RIB".format(
+ tc_name
+ )
step("Random no shut of the nexthop interfaces")
for addr_type in ADDR_TYPES:
@@ -711,8 +737,9 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_5, next_hop=nhip, protocol=protocol
)
- assert result is True, "Testcase {} : Failed \n"
- "Error: Routes are missing in RIB".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \n" "Error: Routes are missing in RIB".format(tc_name)
step("Reload the FRR router")
# stop/start -> restart FRR router and verify
@@ -741,8 +768,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
result = verify_rib(
tgen, addr_type, dut, input_dict_4, next_hop=nh, protocol=protocol, fib=True
)
- assert result is True, "Testcase {} : Failed \nError: Route with "
- " lowest AD is missing in RIB".format(tc_name)
+ assert result is True, (
+ "Testcase {} : Failed \nError: Route with "
+ " lowest AD is missing in RIB".format(tc_name)
+ )
nh = []
for nhp in range(2, 9):
@@ -757,8 +786,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
fib=True,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes "
- " with high AD are active in RIB".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes "
+ " with high AD are active in RIB".format(tc_name)
+ )
step("Remove the redistribute static knob")
@@ -796,8 +827,10 @@ def test_staticroute_with_ecmp_with_diff_AD_p0_tc4_ibgp(request):
protocol=protocol,
expected=False,
)
- assert result is not True, "Testcase {} : Failed \nError: Routes are"
- " strill present in RIB of R3".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes are"
+ " still present in RIB of R3".format(tc_name)
+ )
write_test_footer(tc_name)
@@ -858,18 +891,25 @@ def test_bgp_local_nexthop_p1_tc14_ibgp(request):
step("Verify R2 BGP table has IPv4 route")
dut = "r2"
result = verify_rib(tgen, addr_type, dut, input_dict_4)
- assert result is True, "Testcase {} : Failed \nError: Routes is"
- " missing in RIB of R2".format(tc_name)
+ assert (
+ result is True
+ ), "Testcase {} : Failed \nError: Routes is" " missing in RIB of R2".format(
+ tc_name
+ )
step(" Verify route did not install in the R3 BGP table, RIB/FIB")
dut = "r3"
result = verify_bgp_rib(tgen, addr_type, dut, input_dict_4, expected=False)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in BGP RIB of R2".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes is"
+ " still present in BGP RIB of R2".format(tc_name)
+ )
result = verify_rib(tgen, addr_type, dut, input_dict_4, expected=False)
- assert result is not True, "Testcase {} : Failed \nError: Routes is"
- " still present in RIB of R2".format(tc_name)
+ assert result is not True, (
+ "Testcase {} : Failed \nError: Routes is"
+ " still present in RIB of R2".format(tc_name)
+ )
write_test_footer(tc_name)
diff --git a/tests/topotests/static_routing_with_ibgp/test_static_routes_topo4_ibgp.py b/tests/topotests/static_routing_with_ibgp/test_static_routes_topo4_ibgp.py
index 09c437c3c4..a82ee64538 100644
--- a/tests/topotests/static_routing_with_ibgp/test_static_routes_topo4_ibgp.py
+++ b/tests/topotests/static_routing_with_ibgp/test_static_routes_topo4_ibgp.py
@@ -239,8 +239,11 @@ def test_static_routes_rmap_pfxlist_p0_tc7_ibgp(request):
step(" All BGP nbrs are down as authentication is mismatch on both" " the sides")
bgp_convergence = verify_bgp_convergence(tgen, topo, expected=False)
- assert bgp_convergence is not True, "Testcase {} : "
- "Failed \n BGP nbrs must be down. Error: {}".format(tc_name, bgp_convergence)
+ assert (
+ bgp_convergence is not True
+ ), "Testcase {} : " "Failed \n BGP nbrs must be down. Error: {}".format(
+ tc_name, bgp_convergence
+ )
step(
"Configure 4 IPv4 and 4 IPv6 nbrs with macthing password "
@@ -335,8 +338,9 @@ def test_static_routes_rmap_pfxlist_p0_tc7_ibgp(request):
"show ip prefix list"
)
result = verify_prefix_lists(tgen, input_dict_2)
- assert result is not True, "Testcase {} : Failed \n"
- " Error: {}".format(tc_name, result)
+ assert result is not True, "Testcase {} : Failed \n" " Error: {}".format(
+ tc_name, result
+ )
step("Redistribute all the routes (connected, static)")
input_dict_2_r1 = {
@@ -586,8 +590,10 @@ def test_static_routes_rmap_pfxlist_p0_tc7_ibgp(request):
result4 = verify_rib(
tgen, addr_type, dut, input_dict, protocol=protocol, expected=False
)
- assert result4 is not True, "Testcase {} : Failed , VM1 route is "
- "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ assert result4 is not True, (
+ "Testcase {} : Failed , VM1 route is "
+ "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ )
step(
"VM4 and VM6 IPV4 and IPv6 address are present in local and "
@@ -962,8 +968,10 @@ def test_static_routes_rmap_pfxlist_p0_tc7_ibgp(request):
)
input_dict = {"r1": {"static_routes": [{"network": ntwk_r2_vm1}]}}
result4 = verify_rib(tgen, addr_type, dut, input_dict)
- assert result4 is True, "Testcase {} : Failed , VM1 route is "
- "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ assert result4 is True, (
+ "Testcase {} : Failed , VM1 route is "
+ "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ )
step("vm4 should be present in FRR2")
dut = "r2"
@@ -974,8 +982,10 @@ def test_static_routes_rmap_pfxlist_p0_tc7_ibgp(request):
)
input_dict = {"r1": {"static_routes": [{"network": ntwk_r2_vm1}]}}
result4 = verify_rib(tgen, addr_type, dut, input_dict)
- assert result4 is True, "Testcase {} : Failed , VM1 route is "
- "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ assert result4 is True, (
+ "Testcase {} : Failed , VM1 route is "
+ "not filtered out via prefix list. \n Error: {}".format(tc_name, result4)
+ )
dut = "r3"
protocol = "bgp"
diff --git a/tools/gen_northbound_callbacks.c b/tools/gen_northbound_callbacks.c
index a785f43cdf..1705a3203f 100644
--- a/tools/gen_northbound_callbacks.c
+++ b/tools/gen_northbound_callbacks.c
@@ -118,7 +118,7 @@ static void replace_hyphens_by_underscores(char *str)
*p++ = '_';
}
-static void generate_callback_name(struct lys_node *snode,
+static void generate_callback_name(const struct lysc_node *snode,
enum nb_operation operation, char *buffer,
size_t size)
{
@@ -126,14 +126,14 @@ static void generate_callback_name(struct lys_node *snode,
struct listnode *ln;
snodes = list_new();
- for (; snode; snode = lys_parent(snode)) {
+ for (; snode; snode = snode->parent) {
/* Skip schema-only snodes. */
if (CHECK_FLAG(snode->nodetype, LYS_USES | LYS_CHOICE | LYS_CASE
| LYS_INPUT
| LYS_OUTPUT))
continue;
- listnode_add_head(snodes, snode);
+ listnode_add_head(snodes, (void *)snode);
}
memset(buffer, 0, size);
@@ -153,7 +153,7 @@ static void generate_prototype(const struct nb_callback_info *ncinfo,
printf("%s%s(%s);\n", ncinfo->return_type, cb_name, ncinfo->arguments);
}
-static int generate_prototypes(const struct lys_node *snode, void *arg)
+static int generate_prototypes(const struct lysc_node *snode, void *arg)
{
switch (snode->nodetype) {
case LYS_CONTAINER:
@@ -175,8 +175,8 @@ static int generate_prototypes(const struct lys_node *snode, void *arg)
|| !nb_operation_is_valid(cb->operation, snode))
continue;
- generate_callback_name((struct lys_node *)snode, cb->operation,
- cb_name, sizeof(cb_name));
+ generate_callback_name(snode, cb->operation, cb_name,
+ sizeof(cb_name));
generate_prototype(cb, cb_name);
}
@@ -213,7 +213,7 @@ static void generate_callback(const struct nb_callback_info *ncinfo,
printf("\treturn %s;\n}\n\n", ncinfo->return_value);
}
-static int generate_callbacks(const struct lys_node *snode, void *arg)
+static int generate_callbacks(const struct lysc_node *snode, void *arg)
{
bool first = true;
@@ -250,15 +250,15 @@ static int generate_callbacks(const struct lys_node *snode, void *arg)
first = false;
}
- generate_callback_name((struct lys_node *)snode, cb->operation,
- cb_name, sizeof(cb_name));
+ generate_callback_name(snode, cb->operation, cb_name,
+ sizeof(cb_name));
generate_callback(cb, cb_name);
}
return YANG_ITER_CONTINUE;
}
-static int generate_nb_nodes(const struct lys_node *snode, void *arg)
+static int generate_nb_nodes(const struct lysc_node *snode, void *arg)
{
bool first = true;
@@ -295,8 +295,8 @@ static int generate_nb_nodes(const struct lys_node *snode, void *arg)
first = false;
}
- generate_callback_name((struct lys_node *)snode, cb->operation,
- cb_name, sizeof(cb_name));
+ generate_callback_name(snode, cb->operation, cb_name,
+ sizeof(cb_name));
printf("\t\t\t\t.%s = %s,\n", nb_operation_name(cb->operation),
cb_name);
}
@@ -350,18 +350,21 @@ int main(int argc, char *argv[])
if (argc != 1)
usage(EXIT_FAILURE);
- yang_init(false);
+ yang_init(false, true);
if (search_path)
ly_ctx_set_searchdir(ly_native_ctx, search_path);
/* Load all FRR native models to ensure all augmentations are loaded. */
yang_module_load_all();
+
module = yang_module_find(argv[0]);
if (!module)
/* Non-native FRR module (e.g. modules from unit tests). */
module = yang_module_load(argv[0]);
+ yang_init_loading_complete();
+
/* Create a nb_node for all YANG schema nodes. */
nb_nodes_create();
diff --git a/tools/gen_yang_deviations.c b/tools/gen_yang_deviations.c
index 53a53c943c..8aa5695d3e 100644
--- a/tools/gen_yang_deviations.c
+++ b/tools/gen_yang_deviations.c
@@ -32,7 +32,7 @@ static void __attribute__((noreturn)) usage(int status)
exit(status);
}
-static int generate_yang_deviation(const struct lys_node *snode, void *arg)
+static int generate_yang_deviation(const struct lysc_node *snode, void *arg)
{
char xpath[XPATH_MAXLEN];
@@ -65,14 +65,13 @@ int main(int argc, char *argv[])
if (argc != 1)
usage(EXIT_FAILURE);
- yang_init(false);
+ yang_init(false, false);
/* Load YANG module. */
module = yang_module_load(argv[0]);
/* Generate deviations. */
- yang_snodes_iterate(module->info, generate_yang_deviation,
- YANG_ITER_FILTER_IMPLICIT, NULL);
+ yang_snodes_iterate(module->info, generate_yang_deviation, 0, NULL);
/* Cleanup and exit. */
yang_terminate();
diff --git a/bgpd/valgrind.supp b/tools/valgrind.supp
index 31f2477a58..fbfb640b2a 100644
--- a/bgpd/valgrind.supp
+++ b/tools/valgrind.supp
@@ -16,3 +16,17 @@
obj:/usr/lib/x86_64-linux-gnu/libyang.so.1.9.2
fun:ly_load_plugins
}
+{
+ <zprivs_init leak in a function we do not control>
+ Memcheck:Leak
+ fun:calloc
+ fun:cap_init
+ fun:zprivs_caps_init
+}
+{
+ <sqlite3 leak in a function we do not control>
+ Memcheck:Leak
+ fun:malloc
+ ...
+ fun:sqlite3_step
+}
diff --git a/vrrpd/vrrp_vty.c b/vrrpd/vrrp_vty.c
index 7d9cea3adc..6c3863132d 100644
--- a/vrrpd/vrrp_vty.c
+++ b/vrrpd/vrrp_vty.c
@@ -729,7 +729,7 @@ static int vrrp_config_write_interface(struct vty *vty)
FOR_ALL_INTERFACES (vrf, ifp) {
struct lyd_node *dnode;
- dnode = yang_dnode_get(
+ dnode = yang_dnode_getf(
running_config->dnode,
"/frr-interface:lib/interface[name='%s'][vrf='%s']",
ifp->name, vrf->name);
diff --git a/vtysh/extract.pl.in b/vtysh/extract.pl.in
index 37ae0ab189..86cf8c9657 100755
--- a/vtysh/extract.pl.in
+++ b/vtysh/extract.pl.in
@@ -42,7 +42,7 @@ sub scan_file {
$cppadd = $fabricd ? "-DFABRICD=1" : "";
- open (FH, "@CPP@ -P -std=gnu11 -DHAVE_CONFIG_H -DVTYSH_EXTRACT_PL -Ivtysh/@top_builddir@ -Ivtysh/@top_srcdir@ -Ivtysh/@top_srcdir@/lib -Ivtysh/@top_builddir@/lib -Ivtysh/@top_srcdir@/bgpd -Ivtysh/@top_srcdir@/bgpd/rfapi @LUA_INCLUDE@ @CPPFLAGS@ $cppadd $file |");
+ open (FH, "@CPP@ -P -std=gnu11 -DHAVE_CONFIG_H -DVTYSH_EXTRACT_PL -Ivtysh/@top_builddir@ -Ivtysh/@top_srcdir@ -Ivtysh/@top_srcdir@/lib -Ivtysh/@top_builddir@/lib -Ivtysh/@top_srcdir@/bgpd -Ivtysh/@top_srcdir@/bgpd/rfapi @LUA_INCLUDE@ @CPPFLAGS@ @LIBYANG_CFLAGS@ $cppadd $file |");
local $/; undef $/;
$line = <FH>;
if (!close (FH)) {
diff --git a/vtysh/vtysh.c b/vtysh/vtysh.c
index 336bd44a49..111c2dbc03 100644
--- a/vtysh/vtysh.c
+++ b/vtysh/vtysh.c
@@ -2890,6 +2890,37 @@ DEFUN (show_yang_operational_data,
return show_one_daemon(vty, argv, argc - 1, argv[argc - 1]->text);
}
+DEFUN(show_yang_module, show_yang_module_cmd,
+ "show yang module [module-translator WORD] " DAEMONS_LIST,
+ SHOW_STR
+ "YANG information\n"
+ "Show loaded modules\n"
+ "YANG module translator\n"
+ "YANG module translator\n" DAEMONS_STR)
+{
+ return show_one_daemon(vty, argv, argc - 1, argv[argc - 1]->text);
+}
+
+DEFUN(show_yang_module_detail, show_yang_module_detail_cmd,
+ "show yang module\
+ [module-translator WORD]\
+ WORD <compiled|summary|tree|yang|yin> " DAEMONS_LIST,
+ SHOW_STR
+ "YANG information\n"
+ "Show loaded modules\n"
+ "YANG module translator\n"
+ "YANG module translator\n"
+ "Module name\n"
+ "Display compiled module in YANG format\n"
+ "Display summary information about the module\n"
+ "Display module in the tree (RFC 8340) format\n"
+ "Display module in the YANG format\n"
+ "Display module in the YIN format\n" DAEMONS_STR)
+{
+ return show_one_daemon(vty, argv, argc - 1, argv[argc - 1]->text);
+}
+
+
DEFUNSH(VTYSH_ALL, debug_nb,
debug_nb_cmd,
"[no] debug northbound\
@@ -4449,6 +4480,8 @@ void vtysh_init_vty(void)
/* northbound */
install_element(ENABLE_NODE, &show_config_running_cmd);
install_element(ENABLE_NODE, &show_yang_operational_data_cmd);
+ install_element(ENABLE_NODE, &show_yang_module_cmd);
+ install_element(ENABLE_NODE, &show_yang_module_detail_cmd);
install_element(ENABLE_NODE, &debug_nb_cmd);
install_element(CONFIG_NODE, &debug_nb_cmd);
diff --git a/watchfrr/subdir.am b/watchfrr/subdir.am
index 677f85efcb..e899b895e7 100644
--- a/watchfrr/subdir.am
+++ b/watchfrr/subdir.am
@@ -13,7 +13,7 @@ noinst_HEADERS += \
watchfrr/watchfrr_errors.h \
# end
-watchfrr_watchfrr_LDADD = lib/libfrr.la $(LIBCAP)
+watchfrr_watchfrr_LDADD = lib/libfrr.la $(LIBYANG_LIBS) $(LIBCAP)
watchfrr_watchfrr_SOURCES = \
watchfrr/watchfrr.c \
watchfrr/watchfrr_errors.c \
diff --git a/yang/embedmodel.py b/yang/embedmodel.py
index 39bf2bb922..a77a81363f 100644
--- a/yang/embedmodel.py
+++ b/yang/embedmodel.py
@@ -94,7 +94,7 @@ else:
sub_name = search_name.group(1)
name = re_mainname.search(data).group(1)
sub_rev = re_rev.search(data).group(1)
- fmt = "LYS_YANG"
+ fmt = "LYS_IN_YANG"
if name is None or rev is None:
raise ValueError("cannot determine YANG module name and revision")
diff --git a/yang/frr-bgp-bmp.yang b/yang/frr-bgp-bmp.yang
index 344448f104..2417874ea0 100644
--- a/yang/frr-bgp-bmp.yang
+++ b/yang/frr-bgp-bmp.yang
@@ -13,8 +13,6 @@ submodule frr-bgp-bmp {
prefix frr-bt;
}
- include frr-bgp-common-multiprotocol;
-
organization
"FRRouting";
contact
diff --git a/yang/frr-bgp-common-multiprotocol.yang b/yang/frr-bgp-common-multiprotocol.yang
index aefdf02ba6..4b080613d6 100644
--- a/yang/frr-bgp-common-multiprotocol.yang
+++ b/yang/frr-bgp-common-multiprotocol.yang
@@ -9,8 +9,6 @@ submodule frr-bgp-common-multiprotocol {
prefix frr-rt;
}
- include frr-bgp-common;
-
organization
"FRRouting";
contact
@@ -67,7 +65,7 @@ submodule frr-bgp-common-multiprotocol {
"A common grouping used for contents of the list that is used
for AFI-SAFI entries.";
container ipv4-unicast {
- when "derived-from-or-self(../afi-safi-name, 'ipv4-unicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:ipv4-unicast')" {
description
"Include this container for IPv4 Unicast specific
configuration.";
@@ -77,7 +75,7 @@ submodule frr-bgp-common-multiprotocol {
}
container ipv6-unicast {
- when "derived-from-or-self(../afi-safi-name, 'ipv6-unicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:ipv6-unicast')" {
description
"Include this container for IPv6 Unicast specific
configuration.";
@@ -87,7 +85,7 @@ submodule frr-bgp-common-multiprotocol {
}
container ipv4-labeled-unicast {
- when "derived-from-or-self(../afi-safi-name, 'ipv4-labeled-unicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:ipv4-labeled-unicast')" {
description
"Include this container for IPv4 Labeled Unicast specific
configuration.";
@@ -97,7 +95,7 @@ submodule frr-bgp-common-multiprotocol {
}
container ipv6-labeled-unicast {
- when "derived-from-or-self(../afi-safi-name, 'ipv6-labeled-unicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:ipv6-labeled-unicast')" {
description
"Include this container for IPv6 Labeled Unicast specific
configuration.";
@@ -107,7 +105,7 @@ submodule frr-bgp-common-multiprotocol {
}
container l3vpn-ipv4-unicast {
- when "derived-from-or-self(../afi-safi-name, 'l3vpn-ipv4-unicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:l3vpn-ipv4-unicast')" {
description
"Include this container for IPv4 Unicast L3VPN specific
configuration.";
@@ -117,7 +115,7 @@ submodule frr-bgp-common-multiprotocol {
}
container l3vpn-ipv6-unicast {
- when "derived-from-or-self(../afi-safi-name, 'l3vpn-ipv6-unicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:l3vpn-ipv6-unicast')" {
description
"Include this container for unicast IPv6 L3VPN specific
configuration.";
@@ -127,7 +125,7 @@ submodule frr-bgp-common-multiprotocol {
}
container l3vpn-ipv4-multicast {
- when "derived-from-or-self(../afi-safi-name, 'l3vpn-ipv4-multicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:l3vpn-ipv4-multicast')" {
description
"Include this container for multicast IPv4 L3VPN specific
configuration.";
@@ -137,7 +135,7 @@ submodule frr-bgp-common-multiprotocol {
}
container l3vpn-ipv6-multicast {
- when "derived-from-or-self(../afi-safi-name, 'l3vpn-ipv6-multicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:l3vpn-ipv6-multicast')" {
description
"Include this container for multicast IPv6 L3VPN specific
configuration.";
@@ -147,7 +145,7 @@ submodule frr-bgp-common-multiprotocol {
}
container l2vpn-vpls {
- when "derived-from-or-self(../afi-safi-name, 'l2vpn-vpls')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:l2vpn-vpls')" {
description
"Include this container for BGP-signalled VPLS specific
configuration.";
@@ -157,7 +155,7 @@ submodule frr-bgp-common-multiprotocol {
}
container l2vpn-evpn {
- when "derived-from-or-self(../afi-safi-name, 'l2vpn-evpn')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:l2vpn-evpn')" {
description
"Include this container for BGP EVPN specific
configuration.";
@@ -167,7 +165,7 @@ submodule frr-bgp-common-multiprotocol {
}
container ipv4-multicast {
- when "derived-from-or-self(../afi-safi-name, 'ipv4-multicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:ipv4-multicast')" {
description
"Include this container for IPv4 multicast specific
configuration.";
@@ -177,7 +175,7 @@ submodule frr-bgp-common-multiprotocol {
}
container ipv6-multicast {
- when "derived-from-or-self(../afi-safi-name, 'ipv6-multicast')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:ipv6-multicast')" {
description
"Include this container for IPv6 multicast specific
configuration.";
@@ -187,7 +185,7 @@ submodule frr-bgp-common-multiprotocol {
}
container ipv4-flowspec {
- when "derived-from-or-self(../afi-safi-name, 'ipv4-flowspec')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:ipv4-flowspec')" {
description
"Include this container for IPv4 flowspec specific
configuration.";
@@ -197,7 +195,7 @@ submodule frr-bgp-common-multiprotocol {
}
container ipv6-flowspec {
- when "derived-from-or-self(../afi-safi-name, 'ipv6-flowspec')" {
+ when "derived-from-or-self(../afi-safi-name, 'frr-rt:ipv6-flowspec')" {
description
"Include this container for IPv6 flowspec specific
configuration.";
diff --git a/yang/frr-bgp-common-structure.yang b/yang/frr-bgp-common-structure.yang
index 7b987a93cd..232c78899e 100644
--- a/yang/frr-bgp-common-structure.yang
+++ b/yang/frr-bgp-common-structure.yang
@@ -25,8 +25,6 @@ submodule frr-bgp-common-structure {
prefix frr-bt;
}
- include frr-bgp-common;
-
organization
"FRRouting";
contact
@@ -118,7 +116,6 @@ submodule frr-bgp-common-structure {
}
leaf no-prepend {
- when "../local-as != 0";
type boolean;
default "false";
description
diff --git a/yang/frr-bgp-common.yang b/yang/frr-bgp-common.yang
index 1a19d52965..157e4cd614 100644
--- a/yang/frr-bgp-common.yang
+++ b/yang/frr-bgp-common.yang
@@ -455,11 +455,14 @@ submodule frr-bgp-common {
grouping global-network-config {
leaf import-check {
type boolean;
- default "false";
+ default "true";
description
"When set to 'true' bgp creates entries for network statements
if a matching prefix exists in the rib. When set to 'false' bgp
- creates entries for networks that the router cannot reach.";
+ creates entries for networks that the router cannot reach.
+
+ In FRR versions < 7.4 this used to default to 'false' this is an
+ incompatible backward change";
}
}
diff --git a/yang/frr-bgp-neighbor.yang b/yang/frr-bgp-neighbor.yang
index a4b50b156b..d6688eed29 100644
--- a/yang/frr-bgp-neighbor.yang
+++ b/yang/frr-bgp-neighbor.yang
@@ -5,9 +5,6 @@ submodule frr-bgp-neighbor {
prefix "bgp";
}
- include frr-bgp-common-structure;
- include frr-bgp-common-multiprotocol;
-
organization
"FRRouting";
contact
diff --git a/yang/frr-bgp-peer-group.yang b/yang/frr-bgp-peer-group.yang
index 452ff1a12f..746ced30cc 100644
--- a/yang/frr-bgp-peer-group.yang
+++ b/yang/frr-bgp-peer-group.yang
@@ -13,9 +13,6 @@ submodule frr-bgp-peer-group {
prefix frr-bt;
}
- include frr-bgp-common-structure;
- include frr-bgp-neighbor;
-
organization
"FRRouting";
contact
diff --git a/yang/frr-bgp-route-map.yang b/yang/frr-bgp-route-map.yang
index 96505b08a8..ca60c8f7b6 100644
--- a/yang/frr-bgp-route-map.yang
+++ b/yang/frr-bgp-route-map.yang
@@ -332,7 +332,7 @@ module frr-bgp-route-map {
augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:rmap-match-condition/frr-route-map:match-condition" {
case local-preference {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'match-local-preference')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-local-preference')";
leaf local-preference {
type uint32 {
range "0..4294967295";
@@ -341,14 +341,14 @@ module frr-bgp-route-map {
}
case script {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'match-script')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-script')";
leaf script {
type string;
}
}
case origin {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'match-origin')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-origin')";
leaf origin {
type enumeration {
enum "egp" {
@@ -371,7 +371,7 @@ module frr-bgp-route-map {
}
case rpki {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'rpki')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:rpki')";
leaf rpki {
type enumeration {
enum "invalid" {
@@ -394,7 +394,7 @@ module frr-bgp-route-map {
}
case probability {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'probability')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:probability')";
leaf probability {
type uint8 {
range "0..100";
@@ -403,14 +403,14 @@ module frr-bgp-route-map {
}
case source-vrf {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'source-vrf')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:source-vrf')";
leaf source-vrf {
type string;
}
}
case peer {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'peer')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:peer')";
choice peer {
description
"Value of the peer";
@@ -449,10 +449,10 @@ module frr-bgp-route-map {
}
case access-list-name {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'mac-address-list') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'as-path-list') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'ip-route-source') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'ip-route-source-prefix-list')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:mac-address-list') or "
+ + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:as-path-list') or "
+ + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ip-route-source') or "
+ + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ip-route-source-prefix-list')";
description
"Access-list name";
leaf list-name {
@@ -461,7 +461,7 @@ module frr-bgp-route-map {
}
case evpn-default-route {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'evpn-default-route')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-default-route')";
description
"Match default EVPN type-5 route";
leaf evpn-default-route {
@@ -470,7 +470,7 @@ module frr-bgp-route-map {
}
case evpn-vni {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'evpn-vni')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-vni')";
description
"Match eVPN VNI";
leaf evpn-vni {
@@ -481,7 +481,7 @@ module frr-bgp-route-map {
}
case evpn-route-type {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'evpn-route-type')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-route-type')";
description
"Match eVPN route-type";
leaf evpn-route-type {
@@ -506,7 +506,7 @@ module frr-bgp-route-map {
}
case evpn-rd {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'evpn-rd')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:evpn-rd')";
description
"Match eVPN route-distinguisher";
leaf route-distinguisher {
@@ -515,9 +515,9 @@ module frr-bgp-route-map {
}
case comm-list-name {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'match-community') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'match-large-community') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'match-extcommunity')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-community') or "
+ + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-large-community') or "
+ + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:match-extcommunity')";
container comm-list {
leaf comm-list-name {
type bgp-filter:bgp-list-name;
@@ -532,7 +532,7 @@ module frr-bgp-route-map {
}
case ipv4-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'ipv4-nexthop')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ipv4-nexthop')";
leaf ipv4-address {
type inet:ipv4-address;
description
@@ -541,7 +541,7 @@ module frr-bgp-route-map {
}
case ipv6-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'ipv6-nexthop')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:condition, 'frr-bgp-route-map:ipv6-nexthop')";
leaf ipv6-address {
type inet:ipv6-address;
description
@@ -552,7 +552,7 @@ module frr-bgp-route-map {
augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:rmap-set-action/frr-route-map:set-action" {
case distance {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'distance')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:distance')";
leaf distance {
type uint8 {
range "0..255";
@@ -561,7 +561,7 @@ module frr-bgp-route-map {
}
case extcommunity-rt {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'set-extcommunity-rt')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-rt')";
description
"Value of the ext-community";
leaf extcommunity-rt {
@@ -572,7 +572,7 @@ module frr-bgp-route-map {
}
case extcommunity-soo {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'set-extcommunity-soo')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-soo')";
description
"Value of the ext-community";
leaf extcommunity-soo {
@@ -583,7 +583,7 @@ module frr-bgp-route-map {
}
case extcommunity-lb {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'set-extcommunity-lb')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-extcommunity-lb')";
container extcommunity-lb {
description
"Value of the ext-community.";
@@ -604,7 +604,7 @@ module frr-bgp-route-map {
}
case ipv4-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'ipv4-vpn-address')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv4-vpn-address')";
description
"Set the IPv4 address";
leaf ipv4-address {
@@ -613,15 +613,15 @@ module frr-bgp-route-map {
}
case ipv4-nexthop {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'set-ipv4-nexthop')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-ipv4-nexthop')";
leaf ipv4-nexthop {
type string;
}
}
case ipv6-address {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'ipv6-nexthop-global') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'ipv6-vpn-address')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-nexthop-global') or "
+ + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-vpn-address')";
description
"Set the IPv6 address";
leaf ipv6-address {
@@ -630,15 +630,15 @@ module frr-bgp-route-map {
}
case preference {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'ipv6-prefer-global') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'ipv6-peer-address')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-prefer-global') or "
+ + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:ipv6-peer-address')";
leaf preference {
type boolean;
}
}
case label-index {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'label-index')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:label-index')";
leaf label-index {
type uint32 {
range "0..1048560";
@@ -647,14 +647,14 @@ module frr-bgp-route-map {
}
case local-pref {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'set-local-preference')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-local-preference')";
leaf local-pref {
type string;
}
}
case weight {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'weight')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:weight')";
leaf weight {
type uint32 {
range "0..4294967295";
@@ -663,7 +663,7 @@ module frr-bgp-route-map {
}
case origin {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'set-origin')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-origin')";
leaf origin {
type enumeration {
enum "egp" {
@@ -686,14 +686,14 @@ module frr-bgp-route-map {
}
case originator-id {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'originator-id')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:originator-id')";
leaf originator-id {
type inet:ipv4-address;
}
}
case table {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'table')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:table')";
leaf table {
type uint32 {
range "1..4294967295";
@@ -702,14 +702,14 @@ module frr-bgp-route-map {
}
case atomic-aggregate {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'atomic-aggregate')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:atomic-aggregate')";
leaf atomic-aggregate {
type empty;
}
}
case as-path-prepend {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'as-path-prepend')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:as-path-prepend')";
choice as-path-prepend {
description
"Value of the BGP AS-path attribute";
@@ -734,7 +734,7 @@ module frr-bgp-route-map {
}
case as-path-exclude {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'as-path-exclude')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:as-path-exclude')";
leaf exclude-as-path {
type string;
description
@@ -743,7 +743,7 @@ module frr-bgp-route-map {
}
case community {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'set-community')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-community')";
choice community {
description
"Value of the BGP community attribute";
@@ -766,7 +766,7 @@ module frr-bgp-route-map {
}
case large-community {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'set-large-community')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:set-large-community')";
choice large-community {
description
"Value of the BGP large-community attribute";
@@ -789,7 +789,7 @@ module frr-bgp-route-map {
}
case aggregator {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'aggregator')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:aggregator')";
container aggregator {
leaf aggregator-asn {
type uint32 {
@@ -810,8 +810,8 @@ module frr-bgp-route-map {
}
case comm-list-name {
- when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'comm-list-delete') or "
- + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'large-comm-list-delete')";
+ when "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:comm-list-delete') or "
+ + "derived-from-or-self(/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:action, 'frr-bgp-route-map:large-comm-list-delete')";
leaf comm-list-name {
type bgp-filter:bgp-list-name;
}
diff --git a/yang/frr-bgp.yang b/yang/frr-bgp.yang
index ae44447df7..a779bb2054 100644
--- a/yang/frr-bgp.yang
+++ b/yang/frr-bgp.yang
@@ -23,10 +23,10 @@ module frr-bgp {
prefix frr-bt;
}
- include "frr-bgp-common-structure";
-
include "frr-bgp-common";
+ include "frr-bgp-common-structure";
+
include "frr-bgp-common-multiprotocol";
include "frr-bgp-neighbor";
diff --git a/yang/frr-isisd.yang b/yang/frr-isisd.yang
index 4653e6f009..5997e8866a 100644
--- a/yang/frr-isisd.yang
+++ b/yang/frr-isisd.yang
@@ -481,6 +481,10 @@ module frr-isisd {
description
"TI-LFA configuration.";
leaf enable {
+ must ". = 'false' or ../../lfa/enable = 'false'" {
+ error-message
+ "Can't enable both classic LFA and TI-LFA in the same interface.";
+ }
type boolean;
default false;
description
@@ -804,10 +808,6 @@ module frr-isisd {
container level-1 {
description
"Level-1 IP Fast-reroute configuration.";
- must "./lfa/enable = 'false' or ./ti-lfa/enable = 'false'" {
- error-message
- "Can't enable both classic LFA and TI-LFA in the same interface.";
- }
uses interface-config-lfa;
uses interface-config-remote-lfa;
uses interface-config-ti-lfa;
@@ -815,10 +815,6 @@ module frr-isisd {
container level-2 {
description
"Level-2 IP Fast-reroute configuration.";
- must "./lfa/enable = 'false' or ./ti-lfa/enable = 'false'" {
- error-message
- "Can't enable both classic LFA and TI-LFA in the same interface.";
- }
uses interface-config-lfa;
uses interface-config-remote-lfa;
uses interface-config-ti-lfa;
@@ -1502,14 +1498,15 @@ module frr-isisd {
container srgb {
description
"Global blocks to be advertised.";
- must "./upper-bound > ./lower-bound";
leaf lower-bound {
+ must "../upper-bound > .";
type uint32;
default "16000";
description
"Lower value in the label range.";
}
leaf upper-bound {
+ must ". > ../lower-bound";
type uint32;
default "23999";
description
@@ -1519,14 +1516,15 @@ module frr-isisd {
container srlb {
description
"Local blocks to be advertised.";
- must "./upper-bound > ./lower-bound";
leaf lower-bound {
+ must "../upper-bound > .";
type uint32;
default "15000";
description
"Lower value in the label range.";
}
leaf upper-bound {
+ must ". > ../lower-bound";
type uint32;
default "15999";
description
diff --git a/yang/frr-ospfd.yang b/yang/frr-ospfd.yang
index 42a7e8784c..b0150cc061 100644
--- a/yang/frr-ospfd.yang
+++ b/yang/frr-ospfd.yang
@@ -682,8 +682,8 @@ module frr-ospfd {
container global-block {
description
"Segment Routing Global Block label range.";
- must "./upper-bound > ./lower-bound";
leaf lower-bound {
+ must "../upper-bound > .";
type uint32 {
range "0..1048575";
}
@@ -691,6 +691,7 @@ module frr-ospfd {
}
leaf upper-bound {
+ must ". > ../lower-bound";
type uint32 {
range "0..1048575";
}
@@ -701,14 +702,15 @@ module frr-ospfd {
container srlb {
description
"Local blocks to be advertised.";
- must "./upper-bound > ./lower-bound";
leaf lower-bound {
+ must "../upper-bound > .";
type uint32;
default "15000";
description
"Lower value in the label range.";
}
leaf upper-bound {
+ must ". > ../lower-bound";
type uint32;
default "15999";
description
diff --git a/yang/frr-pathd.yang b/yang/frr-pathd.yang
index 03f0d3b024..30f9875a6d 100644
--- a/yang/frr-pathd.yang
+++ b/yang/frr-pathd.yang
@@ -84,51 +84,71 @@ module frr-pathd {
leaf index {
type uint32;
description "Segment index";
- }
- leaf sid-value {
- type rt-types:mpls-label;
+ }
+ leaf sid-value {
+ type rt-types:mpls-label;
+ description "MPLS label value";
+ }
+ container nai {
+ presence "The segment has a Node or Adjacency Identifier";
+ leaf type {
+ description "NAI type";
mandatory true;
- description "MPLS label value";
- }
- container nai {
- presence "The segement has a Node or Adjacency Identifier";
- leaf type {
- description "NAI type";
- mandatory true;
- type enumeration {
- enum ipv4_node {
- value 1;
- description "IPv4 node identifier";
- }
- enum ipv6_node {
- value 2;
- description "IPv6 node identifier";
- }
- enum ipv4_adjacency {
- value 3;
- description "IPv4 adjacency";
- }
- enum ipv6_adjacency {
- value 4;
- description "IPv6 adjacency";
- }
- enum ipv4_unnumbered_adjacency {
- value 5;
- description "IPv4 unnumbered adjacency";
- }
+ type enumeration {
+ enum ipv4_node {
+ value 1;
+ description "IPv4 node identifier";
+ }
+ enum ipv6_node {
+ value 2;
+ description "IPv6 node identifier";
+ }
+ enum ipv4_adjacency {
+ value 3;
+ description "IPv4 adjacency";
+ }
+ enum ipv6_adjacency {
+ value 4;
+ description "IPv6 adjacency";
+ }
+ enum ipv4_unnumbered_adjacency {
+ value 5;
+ description "IPv4 unnumbered adjacency";
+ }
+ enum ipv4_local_iface {
+ value 7;
+ description "IPv4 prefix with local interface id";
+ }
+ enum ipv6_local_iface {
+ value 8;
+ description "IPv6 prefix with local interface id";
+ }
+ enum ipv4_algo {
+ value 9;
+ description "IPv4 prefix with optional algorithm";
+ }
+ enum ipv6_algo {
+ value 10;
+ description "IPv6 prefix with optional algorithm";
}
}
- leaf local-address {
- type inet:ip-address;
- mandatory true;
- }
- leaf local-interface {
- type uint32;
- mandatory true;
- when "../type = 'ipv4_unnumbered_adjacency'";
- }
- leaf remote-address {
- type inet:ip-address;
+ }
+ leaf local-address {
+ type inet:ip-address;
+ mandatory true;
+ }
+ leaf local-prefix-len {
+ type uint8;
+ mandatory true;
+ when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_algo' or ../type = 'ipv6_algo'";
+ }
+ leaf local-interface {
+ type uint32;
+ mandatory true;
+ when "../type = 'ipv4_local_iface' or ../type = 'ipv6_local_iface' or ../type = 'ipv4_unnumbered_adjacency'";
+ }
+ leaf remote-address {
+ type inet:ip-address;
mandatory true;
when "../type = 'ipv4_adjacency' or ../type = 'ipv6_adjacency' or ../type = 'ipv4_unnumbered_adjacency'";
}
@@ -137,6 +157,11 @@ module frr-pathd {
mandatory true;
when "../type = 'ipv4_unnumbered_adjacency'";
}
+ leaf algorithm {
+ type uint8;
+ mandatory true;
+ when "../type = 'ipv4_algo' or ../type = 'ipv6_algo'";
+ }
}
}
}
diff --git a/yang/frr-pim.yang b/yang/frr-pim.yang
index 52d8641613..70adb37b26 100644
--- a/yang/frr-pim.yang
+++ b/yang/frr-pim.yang
@@ -341,14 +341,14 @@ module frr-pim {
leaf bsm {
type boolean;
- default "false";
+ default "true";
description
"Enables BSM support on the interface.";
}
leaf unicast-bsm {
type boolean;
- default "false";
+ default "true";
description
"Accept/Send unicast BSM on the interface.";
}
diff --git a/yang/frr-ripd.yang b/yang/frr-ripd.yang
index 929c916069..d77241cb15 100644
--- a/yang/frr-ripd.yang
+++ b/yang/frr-ripd.yang
@@ -291,6 +291,10 @@ module frr-ripd {
}
container version {
leaf receive {
+ must
+ '(. = "1" and ../send = "1") or ' +
+ '(. = "2" and ../send = "2") or ' +
+ '(. = "1-2" and ../send = "2")';
type enumeration {
enum "1" {
value 1;
@@ -313,6 +317,10 @@ module frr-ripd {
"Advertisement reception - Version control.";
}
leaf send {
+ must
+ '(../receive = "1" and . = "1") or ' +
+ '(../receive = "2" and . = "2") or ' +
+ '(../receive = "1-2" and . = "2")';
type enumeration {
enum "1" {
value 1;
@@ -329,10 +337,6 @@ module frr-ripd {
description
"Advertisement transmission - Version control.";
}
- must
- '(./receive = "1" and ./send = "1") or ' +
- '(./receive = "2" and ./send = "2") or ' +
- '(./receive = "1-2" and ./send = "2")';
}
/*
diff --git a/yang/frr-zebra-route-map.yang b/yang/frr-zebra-route-map.yang
index 91f4c87e33..de0f64d389 100644
--- a/yang/frr-zebra-route-map.yang
+++ b/yang/frr-zebra-route-map.yang
@@ -64,10 +64,15 @@ module frr-zebra-route-map {
"Set IPv4/IPv6 source address for route";
}
- augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:match-condition/frr-route-map:rmap-match-condition/frr-route-map:match-condition" {
+ augment "/frr-route-map:lib"
+ + "/frr-route-map:route-map"
+ + "/frr-route-map:entry"
+ + "/frr-route-map:match-condition"
+ + "/frr-route-map:rmap-match-condition"
+ + "/frr-route-map:match-condition" {
case ipv4-prefix-length {
- when "derived-from-or-self(../condition, 'ipv4-prefix-length') or "
- + "derived-from-or-self(../condition, 'ipv4-next-hop-prefix-length')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-zebra-route-map:ipv4-prefix-length') or "
+ + "derived-from-or-self(../frr-route-map:condition, 'frr-zebra-route-map:ipv4-next-hop-prefix-length')";
leaf ipv4-prefix-length {
type uint8 {
range "0..32";
@@ -76,7 +81,7 @@ module frr-zebra-route-map {
}
case ipv6-prefix-length {
- when "derived-from-or-self(../condition, 'ipv6-prefix-length')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-zebra-route-map:ipv6-prefix-length')";
leaf ipv6-prefix-length {
type uint8 {
range "0..128";
@@ -85,7 +90,7 @@ module frr-zebra-route-map {
}
case source-instance {
- when "derived-from-or-self(../condition, 'source-instance')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-zebra-route-map:source-instance')";
leaf source-instance {
type uint8 {
range "0..255";
@@ -94,16 +99,21 @@ module frr-zebra-route-map {
}
case source-protocol {
- when "derived-from-or-self(../condition, 'source-protocol')";
+ when "derived-from-or-self(../frr-route-map:condition, 'frr-zebra-route-map:source-protocol')";
leaf source-protocol {
type frr-route-types:frr-route-types;
}
}
}
- augment "/frr-route-map:lib/frr-route-map:route-map/frr-route-map:entry/frr-route-map:set-action/frr-route-map:rmap-set-action/frr-route-map:set-action" {
+ augment "/frr-route-map:lib"
+ + "/frr-route-map:route-map"
+ + "/frr-route-map:entry"
+ + "/frr-route-map:set-action"
+ + "/frr-route-map:rmap-set-action"
+ + "/frr-route-map:set-action" {
case src-address {
- when "derived-from-or-self(../action, 'src-address')";
+ when "derived-from-or-self(../frr-route-map:action, 'frr-zebra-route-map:src-address')";
choice src-address {
description
"Value of the source address";
diff --git a/yang/frr-zebra.yang b/yang/frr-zebra.yang
index 5c2560837f..a2c6bb4c2b 100644
--- a/yang/frr-zebra.yang
+++ b/yang/frr-zebra.yang
@@ -1953,7 +1953,7 @@ module frr-zebra {
}
leaf ip4-peer {
- when "derived-from-or-self(../address-family, 'ipv4')";
+ when "derived-from-or-self(../address-family, 'frr-rt:ipv4')";
type inet:ipv4-prefix;
description
"Peer prefix, for peer-to-peer interfaces.";
diff --git a/zebra/connected.c b/zebra/connected.c
index 1e03f8b639..883334d509 100644
--- a/zebra/connected.c
+++ b/zebra/connected.c
@@ -38,7 +38,6 @@
#include "zebra/connected.h"
#include "zebra/rtadv.h"
#include "zebra/zebra_mpls.h"
-#include "zebra/debug.h"
#include "zebra/zebra_errors.h"
#include "zebra/zebra_router.h"
@@ -223,6 +222,9 @@ void connected_up(struct interface *ifp, struct connected *ifc)
if (!CHECK_FLAG(ifc->conf, ZEBRA_IFC_REAL))
return;
+ /* Ensure 'down' flag is cleared */
+ UNSET_FLAG(ifc->conf, ZEBRA_IFC_DOWN);
+
PREFIX_COPY(&p, CONNECTED_PREFIX(ifc));
/* Apply mask to the network. */
@@ -280,7 +282,8 @@ void connected_up(struct interface *ifp, struct connected *ifc)
PREFIX_COPY(&cp, CONNECTED_PREFIX(c));
apply_mask(&cp);
- if (prefix_same(&cp, &p))
+ if (prefix_same(&cp, &p) &&
+ !CHECK_FLAG(c->conf, ZEBRA_IFC_DOWN))
count++;
if (count >= 2)
@@ -390,7 +393,7 @@ void connected_down(struct interface *ifp, struct connected *ifc)
if (!zvrf) {
flog_err(
EC_ZEBRA_VRF_NOT_FOUND,
- "%s: Received Up for interface but no associated zvrf: %d",
+ "%s: Received Down for interface but no associated zvrf: %d",
__func__, ifp->vrf_id);
return;
}
@@ -398,6 +401,17 @@ void connected_down(struct interface *ifp, struct connected *ifc)
if (!CHECK_FLAG(ifc->conf, ZEBRA_IFC_REAL))
return;
+ /* Skip if we've already done this; this can happen if we have a
+ * config change that takes an interface down, then we receive kernel
+ * notifications about the downed interface and its addresses.
+ */
+ if (CHECK_FLAG(ifc->conf, ZEBRA_IFC_DOWN)) {
+ if (IS_ZEBRA_DEBUG_RIB)
+ zlog_debug("%s: ifc %p, %pFX already DOWN",
+ __func__, ifc, ifc->address);
+ return;
+ }
+
PREFIX_COPY(&p, CONNECTED_PREFIX(ifc));
/* Apply mask to the network. */
@@ -423,6 +437,9 @@ void connected_down(struct interface *ifp, struct connected *ifc)
break;
}
+ /* Mark the address as 'down' */
+ SET_FLAG(ifc->conf, ZEBRA_IFC_DOWN);
+
/*
* It's possible to have X number of addresses
* on a interface that all resolve to the same
@@ -436,10 +453,11 @@ void connected_down(struct interface *ifp, struct connected *ifc)
PREFIX_COPY(&cp, CONNECTED_PREFIX(c));
apply_mask(&cp);
- if (prefix_same(&p, &cp))
+ if (prefix_same(&p, &cp) &&
+ !CHECK_FLAG(c->conf, ZEBRA_IFC_DOWN))
count++;
- if (count >= 2)
+ if (count >= 1)
return;
}
diff --git a/zebra/if_netlink.c b/zebra/if_netlink.c
index fbf64439e3..c2b4dcc52f 100644
--- a/zebra/if_netlink.c
+++ b/zebra/if_netlink.c
@@ -297,9 +297,6 @@ static void netlink_determine_zebra_iftype(const char *kind,
*zif_type = ZEBRA_IF_GRE;
}
-#define parse_rtattr_nested(tb, max, rta) \
- netlink_parse_rtattr((tb), (max), RTA_DATA(rta), RTA_PAYLOAD(rta))
-
static void netlink_vrf_change(struct nlmsghdr *h, struct rtattr *tb,
uint32_t ns_id, const char *name)
{
@@ -312,8 +309,7 @@ static void netlink_vrf_change(struct nlmsghdr *h, struct rtattr *tb,
ifi = NLMSG_DATA(h);
- memset(linkinfo, 0, sizeof(linkinfo));
- parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb);
+ netlink_parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb);
if (!linkinfo[IFLA_INFO_DATA]) {
if (IS_ZEBRA_DEBUG_KERNEL)
@@ -323,8 +319,8 @@ static void netlink_vrf_change(struct nlmsghdr *h, struct rtattr *tb,
return;
}
- memset(attr, 0, sizeof(attr));
- parse_rtattr_nested(attr, IFLA_VRF_MAX, linkinfo[IFLA_INFO_DATA]);
+ netlink_parse_rtattr_nested(attr, IFLA_VRF_MAX,
+ linkinfo[IFLA_INFO_DATA]);
if (!attr[IFLA_VRF_TABLE]) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug(
@@ -544,8 +540,7 @@ static int netlink_extract_bridge_info(struct rtattr *link_data,
struct rtattr *attr[IFLA_BR_MAX + 1];
memset(bridge_info, 0, sizeof(*bridge_info));
- memset(attr, 0, sizeof(attr));
- parse_rtattr_nested(attr, IFLA_BR_MAX, link_data);
+ netlink_parse_rtattr_nested(attr, IFLA_BR_MAX, link_data);
if (attr[IFLA_BR_VLAN_FILTERING])
bridge_info->vlan_aware =
*(uint8_t *)RTA_DATA(attr[IFLA_BR_VLAN_FILTERING]);
@@ -559,8 +554,7 @@ static int netlink_extract_vlan_info(struct rtattr *link_data,
vlanid_t vid_in_msg;
memset(vlan_info, 0, sizeof(*vlan_info));
- memset(attr, 0, sizeof(attr));
- parse_rtattr_nested(attr, IFLA_VLAN_MAX, link_data);
+ netlink_parse_rtattr_nested(attr, IFLA_VLAN_MAX, link_data);
if (!attr[IFLA_VLAN_ID]) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug("IFLA_VLAN_ID missing from VLAN IF message");
@@ -579,7 +573,7 @@ static int netlink_extract_gre_info(struct rtattr *link_data,
memset(gre_info, 0, sizeof(*gre_info));
memset(attr, 0, sizeof(attr));
- parse_rtattr_nested(attr, IFLA_GRE_MAX, link_data);
+ netlink_parse_rtattr_nested(attr, IFLA_GRE_MAX, link_data);
if (!attr[IFLA_GRE_LOCAL]) {
if (IS_ZEBRA_DEBUG_KERNEL)
@@ -622,8 +616,7 @@ static int netlink_extract_vxlan_info(struct rtattr *link_data,
ifindex_t ifindex_link;
memset(vxl_info, 0, sizeof(*vxl_info));
- memset(attr, 0, sizeof(attr));
- parse_rtattr_nested(attr, IFLA_VXLAN_MAX, link_data);
+ netlink_parse_rtattr_nested(attr, IFLA_VXLAN_MAX, link_data);
if (!attr[IFLA_VXLAN_ID]) {
if (IS_ZEBRA_DEBUG_KERNEL)
zlog_debug(
@@ -716,8 +709,7 @@ static int netlink_bridge_vxlan_update(struct interface *ifp,
/* There is a 1-to-1 mapping of VLAN to VxLAN - hence
* only 1 access VLAN is accepted.
*/
- memset(aftb, 0, sizeof(aftb));
- parse_rtattr_nested(aftb, IFLA_BRIDGE_MAX, af_spec);
+ netlink_parse_rtattr_nested(aftb, IFLA_BRIDGE_MAX, af_spec);
if (!aftb[IFLA_BRIDGE_VLAN_INFO])
return 0;
@@ -786,7 +778,6 @@ static int netlink_bridge_interface(struct nlmsghdr *h, int len, ns_id_t ns_id,
/* Fetch name and ifindex */
ifi = NLMSG_DATA(h);
- memset(tb, 0, sizeof(tb));
netlink_parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi), len);
if (tb[IFLA_IFNAME] == NULL)
@@ -854,9 +845,8 @@ static uint8_t netlink_parse_lacp_bypass(struct rtattr **linkinfo)
uint8_t bypass = 0;
struct rtattr *mbrinfo[IFLA_BOND_SLAVE_MAX + 1];
- memset(mbrinfo, 0, sizeof(mbrinfo));
- parse_rtattr_nested(mbrinfo, IFLA_BOND_SLAVE_MAX,
- linkinfo[IFLA_INFO_SLAVE_DATA]);
+ netlink_parse_rtattr_nested(mbrinfo, IFLA_BOND_SLAVE_MAX,
+ linkinfo[IFLA_INFO_SLAVE_DATA]);
if (mbrinfo[IFLA_BOND_SLAVE_AD_RX_BYPASS])
bypass = *(uint8_t *)RTA_DATA(
mbrinfo[IFLA_BOND_SLAVE_AD_RX_BYPASS]);
@@ -910,7 +900,6 @@ static int netlink_interface(struct nlmsghdr *h, ns_id_t ns_id, int startup)
return netlink_bridge_interface(h, len, ns_id, startup);
/* Looking up interface name. */
- memset(tb, 0, sizeof(tb));
memset(linkinfo, 0, sizeof(linkinfo));
netlink_parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi), len);
@@ -930,7 +919,8 @@ static int netlink_interface(struct nlmsghdr *h, ns_id_t ns_id, int startup)
desc = (char *)RTA_DATA(tb[IFLA_IFALIAS]);
if (tb[IFLA_LINKINFO]) {
- parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb[IFLA_LINKINFO]);
+ netlink_parse_rtattr_nested(linkinfo, IFLA_INFO_MAX,
+ tb[IFLA_LINKINFO]);
if (linkinfo[IFLA_INFO_KIND])
kind = RTA_DATA(linkinfo[IFLA_INFO_KIND]);
@@ -1303,7 +1293,6 @@ int netlink_interface_addr(struct nlmsghdr *h, ns_id_t ns_id, int startup)
return -1;
}
- memset(tb, 0, sizeof(tb));
netlink_parse_rtattr(tb, IFA_MAX, IFA_RTA(ifa), len);
ifp = if_lookup_by_index_per_ns(zns, ifa->ifa_index);
@@ -1519,7 +1508,6 @@ int netlink_link_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
return netlink_bridge_interface(h, len, ns_id, startup);
/* Looking up interface name. */
- memset(tb, 0, sizeof(tb));
memset(linkinfo, 0, sizeof(linkinfo));
netlink_parse_rtattr(tb, IFLA_MAX, IFLA_RTA(ifi), len);
@@ -1536,7 +1524,8 @@ int netlink_link_change(struct nlmsghdr *h, ns_id_t ns_id, int startup)
name = (char *)RTA_DATA(tb[IFLA_IFNAME]);
if (tb[IFLA_LINKINFO]) {
- parse_rtattr_nested(linkinfo, IFLA_INFO_MAX, tb[IFLA_LINKINFO]);
+ netlink_parse_rtattr_nested(linkinfo, IFLA_INFO_MAX,
+ tb[IFLA_LINKINFO]);
if (linkinfo[IFLA_INFO_KIND])
kind = RTA_DATA(linkinfo[IFLA_INFO_KIND]);
diff --git a/zebra/kernel_netlink.c b/zebra/kernel_netlink.c
index cd22e95737..8b631a3726 100644
--- a/zebra/kernel_netlink.c
+++ b/zebra/kernel_netlink.c
@@ -493,6 +493,7 @@ void netlink_parse_rtattr_flags(struct rtattr **tb, int max,
{
unsigned short type;
+ memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
while (RTA_OK(rta, len)) {
type = rta->rta_type & ~flags;
if ((type <= max) && (!tb[type]))
@@ -504,6 +505,7 @@ void netlink_parse_rtattr_flags(struct rtattr **tb, int max,
void netlink_parse_rtattr(struct rtattr **tb, int max, struct rtattr *rta,
int len)
{
+ memset(tb, 0, sizeof(struct rtattr *) * (max + 1));
while (RTA_OK(rta, len)) {
if (rta->rta_type <= max)
tb[rta->rta_type] = rta;
diff --git a/zebra/redistribute.c b/zebra/redistribute.c
index 7cb426359d..89f46f9c97 100644
--- a/zebra/redistribute.c
+++ b/zebra/redistribute.c
@@ -337,12 +337,17 @@ void zebra_redistribute_add(ZAPI_HANDLER_ARGS)
zvrf_id(zvrf), afi);
}
} else {
- if (IS_ZEBRA_DEBUG_EVENT)
- zlog_debug("%s: setting vrf %s(%u) redist bitmap",
- __func__, VRF_LOGNAME(zvrf->vrf),
- zvrf_id(zvrf));
- vrf_bitmap_set(client->redist[afi][type], zvrf_id(zvrf));
- zebra_redistribute(client, type, 0, zvrf_id(zvrf), afi);
+ if (!vrf_bitmap_check(client->redist[afi][type],
+ zvrf_id(zvrf))) {
+ if (IS_ZEBRA_DEBUG_EVENT)
+ zlog_debug(
+ "%s: setting vrf %s(%u) redist bitmap",
+ __func__, VRF_LOGNAME(zvrf->vrf),
+ zvrf_id(zvrf));
+ vrf_bitmap_set(client->redist[afi][type],
+ zvrf_id(zvrf));
+ zebra_redistribute(client, type, 0, zvrf_id(zvrf), afi);
+ }
}
stream_failure:
diff --git a/zebra/rt_netlink.c b/zebra/rt_netlink.c
index d2ec7da57c..fbf37230c7 100644
--- a/zebra/rt_netlink.c
+++ b/zebra/rt_netlink.c
@@ -509,8 +509,6 @@ static uint8_t parse_multipath_nexthops_unicast(ns_id_t ns_id,
nh_vrf_id = vrf_id;
if (rtnh->rtnh_len > sizeof(*rtnh)) {
- memset(rtnh_tb, 0, sizeof(rtnh_tb));
-
netlink_parse_rtattr(rtnh_tb, RTA_MAX, RTNH_DATA(rtnh),
rtnh->rtnh_len - sizeof(*rtnh));
if (rtnh_tb[RTA_GATEWAY])
@@ -628,7 +626,6 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id,
return -1;
}
- memset(tb, 0, sizeof(tb));
netlink_parse_rtattr(tb, RTA_MAX, RTM_RTA(rtm), len);
if (rtm->rtm_flags & RTM_F_CLONED)
@@ -713,7 +710,6 @@ static int netlink_route_change_read_unicast(struct nlmsghdr *h, ns_id_t ns_id,
if (tb[RTA_METRICS]) {
struct rtattr *mxrta[RTAX_MAX + 1];
- memset(mxrta, 0, sizeof(mxrta));
netlink_parse_rtattr(mxrta, RTAX_MAX, RTA_DATA(tb[RTA_METRICS]),
RTA_PAYLOAD(tb[RTA_METRICS]));
@@ -920,7 +916,6 @@ static int netlink_route_change_read_multicast(struct nlmsghdr *h,
len = h->nlmsg_len - NLMSG_LENGTH(sizeof(struct rtmsg));
- memset(tb, 0, sizeof(tb));
netlink_parse_rtattr(tb, RTA_MAX, RTM_RTA(rtm), len);
if (tb[RTA_TABLE])
@@ -2875,7 +2870,6 @@ static int netlink_macfdb_change(struct nlmsghdr *h, int len, ns_id_t ns_id)
/* Parse attributes and extract fields of interest. Do basic
* validation of the fields.
*/
- memset(tb, 0, sizeof tb);
netlink_parse_rtattr_flags(tb, NDA_MAX, NDA_RTA(ndm), len,
NLA_F_NESTED);
@@ -3348,7 +3342,6 @@ static int netlink_ipneigh_change(struct nlmsghdr *h, int len, ns_id_t ns_id)
zif = (struct zebra_if *)ifp->info;
/* Parse attributes and extract fields of interest. */
- memset(tb, 0, sizeof(tb));
netlink_parse_rtattr(tb, NDA_MAX, NDA_RTA(ndm), len);
if (!tb[NDA_DST]) {
diff --git a/zebra/zapi_msg.c b/zebra/zapi_msg.c
index 55f8edd272..544bb07fbe 100644
--- a/zebra/zapi_msg.c
+++ b/zebra/zapi_msg.c
@@ -985,8 +985,7 @@ void zsend_nhrp_neighbor_notify(int cmd, struct interface *ifp,
union sockunion ip;
if (IS_ZEBRA_DEBUG_PACKET)
- zlog_debug("%s: Notifying Neighbor entry (%u)",
- __PRETTY_FUNCTION__, cmd);
+ zlog_debug("%s: Notifying Neighbor entry (%u)", __func__, cmd);
sockunion_family(&ip) = ipaddr_family(ipaddr);
afi = family2afi(sockunion_family(&ip));
@@ -2509,7 +2508,7 @@ static void zread_sr_policy_set(ZAPI_HANDLER_ARGS)
if (zapi_sr_policy_decode(s, &zp) < 0) {
if (IS_ZEBRA_DEBUG_RECV)
zlog_debug("%s: Unable to decode zapi_sr_policy sent",
- __PRETTY_FUNCTION__);
+ __func__);
return;
}
zt = &zp.segment_list;
@@ -2517,7 +2516,7 @@ static void zread_sr_policy_set(ZAPI_HANDLER_ARGS)
if (IS_ZEBRA_DEBUG_RECV)
zlog_debug(
"%s: SR-TE tunnel must contain at least one label",
- __PRETTY_FUNCTION__);
+ __func__);
return;
}
@@ -2544,7 +2543,7 @@ static void zread_sr_policy_delete(ZAPI_HANDLER_ARGS)
if (zapi_sr_policy_decode(s, &zp) < 0) {
if (IS_ZEBRA_DEBUG_RECV)
zlog_debug("%s: Unable to decode zapi_sr_policy sent",
- __PRETTY_FUNCTION__);
+ __func__);
return;
}
@@ -2554,8 +2553,7 @@ static void zread_sr_policy_delete(ZAPI_HANDLER_ARGS)
policy = zebra_sr_policy_find(zp.color, &zp.endpoint);
if (!policy) {
if (IS_ZEBRA_DEBUG_RECV)
- zlog_debug("%s: Unable to find SR-TE policy",
- __PRETTY_FUNCTION__);
+ zlog_debug("%s: Unable to find SR-TE policy", __func__);
return;
}
diff --git a/zebra/zebra_evpn.c b/zebra/zebra_evpn.c
index 80e06d913d..30f4a44769 100644
--- a/zebra/zebra_evpn.c
+++ b/zebra/zebra_evpn.c
@@ -1011,6 +1011,7 @@ zebra_evpn_t *zebra_evpn_lookup(vni_t vni)
*/
zebra_evpn_t *zebra_evpn_add(vni_t vni)
{
+ char buffer[80];
struct zebra_vrf *zvrf;
zebra_evpn_t tmp_zevpn;
zebra_evpn_t *zevpn = NULL;
@@ -1024,11 +1025,14 @@ zebra_evpn_t *zebra_evpn_add(vni_t vni)
zebra_evpn_es_evi_init(zevpn);
+ snprintf(buffer, sizeof(buffer), "Zebra EVPN MAC Table vni: %u", vni);
/* Create hash table for MAC */
- zevpn->mac_table = zebra_mac_db_create("Zebra EVPN MAC Table");
+ zevpn->mac_table = zebra_mac_db_create(buffer);
+ snprintf(buffer, sizeof(buffer), "Zebra EVPN Neighbor Table vni: %u",
+ vni);
/* Create hash table for neighbors */
- zevpn->neigh_table = zebra_neigh_db_create("Zebra EVPN Neighbor Table");
+ zevpn->neigh_table = zebra_neigh_db_create(buffer);
return zevpn;
}
diff --git a/zebra/zebra_evpn_mac.c b/zebra/zebra_evpn_mac.c
index 7bbe092d8c..fe3167dc29 100644
--- a/zebra/zebra_evpn_mac.c
+++ b/zebra/zebra_evpn_mac.c
@@ -1323,7 +1323,7 @@ int zebra_evpn_mac_send_del_to_client(vni_t vni, struct ethaddr *macaddr,
*/
struct hash *zebra_mac_db_create(const char *desc)
{
- return hash_create(mac_hash_keymake, mac_cmp, desc);
+ return hash_create_size(8, mac_hash_keymake, mac_cmp, desc);
}
/* program sync mac flags in the dataplane */
diff --git a/zebra/zebra_evpn_mh.c b/zebra/zebra_evpn_mh.c
index 0038689e85..d6ae92a03d 100644
--- a/zebra/zebra_evpn_mh.c
+++ b/zebra/zebra_evpn_mh.c
@@ -2476,8 +2476,8 @@ void zebra_evpn_proc_remote_es(ZAPI_HANDLER_ARGS)
if (!is_evpn_enabled()) {
zlog_debug(
- "%s: EVPN not enabled yet we received a es_add zapi call",
- __PRETTY_FUNCTION__);
+ "%s: EVPN not enabled yet we received a es_add zapi call",
+ __func__);
return;
}
diff --git a/zebra/zebra_evpn_neigh.c b/zebra/zebra_evpn_neigh.c
index d1b93dbe8a..4c7a1542fc 100644
--- a/zebra/zebra_evpn_neigh.c
+++ b/zebra/zebra_evpn_neigh.c
@@ -85,7 +85,7 @@ int neigh_list_cmp(void *p1, void *p2)
struct hash *zebra_neigh_db_create(const char *desc)
{
- return hash_create(neigh_hash_keymake, neigh_cmp, desc);
+ return hash_create_size(8, neigh_hash_keymake, neigh_cmp, desc);
}
uint32_t num_dup_detected_neighs(zebra_evpn_t *zevpn)
diff --git a/zebra/zebra_mpls.c b/zebra/zebra_mpls.c
index a923782bfe..850ca17636 100644
--- a/zebra/zebra_mpls.c
+++ b/zebra/zebra_mpls.c
@@ -3952,11 +3952,18 @@ void zebra_mpls_close_tables(struct zebra_vrf *zvrf)
*/
void zebra_mpls_init_tables(struct zebra_vrf *zvrf)
{
+ char buffer[80];
+
if (!zvrf)
return;
- zvrf->slsp_table =
- hash_create(label_hash, label_cmp, "ZEBRA SLSP table");
- zvrf->lsp_table = hash_create(label_hash, label_cmp, "ZEBRA LSP table");
+
+ snprintf(buffer, sizeof(buffer), "ZEBRA SLSP table: %s",
+ zvrf->vrf->name);
+ zvrf->slsp_table = hash_create_size(8, label_hash, label_cmp, buffer);
+
+ snprintf(buffer, sizeof(buffer), "ZEBRA LSP table: %s",
+ zvrf->vrf->name);
+ zvrf->lsp_table = hash_create_size(8, label_hash, label_cmp, buffer);
zvrf->fec_table[AFI_IP] = route_table_init();
zvrf->fec_table[AFI_IP6] = route_table_init();
zvrf->mpls_flags = 0;
diff --git a/zebra/zebra_pbr.c b/zebra/zebra_pbr.c
index c4004842e6..73c2c3dda3 100644
--- a/zebra/zebra_pbr.c
+++ b/zebra/zebra_pbr.c
@@ -512,7 +512,7 @@ void zebra_pbr_add_rule(struct zebra_pbr_rule *rule)
if (pbr_rule_release(found))
zlog_debug(
"%s: Rule being updated we know nothing about",
- __PRETTY_FUNCTION__);
+ __func__);
} else {
if (IS_ZEBRA_DEBUG_PBR)
diff --git a/zebra/zebra_rib.c b/zebra/zebra_rib.c
index dbc5c77fd9..8afb5053c4 100644
--- a/zebra/zebra_rib.c
+++ b/zebra/zebra_rib.c
@@ -132,41 +132,61 @@ struct wq_nhg_wrapper {
#define WQ_NHG_WRAPPER_TYPE_CTX 0x01
#define WQ_NHG_WRAPPER_TYPE_NHG 0x02
-static void PRINTFRR(5, 6)
-_rnode_zlog(const char *_func, vrf_id_t vrf_id, struct route_node *rn,
- int priority, const char *msgfmt, ...)
+/* %pRN is already a printer for route_nodes that just prints the prefix */
+#ifdef _FRR_ATTRIBUTE_PRINTFRR
+#pragma FRR printfrr_ext "%pZN" (struct route_node *)
+#endif
+
+printfrr_ext_autoreg_p("ZN", printfrr_zebra_node);
+static ssize_t printfrr_zebra_node(struct fbuf *buf, struct printfrr_eargs *ea,
+ const void *ptr)
{
- char buf[SRCDEST2STR_BUFFER + sizeof(" (MRIB)")];
- char msgbuf[512];
- va_list ap;
- uint32_t table = 0;
-
- va_start(ap, msgfmt);
- vsnprintf(msgbuf, sizeof(msgbuf), msgfmt, ap);
- va_end(ap);
-
- if (rn) {
- struct rib_table_info *info = srcdest_rnode_table_info(rn);
- rib_dest_t *dest = NULL;
+ struct route_node *rn = (struct route_node *)ptr;
+ ssize_t rv = 0;
+
+ /* just the table number? */
+ if (ea->fmt[0] == 't') {
+ rib_dest_t *dest;
struct route_entry *re = NULL;
- srcdest_rnode2str(rn, buf, sizeof(buf));
+ ea->fmt++;
- if (info->safi == SAFI_MULTICAST)
- strlcat(buf, " (MRIB)", sizeof(buf));
+ if (!rn)
+ return bputch(buf, '!');
dest = rib_dest_from_rnode(rn);
if (dest)
re = re_list_first(&dest->routes);
if (re)
- table = re->table;
+ rv += bprintfrr(buf, "%u", re->table);
+ else
+ rv += bputch(buf, '?');
+
} else {
- snprintf(buf, sizeof(buf), "{(route_node *) NULL}");
- }
+ char cbuf[PREFIX_STRLEN * 2 + 6];
+ struct rib_table_info *info;
- zlog(priority, "%s: (%u:%u):%s: %s", _func, vrf_id, table, buf, msgbuf);
+ if (!rn)
+ return bputs(buf, "{(route_node *) NULL}");
+
+ srcdest_rnode2str(rn, cbuf, sizeof(cbuf));
+ rv += bputs(buf, cbuf);
+
+ info = srcdest_rnode_table_info(rn);
+ if (info->safi == SAFI_MULTICAST)
+ rv += bputs(buf, " (MRIB)");
+ }
+ return rv;
}
+#define rnode_debug(node, vrf_id, msg, ...) \
+ zlog_debug("%s: (%u:%pZNt):%pZN: " msg, __func__, vrf_id, node, node, \
+ ##__VA_ARGS__)
+
+#define rnode_info(node, vrf_id, msg, ...) \
+ zlog_info("%s: (%u:%pZNt):%pZN: " msg, __func__, vrf_id, node, node, \
+ ##__VA_ARGS__)
+
static char *_dump_re_status(const struct route_entry *re, char *buf,
size_t len)
{
@@ -191,11 +211,6 @@ static char *_dump_re_status(const struct route_entry *re, char *buf,
return buf;
}
-#define rnode_debug(node, vrf_id, ...) \
- _rnode_zlog(__func__, vrf_id, node, LOG_DEBUG, __VA_ARGS__)
-#define rnode_info(node, ...) \
- _rnode_zlog(__func__, vrf_id, node, LOG_INFO, __VA_ARGS__)
-
uint8_t route_distance(int type)
{
uint8_t distance;
diff --git a/zebra/zebra_vrf.c b/zebra/zebra_vrf.c
index 212557423b..a0c63e4202 100644
--- a/zebra/zebra_vrf.c
+++ b/zebra/zebra_vrf.c
@@ -103,9 +103,7 @@ static int zebra_vrf_new(struct vrf *vrf)
if (IS_ZEBRA_DEBUG_EVENT)
zlog_debug("VRF %s created, id %u", vrf->name, vrf->vrf_id);
- zvrf = zebra_vrf_alloc();
- vrf->info = zvrf;
- zvrf->vrf = vrf;
+ zvrf = zebra_vrf_alloc(vrf);
if (!vrf_is_backend_netns())
zvrf->zns = zebra_ns_lookup(NS_DEFAULT);
@@ -427,12 +425,15 @@ static void zebra_vrf_table_create(struct zebra_vrf *zvrf, afi_t afi,
}
/* Allocate new zebra VRF. */
-struct zebra_vrf *zebra_vrf_alloc(void)
+struct zebra_vrf *zebra_vrf_alloc(struct vrf *vrf)
{
struct zebra_vrf *zvrf;
zvrf = XCALLOC(MTYPE_ZEBRA_VRF, sizeof(struct zebra_vrf));
+ zvrf->vrf = vrf;
+ vrf->info = zvrf;
+
zebra_vxlan_init_tables(zvrf);
zebra_mpls_init_tables(zvrf);
zebra_pw_init(zvrf);
diff --git a/zebra/zebra_vrf.h b/zebra/zebra_vrf.h
index 000b5a7238..b2b0fcfbb2 100644
--- a/zebra/zebra_vrf.h
+++ b/zebra/zebra_vrf.h
@@ -251,7 +251,7 @@ extern struct route_table *zebra_vrf_get_table_with_table_id(afi_t afi,
extern void zebra_vrf_update_all(struct zserv *client);
extern struct zebra_vrf *zebra_vrf_lookup_by_id(vrf_id_t vrf_id);
extern struct zebra_vrf *zebra_vrf_lookup_by_name(const char *);
-extern struct zebra_vrf *zebra_vrf_alloc(void);
+extern struct zebra_vrf *zebra_vrf_alloc(struct vrf *vrf);
extern struct route_table *zebra_vrf_table(afi_t, safi_t, vrf_id_t);
extern void zebra_vrf_init(void);
diff --git a/zebra/zebra_vxlan.c b/zebra/zebra_vxlan.c
index 23aeb7190d..09eb78917c 100644
--- a/zebra/zebra_vxlan.c
+++ b/zebra/zebra_vxlan.c
@@ -5755,13 +5755,20 @@ stream_failure:
*/
void zebra_vxlan_init_tables(struct zebra_vrf *zvrf)
{
+ char buffer[80];
+
if (!zvrf)
return;
- zvrf->evpn_table =
- hash_create(zebra_evpn_hash_keymake, zebra_evpn_hash_cmp,
- "Zebra VRF EVPN Table");
- zvrf->vxlan_sg_table = hash_create(zebra_vxlan_sg_hash_key_make,
- zebra_vxlan_sg_hash_eq, "Zebra VxLAN SG Table");
+
+ snprintf(buffer, sizeof(buffer), "Zebra VRF EVPN Table: %s",
+ zvrf->vrf->name);
+ zvrf->evpn_table = hash_create_size(8, zebra_evpn_hash_keymake,
+ zebra_evpn_hash_cmp, buffer);
+
+ snprintf(buffer, sizeof(buffer), "Zebra VxLAN SG Table: %s",
+ zvrf->vrf->name);
+ zvrf->vxlan_sg_table = hash_create_size(8, zebra_vxlan_sg_hash_key_make,
+ zebra_vxlan_sg_hash_eq, buffer);
}
/* Cleanup EVPN info, but don't free the table. */