From 4e9e3ca89dba68cbacaaa15ddfb298b181a969da Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Mon, 25 May 2009 15:04:33 +0200 Subject: [PATCH 1/1] Do not forward broadcast packets when TunnelServer is enabled. First of all, the idea behind the TunnelServer option is to hide all other nodes from each other, so we shouldn't forward broadcast packets from them anyway. The other reason is that since edges from other nodes are ignored, the calculated minimum spanning tree might not be correct, which can result in routing loops. --- src/net_packet.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/net_packet.c b/src/net_packet.c index 28cf161e..40d94518 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -488,9 +488,15 @@ void broadcast_packet(const node_t *from, vpn_packet_t *packet) ifdebug(TRAFFIC) logger(LOG_INFO, _("Broadcasting packet of %d bytes from %s (%s)"), packet->len, from->name, from->hostname); - if(from != myself) + if(from != myself) { send_packet(myself, packet); + // In TunnelServer mode, do not forward broadcast packets. + // The MST might not be valid and create loops. + if(tunnelserver) + return; + } + for(node = connection_tree->head; node; node = node->next) { c = node->data; -- 2.20.1