sqm-hotplug 921 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. #!/bin/sh
  2. . /lib/functions.sh
  3. [ -n "$DEVICE" ] || exit 0
  4. list_ports() {
  5. local section
  6. local find_name
  7. local devname
  8. section="$1"
  9. find_name="$2"
  10. devname=$(config_get "$section" "name")
  11. [ "$devname" = "$find_name" ] || return
  12. config_get "$section" "ports"
  13. }
  14. ports_for_device() {
  15. local devname
  16. devname=$1
  17. [ -z "$devname" ] && return
  18. config_load network
  19. config_foreach list_ports device "$devname"
  20. }
  21. ALL_DEVICES=$(echo $DEVICE $(uci -q get network.$INTERFACE.ifname) $(ports_for_device $(uci -q get network.$INTERFACE.device)) | tr ' ' '\n' | sort -u)
  22. restart_sqm() {
  23. for dev in $ALL_DEVICES; do
  24. /usr/lib/sqm/run.sh stop $dev
  25. /usr/lib/sqm/run.sh start $dev
  26. done
  27. }
  28. [ "$ACTION" = ifup ] && /etc/init.d/sqm enabled && restart_sqm
  29. if [ "$ACTION" = ifdown ]; then
  30. for dev in $ALL_DEVICES; do
  31. /usr/lib/sqm/run.sh stop $dev
  32. done
  33. fi