summaryrefslogtreecommitdiff
path: root/package/linux-atm/files/br2684ctl
diff options
context:
space:
mode:
Diffstat (limited to 'package/linux-atm/files/br2684ctl')
-rwxr-xr-xpackage/linux-atm/files/br2684ctl60
1 files changed, 60 insertions, 0 deletions
diff --git a/package/linux-atm/files/br2684ctl b/package/linux-atm/files/br2684ctl
new file mode 100755
index 0000000000..929e2b887e
--- /dev/null
+++ b/package/linux-atm/files/br2684ctl
@@ -0,0 +1,60 @@
+#!/bin/sh /etc/rc.common
+START=50
+
+start_daemon() {
+ local cfg="$1"
+
+ 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
+
+ case "$encaps" in
+ 1|vc) encaps=1;;
+ *) encaps=0;;
+ esac
+
+ 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() {
+ insmod br2684 >/dev/null 2>/dev/null
+ 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
+}