766e48e38ec95df11cc4e2e01e3ba5bc72088e2c
[openwrt/svn-archive/archive.git] / package / firewall / files / lib / core_forwarding.sh
1 # Copyright (C) 2009-2010 OpenWrt.org
2
3 fw_config_get_forwarding() {
4 [ "${forwarding_NAME}" != "$1" ] || return
5 fw_config_get_section "$1" forwarding { \
6 string _name "$1" \
7 string name "" \
8 string src "" \
9 string dest "" \
10 } || return
11 [ -n "$forwarding_name" ] || forwarding_name=$forwarding__name
12 }
13
14 fw_load_forwarding() {
15 fw_config_get_forwarding "$1"
16
17 fw_callback pre forwarding
18
19 local chain=forward
20 [ -n "$forwarding_src" ] && {
21 chain=zone_${forwarding_src}_forward
22 }
23
24 local target=ACCEPT
25 [ -n "$forwarding_dest" ] && {
26 target=zone_${forwarding_dest}_ACCEPT
27 }
28
29 fw add i f $chain $target ^
30
31 # propagate masq zone flag
32 [ -n "$forwarding_src" ] && list_contains CONNTRACK_ZONES $forwarding_src && {
33 append CONNTRACK_ZONES $forwarding_dest
34 }
35 [ -n "$forwarding_dest" ] && list_contains CONNTRACK_ZONES $forwarding_dest && {
36 append CONNTRACK_ZONES $forwarding_src
37 }
38
39 fw_callback post forwarding
40 }