X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/6b2e482b317dd94119a2a8f0b101ebd4c1c07753..accff9a4a72195bc2be35d0edfcd1f4f51954971:/package/firewall/files/uci_firewall.sh diff --git a/package/firewall/files/uci_firewall.sh b/package/firewall/files/uci_firewall.sh index 21485cb5d..207dcd8df 100755 --- a/package/firewall/files/uci_firewall.sh +++ b/package/firewall/files/uci_firewall.sh @@ -343,6 +343,7 @@ fw_redirect() { config_get src $1 src config_get src_ip $1 src_ip + config_get src_dip $1 src_dip config_get src_port $1 src_port config_get src_dport $1 src_dport config_get src_mac $1 src_mac @@ -372,6 +373,7 @@ fw_redirect() { $IPTABLES -A zone_${src}_prerouting -t nat \ ${proto:+-p $proto} \ ${src_ip:+-s $src_ip} \ + ${src_dip:+-d $src_dip} \ ${src_port:+--sport $src_port} \ ${src_dport:+--dport $src_dport} \ ${src_mac:+-m mac --mac-source $src_mac} \ @@ -417,7 +419,8 @@ get_interface_zones() { fw_event() { local action="$1" local interface="$2" - local ifname="$(sh -c ". /etc/functions.sh; config_load network; config_get "$interface" ifname")" + local ifname="$(sh -c ". /etc/functions.sh; include /lib/network; scan_interfaces; config_get "$interface" ifname")" + add_zone= local up [ -z "$ifname" ] && return 0 @@ -503,10 +506,15 @@ fw_init() { echo "Loading zone defaults" config_foreach fw_zone_defaults zone uci_set_state firewall core loaded 1 + config_set core loaded 1 config_foreach fw_check_notrack zone - INTERFACES="$(sh -c '. /etc/functions.sh; config_load network; config_foreach echo interface')" + INTERFACES="$(sh -c ' + . /etc/functions.sh; config_load network + echo_up() { local up; config_get_bool up "$1" up 0; [ $up = 1 ] && echo "$1"; } + config_foreach echo_up interface + ')" for interface in $INTERFACES; do - fw_addif "$interface" + fw_event ifup "$interface" done }