mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-02-17 18:04:42 +02:00
[package] firewall: fix nat reflection after netifd switch (#11460)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@31754 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
287ab9841e
commit
0945d8e239
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
|||||||
PKG_NAME:=firewall
|
PKG_NAME:=firewall
|
||||||
|
|
||||||
PKG_VERSION:=2
|
PKG_VERSION:=2
|
||||||
PKG_RELEASE:=49
|
PKG_RELEASE:=50
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
@ -1,9 +1,38 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
. /etc/functions.sh
|
. /etc/functions.sh
|
||||||
|
. /usr/share/libubox/jshn.sh
|
||||||
|
|
||||||
|
find_iface_address()
|
||||||
|
{
|
||||||
|
local iface="$1"
|
||||||
|
local ipaddr="$2"
|
||||||
|
local prefix="$3"
|
||||||
|
|
||||||
|
local tmp="$(ubus call network.interface."$iface" status 2>/dev/null)"
|
||||||
|
|
||||||
|
json_load "${tmp:-{}}"
|
||||||
|
json_get_type tmp address
|
||||||
|
|
||||||
|
if [ "$tmp" = array ]; then
|
||||||
|
|
||||||
|
json_select address
|
||||||
|
json_get_type tmp 1
|
||||||
|
|
||||||
|
if [ "$tmp" = object ]; then
|
||||||
|
|
||||||
|
json_select 1
|
||||||
|
[ -n "$ipaddr" ] && json_get_var "$ipaddr" address
|
||||||
|
[ -n "$prefix" ] && json_get_var "$prefix" mask
|
||||||
|
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
if [ "$ACTION" = "add" ] && [ "$INTERFACE" = "wan" ]; then
|
if [ "$ACTION" = "add" ] && [ "$INTERFACE" = "wan" ]; then
|
||||||
local wanip=$(uci -P/var/state get network.wan.ipaddr)
|
local wanip
|
||||||
|
find_iface_address wan wanip
|
||||||
|
[ -n "$wanip" ] || return
|
||||||
|
|
||||||
iptables -t nat -F nat_reflection_in 2>/dev/null || {
|
iptables -t nat -F nat_reflection_in 2>/dev/null || {
|
||||||
iptables -t nat -N nat_reflection_in
|
iptables -t nat -N nat_reflection_in
|
||||||
@ -60,8 +89,9 @@ if [ "$ACTION" = "add" ] && [ "$INTERFACE" = "wan" ]; then
|
|||||||
|
|
||||||
local net
|
local net
|
||||||
for net in $(find_networks "$dest"); do
|
for net in $(find_networks "$dest"); do
|
||||||
local lanip=$(uci -P/var/state get network.$net.ipaddr)
|
local lanip lanmk
|
||||||
local lanmk=$(uci -P/var/state get network.$net.netmask)
|
find_iface_address "$net" lanip lanmk
|
||||||
|
[ -n "$lanip" ] || return
|
||||||
|
|
||||||
local proto
|
local proto
|
||||||
config_get proto "$cfg" proto
|
config_get proto "$cfg" proto
|
||||||
|
Loading…
x
Reference in New Issue
Block a user