igmpproxy: automatically add firewall rules for multicast routing based on the current config

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@41483 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
Felix Fietkau
2014-07-02 19:18:23 +00:00
parent 218ae8eb00
commit 8ef67937f1

View File

@@ -65,6 +65,40 @@ igmp_add_network() {
procd_add_interface_trigger "interface.*" $network /etc/init.d/igmpproxy restart
}
igmp_add_firewall_routing() {
config_get network $1 network
config_get direction $1 direction
[[ "$direction" = "downstream" ]] || return 0
json_add_object ""
json_add_string type rule
json_add_string src "$upstream"
json_add_string dest "$network"
json_add_string family ipv4
json_add_string proto udp
json_add_string dest_ip "224.0.0.0/4"
json_add_string target ACCEPT
json_close_object
}
igmp_add_firewall_network() {
config_get network $1 network
config_get direction $1 direction
json_add_object ""
json_add_string type rule
json_add_string src "$network"
json_add_string proto igmp
json_add_string target ACCEPT
json_close_object
[[ "$direction" = "upstream" ]] && {
upstream="$network"
config_foreach igmp_add_firewall_routing phyint
}
}
service_triggers() {
procd_add_reload_trigger "igmpproxy"
}
@@ -83,5 +117,18 @@ start_service() {
procd_open_trigger
config_foreach igmp_add_network phyint
procd_close_trigger
procd_open_data
json_add_array firewall
config_foreach igmp_add_firewall_network phyint
json_close_array
procd_close_data
procd_close_instance
}
service_started() {
procd_set_config_changed firewall
}