Merge pull request #5569 from neheb/patch-1
authorHannu Nyman <hannu.nyman@iki.fi>
Mon, 5 Feb 2018 15:47:04 +0000 (17:47 +0200)
committerGitHub <noreply@github.com>
Mon, 5 Feb 2018 15:47:04 +0000 (17:47 +0200)
btrfs-progs: Update to 4.15

net/mwan3/Makefile
net/mwan3/files/etc/hotplug.d/iface/14-mwan3
net/mwan3/files/etc/hotplug.d/iface/15-mwan3
net/mwan3/files/etc/hotplug.d/iface/16-mwan3-user
net/mwan3/files/etc/init.d/mwan3 [new file with mode: 0755]
net/mwan3/files/lib/mwan3/mwan3.sh
net/mwan3/files/usr/sbin/mwan3
net/mwan3/files/usr/sbin/mwan3track

index 4cdaed9ee350e6cbab996299a8c117eeabdeecf1..07d6827f7b031233441ea2114df68095305859fe 100644 (file)
@@ -8,7 +8,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mwan3
-PKG_VERSION:=2.6.9
+PKG_VERSION:=2.6.10
 PKG_RELEASE:=1
 PKG_MAINTAINER:=Florian Eckert <fe@dev.tdt.de>
 PKG_LICENSE:=GPLv2
index f977b3d84c750fc2c18b7ddf72d7da2a4c2db061..4f8e0be16490fb94160bdc86cc6a29e67081eff1 100644 (file)
@@ -12,6 +12,9 @@ if [ "$ACTION" = "ifup" ]; then
 fi
 
 config_load mwan3
+config_get_bool enabled globals 'enabled' '0'
+[ ${enabled} -gt 0 ] || exit 0
+
 config_get local_source globals local_source 'none'
 [ "${local_source}" = "none" ] && {
        exit 0
index 71d6393b434ab25e56a359cf1e39cd3caf04a4c8..f94b400934bd3772e56ec23f12f68b143b23658a 100644 (file)
@@ -12,15 +12,19 @@ if [ "$ACTION" == "ifup" ]; then
         [ -n "$DEVICE" ] || exit 3
 fi
 
-mwan3_lock
-mwan3_set_connected_iptables
-mwan3_unlock
-
 config_load mwan3
+config_get_bool enabled globals 'enabled' '0'
+[ ${enabled} -gt 0 ] || exit 0
+
 config_get enabled $INTERFACE enabled 0
 config_get initial_state $INTERFACE initial_state "online"
 [ "$enabled" == "1" ] || exit 0
 
+mwan3_lock
+mwan3_init
+mwan3_set_connected_iptables
+mwan3_unlock
+
 if [ "$ACTION" == "ifup" ]; then
        config_get family $INTERFACE family ipv4
        if [ "$family" = "ipv4" ]; then
index 485f8de4e96f67aeefea72378912584848a22e69..9372c736e100607f9411eb327ff47e7ef7d3d14e 100644 (file)
@@ -4,6 +4,9 @@
        . /lib/functions.sh
 
        config_load mwan3
+       config_get_bool enabled globals 'enabled' '0'
+       [ ${enabled} -gt 0 ] || exit 0
+
        config_get enabled "$INTERFACE" enabled 0
        [ "${enabled}" = "1" ] || exit 0
        env -i ACTION="$ACTION" INTERFACE="$INTERFACE" DEVICE="$DEVICE" \
diff --git a/net/mwan3/files/etc/init.d/mwan3 b/net/mwan3/files/etc/init.d/mwan3
new file mode 100755 (executable)
index 0000000..dac1fb8
--- /dev/null
@@ -0,0 +1,32 @@
+#!/bin/sh /etc/rc.common
+
+START=19
+
+reload() {
+       local enabled
+
+       config_load mwan3
+       config_get_bool enabled globals 'enabled' 0
+       [ ${enabled} -gt 0 ] || {
+               echo "Warning: mwan3 is global disabled. Usage: /etc/init.d/mwan3 start"
+               exit 0
+       }
+       mwan3 restart
+}
+
+boot() {
+       . /lib/config/uci.sh
+       uci_toggle_state mwan3 globals enabled "1"
+}
+
+start() {
+       . /lib/config/uci.sh
+       uci_toggle_state mwan3 globals enabled "1"
+       mwan3 start
+}
+
+stop() {
+       . /lib/config/uci.sh
+       uci_toggle_state mwan3 globals enabled "0"
+       mwan3 stop
+}
index 05ee9eedfee46dddddaabbcaa0dcbb19aff8f98e..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
 
-# 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)
+       # 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
+
+       # 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
@@ -446,7 +461,7 @@ mwan3_delete_iface_ipset_entries()
 
 mwan3_track()
 {
-       local track_ip track_ips
+       local track_ip track_ips pid
 
        mwan3_list_track_ips()
        {
@@ -454,7 +469,11 @@ mwan3_track()
        }
        config_list_foreach $1 track_ip mwan3_list_track_ips
 
-       kill $(pgrep -f "mwan3track $1 $2") &> /dev/null
+       for pid in $(pgrep -f "mwan3track $1 $2"); do
+               kill -TERM "$pid" > /dev/null 2>&1
+               sleep 1
+               kill -KILL "$pid" > /dev/null 2>&1
+       done
        if [ -n "$track_ips" ]; then
                [ -x /usr/sbin/mwan3track ] && /usr/sbin/mwan3track "$1" "$2" "$3" "$4" $track_ips &
        fi
index 38e80a08300da1f6f0d61e2b0cd545674e285c37..baf109df12d51f5827f91ed2b0ef7738cb785400 100755 (executable)
@@ -54,6 +54,12 @@ ifup()
                echo "Too many arguments. Usage: mwan3 ifup <interface>" && exit 0
        fi
 
+       config_get_bool enabled globals 'enabled' 0
+       [ ${enabled} -gt 0 ] || {
+               echo "Warning: mwan3 is global disabled. Usage: /etc/init.d/mwan3 start"
+               exit 0
+       }
+
        config_get enabled "$1" enabled 0
 
        device=$(uci -p /var/state get network.$1.ifname) &> /dev/null
@@ -112,15 +118,27 @@ status()
 
 start()
 {
+       local enabled
+
        config_load mwan3
+       config_get_bool enabled globals 'enabled' 0
+       [ ${enabled} -gt 0 ] || {
+               echo "Warning: mwan3 is global disabled. Usage: /etc/init.d/mwan3 start"
+               exit 0
+       }
+
        config_foreach ifup interface
 }
 
 stop()
 {
-       local ipset route rule table IP IPT
+       local ipset route rule table IP IPT pid
 
-       killall mwan3track &> /dev/null
+       for pid in $(pgrep -f "mwan3track"); do
+               kill -TERM "$pid" > /dev/null 2>&1
+               sleep 1
+               kill -KILL "$pid" > /dev/null 2>&1
+       done
 
        config_load mwan3
        config_foreach mwan3_track_clean interface
@@ -169,6 +187,7 @@ restart() {
 
 case "$1" in
        ifup|ifdown|interfaces|policies|connected|rules|status|start|stop|restart)
+               mwan3_init
                $*
        ;;
        *)
index 588eb9bf4aae1ef7d3c442c1fd191fe3d485880e..2e6f0ffddfc12680c2043d33b8e3b2496ba56010 100755 (executable)
@@ -62,8 +62,8 @@ main() {
        STATUS=$3
        SRC_IP=$4
        mkdir -p /var/run/mwan3track/$1
-       trap clean_up SIGINT SIGTERM
-       trap if_down SIGUSR1
+       trap clean_up TERM
+       trap if_down USR1
 
        config_load mwan3
        config_get track_method $1 track_method ping