Author: nbd
Date: 2014-07-02 21:18:23 +0200 (Wed, 02 Jul 2014)
New Revision: 41483

Modified:
   trunk/package/network/services/igmpproxy/files/igmpproxy.init
Log:
igmpproxy: automatically add firewall rules for multicast routing based on the 
current config

Signed-off-by: Felix Fietkau <[email protected]>

Modified: trunk/package/network/services/igmpproxy/files/igmpproxy.init
===================================================================
--- trunk/package/network/services/igmpproxy/files/igmpproxy.init       
2014-07-02 19:18:20 UTC (rev 41482)
+++ trunk/package/network/services/igmpproxy/files/igmpproxy.init       
2014-07-02 19:18:23 UTC (rev 41483)
@@ -65,6 +65,40 @@
        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 @@
        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
+}
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to