interfaces: add 'silent' mode
authorChristoph Loesch <mail@chil.at>
Sun, 11 Feb 2018 22:37:30 +0000 (23:37 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Thu, 26 Apr 2018 15:25:15 +0000 (17:25 +0200)
When enabled, the interface will not retransmit TC messages.
Intended usage is for VPN tunnels.
Created by Markus Kittenberger.

Signed-Off-By: Christoph Loesch <mail@chil.at>
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/cfgparser/olsrd_conf.c
src/cfgparser/oparse.y
src/olsr.c
src/olsr_cfg.h

index 7d768f9..fe55bda 100644 (file)
@@ -98,7 +98,8 @@ const char *GW_UPLINK_TXT[] = {
 
 const char *OLSR_IF_MODE[] = {
   "mesh",
-  "ether"
+  "ether",
+  "silent"
 };
 
 int current_line;
index e4d71d4..c311824 100644 (file)
@@ -582,7 +582,7 @@ isetifmode: TOK_IFMODE TOK_STRING
 {
   int ifcnt = ifs_in_curr_cfg;
   struct olsr_if *ifs = olsr_cnf->interfaces;
-       int mode = (strcmp($2->string, "ether") == 0)?IF_MODE_ETHER:IF_MODE_MESH;
+       int mode = (strcmp($2->string, "ether") == 0)?IF_MODE_ETHER:((strcmp($2->string, "silent") == 0)?IF_MODE_SILENT:IF_MODE_MESH);
 
   PARSER_DEBUG_PRINTF("\tMode: %s\n", $2->string);
 
index 6465dca..1873b88 100644 (file)
@@ -380,6 +380,9 @@ olsr_forward_message(union olsr_message *m, struct interface_olsr *in_if, union
 
   /* looping trough interfaces */
   for (ifn = ifnet; ifn; ifn = ifn->int_next) {
+    /* do not retransmit out through a interface if it has mode == silent */
+    if (ifn->mode == IF_MODE_SILENT) continue;
+
     /* do not retransmit out through the same interface if it has mode == ether */
     if (ifn == in_if && ifn->mode == IF_MODE_ETHER) continue;
 
index 97efaa4..de49062 100644 (file)
@@ -199,6 +199,7 @@ typedef enum {
 enum olsr_if_mode {
   IF_MODE_MESH,
   IF_MODE_ETHER,
+  IF_MODE_SILENT,
   IF_MODE_CNT
 };