[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r17938 - in gnunet: contrib src/nat
From: |
gnunet |
Subject: |
[GNUnet-SVN] r17938 - in gnunet: contrib src/nat |
Date: |
Wed, 2 Nov 2011 18:05:00 +0100 |
Author: wachs
Date: 2011-11-02 18:05:00 +0100 (Wed, 02 Nov 2011)
New Revision: 17938
Modified:
gnunet/contrib/defaults.conf
gnunet/src/nat/nat.c
Log:
disable local addresses
Modified: gnunet/contrib/defaults.conf
===================================================================
--- gnunet/contrib/defaults.conf 2011-11-02 16:48:06 UTC (rev 17937)
+++ gnunet/contrib/defaults.conf 2011-11-02 17:05:00 UTC (rev 17938)
@@ -71,6 +71,9 @@
# for our hostname (to get our own IP), in ms
DYNDNS_FREQUENCY = 140000
+# Do we use addresses from localhost address ranges? (::1, 127.0.0.0/8)
+RETURN_LOCAL_ADDRESSES = NO
+
[gnunet-nat-server]
HOSTNAME = gnunet.org
PORT = 5724
Modified: gnunet/src/nat/nat.c
===================================================================
--- gnunet/src/nat/nat.c 2011-11-02 16:48:06 UTC (rev 17937)
+++ gnunet/src/nat/nat.c 2011-11-02 17:05:00 UTC (rev 17938)
@@ -335,6 +335,11 @@
int use_localaddresses;
/**
+ * Should we return local addresses to clients
+ */
+ int return_localaddress;
+
+ /**
* Should we do a DNS lookup of our hostname to find out our own IP?
*/
int use_hostname;
@@ -642,9 +647,19 @@
case AF_INET:
s4 = (struct sockaddr_in *) addr;
ip = &s4->sin_addr;
+
+ /* Check if address is in 127.0.0.0/8 */
+ uint32_t address = ntohl((in_addr_t)(s4->sin_addr.s_addr));
+ uint32_t value = (address & 0xFF000000) ^ 0x7F000000;
+ if ((h->return_localaddress == GNUNET_NO) && (value == 0))
+ {
+ return GNUNET_OK;
+ }
if (GNUNET_YES == h->use_localaddresses)
+ {
add_ip_to_address_list (h, LAL_INTERFACE_ADDRESS, &s4->sin_addr,
sizeof (struct in_addr));
+ }
break;
case AF_INET6:
s6 = (struct sockaddr_in6 *) addr;
@@ -653,10 +668,17 @@
/* skip link local addresses */
return GNUNET_OK;
}
+ if ((h->return_localaddress == GNUNET_NO) &&
+ (IN6_IS_ADDR_LOOPBACK (&((struct sockaddr_in6 *) addr)->sin6_addr)))
+ {
+ return GNUNET_OK;
+ }
ip = &s6->sin6_addr;
if (GNUNET_YES == h->use_localaddresses)
+ {
add_ip_to_address_list (h, LAL_INTERFACE_ADDRESS, &s6->sin6_addr,
sizeof (struct in6_addr));
+ }
break;
default:
GNUNET_break (0);
@@ -1116,6 +1138,9 @@
GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "ENABLE_UPNP");
h->use_localaddresses =
GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "USE_LOCALADDR");
+ h->return_localaddress =
+ GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat",
"RETURN_LOCAL_ADDRESSES");
+
h->use_hostname =
GNUNET_CONFIGURATION_get_value_yesno (cfg, "nat", "USE_HOSTNAME");
h->disable_ipv6 =
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r17938 - in gnunet: contrib src/nat,
gnunet <=