20-firewall 699 B

123456789101112131415161718192021222324252627282930313233343536
  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. local up
  26. config_get up "$INTERFACE" up
  27. for z in $ZONE; do
  28. [ "$up" == "1" ] && delif "$INTERFACE" "$ifname" "$z"
  29. done
  30. }