br2684ctl: convert init script to procd, add hotplug/reload support
[openwrt/svn-archive/archive.git] / package / network / utils / linux-atm / files / br2684ctl
index 30b1a44e27157a964d182bc8977674200e5758af..ad45a553d00ab3244015cab058e668788605dfa0 100755 (executable)
@@ -1,13 +1,9 @@
 #!/bin/sh /etc/rc.common
 
 START=50
-
-SERVICE_DAEMONIZE=1
-SERVICE_WRITE_PID=1
+USE_PROCD=1
 
 start_daemon() {
-       . /lib/functions/network.sh
-
        local cfg="$1"
 
        local atmdev
@@ -44,46 +40,47 @@ start_daemon() {
        local sendsize
        config_get sendsize "$cfg" sendsize
 
-       local circuit="$atmdev.$vpi.$vci"
+       found=
+       for device in /sys/class/atm/*; do
+               [ -d "$device" ] || break
+               [ "$(cat $device/atmindex)" = "$atmdev" ] || continue
+               found=1
+               break
+       done
 
-       network_defer_device "nas$unit"
+       [ -n "$found" ] || return
 
-       SERVICE_PID_FILE="/var/run/br2684ctl-$circuit.pid" \
-       service_start /usr/sbin/br2684ctl \
+       local circuit="$atmdev.$vpi.$vci"
+
+       procd_open_instance
+       procd_set_param command \
+               /usr/sbin/br2684ctl \
                -c "$unit" -e "$encaps" -p "$payload" \
                -a "$circuit" ${qos:+-q "$qos"} ${sendsize:+-s "$sendsize"}
-       sleep 1
-
-       network_ready_device "nas$unit"
+       procd_close_instance
 }
 
-stop_daemon() {
-       local cfg="$1"
-
-       local atmdev
-       config_get atmdev "$cfg" atmdev 0
-
-       local unit
-       config_get unit "$cfg" unit 0
+service_running() {
+       . /lib/functions/network.sh
 
-       local vpi
-       config_get vpi "$cfg" vpi 8
+       sleep 1
+       for path in /sys/class/net/nas*; do
+               dev="${path##*/}"
+               network_ready_device "$dev"
+       done
+}
 
-       local vci
-       config_get vci "$cfg" vci 35
+service_triggers() {
+       local script=$(readlink "$initscript")
+       local name=$(basename ${script:-$initscript})
 
-       local circuit="$atmdev.$vpi.$vci"
-       
-       SERVICE_PID_FILE="/var/run/br2684ctl-$circuit.pid" \
-       service_stop /usr/sbin/br2684ctl
+       procd_open_trigger
+       procd_add_raw_trigger hotplug.atm 2000 /etc/init.d/$name reload
+       procd_add_config_trigger "config.change" "$file" /etc/init.d/$name reload
+       procd_close_trigger
 }
 
-start() {
+start_service() {
        config_load network
        config_foreach start_daemon atm-bridge
 }
-
-stop() {
-       config_load network
-       config_foreach stop_daemon atm-bridge
-}