jsoninfo / sgw: isGwSelectable function is common, use it as such
authorFerry Huberts <ferry.huberts@pelagic.nl>
Sat, 20 Feb 2016 08:51:54 +0000 (09:51 +0100)
committerFerry Huberts <ferry.huberts@pelagic.nl>
Sun, 21 Feb 2016 12:23:39 +0000 (13:23 +0100)
Signed-off-by: Ferry Huberts <ferry.huberts@pelagic.nl>
lib/jsoninfo/src/olsrd_jsoninfo.c
src/gateway_default_handler.c
src/gateway_default_handler.h

index 4195f40..1f14720 100644 (file)
 #include "olsrd_jsoninfo_helpers.h"
 #include "olsrd_plugin.h"
 #include "../../info/info_types.h"
+#include "gateway_default_handler.h"
 
 struct timeval start_time;
 
-#ifdef __linux__
-static bool isGwSelectable(struct gateway_entry * gw, bool ipv6) {
-  if (!ipv6) {
-    return gw->ipv4 //
-        && ((olsr_cnf->ip_version == AF_INET) //
-            || olsr_cnf->use_niit) //
-        && (olsr_cnf->smart_gw_allow_nat //
-            || !gw->ipv4nat);
-  }
-
-  return gw->ipv6 //
-      && (olsr_cnf->ip_version == AF_INET6);
-}
-#endif /* __linux__ */
-
 void plugin_init(const char *plugin_name) {
   /* Get start time */
   gettimeofday(&start_time, NULL);
index 48a3745..da1fd63 100644 (file)
@@ -99,9 +99,7 @@ static void gw_default_choose_gateway(void) {
     }
 
     if (gw_def_choose_new_ipv4_gw) {
-      bool gw_eligible_v4 = gw->ipv4
-          /* && (olsr_cnf->ip_version == AF_INET || olsr_cnf->use_niit) *//* contained in gw_def_choose_new_ipv4_gw */
-          && (olsr_cnf->smart_gw_allow_nat || !gw->ipv4nat);
+      bool gw_eligible_v4 = isGwSelectable(gw, false) ;
       if (gw_eligible_v4 && gw_cost < (chosen_gw_ipv4 ? chosen_gw_ipv4->path_cost : INT64_MAX)
           && (!cost_ipv4_threshold_valid || (gw_cost < cost_ipv4_threshold))) {
         chosen_gw_ipv4 = gw;
@@ -109,8 +107,7 @@ static void gw_default_choose_gateway(void) {
     }
 
     if (gw_def_choose_new_ipv6_gw) {
-      bool gw_eligible_v6 = gw->ipv6
-          /* && olsr_cnf->ip_version == AF_INET6 *//* contained in gw_def_choose_new_ipv6_gw */;
+      bool gw_eligible_v6 = isGwSelectable(gw, true);
       if (gw_eligible_v6 && gw_cost < (chosen_gw_ipv6 ? chosen_gw_ipv6->path_cost : INT64_MAX)
           && (!cost_ipv6_threshold_valid || (gw_cost < cost_ipv6_threshold))) {
         chosen_gw_ipv6 = gw;
index 791b04d..76e2268 100644 (file)
 
 #ifdef __linux__
 
+#include "defs.h"
+#include "gateway.h"
+
+#include <stdbool.h>
+
+static INLINE bool isGwSelectable(struct gateway_entry * gw, bool ipv6) {
+  if (!ipv6) {
+    return gw->ipv4 //
+        && ((olsr_cnf->ip_version == AF_INET) //
+            || olsr_cnf->use_niit) //
+        && (olsr_cnf->smart_gw_allow_nat //
+            || !gw->ipv4nat);
+  }
+
+  return gw->ipv6 //
+      && (olsr_cnf->ip_version == AF_INET6);
+}
+
 extern struct olsr_gw_handler gw_def_handler;
 
 #endif /* __linux__ */