From ede5c74fb7354b427d28b29b95f1c294951f9811 Mon Sep 17 00:00:00 2001 From: Johan Grip Date: Sun, 2 Jul 2017 15:01:42 +0200 Subject: [PATCH] Use tap interface in switch mode. --- .../tinc/src/opnsense/scripts/OPNsense/Tinc/lib/objects.py | 3 +++ security/tinc/src/opnsense/scripts/OPNsense/Tinc/tincd.py | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/security/tinc/src/opnsense/scripts/OPNsense/Tinc/lib/objects.py b/security/tinc/src/opnsense/scripts/OPNsense/Tinc/lib/objects.py index 9c52cc875..98465a5c1 100644 --- a/security/tinc/src/opnsense/scripts/OPNsense/Tinc/lib/objects.py +++ b/security/tinc/src/opnsense/scripts/OPNsense/Tinc/lib/objects.py @@ -71,6 +71,9 @@ class Network(NetwConfObject): def get_local_address(self): return self._payload['intaddress'] + def get_mode(self): + return self._payload['mode'] + def get_debuglevel(self): if len(self._payload['debuglevel']) > 1: return self._payload['debuglevel'][1] diff --git a/security/tinc/src/opnsense/scripts/OPNsense/Tinc/tincd.py b/security/tinc/src/opnsense/scripts/OPNsense/Tinc/tincd.py index 2e584f53b..4ef3bca06 100755 --- a/security/tinc/src/opnsense/scripts/OPNsense/Tinc/tincd.py +++ b/security/tinc/src/opnsense/scripts/OPNsense/Tinc/tincd.py @@ -67,6 +67,11 @@ def deploy(config_filename): # interface name to use interface_name = 'tinc%s' % network.get_id() + # type of interface to use + interface_type = 'tun' + if network.get_mode() == 'switch': + interface_type = 'tap' + # dump Network and host config for conf_obj in network.all(): if conf_obj.is_valid(): @@ -84,7 +89,7 @@ def deploy(config_filename): # configure and rename new tun device, place all in group "tinc" symlink associated tun device if interface_name not in interfaces: - tundev = subprocess.check_output(['/sbin/ifconfig','tun','create']).split()[0] + tundev = subprocess.check_output(['/sbin/ifconfig',interface_type,'create']).split()[0] subprocess.call(['/sbin/ifconfig',tundev,'name',interface_name]) subprocess.call(['/sbin/ifconfig',interface_name,'group','tinc']) if os.path.islink('/dev/%s' % interface_name):