X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/7c52bc2d37cb8766e5774cc3dd7578677706bd7b..5a76cd437c8b0271c03ade8ad07335b2e8f590a3:/package/firewall/files/uci_firewall.sh diff --git a/package/firewall/files/uci_firewall.sh b/package/firewall/files/uci_firewall.sh index 3c13631a3..67662c1ac 100755 --- a/package/firewall/files/uci_firewall.sh +++ b/package/firewall/files/uci_firewall.sh @@ -56,15 +56,15 @@ create_zone() { $IPTABLES -N zone_$1_DROP $IPTABLES -N zone_$1_REJECT $IPTABLES -N zone_$1_forward - [ "$5" ] && $IPTABLES -A zone_$1_forward -j zone_$1_$5 - [ "$3" ] && $IPTABLES -A zone_$1 -j zone_$1_$3 [ "$4" ] && $IPTABLES -A output -j zone_$1_$4 $IPTABLES -N zone_$1_nat -t nat $IPTABLES -N zone_$1_prerouting -t nat $IPTABLES -t raw -N zone_$1_notrack [ "$6" == "1" ] && $IPTABLES -t nat -A POSTROUTING -j zone_$1_nat + [ "$7" == "1" ] && $IPTABLES -I FORWARD 1 -j zone_$1_MSSFIX } + addif() { local network="$1" local ifname="$2" @@ -218,6 +218,22 @@ fw_defaults() { fw_set_chain_policy FORWARD "$DEF_FORWARD" } +fw_zone_defaults() { + local name + local network + local masq + + config_get name $1 name + config_get network $1 network + config_get_bool masq $1 masq "0" + config_get_bool conntrack $1 conntrack "0" + config_get_bool mtu_fix $1 mtu_fix 0 + + load_policy $1 + [ "$forward" ] && $IPTABLES -A zone_${name}_forward -j zone_${name}_${forward} + [ "$input" ] && $IPTABLES -A zone_${name} -j zone_${name}_${input} +} + fw_zone() { local name local network @@ -227,11 +243,12 @@ fw_zone() { config_get network $1 network config_get_bool masq $1 masq "0" config_get_bool conntrack $1 conntrack "0" + config_get_bool mtu_fix $1 mtu_fix 0 load_policy $1 [ "$conntrack" = "1" -o "$masq" = "1" ] && append CONNTRACK_ZONES "$name" [ -z "$network" ] && network=$name - create_zone "$name" "$network" "$input" "$output" "$forward" "$masq" + create_zone "$name" "$network" "$input" "$output" "$forward" "$masq" "$mtu_fix" fw_custom_chains_zone "$name" } @@ -278,7 +295,7 @@ fw_rule() { [ -n "$src" -a -n "$dest" ] && ZONE=zone_${src}_forward [ -n "$dest" ] && TARGET=zone_${dest}_$target add_rule() { - $IPTABLES -I $ZONE 1 \ + $IPTABLES -A $ZONE \ ${proto:+-p $proto} \ ${icmp_type:+--icmp-type $icmp_type} \ ${src_ip:+-s $src_ip} \ @@ -305,11 +322,9 @@ fw_forwarding() { config_get src $1 src config_get dest $1 dest - config_get_bool mtu_fix $1 mtu_fix 0 [ -n "$src" ] && z_src=zone_${src}_forward || z_src=forward [ -n "$dest" ] && z_dest=zone_${dest}_ACCEPT || z_dest=ACCEPT $IPTABLES -I $z_src 1 -j $z_dest - [ "$mtu_fix" -gt 0 -a -n "$dest" ] && $IPTABLES -I $z_src 1 -j zone_${dest}_MSSFIX # propagate masq zone flag find_item "$src" $CONNTRACK_ZONES && append CONNTRACK_ZONES $dest @@ -446,6 +461,8 @@ fw_init() { config_foreach fw_rule rule echo "Loading includes" config_foreach fw_include include + echo "Loading zone defaults" + config_foreach fw_zone_defaults zone uci_set_state firewall core loaded 1 config_foreach fw_check_notrack zone unset CONFIG_APPEND