diff options
author | Christian Grothoff <christian@grothoff.org> | 2010-05-21 07:57:48 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2010-05-21 07:57:48 +0000 |
commit | 7afa921bf5d21f5b8260e71d7ec0d7927fb085e3 (patch) | |
tree | 419522a91c6b1dc3c94efe56818cec51954c1dfa /src/transport/plugin_transport_tcp.c | |
parent | c67126afe50e544376680c704825353644f9ea50 (diff) | |
download | gnunet-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.c | 10 |
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); |