. /lib/firewall/uci_firewall.sh unset ZONE config_get ifname $INTERFACE ifname INTERFACE=$ifname [ "$INTERFACE" == "lo" ] && exit 0 load_zones() { local name local network config_get name $1 name config_get network $1 network [ -z "$network" ] && network=$name for n in $network; do local ifname config_get ifname $n ifname list_contains ifname $INTERFACE && { list_contains ZONE $name || ZONE="$ZONE $name" } done } config_foreach load_zones zone [ -z "$ZONE" ] && exit 0 [ ifup = "$ACTION" ] && { for z in $ZONE; do local loaded config_get loaded core loaded [ -n "$loaded" ] && addif $INTERFACE $z done } [ ifdown = "$ACTION" ] && { for z in $ZONE; do local up config_get up $z up [ "$up" == "1" ] && delif $INTERFACE $z done }