core_forwarding.sh 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # Copyright (C) 2009-2010 OpenWrt.org
  2. fw_config_get_forwarding() {
  3. [ "${forwarding_NAME}" != "$1" ] || return
  4. fw_config_get_section "$1" forwarding { \
  5. string _name "$1" \
  6. string name "" \
  7. string src "" \
  8. string dest "" \
  9. string family "" \
  10. } || return
  11. [ -n "$forwarding_name" ] || forwarding_name=$forwarding__name
  12. }
  13. fw_load_forwarding() {
  14. fw_config_get_forwarding "$1"
  15. fw_callback pre forwarding
  16. local chain=forward
  17. [ -n "$forwarding_src" ] && {
  18. chain=zone_${forwarding_src}_forward
  19. }
  20. local target=ACCEPT
  21. [ -n "$forwarding_dest" ] && {
  22. target=zone_${forwarding_dest}_ACCEPT
  23. }
  24. local mode
  25. fw_get_family_mode mode ${forwarding_family:-x} ${forwarding_dest:-${forwarding_src:--}} i
  26. fw add $mode f $chain $target ^
  27. # propagate masq zone flag
  28. [ -n "$forwarding_src" ] && list_contains FW_CONNTRACK_ZONES $forwarding_src && {
  29. append FW_CONNTRACK_ZONES $forwarding_dest
  30. }
  31. [ -n "$forwarding_dest" ] && list_contains FW_CONNTRACK_ZONES $forwarding_dest && {
  32. append FW_CONNTRACK_ZONES $forwarding_src
  33. }
  34. fw_callback post forwarding
  35. }