Router mode and MAC addresses

Etienne Dechamps etienne at edechamps.fr
Sun Jul 14 00:34:42 CEST 2013


Hi,

I have two concerns about tinc's behavior regarding MAC addresses in 
router mode:

- Looking at the code, it appears that tinc is always sending each 
packet with its Ethernet header, even if tinc is operating in router 
mode. It is my understanding that in router mode, all routing is done at 
the IP level, thus we do not need Ethernet information. This seems like 
unnecessary overhead.

- I believe I have found a bug in tinc on Linux when it is used with 
Mode = router and DeviceType = tap. This combination is useful because 
it allows global broadcast packets to be used in router mode. However, 
when tinc receives a packet in this situation, it needs to make sure its 
destination MAC address matches the address of the TAP adapter, which is 
typically not the case since the sending node doesn't know the MAC 
address of the recipient. Unfortunately, this is not the case on Linux, 
which breaks connectivity. This simple patch fixes the issue:

--- src/linux/device.c     2013-07-13 22:52:33.841655000 +0100
+++ src/linux/device.c  2013-07-13 22:53:36.210804000 +0100
@@ -84,6 +84,8 @@
                 device_type = DEVICE_TYPE_TUN;
                 device_info = "Linux tun/tap device (tun mode)";
         } else {
+               if (routing_mode == RMODE_ROUTER)
+                       overwrite_mac = true;
                 ifr.ifr_flags = IFF_TAP | IFF_NO_PI;
                 device_type = DEVICE_TYPE_TAP;
                 device_info = "Linux tun/tap device (tap mode)";

-- 
Etienne Dechamps


More information about the tinc-devel mailing list