aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_tcp.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2010-05-21 07:57:48 +0000
committerChristian Grothoff <christian@grothoff.org>2010-05-21 07:57:48 +0000
commit7afa921bf5d21f5b8260e71d7ec0d7927fb085e3 (patch)
tree419522a91c6b1dc3c94efe56818cec51954c1dfa /src/transport/plugin_transport_tcp.c
parentc67126afe50e544376680c704825353644f9ea50 (diff)
downloadgnunet-7afa921bf5d21f5b8260e71d7ec0d7927fb085e3.tar.gz
gnunet-7afa921bf5d21f5b8260e71d7ec0d7927fb085e3.zip
do not use link local addresses
Diffstat (limited to 'src/transport/plugin_transport_tcp.c')
-rw-r--r--src/transport/plugin_transport_tcp.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c
index 5aa1b8c2f..5daa29532 100644
--- a/src/transport/plugin_transport_tcp.c
+++ b/src/transport/plugin_transport_tcp.c
@@ -1174,6 +1174,11 @@ tcp_plugin_check_address (void *cls, void *addr, size_t addrlen)
1174 else 1174 else
1175 { 1175 {
1176 v6 = (struct IPv6TcpAddress *) addr; 1176 v6 = (struct IPv6TcpAddress *) addr;
1177 if (IN6_IS_ADDR_LINKLOCAL (v6->ipv6_addr))
1178 {
1179 GNUNET_break_op (0);
1180 return GNUNET_SYSERR;
1181 }
1177 v6->t6_port = htons (check_port (plugin, ntohs (v6->t6_port))); 1182 v6->t6_port = htons (check_port (plugin, ntohs (v6->t6_port)));
1178 } 1183 }
1179 return GNUNET_OK; 1184 return GNUNET_OK;
@@ -1444,6 +1449,11 @@ process_interfaces (void *cls,
1444 } 1449 }
1445 else if (af == AF_INET6) 1450 else if (af == AF_INET6)
1446 { 1451 {
1452 if (IN6_IS_ADDR_LINKLOCAL (((struct sockaddr_in6 *) addr)->sin6_addr.s6_addr))
1453 {
1454 /* skip link local addresses */
1455 return GNUNET_OK;
1456 }
1447 memcpy (t6.ipv6_addr, 1457 memcpy (t6.ipv6_addr,
1448 ((struct sockaddr_in6 *) addr)->sin6_addr.s6_addr, 1458 ((struct sockaddr_in6 *) addr)->sin6_addr.s6_addr,
1449 16); 1459 16);