uClibc: use the arch specific thread stack size for nptl if the size returned by...
[openwrt.git] / package / br2684ctl / files / br2684ctl
index 5a2bedd..929e2b8 100755 (executable)
@@ -1,29 +1,46 @@
 #!/bin/sh /etc/rc.common
 START=50
 
-stop() {
-       killall br2684ctl 2>/dev/null >/dev/null
-       sleep 1
-       rmmod br2684
-}
-
 start_daemon() {
        local cfg="$1"
-       config_get atmdev "$cfg" atmdev
-       config_get unit "$cfg" unit
-       config_get vpi "$cfg" vpi
-       config_get vci "$cfg" vci
+
+       local atmdev
+       config_get atmdev "$cfg" atmdev 0
+
+       local unit
+       config_get unit "$cfg" unit 0
+
+       local vpi
+       config_get vpi "$cfg" vpi 8
+
+       local vci
+       config_get vci "$cfg" vci 35
+
+       local encaps
        config_get encaps "$cfg" encaps
-       config_get payload "$cfg" payload
+
        case "$encaps" in
                1|vc) encaps=1;;
                *) encaps=0;;
        esac
-        case "$payload" in
-                1|bridged) payload=1;;
-                *) payload=0;;
-        esac
-       br2684ctl -b -c "$unit" -e "$encaps" -p "$payload" -a "${atmdev:+$atmdev.}${vpi:-8}.${vci:-35}" 
+
+       local payload
+       config_get payload "$cfg" payload
+
+       case "$payload" in
+               0|routed) payload=0;;
+               *) payload=1;;
+       esac
+
+       local qos
+       config_get qos "$cfg" qos
+
+       local circuit="$atmdev.$vpi.$vci"
+       local pid="/var/run/br2684ctl-$circuit.pid"
+
+       start-stop-daemon -S -b -x /usr/sbin/br2684ctl -m -p "$pid" -- \
+               -c "$unit" -e "$encaps" -p "$payload" \
+               -a "$circuit" ${qos:+-q "$qos"}
 }
 
 start() {
@@ -31,3 +48,13 @@ start() {
        config_load network
        config_foreach start_daemon atm-bridge
 }
+
+stop() {
+       local pid
+       for pid in /var/run/br2684ctl-*.pid; do
+               if [ -f "$pid" ]; then
+                       service_kill br2684ctl "$pid"
+                       rm -f "$pid"
+               fi
+       done
+}