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:
parent
a5f899a979
commit
de032054de
2 changed files with 13 additions and 2 deletions
1
THANKS
1
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
|
||||
|
|
14
src/route.c
14
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 */
|
||||
|
|
Loading…
Reference in a new issue