Convert Port to numeric form before sending it to other nodes.
If one uses a symbolic name for the Port option, tinc will send that name literally to other nodes. However, it is not guaranteed that all nodes have the same contents in /etc/services, or have such a file at all.
This commit is contained in:
parent
292354912f
commit
f75e71bc69
3 changed files with 16 additions and 5 deletions
|
|
@ -309,6 +309,16 @@ bool setup_myself(void) {
|
|||
&& !get_config_string(lookup_config(myself->connection->config_tree, "Port"), &myport))
|
||||
myport = xstrdup("655");
|
||||
|
||||
if(!atoi(myport)) {
|
||||
struct addrinfo *ai = str2addrinfo("localhost", myport, SOCK_DGRAM);
|
||||
sockaddr_t sa;
|
||||
if(!ai || !ai->ai_addr)
|
||||
return false;
|
||||
free(myport);
|
||||
memcpy(&sa, ai->ai_addr, ai->ai_addrlen);
|
||||
sockaddr2str(&sa, NULL, &myport);
|
||||
}
|
||||
|
||||
/* Read in all the subnets specified in the host configuration file */
|
||||
|
||||
cfg = lookup_config(myself->connection->config_tree, "Subnet");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue