self.port = 15000
self.mode = 'pl-tun'
self.key = key
+ self.cross_slice = False
self.home_path = home_path
local_snat = local.snat
local_txq = local.txqueuelen
local_p2p = local.pointopoint
- local_cipher = local.tun_cipher
- local_mcast = local.multicast
- local_bwlim = local.bwlimit
+ local_cipher=local.tun_cipher
+ local_mcast= local.multicast
+ local_bwlim= local.bwlimit
+ local_mcastfwd = local.multicast_forwarder
if not local_p2p and hasattr(peer, 'address'):
local_p2p = peer.address
"-t", str(check_proto),
"-A", str(local_addr),
"-M", str(local_mask),
- "-C", str(local_cipher)]
+ "-C", str(local_cipher),
+ ]
if check_proto == 'fd':
passfd_arg = str(peer_addr)
"--pass-fd", passfd_arg
])
elif check_proto == 'gre':
+ if self.cross_slice:
+ args.extend([
+ "-K", str(self.key.strip('='))
+ ])
+
args.extend([
- "-K", str(min(local_port, peer_port)),
"-a", str(peer_addr),
])
# both udp and tcp
args.append("-N")
elif local_cap == 'pcap':
args.extend(('-c','pcap'))
- if local_mcast:
- args.append("--multicast")
if local_bwlim:
args.extend(("-b",str(local_bwlim*1024)))
if filter_module:
args.extend(("--filter", filter_module))
if filter_args:
args.extend(("--filter-args", filter_args))
+ if local_mcast and local_mcastfwd:
+ args.extend(("--multicast-forwarder", local_mcastfwd))
self._logger.info("Starting %s", self)
# Connected?
(out,err),proc = server.eintr_retry(server.popen_ssh_command)(
- "cd %(home)s ; grep -c Connected capture" % dict(
+ "cd %(home)s ; grep -a -c Connected capture" % dict(
home = server.shell_escape(self.home_path)),
host = local.node.hostname,
port = None,
# At least listening?
(out,err),proc = server.eintr_retry(server.popen_ssh_command)(
- "cd %(home)s ; grep -c Listening capture" % dict(
+ "cd %(home)s ; grep -a -c Listening capture" % dict(
home = server.shell_escape(self.home_path)),
host = local.node.hostname,
port = None,
# Inspect the trace to check the assigned iface
local = self.local()
if local:
- cmd = "cd %(home)s ; grep 'Using tun:' capture | head -1" % dict(
+ cmd = "cd %(home)s ; grep -a 'Using tun:' capture | head -1" % dict(
home = server.shell_escape(self.home_path))
for spin in xrange(30):
(out,err),proc = server.eintr_retry(server.popen_ssh_command)(
self._logger.debug("if_name: %r does not match expected pattern from cmd %s", out, cmd)
else:
self._logger.debug("if_name: empty output from cmd %s", cmd)
- time.sleep(1)
+ time.sleep(3)
else:
self._logger.warn("if_name: Could not get interface name")
return self._if_name