from subprocess import PIPE, call, Popen
import re
-dhcp = 0
multicast = 1
-if len(argv) > 1 and argv[1] == "mesh":
+dhcp = 0
+gretap = 0
+
+if "mesh" in argv:
+ multicast = 0
+
+if "dhcp" in argv:
+ dhcp = 1
+ multicast = 0
+
+if "gretap" in argv:
+ gretap = 1
multicast = 0
- if len(argv) > 2 and argv[2] == "dhcp":
- dhcp = 1
+
+print("multicast %d dhcp %d gretap %d" % (multicast, dhcp, gretap))
ipr = IPRoute()
ipdb = IPDB(nl=ipr)
if multicast:
cmd = ["python", "tunnel.py", str(i)]
else:
- cmd = ["python", "tunnel_mesh.py", str(num_hosts), str(i), str(dhcp)]
+ cmd = ["python", "tunnel_mesh.py", str(num_hosts), str(i), str(dhcp), str(gretap)]
p = NSPopen(host_info[i][0].nl.netns, cmd, stdin=PIPE)
self.processes.append(p)
with self.ipdb.create(ifname="br-fabric", kind="bridge") as br:
num_hosts = int(argv[1])
host_id = int(argv[2])
dhcp = int(argv[3])
+gretap = int(argv[4])
b = BPF(src_file="tunnel_mesh.c")
ingress_fn = b.load_func("handle_ingress", BPF.SCHED_CLS)
d_client = []
def run():
- with ipdb.create(ifname="vxlan0", kind="vxlan", vxlan_id=0,
- vxlan_link=ifc, vxlan_port=htons(4789),
- vxlan_flowbased=True,
- vxlan_collect_metadata=True,
- vxlan_learning=False) as vx:
- vx.up()
- ifc_gc.append(vx.ifname)
+ if gretap:
+ with ipdb.create(ifname="gretap1", kind="gretap", gre_ikey=0, gre_okey=0,
+ gre_local='172.16.1.%d' % (100 + host_id),
+ gre_ttl=16, gre_collect_metadata=1) as vx:
+ vx.up()
+ ifc_gc.append(vx.ifname)
+ else:
+ with ipdb.create(ifname="vxlan0", kind="vxlan", vxlan_id=0,
+ vxlan_link=ifc, vxlan_port=htons(4789),
+ vxlan_collect_metadata=True,
+ vxlan_learning=False) as vx:
+ vx.up()
+ ifc_gc.append(vx.ifname)
conf[c_int(1)] = c_int(vx.index)