- /* Read in all the subnets specified in the host configuration file */
-
- cfg = lookup_config(config_tree, "Subnet");
-
- while(cfg) {
- if(!get_config_subnet(cfg, &subnet))
- return false;
-
- subnet_add(myself, subnet);
-
- cfg = lookup_config_next(config_tree, cfg);
- }
-
- /* Check some options */
-
- if(get_config_bool(lookup_config(config_tree, "IndirectData"), &choice) && choice)
- myself->options |= OPTION_INDIRECT;
-
- if(get_config_bool(lookup_config(config_tree, "TCPOnly"), &choice) && choice)
- myself->options |= OPTION_TCPONLY;
-
- 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);
- get_config_bool(lookup_config(config_tree, "LocalDiscovery"), &localdiscovery);
- strictsubnets |= tunnelserver;
-
- if(get_config_string(lookup_config(config_tree, "Mode"), &mode)) {
- if(!strcasecmp(mode, "router"))
- routing_mode = RMODE_ROUTER;
- else if(!strcasecmp(mode, "switch"))
- routing_mode = RMODE_SWITCH;
- else if(!strcasecmp(mode, "hub"))
- routing_mode = RMODE_HUB;
- else {
- logger(LOG_ERR, "Invalid routing mode!");
- return false;
- }
- free(mode);
- }
-
- 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(config_tree, "PMTUDiscovery"), &choice);
- if(choice)
- myself->options |= OPTION_PMTU_DISCOVERY;
-
- choice = true;
- get_config_bool(lookup_config(config_tree, "ClampMSS"), &choice);
- if(choice)
- myself->options |= OPTION_CLAMP_MSS;