Fixes for the Forwarding option.
[tinc] / src / net_setup.c
index cad84cc..70291bf 100644 (file)
@@ -339,7 +339,10 @@ bool setup_myself(void) {
        if(myself->options & OPTION_TCPONLY)
                myself->options |= OPTION_INDIRECT;
 
+       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);
+       strictsubnets |= tunnelserver;
 
        if(get_config_string(lookup_config(config_tree, "Mode"), &mode)) {
                if(!strcasecmp(mode, "router"))
@@ -353,8 +356,21 @@ bool setup_myself(void) {
                        return false;
                }
                free(mode);
-       } else
-               routing_mode = RMODE_ROUTER;
+       }
+
+       if(get_config_string(lookup_config(config_tree, "Forwarding"), &mode)) {
+               if(!strcasecmp(mode, "off"))
+                       forwarding_mode = FMODE_OFF;
+               else if(!strcasecmp(mode, "internal"))
+                       forwarding_mode = FMODE_INTERNAL;
+               else if(!strcasecmp(mode, "kernel"))
+                       forwarding_mode = FMODE_KERNEL;
+               else {
+                       logger(LOG_ERR, "Invalid forwarding mode!");
+                       return false;
+               }
+               free(mode);
+       }
 
        choice = true;
        get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice);
@@ -485,7 +501,7 @@ bool setup_myself(void) {
 
        graph();
 
-       if(tunnelserver)
+       if(strictsubnets)
                load_all_subnets();
 
        /* Open device */