sqm-scripts: clean up interface selection for hotplugging
authorSebastian Moeller <moeller0@gmx.de>
Fri, 20 Mar 2015 21:47:45 +0000 (22:47 +0100)
committerToke Høiland-Jørgensen <toke@toke.dk>
Wed, 25 Mar 2015 09:38:11 +0000 (10:38 +0100)
The initial conversion to restart sqm on interfaces it is configured
for in case of (transient) dis- and reappearance was half finished.
These changes clean up the handling of exlicitly passed interfaces
in run.sh: no second argument defaults to all configured interfaces
the alternative is an individual interface name passed as 2nd
argument to run.sh. The first argument either is start or stop.
No argument at all will behave as if start was passed.
Survives light testing...

Signed-off-by: Sebastian Moeller <moeller0@gmx.de>
net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm
net/sqm-scripts/files/etc/init.d/sqm
net/sqm-scripts/files/usr/lib/sqm/run.sh

index 99796021d944e2afc5c701e69846afa10637d645..439307e3103cd1355d97674e4fed8bfdf62d554b 100755 (executable)
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-[ "$ACTION" = ifup ] && /usr/lib/sqm/run.sh interface ${DEVICE}
+[ "$ACTION" = ifup ] && /usr/lib/sqm/run.sh start ${DEVICE}
index 70307a6e1e7365433de76bc96443ff7248db2af8..2a40afb5aa5a2fde618859fcd3b9f02591a52a16 100644 (file)
@@ -4,7 +4,7 @@ START=50
 
 reload()
 {
-/usr/lib/sqm/run.sh
+/usr/lib/sqm/run.sh start
 }
 
 restart()
index 968292bcd37061edfa0cf8e593e7b7ac53f16224..7aa20ddbabc313b100c063865fa12a0d6743c3fa 100755 (executable)
@@ -13,29 +13,39 @@ STOP=
 ACTIVE_STATE_PREFIX="SQM_active_on_"
 ACTIVE_STATE_FILE_DIR="/var/run/SQM"
 mkdir -p ${ACTIVE_STATE_FILE_DIR}
-PROTO_STATE_FILE_LIST=$( ls ${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}* 2> /dev/null )
+
+
+START_ON_IF=$2 # only process this interface
+# TODO if $2 is empty select all interfaces with running sqm instance
+if [ -z ${START_ON_IF} ] ;
+then
+    # find all interfaces with active sqm instance
+    logger -t SQM -s "Trying to start/stop SQM on all interfaces."
+    PROTO_STATE_FILE_LIST=$( ls ${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}* 2> /dev/null )
+else
+    # only try to restart the just hotplugged interface, so reduce the list of interfaces to stop to the specified one
+    logger -t SQM -s "Trying to start/stop SQM on interface ${START_ON_IF}"
+    PROTO_STATE_FILE_LIST=${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}${START_ON_IF}
+fi
+
+
 
 
 case ${1} in
+    start)
+       # just run through, same as passing no argument
+       ;;
     stop)
         logger -t SQM -s "run.sh stop"
        STOP=$1
         ;;
-    interface)
-       START_ON_IF=$2  # only process this interface
-       logger -t SQM -s "Trying to re-start SQM on interface ${START_ON_IF}"
-       # TODO if $2 is empty just bail...
-       if [ -z ${START_ON_IF} ] ;
-       then
-           logger -t SQM -s "Interface name missing, nothing to do, bailing out"
-           return 0
-       fi
-       # only try to restart the just hotplugged interface, so reduce the list of interfaces to stop to the specified one
-       PROTO_STATE_FILE_LIST=${ACTIVE_STATE_FILE_DIR}/${ACTIVE_STATE_PREFIX}${START_ON_IF}
-       ;;
 esac
 
 
+
+
+
+
 # the current uci config file does not necessarily contain sections for all interfaces with active
 # SQM instances, so use the ACTIVE_STATE_FILES to detect the interfaces on which to stop SQM.
 # Currently the .qos scripts start with stopping any existing traffic shaping so this should not