X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fnet_setup.c;h=bab50fe4389d36aa1b168543ad356c24635a3e38;hp=279feaefd24a7b1c1f21e48cd69dfc0e70597e35;hb=5a28aa7b8b0ab6237c2eab5f8b11253ea3ec5a05;hpb=1b2846d907adfc8472fc9da0c951c3243c7ee143 diff --git a/src/net_setup.c b/src/net_setup.c index 279feaef..bab50fe4 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -1,7 +1,7 @@ /* net_setup.c -- Setup. Copyright (C) 1998-2005 Ivo Timmermans, - 2000-2011 Guus Sliepen + 2000-2012 Guus Sliepen 2006 Scott Lamb 2010 Brandon Black @@ -356,6 +356,7 @@ static bool setup_myself(void) { get_config_bool(lookup_config(config_tree, "DirectOnly"), &directonly); get_config_bool(lookup_config(config_tree, "StrictSubnets"), &strictsubnets); get_config_bool(lookup_config(config_tree, "TunnelServer"), &tunnelserver); + get_config_bool(lookup_config(config_tree, "LocalDiscovery"), &localdiscovery); strictsubnets |= tunnelserver; if(get_config_string(lookup_config(config_tree, "Mode"), &mode)) { @@ -397,6 +398,8 @@ static bool setup_myself(void) { myself->options |= OPTION_CLAMP_MSS; get_config_bool(lookup_config(config_tree, "PriorityInheritance"), &priorityinheritance); + get_config_bool(lookup_config(config_tree, "DecrementTTL"), &decrement_ttl); + get_config_bool(lookup_config(config_tree, "Broadcast"), &broadcast); #if !defined(SOL_IP) || !defined(IP_TOS) if(priorityinheritance) @@ -540,6 +543,8 @@ static bool setup_myself(void) { /* Open device */ + devops = os_devops; + if(get_config_string(lookup_config(config_tree, "DeviceType"), &type)) { if(!strcasecmp(type, "dummy")) devops = dummy_devops; @@ -553,12 +558,6 @@ static bool setup_myself(void) { else if(!strcasecmp(type, "vde")) devops = vde_devops; #endif - else { - logger(LOG_ERR, "Unknown device type %s!", type); - return false; - } - } else { - devops = os_devops; } if(!devops.setup()) @@ -582,6 +581,7 @@ static bool setup_myself(void) { /* Open sockets */ + listen_sockets = 0; cfg = lookup_config(config_tree, "BindToAddress"); do { @@ -603,9 +603,12 @@ static bool setup_myself(void) { return false; } - listen_sockets = 0; - for(aip = ai; aip; aip = aip->ai_next) { + if(listen_sockets >= MAXSOCKETS) { + logger(LOG_ERR, "Too many listening sockets"); + return false; + } + listen_socket[listen_sockets].tcp = setup_listen_socket((sockaddr_t *) aip->ai_addr);