sgw: add SmartGatewayStatusFile setting
authorFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 29 Oct 2014 14:40:31 +0000 (15:40 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Wed, 12 Nov 2014 10:45:25 +0000 (11:45 +0100)
The status file writer will be added later on.

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
README-Olsr-Extensions
files/olsrd.conf.default.full
files/olsrd.conf.default.lq
files/olsrd.conf.default.lq-fisheye
src/cfgparser/cfgfile_gen.c
src/cfgparser/olsrd_conf.c
src/cfgparser/oparse.y
src/cfgparser/oscan.lex
src/olsr_cfg.h

index 3c5cf8e..b5ce50f 100644 (file)
@@ -307,26 +307,30 @@ All other parameters will be ignored if SmartGateway is set to "no"
 6- SmartGatewayEgressFilePeriod determines the period (in milliseconds) on which
    the SmartGatewayEgressFile is checked for changes and processed if changed.
    The default setting is 5000.
-7- SmartGatewayTablesOffset and SmartGatewayRulesOffset determine the ranges of
+7- SmartGatewayStatusFile declares the file that is written by olsrd to contain
+   the status of the smart gateways and is only relevant when
+   SmartGatewayUseCount is larger than 1.
+   The default setting is <not set>
+8- SmartGatewayTablesOffset and SmartGatewayRulesOffset determine the ranges of
    policy routing rule markings that are used in a multi-gateway setup (see the
    policy routing script for an explanation).
    The default settings are 90 and 0 respectively. The value of 0 for
    SmartGatewayRulesOffset will automatically align the table and rule numbers
    for the server tunnel, egress interfaces and gateway tunnel interfaces.
-8- SmartGatewayAllowNAT controls whether you want to allow the selection
+9- SmartGatewayAllowNAT controls whether you want to allow the selection
    of an outgoing ipv4 gateway with NAT (Network Address Translation).
    The default setting is "yes".
-9- SmartGatewayPeriod determines the period (in milliseconds) on which
+10-SmartGatewayPeriod determines the period (in milliseconds) on which
    a new smart gateway selection is performed.
    The default setting is 10000 milliseconds.
-10-SmartGatewayStableCount determines the number of times the same new gateway
+11-SmartGatewayStableCount determines the number of times the same new gateway
    must be chosen before that new smart gateway is actually selected.
    The default setting is 6.
-11-SmartGatewayThreshold (percentage) controls whether you want to allow
+12-SmartGatewayThreshold (percentage) controls whether you want to allow
    re-selection of a new outgoing gateway if its routing cost is lower or equal
    to the configured percentage of the routing cost of the current gateway.
    The default setting is 0, which disables it.
-12-SmartGatewayWeightExitLinkUp, SmartGatewayWeightExitLinkDown,
+13-SmartGatewayWeightExitLinkUp, SmartGatewayWeightExitLinkDown,
    SmartGatewayWeightEtx and SmartGatewayDividerEtx control the weighing
    of gateway bandwidth and ETX costs.
 
index 3df50c2..2fd69b3 100644 (file)
 
 # SmartGatewayEgressFilePeriod "5000"
 
+# Declares the file that is written by olsrd to contain the status of the smart
+# gateways and is only relevant when SmartGatewayUseCount is larger than 1.
+# The default setting is <not set>
+
+# SmartGatewayStatusFile <not set>
+
 # Determines the routing tables offset for multi-gateway policy routing tables
 # See the policy routing script for an explanation.
 # (default is 90)
index a5a6fe3..e6e6e5d 100644 (file)
 
 # SmartGatewayEgressFilePeriod "5000"
 
+# Declares the file that is written by olsrd to contain the status of the smart
+# gateways and is only relevant when SmartGatewayUseCount is larger than 1.
+# The default setting is <not set>
+
+# SmartGatewayStatusFile <not set>
+
 # Determines the routing tables offset for multi-gateway policy routing tables
 # See the policy routing script for an explanation.
 # (default is 90)
index 4fe6ed3..736c3cc 100644 (file)
 
 # SmartGatewayEgressFilePeriod "5000"
 
+# Declares the file that is written by olsrd to contain the status of the smart
+# gateways and is only relevant when SmartGatewayUseCount is larger than 1.
+# The default setting is <not set>
+
+# SmartGatewayStatusFile <not set>
+
 # Determines the routing tables offset for multi-gateway policy routing tables
 # See the policy routing script for an explanation.
 # (default is 90)
index 762107f..9f9f564 100644 (file)
@@ -616,6 +616,17 @@ void olsrd_write_cnf_autobuf(struct autobuf *out, struct olsrd_config *cnf) {
       cnf->smart_gw_egress_file_period);
   abuf_appendf(out,
     "\n"
+    "# Declares the file that is written by olsrd to contain the status of the smart\n"
+    "# gateways and is only relevant when SmartGatewayUseCount is larger than 1.\n"
+    "# (default is %s)\n"
+      "\n", "<not set>");
+    {
+      bool def = !cnf->smart_gw_status_file || !strlen(cnf->smart_gw_status_file);
+      abuf_appendf(out, "%sSmartGatewayStatusFile %s\n",
+        def ? "# " : "", def ? "<not set>" : cnf->smart_gw_status_file);
+    }
+  abuf_appendf(out,
+    "\n"
     "# Determines the routing tables offset for multi-gateway policy routing tables\n"
     "# See the policy routing script for an explanation.\n"
     "# (default is %u)\n"
index 542333b..1e9fc6c 100644 (file)
@@ -982,6 +982,7 @@ set_default_cnf(struct olsrd_config *cnf)
   cnf->smart_gw_egress_interfaces_count = 0;
   cnf->smart_gw_egress_file = NULL;
   cnf->smart_gw_egress_file_period = DEF_GW_EGRESS_FILE_PERIOD;
+  cnf->smart_gw_status_file = NULL;
   cnf->smart_gw_offset_tables = DEF_GW_OFFSET_TABLES;
   cnf->smart_gw_offset_rules = DEF_GW_OFFSET_RULES;
   cnf->smart_gw_allow_nat = DEF_GW_ALLOW_NAT;
@@ -1134,6 +1135,8 @@ olsrd_print_cnf(struct olsrd_config *cnf)
 
   printf("SmGw. Egr Fl Per.: %u\n", cnf->smart_gw_egress_file_period);
 
+  printf("SmGw. Status File: %s\n", cnf->smart_gw_status_file);
+
   printf("SmGw. Offst Tabls: %u\n", cnf->smart_gw_offset_tables);
 
   printf("SmGw. Offst Rules: %u\n", cnf->smart_gw_offset_rules);
index f45ed60..6a659dc 100644 (file)
@@ -225,6 +225,7 @@ static int add_ipv6_addr(YYSTYPE ipaddr_arg, YYSTYPE prefixlen_arg)
 %token TOK_SMART_GW_EGRESS_IFS
 %token TOK_SMART_GW_EGRESS_FILE
 %token TOK_SMART_GW_EGRESS_FILE_PERIOD
+%token TOK_SMART_GW_STATUS_FILE
 %token TOK_SMART_GW_OFFSET_TABLES
 %token TOK_SMART_GW_OFFSET_RULES
 %token TOK_SMART_GW_ALLOW_NAT
@@ -321,6 +322,7 @@ stmt:       idebug
           | ssmart_gw_policyrouting_script
           | ssmart_gw_egress_file
           | ismart_gw_egress_file_period
+          | ssmart_gw_status_file
           | ismart_gw_offset_tables
           | ismart_gw_offset_rules
           | bsmart_gw_allow_nat
@@ -1462,6 +1464,14 @@ ismart_gw_egress_file_period: TOK_SMART_GW_EGRESS_FILE_PERIOD TOK_INTEGER
 }
 ;
 
+ssmart_gw_status_file: TOK_SMART_GW_STATUS_FILE TOK_STRING
+{
+  PARSER_DEBUG_PRINTF("Smart gateway status file: %s\n", $2->string);
+  olsr_cnf->smart_gw_status_file = $2->string;
+  free($2);
+}
+;
+
 ismart_gw_offset_tables: TOK_SMART_GW_OFFSET_TABLES TOK_INTEGER
 {
   PARSER_DEBUG_PRINTF("Smart gateway tables offset: %d\n", $2->integer);
index bfe9054..fccc906 100644 (file)
@@ -506,6 +506,11 @@ IPV6ADDR {IPV6PAT1}|{IPV6PAT2}|{IPV6PAT3}|{IPV6PAT4}|{IPV6PAT5}|{IPV6PAT6}|{IPV6
     return TOK_SMART_GW_EGRESS_FILE_PERIOD;
 }
 
+"SmartGatewayStatusFile" {
+    yylval = NULL;
+    return TOK_SMART_GW_STATUS_FILE;
+}
+
 "SmartGatewayTablesOffset" {
     yylval = NULL;
     return TOK_SMART_GW_OFFSET_TABLES;
index 57214e7..7a74893 100644 (file)
@@ -320,6 +320,7 @@ struct olsrd_config {
   uint8_t smart_gw_egress_interfaces_count;
   char *smart_gw_egress_file;
   uint32_t smart_gw_egress_file_period;
+  char *smart_gw_status_file;
   uint32_t smart_gw_offset_tables;
   uint32_t smart_gw_offset_rules;
   uint32_t smart_gw_period;