diff options
author | John Crispin <blogic@openwrt.org> | 2014-06-04 07:19:51 +0000 |
---|---|---|
committer | John Crispin <blogic@openwrt.org> | 2014-06-04 07:19:51 +0000 |
commit | 8d9f6f3396da4e546cf6990a2230469d0bab7339 (patch) | |
tree | f5fb749dabe29d8aa125a352e3bd92b7be9e122e /package/network/services/igmpproxy/files | |
parent | b52c3cbf9691a654f51d48196985bf1304e6af28 (diff) | |
download | upstream-8d9f6f3396da4e546cf6990a2230469d0bab7339.tar.gz upstream-8d9f6f3396da4e546cf6990a2230469d0bab7339.tar.bz2 upstream-8d9f6f3396da4e546cf6990a2230469d0bab7339.zip |
igmpproxy: update init.d script to procd and add a hotplug script
Signed-off-by: John Crispin <blogic@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@40997 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/network/services/igmpproxy/files')
-rw-r--r-- | package/network/services/igmpproxy/files/igmpproxy.hotplug | 3 | ||||
-rw-r--r-- | package/network/services/igmpproxy/files/igmpproxy.init | 54 |
2 files changed, 38 insertions, 19 deletions
diff --git a/package/network/services/igmpproxy/files/igmpproxy.hotplug b/package/network/services/igmpproxy/files/igmpproxy.hotplug new file mode 100644 index 0000000000..ebe353a8b2 --- /dev/null +++ b/package/network/services/igmpproxy/files/igmpproxy.hotplug @@ -0,0 +1,3 @@ +#!/bin/sh + +/etc/init.d/igmpproxy reload diff --git a/package/network/services/igmpproxy/files/igmpproxy.init b/package/network/services/igmpproxy/files/igmpproxy.init index a45978f5b6..75d111f3c0 100644 --- a/package/network/services/igmpproxy/files/igmpproxy.init +++ b/package/network/services/igmpproxy/files/igmpproxy.init @@ -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; + + 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 +} - if [ -n "$altnets" ]; then - local altnet - for altnet in $altnets; do - echo -e "\taltnet $altnet" >> /var/etc/igmpproxy.conf - done - fi +service_triggers() { + procd_add_reload_trigger "igmpproxy" } -start() { +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 } |