X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Froute.c;h=742fbc28dcf1bf29929414c83cca6417839e55e3;hp=0123107e4acabc444efbc8767d07410a26939396;hb=de032054dee67bcc406b4a15fb9e957a766d016a;hpb=a5f899a9794f215e8174455ead04862a2c14a5b1 diff --git a/src/route.c b/src/route.c index 0123107e..742fbc28 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 */