X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Froute.c;h=0b77bd4a11bacd9ba6a8baa4510f8c57cc191b74;hp=9e9f9d041997752d52f6adb0e724a3a5618a3983;hb=8420a0c8bde1781db04dd2436eb9d5dca5a1732a;hpb=ea415ccc1690d6e5864a7500977b181e5c8faafe diff --git a/src/route.c b/src/route.c index 9e9f9d04..0b77bd4a 100644 --- a/src/route.c +++ b/src/route.c @@ -39,6 +39,7 @@ bool directonly = false; bool priorityinheritance = false; int macexpire = 600; bool overwrite_mac = false; +bool broadcast = true; mac_t mymac = {{0xFE, 0xFD, 0, 0, 0, 0}}; /* Sizes of various headers */ @@ -423,11 +424,11 @@ static void route_ipv4(node_t *source, vpn_packet_t *packet) { if(!checklength(source, packet, ether_size + ip_size)) return; - if(((packet->data[30] & 0xf0) == 0xe0) || ( + if(broadcast && (((packet->data[30] & 0xf0) == 0xe0) || ( packet->data[30] == 255 && packet->data[31] == 255 && packet->data[32] == 255 && - packet->data[33] == 255)) + packet->data[33] == 255))) broadcast_packet(source, packet); else route_ipv4_unicast(source, packet); @@ -715,7 +716,7 @@ static void route_ipv6(node_t *source, vpn_packet_t *packet) { return; } - if(packet->data[38] == 255) + if(broadcast && packet->data[38] == 255) broadcast_packet(source, packet); else route_ipv6_unicast(source, packet); @@ -805,7 +806,8 @@ static void route_mac(node_t *source, vpn_packet_t *packet) { subnet = lookup_subnet_mac(NULL, &dest); if(!subnet) { - broadcast_packet(source, packet); + if(broadcast) + broadcast_packet(source, packet); return; }