igmpproxy: update init.d script to procd and add a hotplug script

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 40997
lede-17.01
John Crispin 2014-06-04 07:19:51 +00:00
parent 21b0a8d8a4
commit 39798dc43b
3 changed files with 40 additions and 19 deletions

View File

@ -51,6 +51,8 @@ define Package/igmpproxy/install
$(INSTALL_CONF) ./files/igmpproxy.config $(1)/etc/config/igmpproxy
$(INSTALL_DIR) $(1)/etc/init.d
$(INSTALL_BIN) ./files/igmpproxy.init $(1)/etc/init.d/igmpproxy
$(INSTALL_DIR) $(1)/etc/hotplug.d/iface
$(INSTALL_BIN) ./files/igmpproxy.hotplug $(1)/etc/hotplug.d/iface/igmpproxy
$(INSTALL_DIR) $(1)/usr/sbin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/src/igmpproxy $(1)/usr/sbin/
endef

View File

@ -0,0 +1,3 @@
#!/bin/sh
/etc/init.d/igmpproxy reload

View File

@ -1,11 +1,10 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2010-2012 OpenWrt.org
# Copyright (C) 2010-2014 OpenWrt.org
START=99
STOP=10
SERVICE_DAEMONIZE=1
SERVICE_WRITE_PID=1
USE_PROCD=1
PROG=/usr/sbin/igmpproxy
CONFIGFILE=/var/etc/igmpproxy.conf
# igmpproxy supports both a debug mode and verbosity, which are very useful
# when something isn't working.
@ -21,6 +20,7 @@ SERVICE_WRITE_PID=1
# OPTIONS="-v" - be verbose, this will write aditional information to syslog
OPTIONS=""
UPSTREAM=0
igmp_header() {
local quickleave
@ -34,30 +34,46 @@ igmp_header() {
}
igmp_add_phyint() {
local network direction altnets
local network direction altnets device up
config_get network $1 network
config_get direction $1 direction
config_get altnets $1 altnet
device=$(uci_get_state network "$network" ifname "$network")
echo -e "\nphyint $device $direction ratelimit 0 threshold 1" >> /var/etc/igmpproxy.conf
json_load "$(ifstatus $network)"
json_get_var device l3_device
json_get_var up up
[ -n "$device" -a "$up" = "1" ] || return;
if [ -n "$altnets" ]; then
local altnet
for altnet in $altnets; do
echo -e "\taltnet $altnet" >> /var/etc/igmpproxy.conf
done
fi
UPSTREAM=1
echo -e "\nphyint $device $direction ratelimit 0 threshold 1" >> /var/etc/igmpproxy.conf
if [ -n "$altnets" ]; then
local altnet
for altnet in $altnets; do
echo -e "\taltnet $altnet" >> /var/etc/igmpproxy.conf
done
fi
}
start() {
service_triggers() {
procd_add_reload_trigger "igmpproxy"
}
start_service() {
config_load igmpproxy
config_foreach igmp_header igmpproxy
config_foreach igmp_add_phyint phyint
service_start /usr/sbin/igmpproxy $OPTIONS /etc/igmpproxy.conf
}
stop() {
service_stop /usr/sbin/igmpproxy
[ $UPSTREAM = 1 ] || return
procd_open_instance
procd_set_param command $PROG
[ -n "$OPTIONS" ] && procd_append_param $OPTIONS
procd_append_param command $CONFIGFILE
procd_set_param file $CONFIGFILE
procd_set_param respawn
procd_close_instance
}