diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2014-01-15 12:25:45 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2014-01-15 12:25:45 +0000 |
commit | 0df3f4819fd93b7a3c5829f4324dccdb0908b4a4 (patch) | |
tree | ecab2dae166e5c575544bf05df5d9ebc1c391beb /src/transport/plugin_transport_udp_broadcasting.c | |
parent | cba4427ea24d4ab07c4028e11bef99c3f820e6b9 (diff) | |
download | gnunet-0df3f4819fd93b7a3c5829f4324dccdb0908b4a4.tar.gz gnunet-0df3f4819fd93b7a3c5829f4324dccdb0908b4a4.zip |
fix mantis bug 0003270: do not broadcast on loopback
Diffstat (limited to 'src/transport/plugin_transport_udp_broadcasting.c')
-rw-r--r-- | src/transport/plugin_transport_udp_broadcasting.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/transport/plugin_transport_udp_broadcasting.c b/src/transport/plugin_transport_udp_broadcasting.c index 669ebdb01..7dfe86944 100644 --- a/src/transport/plugin_transport_udp_broadcasting.c +++ b/src/transport/plugin_transport_udp_broadcasting.c | |||
@@ -473,6 +473,7 @@ iface_proc (void *cls, | |||
473 | { | 473 | { |
474 | struct Plugin *plugin = cls; | 474 | struct Plugin *plugin = cls; |
475 | struct BroadcastAddress *ba; | 475 | struct BroadcastAddress *ba; |
476 | struct GNUNET_ATS_Information network; | ||
476 | 477 | ||
477 | if (NULL == addr) | 478 | if (NULL == addr) |
478 | return GNUNET_OK; | 479 | return GNUNET_OK; |
@@ -487,11 +488,19 @@ iface_proc (void *cls, | |||
487 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "netmask %s for interface %s %p\n ", | 488 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "netmask %s for interface %s %p\n ", |
488 | GNUNET_a2s (netmask, addrlen), name, netmask); | 489 | GNUNET_a2s (netmask, addrlen), name, netmask); |
489 | 490 | ||
491 | network = plugin->env->get_address_type (plugin->env->cls, broadcast_addr, addrlen); | ||
492 | if (GNUNET_ATS_NET_LOOPBACK == ntohl(network.value)) | ||
493 | { | ||
494 | /* Broadcasting on loopback does not make sense */ | ||
495 | return GNUNET_YES; | ||
496 | } | ||
497 | |||
490 | ba = GNUNET_new (struct BroadcastAddress); | 498 | ba = GNUNET_new (struct BroadcastAddress); |
491 | ba->plugin = plugin; | 499 | ba->plugin = plugin; |
492 | ba->addr = GNUNET_malloc (addrlen); | 500 | ba->addr = GNUNET_malloc (addrlen); |
493 | memcpy (ba->addr, broadcast_addr, addrlen); | 501 | memcpy (ba->addr, broadcast_addr, addrlen); |
494 | ba->addrlen = addrlen; | 502 | ba->addrlen = addrlen; |
503 | |||
495 | if ( (GNUNET_YES == plugin->enable_ipv4) && | 504 | if ( (GNUNET_YES == plugin->enable_ipv4) && |
496 | (NULL != plugin->sockv4) && | 505 | (NULL != plugin->sockv4) && |
497 | (addrlen == sizeof (struct sockaddr_in)) ) | 506 | (addrlen == sizeof (struct sockaddr_in)) ) |