net/mwan3: add mwan3_init function
authorFlorian Eckert <fe@dev.tdt.de>
Fri, 2 Feb 2018 13:56:18 +0000 (14:56 +0100)
committerFlorian Eckert <fe@dev.tdt.de>
Mon, 5 Feb 2018 09:29:28 +0000 (10:29 +0100)
Move all shell commands which are executed during /lib/mwan3/mwan3.sh
sourceing into a seperate init function which must be called at first.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
net/mwan3/files/etc/hotplug.d/iface/15-mwan3
net/mwan3/files/lib/mwan3/mwan3.sh
net/mwan3/files/usr/sbin/mwan3

index bea7baad95de7504eb3d6129e0594950a65b67ed..f94b400934bd3772e56ec23f12f68b143b23658a 100644 (file)
@@ -21,6 +21,7 @@ config_get initial_state $INTERFACE initial_state "online"
 [ "$enabled" == "1" ] || exit 0
 
 mwan3_lock
+mwan3_init
 mwan3_set_connected_iptables
 mwan3_unlock
 
index 3d64ec44bf5a822c2ff52a103d36071e78a30b66..7a4f1f2c8016fca19de5a1ac117895a2741fdc65 100644 (file)
@@ -11,17 +11,14 @@ CONNTRACK_FILE="/proc/net/nf_conntrack"
 MWAN3_STATUS_DIR="/var/run/mwan3"
 MWAN3TRACK_STATUS_DIR="/var/run/mwan3track"
 DEFAULT_LOWEST_METRIC=256
+MMX_MASK=""
+MMX_DEFAULT=""
+MMX_BLACKHOLE=""
+MM_BLACKHOLE=""
+
+MMX_UNREACHABLE=""
+MM_UNREACHABLE=""
 
-[ -d $MWAN3_STATUS_DIR ] || mkdir -p $MWAN3_STATUS_DIR/iface_state
-# mwan3's MARKing mask (at least 3 bits should be set)
-if [ -e "${MWAN3_STATUS_DIR}/mmx_mask" ]; then
-       MMX_MASK=$(cat "${MWAN3_STATUS_DIR}/mmx_mask")
-else
-       config_load mwan3
-       config_get MMX_MASK globals mmx_mask '0xff00'
-       echo "$MMX_MASK" > "${MWAN3_STATUS_DIR}/mmx_mask"
-       $LOG notice "Using firewall mask ${MMX_MASK}"
-fi
 
 # counts how many bits are set to 1
 # n&(n-1) clears the lowest bit set to 1
@@ -58,16 +55,34 @@ mwan3_id2mask()
        printf "0x%x" $result
 }
 
-# mark mask constants
-MM_BIT_CNT=$(mwan3_count_one_bits MMX_MASK)
-MM_DEFAULT=$(((1<<MM_BIT_CNT)-1))
-MM_BLACKHOLE=$(($MM_DEFAULT-2))
-MM_UNREACHABLE=$(($MM_DEFAULT-1))
+mwan3_init()
+{
+       local bitcnt
+       local mmdefault mmblackhole mmunreachable
+
+       [ -d $MWAN3_STATUS_DIR ] || mkdir -p $MWAN3_STATUS_DIR/iface_state
+
+       # mwan3's MARKing mask (at least 3 bits should be set)
+       if [ -e "${MWAN3_STATUS_DIR}/mmx_mask" ]; then
+               MMX_MASK=$(cat "${MWAN3_STATUS_DIR}/mmx_mask")
+       else
+               config_load mwan3
+               config_get MMX_MASK globals mmx_mask '0xff00'
+               echo "$MMX_MASK" > "${MWAN3_STATUS_DIR}/mmx_mask"
+               $LOG notice "Using firewall mask ${MMX_MASK}"
+       fi
 
-# MMX_DEFAULT should equal MMX_MASK
-MMX_DEFAULT=$(mwan3_id2mask MM_DEFAULT MMX_MASK)
-MMX_BLACKHOLE=$(mwan3_id2mask MM_BLACKHOLE MMX_MASK)
-MMX_UNREACHABLE=$(mwan3_id2mask MM_UNREACHABLE MMX_MASK)
+       # mark mask constants
+       bitcnt=$(mwan3_count_one_bits MMX_MASK)
+       mmdefault=$(((1<<bitcnt)-1))
+       MM_BLACKHOLE=$(($mmdefault-2))
+       MM_UNREACHABLE=$(($mmdefault-1))
+
+       # MMX_DEFAULT should equal MMX_MASK
+       MMX_DEFAULT=$(mwan3_id2mask mmdefault MMX_MASK)
+       MMX_BLACKHOLE=$(mwan3_id2mask MM_BLACKHOLE MMX_MASK)
+       MMX_UNREACHABLE=$(mwan3_id2mask MM_UNREACHABLE MMX_MASK)
+}
 
 mwan3_lock() {
        lock /var/run/mwan3.lock
index 5c4259c7da70cfa80fc57a0e8851f46e80c19833..baf109df12d51f5827f91ed2b0ef7738cb785400 100755 (executable)
@@ -187,6 +187,7 @@ restart() {
 
 case "$1" in
        ifup|ifdown|interfaces|policies|connected|rules|status|start|stop|restart)
+               mwan3_init
                $*
        ;;
        *)