20-firewall 690 B

1234567891011121314151617181920212223242526272829303132333435
  1. . /lib/firewall/uci_firewall.sh
  2. unset ZONE
  3. config_get ifname $INTERFACE ifname
  4. [ "$ifname" == "lo" ] && exit 0
  5. load_zones() {
  6. local name
  7. local network
  8. config_get name $1 name
  9. config_get network $1 network
  10. [ -z "$network" ] && network=$name
  11. for n in $network; do
  12. [ "$n" = "$INTERFACE" ] && ZONE="$ZONE $name"
  13. done
  14. }
  15. config_foreach load_zones zone
  16. [ -z "$ZONE" ] && exit 0
  17. [ ifup = "$ACTION" ] && {
  18. for z in $ZONE; do
  19. local loaded
  20. config_get loaded core loaded
  21. [ -n "$loaded" ] && addif "$INTERFACE" "$ifname" "$z"
  22. done
  23. }
  24. [ ifdown = "$ACTION" ] && {
  25. for z in $ZONE; do
  26. local up
  27. config_get up $z up
  28. [ "$up" == "1" ] && delif "$INTERFACE" "$ifname" "$z"
  29. done
  30. }