From cff5a844a3e6b494f4a4f6eb5b48a84780f2d0e5 Mon Sep 17 00:00:00 2001 From: Guus Sliepen Date: Mon, 20 Feb 2012 16:52:53 +0100 Subject: [PATCH] Don't bind outgoing TCP sockets anymore. The code introduced in commit 41a05f59ba2c3eb5caab555f096ed1b9fbe69ee3 is not needed anymore, since tinc has been able to handle UDP packets from a different source address than those of the TCP packets since 1.0.10. When using multiple BindToAddress statements, this code does not make sense anymore, we do want the kernel to choose the source address on its own. --- src/net_socket.c | 60 ------------------------------------------------ 1 file changed, 60 deletions(-) diff --git a/src/net_socket.c b/src/net_socket.c index d8bb0078..f371dc12 100644 --- a/src/net_socket.c +++ b/src/net_socket.c @@ -34,8 +34,6 @@ #include "utils.h" #include "xalloc.h" -#include - /* Needed on Mac OS/X */ #ifndef SOL_TCP #define SOL_TCP IPPROTO_TCP @@ -110,63 +108,6 @@ static bool bind_to_interface(int sd) { return true; } -static bool bind_to_address(connection_t *c) { - char *node; - struct addrinfo *ai_list; - struct addrinfo *ai_ptr; - struct addrinfo ai_hints; - int status; - - assert(c != NULL); - assert(c->socket >= 0); - - node = NULL; - if(!get_config_string(lookup_config(config_tree, "BindToAddress"), - &node)) - return true; - - assert(node != NULL); - - memset(&ai_hints, 0, sizeof(ai_hints)); - ai_hints.ai_family = c->address.sa.sa_family; - /* We're called from `do_outgoing_connection' only. */ - ai_hints.ai_socktype = SOCK_STREAM; - ai_hints.ai_protocol = IPPROTO_TCP; - - ai_list = NULL; - - status = getaddrinfo(node, /* service = */ NULL, - &ai_hints, &ai_list); - if(status) { - free(node); - logger(LOG_WARNING, "Error looking up %s port %s: %s", - node, "any", gai_strerror(status)); - return false; - } - assert(ai_list != NULL); - - status = -1; - for(ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next) { - status = bind(c->socket, - ai_list->ai_addr, ai_list->ai_addrlen); - if(!status) - break; - } - - - if(status) { - logger(LOG_ERR, "Can't bind to %s/tcp: %s", node, sockstrerror(sockerrno)); - } else ifdebug(CONNECTIONS) { - logger(LOG_DEBUG, "Successfully bound outgoing " - "TCP socket to %s", node); - } - - free(node); - freeaddrinfo(ai_list); - - return status ? false : true; -} - int setup_listen_socket(const sockaddr_t *sa) { int nfd; char *addrstr; @@ -434,7 +375,6 @@ begin: #endif bind_to_interface(c->socket); - bind_to_address(c); /* Optimize TCP settings */