[package] firewall: deliver remove hotplug events for all active zones/networks when...
[openwrt/svn-archive/archive.git] / package / firewall / files / lib / core.sh
index 03a80c6f6c947c0cc1823bfefe4f6ee07e734003..2178e0505c81267909a879c43f529b9cdd2fe3e7 100644 (file)
@@ -49,6 +49,7 @@ fw_start() {
 
        fw_callback post core
 
+       uci_set_state firewall core zones "$FW_ZONES"
        uci_set_state firewall core loaded 1
 }
 
@@ -57,6 +58,19 @@ fw_stop() {
 
        fw_callback pre stop
 
+       local old_zones z
+       config_get old_zones core zones
+       for z in $old_zones; do
+               local old_networks n i
+               config_get old_networks core "${z}_networks"
+               for n in $old_networks; do
+                       config_get i core "${n}_ifname"
+                       [ -n "$i" ] && env -i ACTION=remove ZONE="$z" \
+                               INTERFACE="$n" DEVICE="$i" \
+                               /sbin/hotplug-call firewall
+               done
+       done
+
        fw_clear ACCEPT
 
        fw_callback post stop