| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #!/bin/sh /etc/rc.common
- # Copyright (c) 2011-2012 OpenWrt.org
- START=80
- resolve_ifname() {
- grep -qs "^ *$1:" /proc/net/dev && {
- append args "-I $1"
- append ifaces "$1"
- }
- }
- resolve_network() {
- local ifn
- fixup_interface "$1"
- config_get ifn "$1" ifname
- [ -z "$ifn" ] && return 1
- resolve_ifname "$ifn"
- }
- start_relay() {
- local cfg="$1"
- local args=""
- local ifaces=""
- config_get proto "$cfg" proto
- [[ "$proto" == relay ]] || return 0
- SERVICE_DAEMONIZE=1
- SERVICE_WRITE_PID=1
- SERVICE_PID_FILE="/var/run/relay-$cfg.pid"
- [ -f "$SERVICE_PID_FILE" ] && {
- if grep -q relayd "/proc/$(cat $SERVICE_PID_FILE)/cmdline"; then
- return 0
- else
- rm -f "$SERVICE_PID_FILE"
- fi
- }
- local net networks
- config_get networks "$cfg" network
- for net in $networks; do
- resolve_network "$net" || {
- return 1
- }
- done
- local ifn ifnames
- config_get ifnames "$cfg" ifname
- for ifn in $ifnames; do
- resolve_ifname "$ifn"
- done
- local ipaddr
- config_get ipaddr "$cfg" ipaddr
- [ -n "$ipaddr" ] && append args "-L $ipaddr"
- local gateway
- config_get gateway "$cfg" gateway
- [ -n "$gateway" ] && append args "-G $gateway"
- local expiry # = 30
- config_get expiry "$cfg" expiry
- [ -n "$expiry" ] && append args "-t $expiry"
- local retry # = 5
- config_get retry "$cfg" retry
- [ -n "$retry" ] && append args "-p $retry"
- local table # = 16800
- config_get table "$cfg" table
- [ -n "$table" ] && append args "-T $table"
- local fwd_bcast # = 1
- config_get_bool fwd_bcast "$cfg" forward_bcast 1
- [ $fwd_bcast -eq 1 ] && append args "-B"
- local fwd_dhcp # = 1
- config_get_bool fwd_dhcp "$cfg" forward_dhcp 1
- [ $fwd_dhcp -eq 1 ] && append args "-D"
- service_start /usr/sbin/relayd $args
- }
- stop() {
- for pid in /var/run/relay-*.pid; do
- SERVICE_PID_FILE="$pid"
- service_stop /usr/sbin/relayd
- rm -f "$SERVICE_PID_FILE"
- done
- }
- start() {
- include /lib/network
- config_load network
- config_foreach start_relay interface
- }
|