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 }