diff --git a/net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm b/net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm index 99796021d..439307e31 100755 --- a/net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm +++ b/net/sqm-scripts/files/etc/hotplug.d/iface/11-sqm @@ -1,3 +1,3 @@ #!/bin/sh -[ "$ACTION" = ifup ] && /usr/lib/sqm/run.sh interface ${DEVICE} +[ "$ACTION" = ifup ] && /usr/lib/sqm/run.sh start ${DEVICE} diff --git a/net/sqm-scripts/files/etc/init.d/sqm b/net/sqm-scripts/files/etc/init.d/sqm index 70307a6e1..2a40afb5a 100644 --- a/net/sqm-scripts/files/etc/init.d/sqm +++ b/net/sqm-scripts/files/etc/init.d/sqm @@ -4,7 +4,7 @@ START=50 reload() { -/usr/lib/sqm/run.sh +/usr/lib/sqm/run.sh start } restart() diff --git a/net/sqm-scripts/files/usr/lib/sqm/run.sh b/net/sqm-scripts/files/usr/lib/sqm/run.sh index 968292bcd..7aa20ddba 100755 --- a/net/sqm-scripts/files/usr/lib/sqm/run.sh +++ b/net/sqm-scripts/files/usr/lib/sqm/run.sh @@ -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