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