Ejemplo n.º 1
0
def _startDummyCapture(host):
	# Due to some weird kernel optimization bridges get sometimes skipped
	# and the link emulation will not work.
	# Using the pcap interface seams to prevent this issue
	if not ifaceutil.bridgeExists(host, "dummy"):
		ifaceutil.bridgeCreate(host, "dummy")
	ifaceutil.ifup(host, "dummy")
	if not tcpdump.captureToFileRunning(host, "_dummy"):
		tcpdump.startCaptureToFile(host, "_dummy", "dummy")
Ejemplo n.º 2
0
def _connectEndpoint(endpoint, mode):
	host = endpoint.getHost()
	assert host
	bridge = endpoint.getBridge()
	assert bridge
	if not ifaceutil.bridgeExists(host, bridge):
		ifaceutil.bridgeCreate(host, bridge)
	if mode == Mode.ROUTER:
		_setupRouting(endpoint)
	else:
		ifaceutil.ifup(host, bridge)
		ifaceutil.bridgeConnect(host, bridge, _tincName(endpoint))
Ejemplo n.º 3
0
def _setupRouting(endpoint):
	host = endpoint.getHost()
	assert host
	bridge = endpoint.getBridge()
	assert bridge
	id = endpoint.getId()
	assert id
	assert ifaceutil.bridgeExists(host, bridge)
	tincname = _tincName(endpoint)
	assert ifaceutil.interfaceExists(host, tincname)
	assert not ifaceutil.interfaceBridge(host, tincname)
	#enable ip forwarding
	host.execute ("sysctl -q -w net.ipv6.conf.all.forwarding=1");
	host.execute ("sysctl -q -w net.ipv4.conf.all.forwarding=1");
	#add gateway addresses
	for gw in endpoint.getGateways():
		ifaceutil.addAddress(host, bridge, gw)
	#set bridge up
	ifaceutil.ifup(host, bridge)
	ifaceutil.connectInterfaces(host, bridge, tincname, id, endpoint.getGateways())
Ejemplo n.º 4
0
Archivo: tinc.py Proyecto: m3z/ToMaTo
def _setupRouting(endpoint):
	host = endpoint.getHost()
	assert host
	bridge = endpoint.getBridge()
	assert bridge
	id = endpoint.getId()
	assert id
	assert ifaceutil.bridgeExists(host, bridge)
	tincname = _tincName(endpoint)
	assert ifaceutil.interfaceExists(host, tincname)
	assert not ifaceutil.interfaceBridge(host, tincname)
	#enable ip forwarding
	host.execute ("sysctl -q -w net.ipv6.conf.all.forwarding=1");
	host.execute ("sysctl -q -w net.ipv4.conf.all.forwarding=1");
	#add gateway addresses
	for gw in endpoint.getGateways():
		ifaceutil.addAddress(host, bridge, gw)
	#set bridge up
	ifaceutil.ifup(host, bridge)
	ifaceutil.connectInterfaces(host, bridge, tincname, id, endpoint.getGateways())
	for gw in endpoint.getGateways():
		ip = gw.split("/")[0]
		util.waitFor(lambda :ifaceutil.reachable(host, ip, iface=bridge))
		assert ifaceutil.reachable(host, ip, iface=bridge), "Cannot reach %s in interface %s" % (ip, bridge)