diff options
-rwxr-xr-x | util/vnet_generate | 40 | ||||
-rwxr-xr-x | util/vnet_run | 26 |
2 files changed, 31 insertions, 35 deletions
diff --git a/util/vnet_generate b/util/vnet_generate index 4f3e467..8cfb417 100755 --- a/util/vnet_generate +++ b/util/vnet_generate @@ -23,6 +23,9 @@ NETWORK_PREFIX_FMT = "10.{}.0.0/24" SESSION_PREFIX = "vnet-" START_SHELL = "/bin/bash" +VHOST_BINARY_NAME = "vhost" +VROUTER_BINARY_NAME = "vrouter" + class PortAllocator(): @@ -111,7 +114,6 @@ class Node(): if iface.network == target: return iface.addr, iface.udp_addr - import pdb; pdb.set_trace() raise ValueError("No matching interface found") def get_neighbor_router_ips(self) -> list[IPv4Address]: @@ -165,17 +167,16 @@ class Node(): if self.node_type == NODE_TYPE_ROUTER: fd.write("routing rip\n\n") - prefixes = [i.prefix() for i in self.interfaces.values() \ - if i.network.should_advertise(self)] - #import pdb; pdb.set_trace() - neighbor_router_ips = self.get_neighbor_router_ips() + # prefixes = [i.prefix() for i in self.interfaces.values() \ + # if i.network.should_advertise(self)] - if len(prefixes) > 0: - fd.write("# Prefixes this router should advertise\n") - for p in prefixes: - fd.write(f"rip originate prefix {p}\n") + # if len(prefixes) > 0: + # fd.write("# Prefixes this router should advertise\n") + # for p in prefixes: + # fd.write(f"rip originate prefix {p}\n") - fd.write("\n") + # fd.write("\n") + neighbor_router_ips = self.get_neighbor_router_ips() if len(neighbor_router_ips) > 0: fd.write("# Neighbor routers that should be sent RIP messages\n") @@ -184,7 +185,6 @@ class Node(): elif self.node_type == NODE_TYPE_HOST: routers = self.get_neighboring_routers() if len(routers) == 0: - import pdb; pdb.set_trace() raise ValueError(f"No neighboring router found for host {self.name}") elif len(routers) > 1: print(f"Warning: multiple routers found for host {self.name}, selecting one") @@ -193,7 +193,6 @@ class Node(): fd.write("# Default route\n") fd.write("route 0.0.0.0/0 via {}\n".format(default_ip)) else: - import pdb; pdb.set_trace() raise ValueError("Invalid node type") def __eq__(self, other: 'Node'): @@ -250,9 +249,9 @@ class NetConfig(): binary_paths = {} for node in self.nodes: binary_paths[node.name] = { - "binary_path": "./host" \ + "binary_path": f"./{VHOST_BINARY_NAME}" \ if node.node_type == NODE_TYPE_HOST else - "./router" if node.node_type == NODE_TYPE_ROUTER + f"./{VROUTER_BINARY_NAME}" if node.node_type == NODE_TYPE_ROUTER else "<path to binary>" } @@ -301,19 +300,6 @@ def write_json(d, target_file): def main(input_args): parser = argparse.ArgumentParser() - # subparsers = parser.add_subparsers(dest="command") - - # commands = [ - # "generate", - # "run", - # ] - - # sp_cmds = {c: subparsers.add_parser(c) for c in commands} - # sp_cmds["generate"].add_argument("net_json_file") - # sp_cmds["generate"].add_argument("output_dir") - # sp_cmds["run"].add_argument("--router", type=str) - # sp_cmds["run"].add_argument("--host", type=str) - # sp_cmds["run"].add_argument("net_file_dir") parser.add_argument("net_json_file") parser.add_argument("output_dir") diff --git a/util/vnet_run b/util/vnet_run index 0539b23..39d72a6 100755 --- a/util/vnet_run +++ b/util/vnet_run @@ -15,6 +15,10 @@ START_SHELL = "/bin/bash" DEVICE_TYPE_ROUTER = "router" DEVICE_TYPE_HOST = "host" + +VHOST_BINARY_NAME = "vhost" +VROUTER_BINARY_NAME = "vrouter" + VERBOSE_MODE = False @@ -127,15 +131,17 @@ def main(input_args): parser = argparse.ArgumentParser() - parser.add_argument("--router", type=str, default="", help="Path to router binary") - parser.add_argument("--host", type=str, default="", help="Path to host binary") + parser.add_argument("--router", type=str, default="", help="Path to vrouter binary") + parser.add_argument("--host", type=str, default="", help="Path to vhost binary") + parser.add_argument("--bin-dir", type=str, default=".", + help="Path to directory with vhost/vrouter binaries") parser.add_argument("--bin-config", type=str, default="", help="Run nodes using binaries.json Overrides --host and --router") parser.add_argument("--clean", action="store_true", help="Terminate any open virtual network sessions before starting") parser.add_argument("lnx_dir", type=str, help="Directory with lnx files") parser.add_argument("extra_args", nargs="*", - help="Extra arguments to add when executing each node") + help="Extra arguments to add when executing each node", default="") parser.add_argument("--verbose", action="store_true", help="Print commands as they are run") @@ -159,11 +165,15 @@ def main(input_args): if args.bin_config: bin_info = BinManager.from_bin_config(args.bin_config) else: - if args.router == "" or args.host == "": - do_exit("Must specify host and router binaries with --host and --router") - - router_bin = args.router - host_bin = args.host + if args.bin_dir: + host_bin = pathlib.Path(args.bin_dir).resolve() / VHOST_BINARY_NAME + router_bin = pathlib.Path(args.bin_dir).resolve() / VROUTER_BINARY_NAME + else: + if args.router == "" or args.host == "": + do_exit("Must specify host and router binaries with --bin-dir or (--host and --router)") + + router_bin = pathlib.Path(args.router).resolve() + host_bin = pathlib.Path(args.host).resolve() check_bin_exists(router_bin) check_bin_exists(host_bin) |