aboutsummaryrefslogtreecommitdiffstats
path: root/package/br2684ctl/files
diff options
context:
space:
mode:
authorJo-Philipp Wich <jow@openwrt.org>2010-10-20 20:10:17 +0000
committerJo-Philipp Wich <jow@openwrt.org>2010-10-20 20:10:17 +0000
commitdb6aaa7bcf46f33344d228409f5106f9c586c38f (patch)
tree3bf5aef80982a32a601e46e7bc3678e1e5df4d3c /package/br2684ctl/files
parenta50421a302a4ce94e89c1c90c4ed1521eb36d24f (diff)
downloadupstream-db6aaa7bcf46f33344d228409f5106f9c586c38f.tar.gz
upstream-db6aaa7bcf46f33344d228409f5106f9c586c38f.tar.bz2
upstream-db6aaa7bcf46f33344d228409f5106f9c586c38f.zip
br2684ctl: rework init script - use common defaults for unit and atmdev - add a more reliable stop routine - localize variables
SVN-Revision: 23552
Diffstat (limited to 'package/br2684ctl/files')
-rwxr-xr-xpackage/br2684ctl/files/br2684ctl61
1 files changed, 43 insertions, 18 deletions
diff --git a/package/br2684ctl/files/br2684ctl b/package/br2684ctl/files/br2684ctl
index cff667014a..929e2b887e 100755
--- a/package/br2684ctl/files/br2684ctl
+++ b/package/br2684ctl/files/br2684ctl
@@ -1,31 +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
- config_get qos "$cfg" qos
+
case "$encaps" in
1|vc) encaps=1;;
*) encaps=0;;
esac
- case "$payload" in
- 0|routed) payload=0;;
- *) payload=1;;
- esac
- [ "$qos" ] && qos="-q $qos"
- br2684ctl -b -c "$unit" -e "$encaps" -p "$payload" $qos -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() {
@@ -33,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
+}