X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/0be37efeae0a902c35ba5790b8395e468315f75e..9b433b090a57ca648ca0e3eeb3ddc68136a7ccc7:/package/firewall/files/lib/fw.sh diff --git a/package/firewall/files/lib/fw.sh b/package/firewall/files/lib/fw.sh index a13eb7eb1..76e294f56 100644 --- a/package/firewall/files/lib/fw.sh +++ b/package/firewall/files/lib/fw.sh @@ -74,21 +74,8 @@ fw__exec() { # { } fw__rc $(($? & 1)) return fi - local mod - eval "mod=\$FW_${fam#G}_${tab}" - if [ "$mod" ]; then - fw__rc $mod - return - fi - case "$fam" in - *4) mod=iptable_${tab} ;; - *6) mod=ip6table_${tab} ;; - *) mod=. ;; - esac - grep -q "^${mod} " /proc/modules - mod=$? - export FW_${fam}_${tab}=$mod - fw__rc $mod + [ "$app" != ip6tables ] || [ "$tab" != nat ] + fw__rc $? } fw__err() { @@ -225,12 +212,17 @@ fw_get_family_mode() { local _mode="$4" local _ipv4 _ipv6 - [ -n "$FW_ZONES4$FW_ZONES6" ] && { - list_contains FW_ZONES4 $_zone && _ipv4=1 || _ipv4=0 - list_contains FW_ZONES6 $_zone && _ipv6=1 || _ipv6=0 + [ "$_zone" != "*" ] && { + [ -n "$FW_ZONES4$FW_ZONES6" ] && { + list_contains FW_ZONES4 "$_zone" && _ipv4=1 || _ipv4=0 + list_contains FW_ZONES6 "$_zone" && _ipv6=1 || _ipv6=0 + } || { + _ipv4=$(uci_get_state firewall core "${_zone}_ipv4" 0) + _ipv6=$(uci_get_state firewall core "${_zone}_ipv6" 0) + } } || { - _ipv4=$(uci_get_state firewall core ${_zone}_ipv4 0) - _ipv6=$(uci_get_state firewall core ${_zone}_ipv6 0) + _ipv4=1 + _ipv6=1 } case "$_hint:$_ipv4:$_ipv6" in @@ -263,9 +255,12 @@ fw_get_subnet4() { [ "${_name#!}" != "$_name" ] && \ export -n -- "$_var=! $_flag $_ipaddr/${_netmask:-255.255.255.255}" || \ export -n -- "$_var=$_flag $_ipaddr/${_netmask:-255.255.255.255}" + return 0 ;; - *) export -n -- "$_var=" ;; esac + + export -n -- "$_var=" + return 1 } fw_check_icmptype4() { @@ -280,10 +275,7 @@ fw_check_icmptype4() { export FW_ICMP4_TYPES=$( iptables -p icmp -h 2>/dev/null | \ sed -n -e '/^Valid ICMP Types:/ { - n; :r; - /router-advertisement/d; - /router-solicitation/d; - s/[()]/ /g; s/[[:space:]]\+/\n/g; p; n; b r + n; :r; s/[()]/ /g; s/[[:space:]]\+/\n/g; p; n; b r }' | sort -u )