a cleaner solution for disabling dyngw and dyngw_plain in freifunk-policyrouting...
authorManuel Munz <munz@comuno.net>
Mon, 4 Jan 2016 21:34:55 +0000 (22:34 +0100)
committerManuel Munz <munz@comuno.net>
Mon, 4 Jan 2016 21:34:55 +0000 (22:34 +0100)
contrib/package/freifunk-policyrouting/files/etc/init.d/freifunk-policyrouting

index 05a7540..4c91724 100755 (executable)
@@ -51,22 +51,33 @@ rt_tables() {
 
 }
 
-disable_dyngw() {
-       for cfg in $cfgs; do
-               local dyngwlib=`uci show $cfg |grep dyn_gw.so |awk {' FS="."; print $1"."$2 '}`
-               if [ -n "$dyngwlib" ]; then
-                       uci set $dyngwlib.ignore=1
-                       uci commit $cfg
-               fi
-
-               dyngwplainlib=`uci show $cfg |grep dyn_gw_plain |awk {' FS="."; print $1"."$2 '}`
-               if [ -n "$dyngwplainlib" ]; then
-                       rttable="$(uci -q get $dyngwplainlib.RtTable)"
-                       if [ -z "$rttable" ] || [ "$rttable" = "254" ]; then 
-                               uci set $dyngwplainlib.ignore=1
-                               uci commit $cfg
+handle_disable_dyngw() {
+       local cfg="$1"
+       local olsrd_cfg="$2"
+       config_get library "$cfg" library
+       case "$library" in
+               olsrd_dyn_gw_plain*)
+                       config_get RtTable "$cfg" RtTable
+                       if [ -z "$RtTable" ] || [ "$RtTable" = "254" ]; then
+                               config_set "$cfg" ignore '1'
+                               uci set $olsrd_cfg.$cfg.ignore="1"
+                               uci commit $olsrd_cfg
+                               logger -s -t policyrouting -p info "dyngw_plain plugin disabled."
                        fi
-               fi
+               ;;
+               olsrd_dyn_gw.so*)
+                       logger -s -t policyrouting -p info "$cfg"
+                       uci set $olsrd_cfg.$cfg.ignore="1"
+                               uci commit $olsrd_cfg
+                       logger -s -t policyrouting -p info "dyngw plugin disabled."
+               ;;
+       esac
+}
+
+disable_dyngw() {
+       for olsrd_cfg in $cfgs; do
+               config_load $olsrd_cfg
+               config_foreach handle_disable_dyngw LoadPlugin $olsrd_cfg
        done
 }