br2684ctl: convert init script to procd, add hotplug/reload support

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 47765
owl
Felix Fietkau 2015-12-04 17:44:00 +00:00
parent 435e7fb295
commit 1d1265b40b
3 changed files with 35 additions and 36 deletions

View File

@ -178,8 +178,9 @@ define Package/atm-diagnostics/install
endef
define Package/br2684ctl/install
$(INSTALL_DIR) $(1)/etc/init.d/
$(INSTALL_DIR) $(1)/etc/init.d $(1)/etc/hotplug.d/atm
$(INSTALL_BIN) ./files/br2684ctl $(1)/etc/init.d/
$(INSTALL_DATA) ./files/atm.hotplug $(1)/etc/hotplug.d/atm/00-trigger
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/sbin/br2684ctl $(1)/usr/sbin/
endef

View File

@ -0,0 +1 @@
ubus call service event '{ "type": "hotplug.atm", "data": { "name": "'"$DEVICENAME"'" } }'

View File

@ -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
found=
for device in /sys/class/atm/*; do
[ -d "$device" ] || break
[ "$(cat $device/atmindex)" = "$atmdev" ] || continue
found=1
break
done
[ -n "$found" ] || return
local circuit="$atmdev.$vpi.$vci"
network_defer_device "nas$unit"
SERVICE_PID_FILE="/var/run/br2684ctl-$circuit.pid" \
service_start /usr/sbin/br2684ctl \
procd_open_instance
procd_set_param command \
/usr/sbin/br2684ctl \
-c "$unit" -e "$encaps" -p "$payload" \
-a "$circuit" ${qos:+-q "$qos"} ${sendsize:+-s "$sendsize"}
procd_close_instance
}
service_running() {
. /lib/functions/network.sh
sleep 1
network_ready_device "nas$unit"
for path in /sys/class/net/nas*; do
dev="${path##*/}"
network_ready_device "$dev"
done
}
stop_daemon() {
local cfg="$1"
service_triggers() {
local script=$(readlink "$initscript")
local name=$(basename ${script:-$initscript})
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 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
}