1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2010-2014 OpenWrt.org
6 PROG
=/usr
/sbin
/omcproxy
8 # Uncomment to enable verbosity
13 omcproxy_add_proxy
() {
14 local uplink downlink scope proxy
15 config_get uplink
$1 uplink
16 config_get downlink
$1 downlink
17 config_get scope
$1 scope
21 network_get_device updev
$uplink
22 [ -n "$updev" ] ||
return 0
24 for network
in $downlink; do
25 network_get_device downdev
$network
26 [ -n "$downdev" ] && proxy
="$proxy,$downdev"
28 # Disable in-kernel querier while ours is active
29 [ -f /sys
/class
/net
/$downdev/bridge
/multicast_querier
] && \
30 echo 0 > /sys
/class
/net
/$downdev/bridge
/multicast_querier
33 [ -n "$proxy" ] ||
return 0
34 [ -n "$scope" ] && proxy
="$proxy,scope=$scope"
36 PROXIES
="$PROXIES $updev$proxy"
40 omcproxy_add_trigger
() {
42 config_get uplink
$1 uplink
43 config_get downlink
$1 downlink
45 for network
in $uplink $downlink; do
46 procd_add_interface_trigger
"interface.*" $network /etc
/init.d
/omcproxy restart
50 omcproxy_add_firewall
() {
51 config_get uplink
$1 uplink
52 config_get downlink
$1 downlink
54 upzone
=$
(fw3
-q network
$uplink 2>/dev
/null
)
55 [ -n "$upzone" ] ||
return 0
58 json_add_string
type rule
59 json_add_string src
"$upzone"
60 json_add_string proto igmp
61 json_add_string target ACCEPT
65 json_add_string
type rule
66 json_add_string family ipv6
67 json_add_string src
"$upzone"
68 json_add_string proto icmp
69 json_add_string src_ip fe80
::/10
70 json_add_array icmp_type
71 json_add_string
"" 130/0
72 json_add_string
"" 131/0
73 json_add_string
"" 132/0
74 json_add_string
"" 143/0
76 json_add_string target ACCEPT
79 for network
in $downlink; do
80 downzone
=$
(fw3
-q network
$network 2>/dev
/null
)
81 [ -n "$downzone" ] ||
continue
84 json_add_string
type rule
85 json_add_string src
"$upzone"
86 json_add_string dest
"$downzone"
87 json_add_string family ipv4
88 json_add_string proto any
89 json_add_string dest_ip
"224.0.0.0/4"
90 json_add_string target ACCEPT
94 json_add_string
type rule
95 json_add_string src
"$upzone"
96 json_add_string dest
"$downzone"
97 json_add_string family ipv6
98 json_add_string proto any
99 json_add_string dest_ip
"ff00::/8"
100 json_add_string target ACCEPT
106 procd_add_reload_trigger
"omcproxy"
110 include
/lib
/functions
113 config_foreach omcproxy_add_proxy proxy
115 [ -n "$PROXIES" ] ||
return 0
118 procd_set_param
command $PROG
119 [ -n "$OPTIONS" ] && procd_append_param
command $OPTIONS
120 procd_append_param
command $PROXIES
121 procd_set_param respawn
124 config_foreach omcproxy_add_trigger proxy
129 json_add_array firewall
130 config_foreach omcproxy_add_firewall proxy
137 # Increase maximum IPv4 group memberships per socket
138 echo 128 > /proc
/sys
/net
/ipv
4/igmp_max_memberships
142 procd_set_config_changed firewall