lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

addrwatch.init (2013B)


      1 #!/bin/sh /etc/rc.common
      2 # Copyright (C) 2016 OpenWrt.org
      3 
      4 START=50
      5 USE_PROCD=1
      6 
      7 validate_section_addrwatch() {
      8 	uci_validate_section addrwatch addrwatch "${1}" \
      9 		'disabled:bool:0' \
     10 		'interface:list(string):lan' \
     11 		'syslog:bool:1' \
     12 		'output:string' \
     13 		'quiet:bool:0' \
     14 		'verbose:bool:0' \
     15 		'ipv4only:bool:0' \
     16 		'ipv6only:bool:0' \
     17 		'blacklist:list(or(ip4addr,ip6addr))' \
     18 		'hashsize:range(1,65536):1024'\
     19 		'ratelimit:integer:3600'
     20 	return $?
     21 }
     22 
     23 start_instance() {
     24 	local cfg="$1"
     25 	local disabled interface syslog output quiet verbose ipv4only ipv6only
     26 	local blacklist hashsize ratelimit
     27 	local netdevs=""
     28 
     29 	validate_section_addrwatch "${cfg}" || {
     30 		echo "validation of config $cfg failed"
     31 		return 1
     32 	}
     33 	[ $disabled -ne 0 ] && return 1
     34 
     35 	for iface in $interface; do
     36 		local netdev
     37 		network_get_physdev netdev "${iface}"
     38 		append netdevs "${netdev}"
     39 	done
     40 
     41 	procd_open_instance
     42 	procd_set_param command /usr/sbin/addrwatch
     43 	[ "${syslog}" -eq 1 ] && procd_append_param command --syslog
     44 	[ -n "${output}" ] && procd_append_param command --output "$output"
     45 	[ "$quiet" -eq 1 ] && procd_append_param command --quiet
     46 	[ "$verbose" -eq 1 ] && procd_append_param command --verbose
     47 	[ "$ipv4only" -eq 1 ] && procd_append_param command --ipv4only
     48 	[ "$ipv6only" -eq 1 ] && procd_append_param command --ipv6only
     49 	[ -n "$hashsize" ] && procd_append_param command --hashsize "$hashsize"
     50 	[ -n "$ratelimit" ] && procd_append_param command --ratelimit "$ratelimit"
     51 	for blitem in $blacklist; do
     52 		procd_append_param command "--blacklist=${blitem}"
     53 	done
     54 	procd_append_param command $netdevs
     55 	procd_set_param netdev $netdevs
     56 	procd_set_param respawn
     57 	procd_open_trigger
     58 	for iface in $interface; do
     59 		procd_add_interface_trigger "interface.*" ${iface} /etc/init.d/addrwatch reload
     60 	done
     61 	procd_close_trigger
     62 	procd_close_instance
     63 }
     64 
     65 start_service() {
     66 	. /lib/functions/network.sh
     67 	config_load 'addrwatch'
     68 	config_foreach start_instance 'addrwatch'
     69 }
     70 
     71 service_triggers() {
     72 	procd_add_reload_trigger 'addrwatch'
     73 }