From de032054dee67bcc406b4a15fb9e957a766d016a Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Tue, 23 Dec 2008 22:31:38 +0000 Subject: [PATCH] Handle broadcast and multicast packets in router mode. Multicast packets are treated as broadcast packets. Based on a patch from Max Rijevski. --- THANKS | 1 + src/route.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/THANKS b/THANKS index cd99f2a..ce5ec13 100644 --- a/THANKS +++ b/THANKS @@ -21,6 +21,7 @@ We would like to thank the following people for their contributions to tinc: * Markus Goetz * Martin Kihlgren * Matias Carrasco +* Max Rijevski * Miles Nordin * Nick Patavalis * Paul Littlefield diff --git a/src/route.c b/src/route.c index 0123107..742fbc2 100644 --- a/src/route.c +++ b/src/route.c @@ -376,7 +376,14 @@ static void route_ipv4(node_t *source, vpn_packet_t *packet) if(!checklength(source, packet, ether_size + ip_size)) return; - route_ipv4_unicast(source, packet); + if(packet->data[30] & 0xf0 == 0xe0 || + packet->data[30] == 255 && + packet->data[31] == 255 && + packet->data[32] == 255 && + packet->data[33] == 255) + broadcast_packet(source, packet); + else + route_ipv4_unicast(source, packet); } /* RFC 2463 */ @@ -645,7 +652,10 @@ static void route_ipv6(node_t *source, vpn_packet_t *packet) return; } - route_ipv6_unicast(source, packet); + if(packet->data[38] == 255) + broadcast_packet(source, packet); + else + route_ipv6_unicast(source, packet); } /* RFC 826 */ -- 2.25.1