TosValue redefined as TOS byte
author{Teco Boot} <{teco@inf-net.nl}>
Wed, 14 Sep 2011 07:07:23 +0000 (09:07 +0200)
committer{Teco Boot} <{teco@inf-net.nl}>
Wed, 14 Sep 2011 07:07:23 +0000 (09:07 +0200)
files/olsrd.conf.default.full
src/cfgparser/olsrd_conf.c
src/olsr_cfg.h
src/unix/ifnet.c

index 61e1a7d..86d5337 100644 (file)
 
 # NicChgsPollInt  2.5
 
-# TOS(type of service) value for the IP header of control traffic.
-# (Default is 16)
+# TOS(type of service) byte value for the IP header of control traffic.
+# Must be multiple of 4, because OLSR doesn't use ECN
+# (Default is 32)
 
-# TosValue 16
+# TosValue 32
 
 # FIBMetric controls the metric value of the host-routes OLSRd sets.
 # - "flat" means that the metric value is always 2. This is the preferred value
index e0ba8f7..c445f93 100644 (file)
@@ -425,12 +425,18 @@ olsrd_sanity_check_cnf(struct olsrd_config *cnf)
     return -1;
   }
 
-  /* TOS */
+  /* TOS range */
   if (cnf->tos > MAX_TOS) {
     fprintf(stderr, "TOS %d is not allowed\n", cnf->tos);
     return -1;
   }
 
+  /* TOS ECN */
+  if (cnf->tos & 0x03) {
+    fprintf(stderr, "TOS %d has set ECN bits, not allowed\n", cnf->tos);
+    return -1;
+  }
+
   if (cnf->willingness_auto == false && (cnf->willingness > MAX_WILLINGNESS)) {
     fprintf(stderr, "Willingness %d is not allowed\n", cnf->willingness);
     return -1;
index 04577cc..efcc8aa 100644 (file)
@@ -60,7 +60,7 @@
 #define DEF_WILL_AUTO        false
 #define DEF_WILLINGNESS      3
 #define DEF_ALLOW_NO_INTS    true
-#define DEF_TOS              16
+#define DEF_TOS              32
 #define DEF_DEBUGLVL         1
 #define DEF_IPC_CONNECTIONS  0
 #define DEF_USE_HYST         false
@@ -97,7 +97,7 @@
 #define MIN_NICCHGPOLLRT     1.0
 #define MAX_DEBUGLVL         9
 #define MIN_DEBUGLVL         0
-#define MAX_TOS              31
+#define MAX_TOS              252
 #define MIN_TOS              0
 #define MAX_WILLINGNESS      7
 #define MIN_WILLINGNESS      0
@@ -223,7 +223,7 @@ struct olsrd_config {
   bool host_emul;
   int ip_version;
   bool allow_no_interfaces;
-  uint16_t tos;
+  uint8_t tos;
   uint8_t rt_proto;
   uint8_t rt_table, rt_table_default, rt_table_tunnel;
   int32_t rt_table_pri, rt_table_tunnel_pri;
index d862e4d..586f691 100644 (file)
@@ -562,7 +562,7 @@ chk_if_up(struct olsr_if *iface, int debuglvl __attribute__ ((unused)))
   size_t name_size;
 #ifdef linux
   int precedence = IPTOS_PREC(olsr_cnf->tos);
-  int tos_bits = IPTOS_TOS(olsr_cnf->tos);
+  int tos_bits = olsr_cnf->tos;
 #endif
 
   if (iface->host_emul)