OpenWrt – Blame information for rev 4
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
4 | office | 1 | #!/bin/sh /etc/rc.common |
2 | # Copyright (c) 2011-2012 OpenWrt.org |
||
3 | |||
4 | START=80 |
||
5 | |||
6 | USE_PROCD=1 |
||
7 | PROG=/usr/sbin/relayd |
||
8 | |||
9 | validate_proto_relayd() |
||
10 | { |
||
11 | uci_validate_section network "interface" "${1}" \ |
||
12 | 'network:list(string)' \ |
||
13 | 'expiry:uinteger:30' \ |
||
14 | 'retry:uinteger:5' \ |
||
15 | 'table:range(0, 65535):16800' \ |
||
16 | 'forward_bcast:bool:1' \ |
||
17 | 'forward_dhcp:bool:1' |
||
18 | } |
||
19 | |||
20 | resolve_ifname() { |
||
21 | grep -qs "^ *$1:" /proc/net/dev && { |
||
22 | append resolved_ifnames "$1" |
||
23 | } |
||
24 | } |
||
25 | |||
26 | resolve_network() { |
||
27 | local ifn |
||
28 | fixup_interface "$1" |
||
29 | config_get ifn "$1" ifname |
||
30 | [ -z "$ifn" ] && return 1 |
||
31 | resolve_ifname "$ifn" |
||
32 | } |
||
33 | |||
34 | start_relay() { |
||
35 | local cfg="$1" |
||
36 | local proto disabled |
||
37 | |||
38 | config_get proto "$cfg" proto |
||
39 | [ "$proto" = "relay" ] || return 0 |
||
40 | |||
41 | config_get_bool disabled "$cfg" disabled 0 |
||
42 | [ "$disabled" -gt 0 ] && return 0 |
||
43 | |||
44 | local resolved_ifnames |
||
45 | local net networks |
||
46 | config_get networks "$cfg" network |
||
47 | for net in $networks; do |
||
48 | resolve_network "$net" || { |
||
49 | return 1 |
||
50 | } |
||
51 | done |
||
52 | |||
53 | local ifn ifnames |
||
54 | config_get ifnames "$cfg" ifname |
||
55 | for ifn in $ifnames; do |
||
56 | resolve_ifname "$ifn" || { |
||
57 | return 1 |
||
58 | } |
||
59 | done |
||
60 | |||
61 | procd_open_instance |
||
62 | procd_set_param command "$PROG" |
||
63 | |||
64 | for ifn in $resolved_ifnames; do |
||
65 | procd_append_param command -I "$ifn" |
||
66 | procd_append_param netdev "$ifn" |
||
67 | done |
||
68 | local ipaddr |
||
69 | config_get ipaddr "$cfg" ipaddr |
||
70 | [ -n "$ipaddr" ] && procd_append_param command -L "$ipaddr" |
||
71 | |||
72 | local gateway |
||
73 | config_get gateway "$cfg" gateway |
||
74 | [ -n "$gateway" ] && procd_append_param command -G "$gateway" |
||
75 | |||
76 | local expiry # = 30 |
||
77 | config_get expiry "$cfg" expiry |
||
78 | [ -n "$expiry" ] && procd_append_param command -t "$expiry" |
||
79 | |||
80 | local retry # = 5 |
||
81 | config_get retry "$cfg" retry |
||
82 | [ -n "$retry" ] && procd_append_param command -p "$retry" |
||
83 | |||
84 | local table # = 16800 |
||
85 | config_get table "$cfg" table |
||
86 | [ -n "$table" ] && procd_append_param command -T "$table" |
||
87 | |||
88 | local fwd_bcast # = 1 |
||
89 | config_get_bool fwd_bcast "$cfg" forward_bcast 1 |
||
90 | [ $fwd_bcast -eq 1 ] && procd_append_param command "-B" |
||
91 | |||
92 | local fwd_dhcp # = 1 |
||
93 | config_get_bool fwd_dhcp "$cfg" forward_dhcp 1 |
||
94 | [ $fwd_dhcp -eq 1 ] && procd_append_param command "-D" |
||
95 | |||
96 | procd_close_instance |
||
97 | } |
||
98 | |||
99 | service_triggers() |
||
100 | { |
||
101 | procd_add_reload_trigger "network" |
||
102 | procd_add_raw_trigger "interface.*" 2000 /etc/init.d/relayd reload |
||
103 | } |
||
104 | |||
105 | start_service() { |
||
106 | include /lib/network |
||
107 | config_load network |
||
108 | config_foreach start_relay interface |
||
109 | } |