[package] firewall: do not produce 0.0.0.0/0 if a symbolic masq_src or masq_dest...
[openwrt.git] / package / firewall / files / lib / core_init.sh
index 56e19b7..a0b0958 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2009-2010 OpenWrt.org
+# Copyright (C) 2009-2011 OpenWrt.org
 # Copyright (C) 2008 John Crispin <blogic@openwrt.org>
 
 FW_INITIALIZED=
@@ -66,17 +66,17 @@ fw_load_defaults() {
        done
        fw_sysctl_interface all
 
+       fw add i f INPUT   ACCEPT { -m conntrack --ctstate RELATED,ESTABLISHED }
+       fw add i f OUTPUT  ACCEPT { -m conntrack --ctstate RELATED,ESTABLISHED }
+       fw add i f FORWARD ACCEPT { -m conntrack --ctstate RELATED,ESTABLISHED }
+
        [ $defaults_drop_invalid == 1 ] && {
-               fw add i f INPUT   DROP { -m state --state INVALID }
-               fw add i f OUTPUT  DROP { -m state --state INVALID }
-               fw add i f FORWARD DROP { -m state --state INVALID }
+               fw add i f INPUT   DROP { -m conntrack --ctstate INVALID }
+               fw add i f OUTPUT  DROP { -m conntrack --ctstate INVALID }
+               fw add i f FORWARD DROP { -m conntrack --ctstate INVALID }
                FW_NOTRACK_DISABLED=1
        }
 
-       fw add i f INPUT   ACCEPT { -m state --state RELATED,ESTABLISHED }
-       fw add i f OUTPUT  ACCEPT { -m state --state RELATED,ESTABLISHED }
-       fw add i f FORWARD ACCEPT { -m state --state RELATED,ESTABLISHED }
-
        fw add i f INPUT  ACCEPT { -i lo }
        fw add i f OUTPUT ACCEPT { -o lo }
 
@@ -245,9 +245,17 @@ fw_load_zone() {
        if [ "$zone_masq" == 1 ]; then
                local msrc mdst
                for msrc in ${zone_masq_src:-0.0.0.0/0}; do
-                       [ "${msrc#!}" != "$msrc" ] && msrc="! -s ${msrc#!}" || msrc="-s $msrc"
+                       case "$msrc" in
+                               *.*) fw_get_negation msrc '-s' "$msrc" ;;
+                               *)   fw_get_subnet4 msrc '-s' "$msrc" || break ;;
+                       esac
+
                        for mdst in ${zone_masq_dest:-0.0.0.0/0}; do
-                               [ "${mdst#!}" != "$mdst" ] && mdst="! -d ${mdst#!}" || mdst="-d $mdst"
+                               case "$mdst" in
+                                       *.*) fw_get_negation mdst '-d' "$mdst" ;;
+                                       *)   fw_get_subnet4 mdst '-d' "$mdst" || break ;;
+                               esac
+
                                fw add $mode n ${chain}_nat MASQUERADE $ { $msrc $mdst }
                        done
                done
@@ -271,8 +279,10 @@ fw_load_notrack_zone() {
 fw_load_include() {
        local name="$1"
 
-       local path; config_get path ${name} path
-       [ -e $path ] && . $path
+       local path
+       config_get path ${name} path
+
+       [ -e $path ] && ( . $path )
 }
 
 
This page took 0.020727 seconds and 4 git commands to generate.