Skip to content
Snippets Groups Projects
Commit 2c6e35be authored by Mike Marsh's avatar Mike Marsh
Browse files

I believe star topologies now actually work

parent 45474401
Branches master
No related tags found
No related merge requests found
...@@ -44,7 +44,7 @@ def make_route(f,net,fdev): ...@@ -44,7 +44,7 @@ def make_route(f,net,fdev):
'src', f['addr'] 'src', f['addr']
]) ])
def connect_nodes(node1, node2): def connect_nodes(node1, node2, route_subnet=False):
ctr1 = nodelist[node1] ctr1 = nodelist[node1]
ctr2 = nodelist[node2] ctr2 = nodelist[node2]
print ctr1, ctr2 print ctr1, ctr2
...@@ -88,6 +88,8 @@ def connect_nodes(node1, node2): ...@@ -88,6 +88,8 @@ def connect_nodes(node1, node2):
make_route(f,t['addr']+'/32',fdev) make_route(f,t['addr']+'/32',fdev)
route_from_to(ctr1,ctr2,dev_1) route_from_to(ctr1,ctr2,dev_1)
route_from_to(ctr2,ctr1,dev_2) route_from_to(ctr2,ctr1,dev_2)
if route_subnet:
make_route(ctr2,subnet,dev_2)
# Configure the link for network emulation. # Configure the link for network emulation.
def enable_netem(ns, dev): def enable_netem(ns, dev):
...@@ -98,6 +100,7 @@ def connect_nodes(node1, node2): ...@@ -98,6 +100,7 @@ def connect_nodes(node1, node2):
]) ])
enable_netem(ctr1['name'],dev_1) enable_netem(ctr1['name'],dev_1)
enable_netem(ctr2['name'],dev_2) enable_netem(ctr2['name'],dev_2)
return (dev_1,dev_2)
def make_mesh(): def make_mesh():
...@@ -110,10 +113,30 @@ def make_mesh(): ...@@ -110,10 +113,30 @@ def make_mesh():
def make_star(): def make_star():
global nodelist global nodelist
def get_dev(i): def get_dev(i):
return 'bac0_{i}_0'.format(i=i) return '{name}_{i}_0'.format(name=ntwk['name'],i=i)
bridge_ns = nodelist[0]['name']
bridge_dev = '{}_bridge'.format(bridge_ns)
bridge_addr = nodelist[0]['addr']
subprocess.call([
'sudo', 'ip', 'netns', 'exec', bridge_ns,
'brctl', 'addbr', bridge_dev
])
subprocess.call([
'sudo', 'ip', 'netns', 'exec', bridge_ns,
'ip', 'address', 'add', 'dev', bridge_dev, 'local', bridge_addr
])
subprocess.call([
'sudo', 'ip', 'netns', 'exec', bridge_ns,
'ip', 'link', 'set', 'dev', bridge_dev, 'up'
])
num_nodes = len(nodelist) num_nodes = len(nodelist)
[ connect_nodes(0,n) for n in range(1,num_nodes) ] devs = [ connect_nodes(0,n,True)[0] for n in range(1,num_nodes) ]
[ make_route(n,subnet,get_dev(n)) for n in range(1,num_nodes) ] for d in devs:
subprocess.call([
'sudo', 'ip', 'netns', 'exec', bridge_ns,
'brctl', 'addif', bridge_dev, d
])
def start_node(base_name,i): def start_node(base_name,i):
global nodelist global nodelist
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment