def start(self): """ Start router: * Load modules * Clean up files * Configure interfaces * Start daemons (e.g. FRR) * Configure daemon logging files """ self.logger.debug("starting") nrouter = self.tgen.net[self.name] result = nrouter.startRouter(self.tgen) # Enable all daemon command logging, logging files # and set them to the start dir. for daemon, enabled in nrouter.daemons.items(): if enabled == 0: continue self.vtysh_cmd( "configure terminal\nlog commands\nlog file {}.log".format( daemon), daemon=daemon, ) if result != "": self.tgen.set_error(result) else: # Enable MPLS processing on all interfaces. for interface in self.links.keys(): set_sysctl(nrouter, "net.mpls.conf.{}.input".format(interface), 1) return result
def setup_module(mod): "Sets up the pytest environment" tgen = Topogen(OSPFTopo, 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_OSPF, os.path.join(CWD, "{}/ospfd.conf".format(rname)) ) # What is this? OSPF Unnumbered depends on the rp_filter # being set appropriately( HA! ) # Effectively we are putting different /32's on the interface # the multicast packet delivery is somewhat controlled by # the rp_filter. Setting it to '0' allows the OS to pass # up the mcast packet not destined for the local routers # network. topotest.set_sysctl(tgen.net["r1"], "net.ipv4.conf.r1-eth1.rp_filter", 0) topotest.set_sysctl(tgen.net["r1"], "net.ipv4.conf.all.rp_filter", 0) topotest.set_sysctl(tgen.net["r2"], "net.ipv4.conf.r2-eth1.rp_filter", 0) topotest.set_sysctl(tgen.net["r2"], "net.ipv4.conf.all.rp_filter", 0) # Initialize all routers. tgen.start_router()