def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(ISISTopo1, mod.__name__) tgen.start_topology() # For all registered routers, load the zebra configuration file for rname, router in tgen.routers().iteritems(): router.load_config( TopoRouter.RD_ZEBRA, os.path.join(CWD, '{}/zebra.conf'.format(rname)) ) router.load_config( TopoRouter.RD_ISIS, os.path.join(CWD, '{}/isisd.conf'.format(rname)) ) # After loading the configurations, this function loads configured daemons. tgen.start_router() has_version_20 = False for router in tgen.routers().values(): if router.has_version('<', '3'): has_version_20 = True if has_version_20: logger.info('Skipping ISIS tests for FRR 2.0') tgen.set_error('ISIS has convergence problems with IPv6')
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(BFDTopo, mod.__name__) tgen.start_topology() router_list = tgen.routers() for rname, router in router_list.iteritems(): router.load_config( TopoRouter.RD_ZEBRA, os.path.join(CWD, '{}/zebra.conf'.format(rname)), ) router.load_config( TopoRouter.RD_BFD, os.path.join(CWD, '{}/bfdd.conf'.format(rname)) ) router.load_config( TopoRouter.RD_BGP, os.path.join(CWD, '{}/bgpd.conf'.format(rname)) ) # Initialize all routers. tgen.start_router() # Verify that we are using the proper version and that the BFD # daemon exists. for router in router_list.values(): # Check for Version if router.has_version('<', '5.1'): tgen.set_error('Unsupported FRR version') break
def setup_module(mod): "Sets up the pytest environment" logger.info('\n\n---- Starting OSPF Segment Routing tests ----\n') tgen = Topogen(OspfSrTopo, mod.__name__) tgen.start_topology() router_list = tgen.routers() for rname, router in router_list.iteritems(): 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)) ) # Initialize all routers. tgen.start_router() # Verify that version, MPLS and Segment Routing are OK for router in router_list.values(): # Check for Version if router.has_version('<', '4'): tgen.set_error('Unsupported FRR version') break # Check that Segment Routing is available output = tgen.gears[router.name].vtysh_cmd( "show ip ospf database segment-routing json") if output.find("Unknown") != -1: tgen.set_error('Segment Routing is not available')
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(TemplateTopo, mod.__name__) tgen.start_topology() router_list = tgen.routers() # For all registered routers, load the zebra configuration file for rname, router in router_list.iteritems(): router.load_config( TopoRouter.RD_ZEBRA, os.path.join(CWD, '{}/zebra.conf'.format(rname)) ) # Don't start ospfd and ldpd in the CE nodes if router.name[0] == 'r': router.load_config( TopoRouter.RD_OSPF, os.path.join(CWD, '{}/ospfd.conf'.format(rname)) ) router.load_config( TopoRouter.RD_LDP, os.path.join(CWD, '{}/ldpd.conf'.format(rname)) ) tgen.start_router() for router in router_list.values(): if router.has_version('<', '3'): tgen.set_error('unsupported version')
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(OSPFTopo, mod.__name__) tgen.start_topology() router_list = tgen.routers() # check for zebra capability for rname, router in router_list.iteritems(): if router.check_capability( TopoRouter.RD_ZEBRA, '--vrfwnetns' ) == False: return pytest.skip('Skipping OSPF VRF NETNS feature. VRF NETNS backend not available on FRR') if os.system('ip netns list') != 0: return pytest.skip('Skipping OSPF VRF NETNS Test. NETNS not available on System') logger.info('Testing with VRF Namespace support') cmds = ['if [ -e /var/run/netns/{0}-cust1 ] ; then ip netns del {0}-cust1 ; fi', 'ip netns add {0}-cust1', 'ip link set dev {0}-eth0 netns {0}-cust1', 'ip netns exec {0}-cust1 ifconfig {0}-eth0 up', 'ip link set dev {0}-eth1 netns {0}-cust1', 'ip netns exec {0}-cust1 ifconfig {0}-eth1 up'] for rname, router in router_list.iteritems(): # create VRF rx-cust1 and link rx-eth0 to rx-cust1 for cmd in cmds: output = tgen.net[rname].cmd(cmd.format(rname)) router.load_config( TopoRouter.RD_ZEBRA, os.path.join(CWD, '{}/zebra.conf'.format(rname)), '--vrfwnetns' ) router.load_config( TopoRouter.RD_OSPF, os.path.join(CWD, '{}/ospfd.conf'.format(rname)) ) # Initialize all routers. tgen.start_router() for router in router_list.values(): if router.has_version('<', '4.0'): tgen.set_error('unsupported version')
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(ISISTopo1, mod.__name__) tgen.start_topology() # For all registered routers, load the zebra configuration file for rname, router in tgen.routers().items(): router.load_config(TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname))) router.load_config(TopoRouter.RD_ISIS, os.path.join(CWD, "{}/isisd.conf".format(rname))) # After loading the configurations, this function loads configured daemons. tgen.start_router() has_version_20 = False for router in tgen.routers().values(): if router.has_version("<", "3"): has_version_20 = True if has_version_20: logger.info("Skipping ISIS tests for FRR 2.0") tgen.set_error("ISIS has convergence problems with IPv6")
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(BFDTopo, mod.__name__) tgen.start_topology() router_list = tgen.routers() 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_BFD, os.path.join(CWD, "{}/bfdd.conf".format(rname))) router.load_config(TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))) # Initialize all routers. tgen.start_router() # Verify that we are using the proper version and that the BFD # daemon exists. for router in router_list.values(): # Check for Version if router.has_version("<", "5.1"): tgen.set_error("Unsupported FRR version") break
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(BFDTopo, mod.__name__) tgen.start_topology() router_list = tgen.routers() # check for zebra capability for rname, router in router_list.iteritems(): if router.check_capability(TopoRouter.RD_ZEBRA, "--vrfwnetns") == False: return pytest.skip( "Skipping BFD Topo1 VRF NETNS feature. VRF NETNS backend not available on FRR" ) if os.system("ip netns list") != 0: return pytest.skip( "Skipping BFD Topo1 VRF NETNS Test. NETNS not available on System") logger.info("Testing with VRF Namespace support") cmds = [ "if [ -e /var/run/netns/{0}-cust1 ] ; then ip netns del {0}-cust1 ; fi", "ip netns add {0}-cust1", "ip link set dev {0}-eth0 netns {0}-cust1", "ip netns exec {0}-cust1 ifconfig {0}-eth0 up", ] cmds2 = [ "ip link set dev {0}-eth1 netns {0}-cust1", "ip netns exec {0}-cust1 ifconfig {0}-eth1 up", "ip link set dev {0}-eth2 netns {0}-cust1", "ip netns exec {0}-cust1 ifconfig {0}-eth2 up", ] for rname, router in router_list.iteritems(): # create VRF rx-cust1 and link rx-eth0 to rx-cust1 for cmd in cmds: output = tgen.net[rname].cmd(cmd.format(rname)) if rname == "r2": for cmd in cmds2: output = tgen.net[rname].cmd(cmd.format(rname)) for rname, router in router_list.iteritems(): router.load_config( TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname)), "--vrfwnetns", ) router.load_config(TopoRouter.RD_BFD, os.path.join(CWD, "{}/bfdd.conf".format(rname))) router.load_config(TopoRouter.RD_BGP, os.path.join(CWD, "{}/bgpd.conf".format(rname))) # Initialize all routers. tgen.start_router() # Verify that we are using the proper version and that the BFD # daemon exists. for router in router_list.values(): # Check for Version if router.has_version("<", "5.1"): tgen.set_error("Unsupported FRR version") break
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(BFDTopo, mod.__name__) tgen.start_topology() router_list = tgen.routers() # check for zebra capability for rname, router in router_list.iteritems(): if router.check_capability( TopoRouter.RD_ZEBRA, '--vrfwnetns' ) == False: return pytest.skip('Skipping BFD Topo1 VRF NETNS feature. VRF NETNS backend not available on FRR') if os.system('ip netns list') != 0: return pytest.skip('Skipping BFD Topo1 VRF NETNS Test. NETNS not available on System') logger.info('Testing with VRF Namespace support') cmds = ['if [ -e /var/run/netns/{0}-cust1 ] ; then ip netns del {0}-cust1 ; fi', 'ip netns add {0}-cust1', 'ip link set dev {0}-eth0 netns {0}-cust1', 'ip netns exec {0}-cust1 ifconfig {0}-eth0 up'] cmds2 = ['ip link set dev {0}-eth1 netns {0}-cust1', 'ip netns exec {0}-cust1 ifconfig {0}-eth1 up', 'ip link set dev {0}-eth2 netns {0}-cust1', 'ip netns exec {0}-cust1 ifconfig {0}-eth2 up'] for rname, router in router_list.iteritems(): # create VRF rx-cust1 and link rx-eth0 to rx-cust1 for cmd in cmds: output = tgen.net[rname].cmd(cmd.format(rname)) if rname == 'r2': for cmd in cmds2: output = tgen.net[rname].cmd(cmd.format(rname)) for rname, router in router_list.iteritems(): router.load_config( TopoRouter.RD_ZEBRA, os.path.join(CWD, '{}/zebra.conf'.format(rname)), '--vrfwnetns' ) router.load_config( TopoRouter.RD_BFD, os.path.join(CWD, '{}/bfdd.conf'.format(rname)) ) router.load_config( TopoRouter.RD_BGP, os.path.join(CWD, '{}/bgpd.conf'.format(rname)) ) # Initialize all routers. tgen.start_router() # Verify that we are using the proper version and that the BFD # daemon exists. for router in router_list.values(): # Check for Version if router.has_version('<', '5.1'): tgen.set_error('Unsupported FRR version') break
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(ISISTopo1, mod.__name__) tgen.start_topology() logger.info("Testing with VRF Lite support") krel = platform.release() # May need to adjust handling of vrf traffic depending on kernel version l3mdev_accept = 0 if ( topotest.version_cmp(krel, "4.15") >= 0 and topotest.version_cmp(krel, "4.18") <= 0 ): l3mdev_accept = 1 if topotest.version_cmp(krel, "5.0") >= 0: l3mdev_accept = 1 logger.info( "krel '{0}' setting net.ipv4.tcp_l3mdev_accept={1}".format(krel, l3mdev_accept) ) cmds = [ "ip link add {0}-cust1 type vrf table 1001", "ip link add loop1 type dummy", "ip link set {0}-eth0 master {0}-cust1", "ip link set {0}-eth1 master {0}-cust1", ] # For all registered routers, load the zebra configuration file for rname, router in tgen.routers().iteritems(): # create VRF rx-cust1 and link rx-eth0 to rx-cust1 for cmd in cmds: output = tgen.net[rname].cmd(cmd.format(rname)) output = tgen.net[rname].cmd("sysctl -n net.ipv4.tcp_l3mdev_accept") logger.info( "router {0}: existing tcp_l3mdev_accept was {1}".format(rname, output) ) if l3mdev_accept: output = tgen.net[rname].cmd( "sysctl -w net.ipv4.tcp_l3mdev_accept={}".format(l3mdev_accept) ) for rname, router in tgen.routers().iteritems(): router.load_config( TopoRouter.RD_ZEBRA, os.path.join(CWD, "{}/zebra.conf".format(rname)) ) router.load_config( TopoRouter.RD_ISIS, os.path.join(CWD, "{}/isisd.conf".format(rname)) ) # After loading the configurations, this function loads configured daemons. tgen.start_router() has_version_20 = False for router in tgen.routers().values(): if router.has_version("<", "4"): has_version_20 = True if has_version_20: logger.info("Skipping ISIS vrf tests for FRR 2.0") tgen.set_error("ISIS has convergence problems with IPv6")