sgw: do not send zero bandwidth sgw HNAs by default
authorFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 8 May 2015 08:03:36 +0000 (10:03 +0200)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Fri, 8 May 2015 12:45:02 +0000 (14:45 +0200)
Previously, setting the uplink and/or downlink speed to zero would
cause zero bandwidth HNAs to be sent.

This patch ensures that these HNAs will not be sent, only after the
bandwidth was non-zero and it has become zero will these HNAs be sent
(so only in the 'unannounce' window of the previous patch).

Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
src/build_msg.c

index 43d1ea6..281148b 100644 (file)
@@ -986,6 +986,13 @@ __attribute__((unused))
   bool is_def_route = is_prefix_inetgw(&h->net);
 #endif
 
+#ifdef __linux__
+  if (!zero && olsr_cnf->smart_gw_active && is_def_route && smartgw_is_zero_bandwidth(olsr_cnf)) {
+    /* this is the default route, with zero bandwidth, do not append it */
+    return;
+  }
+#endif /* __linux__ */
+
   if ((*curr_size + (2 * olsr_cnf->ipsize)) > *remainsize) {
     /* Only add HNA message if it contains data */
     if (*curr_size > OLSR_HNA_IPV4_HDRSIZE) {
@@ -1141,6 +1148,13 @@ __attribute__((unused))
   bool is_def_route = is_prefix_inetgw(&h->net);
 #endif
 
+#ifdef __linux__
+  if (!zero && olsr_cnf->smart_gw_active && is_def_route && smartgw_is_zero_bandwidth(olsr_cnf)) {
+    /* this is the default route, with zero bandwidth, do not append it */
+    return;
+  }
+#endif /* __linux__ */
+
   if ((*curr_size + (2 * olsr_cnf->ipsize)) > *remainsize) {
     /* Only add HNA message if it contains data */
     if (*curr_size > OLSR_HNA_IPV6_HDRSIZE) {