X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=package%2Fnetwork%2Fservices%2Figmpproxy%2Ffiles%2Figmpproxy.init;h=9e337221f1e3bab1b982173833835a2d268badb0;hb=527696674a336731b6bd029748a7b5f0a17803cb;hp=8c15814712ff4282a67b3400f8cf7254b2b96d65;hpb=e9b8f24ded839dd58f43e510e25a952a2f0656b3;p=librecmc%2Flibrecmc.git diff --git a/package/network/services/igmpproxy/files/igmpproxy.init b/package/network/services/igmpproxy/files/igmpproxy.init index 8c15814712..9e337221f1 100644 --- a/package/network/services/igmpproxy/files/igmpproxy.init +++ b/package/network/services/igmpproxy/files/igmpproxy.init @@ -6,24 +6,13 @@ 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. -# -# Debug mode will print everything to stdout instead of syslog. Generally -# verbosity should NOT be set as it will quickly fill your syslog. -# -# Put any debug or verbosity options into IGMP_OPTS -# -# Examples: -# OPTIONS="-d -v -v" - debug mode and very verbose, this will land in -# stdout and not in syslog -# OPTIONS="-v" - be verbose, this will write aditional information to syslog - -OPTIONS="" - igmp_header() { - local quickleave + local quickleave verbose config_get_bool quickleave "$1" quickleave 0 + config_get verbose "$1" verbose 0 + + [ $verbose = "1" ] && logopts="-v" + [ $verbose = "2" ] && logopts="-v -v" mkdir -p /var/etc rm -f /var/etc/igmpproxy.conf @@ -33,13 +22,16 @@ igmp_header() { } igmp_add_phyint() { - local network direction altnets device up + local network direction altnets device up + + config_get network $1 network + config_get direction $1 direction + config_get altnets $1 altnet - config_get network $1 network - config_get direction $1 direction - config_get altnets $1 altnet + local status="$(ubus -S call "network.interface.$network" status)" + [ -n "$status" ] || return - json_load "$(ifstatus $network)" + json_load "$status" json_get_var device l3_device json_get_var up up @@ -48,6 +40,10 @@ igmp_add_phyint() { return; } + append netdevs "$device" + + [[ "$direction" = "upstream" ]] && has_upstream=1 + echo -e "\nphyint $device $direction ratelimit 0 threshold 1" >> /var/etc/igmpproxy.conf if [ -n "$altnets" ]; then @@ -62,7 +58,7 @@ igmp_add_network() { local network config_get network $1 network - procd_add_interface_trigger "interface.*" $network /etc/init.d/igmpproxy restart + procd_add_interface_trigger "interface.*" $network /etc/init.d/igmpproxy reload } igmp_add_firewall_routing() { @@ -104,15 +100,21 @@ service_triggers() { } start_service() { + has_upstream= + netdevs= + logopts= config_load igmpproxy - procd_open_instance config_foreach igmp_header igmpproxy config_foreach igmp_add_phyint phyint + [ -n "$has_upstream" ] || return + + procd_open_instance procd_set_param command $PROG - [ -n "$OPTIONS" ] && procd_append_param $OPTIONS + [ -n "$logopts" ] && procd_append_param command $logopts procd_append_param command $CONFIGFILE procd_set_param file $CONFIGFILE + procd_set_param netdev $netdevs procd_set_param respawn procd_open_trigger config_foreach igmp_add_network phyint