aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xutil/vnet_generate40
-rwxr-xr-xutil/vnet_run26
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)