From f1d5fa69767bceca1114485b92ffd35cd1aa097c Mon Sep 17 00:00:00 2001
From: Claudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Date: Sat, 1 Oct 2011 10:23:19 +0200
Subject: [PATCH] Fix TUN<->TunChannel connection in netns: must set TunChan in
 non-ethernet mode

---
 src/nepi/testbeds/netns/metadata.py | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/nepi/testbeds/netns/metadata.py b/src/nepi/testbeds/netns/metadata.py
index 9875c235..93642931 100644
--- a/src/nepi/testbeds/netns/metadata.py
+++ b/src/nepi/testbeds/netns/metadata.py
@@ -52,7 +52,10 @@ def connect_fd(testbed_instance, tap_guid, cross_data):
     passfd.sendfd(sock, tap.fd, '0')
     # TODO: after succesful transfer, the tap device should close the fd
 
-def connect_tunchannel_tap(testbed_instance, chan_guid, tap_guid):
+def connect_tunchannel_tun(testbed_instance, chan_guid, tap_guid):
+    connect_tunchannel_tap(testbed_instance, chan_guid, tap_guid, ethernet_mode=False)
+
+def connect_tunchannel_tap(testbed_instance, chan_guid, tap_guid, ethernet_mode=True):
     tap = testbed_instance._elements[tap_guid]
     chan = testbed_instance._elements[chan_guid]
 
@@ -63,7 +66,7 @@ def connect_tunchannel_tap(testbed_instance, chan_guid, tap_guid):
     chan.tun_socket = os.fdopen(tap.fd)
     
     # Set the channel to ethernet mode (it's a tap)
-    chan.ethernet_mode = True
+    chan.ethernet_mode = ethernet_mode
     
     # Check to see if the device uses PI headers
     # It's normally so
@@ -364,7 +367,7 @@ connections = [
     dict({
         "from": (TESTBED_ID, TUNCHANNEL, "->fd" ),
         "to":   (TESTBED_ID, TUNIFACE, "fd->" ),
-        "init_code": connect_tunchannel_tap,
+        "init_code": connect_tunchannel_tun,
         "can_cross": False
     }),
     dict({
-- 
2.47.0