sqm-bin 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/sh
  2. . /etc/sqm/sqm.conf
  3. ACTION="$1"
  4. RUN_IFACE="$2"
  5. CLEANUP=0
  6. if [ "$ACTION" = "cleanup" ]; then
  7. CLEANUP=1
  8. ACTION=stop
  9. fi
  10. if [ "$(id -u)" -ne "0" ]; then
  11. echo "This script must be run as root." >&2
  12. exit 1
  13. fi
  14. if [ "$ACTION" != "start" -a "$ACTION" != "stop" -a "$ACTION" != "reload" ]; then
  15. echo "Usage: $0 <start|stop|reload|cleanup> [iface]." >&2
  16. exit 1
  17. fi
  18. # Stopping all active interfaces
  19. if [ "$ACTION" = "stop" -a -z "$RUN_IFACE" ]; then
  20. echo "Stopping SQM on all active interfaces." >&2
  21. for f in ${SQM_STATE_DIR}/*.state; do
  22. # Source the state file prior to stopping; we need the $IFACE and
  23. # $SCRIPT variables saved in there.
  24. [ -f "$f" ] && ( . $f; IFACE=$IFACE SCRIPT=$SCRIPT CLEANUP=$CLEANUP SQM_DEBUG=$SQM_DEBUG SQM_DEBUG_LOG=$SQM_DEBUG_LOG OUTPUT_TARGET=$OUTPUT_TARGET ${SQM_LIB_DIR}/stop-sqm )
  25. done
  26. exit 0
  27. fi
  28. if [ -n "$RUN_IFACE" ]; then
  29. if [ ! -f /etc/sqm/${RUN_IFACE}.iface.conf ]; then
  30. echo "No config file found for iface $RUN_IFACE." >&2
  31. exit 1
  32. fi
  33. IFACE=$RUN_IFACE
  34. . /etc/sqm/${RUN_IFACE}.iface.conf
  35. [ -f ${SQM_STATE_DIR}/$IFACE.state ] && ( . ${SQM_LIB_DIR}/stop-sqm )
  36. [ "$ACTION" = "stop" ] || ( . ${SQM_LIB_DIR}/start-sqm )
  37. else
  38. echo "Starting SQM on all configured interfaces." >&2
  39. for f in /etc/sqm/*.iface.conf; do
  40. if [ -f "$f" ]; then
  41. IFACE=$(basename $f .iface.conf)
  42. [ -f ${SQM_STATE_DIR}/$IFACE.state ] && ( . $f; . ${SQM_LIB_DIR}/stop-sqm )
  43. [ "$ACTION" = "stop" ] || ( . $f; . ${SQM_LIB_DIR}/start-sqm )
  44. else
  45. echo >&2
  46. echo "Error: No valid interface configuration found." >&2
  47. echo "A interface must be defined in /etc/sqm/<interface name>.iface.conf" >&2
  48. echo "Please define a interface configuration in /etc/sqm." >&2
  49. echo "For more information, see the template file in" >&2
  50. echo "/etc/sqm/eth0.iface.conf.example" >&2
  51. exit 1
  52. fi
  53. done
  54. fi