From: Etienne Dechamps Date: Sat, 13 Jul 2013 22:34:42 +0000 (+0100) Subject: Fix combination of Mode = router and DeviceType = tap on Linux. X-Git-Tag: release-1.1pre8~31 X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=commitdiff_plain;h=633b7cbb452ea19e515cadee9bc63e631f8183c2 Fix combination of Mode = router and DeviceType = tap on Linux. 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. --- diff --git a/src/linux/device.c b/src/linux/device.c index 3b3b439d..127e3e82 100644 --- a/src/linux/device.c +++ b/src/linux/device.c @@ -84,6 +84,8 @@ static bool setup_device(void) { 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)";