Handle broadcast and multicast packets in router mode.

Multicast packets are treated as broadcast packets.
Based on a patch from Max Rijevski.
This commit is contained in:
Guus Sliepen 2008-12-23 22:31:38 +00:00
parent a5f899a979
commit de032054de
2 changed files with 13 additions and 2 deletions

1
THANKS
View file

@ -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

View file

@ -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 */