projects
/
tinc
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Don't bind outgoing TCP sockets anymore.
[tinc]
/
src
/
net_setup.c
diff --git
a/src/net_setup.c
b/src/net_setup.c
index
3268f5d
..
2301c83
100644
(file)
--- a/
src/net_setup.c
+++ b/
src/net_setup.c
@@
-398,6
+398,8
@@
static bool setup_myself(void) {
get_config_bool(lookup_config(config_tree, "PriorityInheritance"), &priorityinheritance);
get_config_bool(lookup_config(config_tree, "PriorityInheritance"), &priorityinheritance);
+ get_config_bool(lookup_config(config_tree, "DecrementTTL"), &decrement_ttl);
+
#if !defined(SOL_IP) || !defined(IP_TOS)
if(priorityinheritance)
logger(LOG_WARNING, "%s not supported on this platform", "PriorityInheritance");
#if !defined(SOL_IP) || !defined(IP_TOS)
if(priorityinheritance)
logger(LOG_WARNING, "%s not supported on this platform", "PriorityInheritance");
@@
-578,47
+580,54
@@
static bool setup_myself(void) {
/* Open sockets */
/* Open sockets */
-
get_config_string(lookup_config(config_tree, "BindToAddress"), &address
);
+
cfg = lookup_config(config_tree, "BindToAddress"
);
- hint.ai_family = addressfamily;
-
hint.ai_socktype = SOCK_STREAM
;
- hint.ai_protocol = IPPROTO_TCP;
-
hint.ai_flags = AI_PASSIVE
;
+ do {
+
get_config_string(cfg, &address)
;
+ if(cfg)
+
cfg = lookup_config_next(config_tree, cfg)
;
- err = getaddrinfo(address, myport, &hint, &ai);
+ hint.ai_family = addressfamily;
+ hint.ai_socktype = SOCK_STREAM;
+ hint.ai_protocol = IPPROTO_TCP;
+ hint.ai_flags = AI_PASSIVE;
- if(err || !ai) {
- logger(LOG_ERR, "System call `%s' failed: %s", "getaddrinfo",
- gai_strerror(err));
- return false;
- }
+ err = getaddrinfo(address, myport, &hint, &ai);
+ free(address);
- listen_sockets = 0;
+ if(err || !ai) {
+ logger(LOG_ERR, "System call `%s' failed: %s", "getaddrinfo",
+ gai_strerror(err));
+ return false;
+ }
- for(aip = ai; aip; aip = aip->ai_next) {
- listen_socket[listen_sockets].tcp =
- setup_listen_socket((sockaddr_t *) aip->ai_addr);
+ listen_sockets = 0;
- if(listen_socket[listen_sockets].tcp < 0)
- continue;
+ for(aip = ai; aip; aip = aip->ai_next) {
+ listen_socket[listen_sockets].tcp =
+ setup_listen_socket((sockaddr_t *) aip->ai_addr);
+
+ if(listen_socket[listen_sockets].tcp < 0)
+ continue;
- listen_socket[listen_sockets].udp =
- setup_vpn_in_socket((sockaddr_t *) aip->ai_addr);
+
listen_socket[listen_sockets].udp =
+
setup_vpn_in_socket((sockaddr_t *) aip->ai_addr);
- if(listen_socket[listen_sockets].udp < 0)
- continue;
+
if(listen_socket[listen_sockets].udp < 0)
+
continue;
- ifdebug(CONNECTIONS) {
- hostname = sockaddr2hostname((sockaddr_t *) aip->ai_addr);
- logger(LOG_NOTICE, "Listening on %s", hostname);
- free(hostname);
- }
+
ifdebug(CONNECTIONS) {
+
hostname = sockaddr2hostname((sockaddr_t *) aip->ai_addr);
+
logger(LOG_NOTICE, "Listening on %s", hostname);
+
free(hostname);
+
}
- memcpy(&listen_socket[listen_sockets].sa, aip->ai_addr, aip->ai_addrlen);
- listen_sockets++;
- }
+
memcpy(&listen_socket[listen_sockets].sa, aip->ai_addr, aip->ai_addrlen);
+
listen_sockets++;
+
}
- freeaddrinfo(ai);
+ freeaddrinfo(ai);
+ } while(cfg);
if(listen_sockets)
logger(LOG_NOTICE, "Ready");
if(listen_sockets)
logger(LOG_NOTICE, "Ready");