464xlat: add ip rule logic in the proto shell handler

Integrate ip rule support for the prelocal routing table lookup in the 464xlat
proto shell handler as netifd does not install anymore an ip rule for the prelocal
routing table.
The prelocal routing table ip rule needs to be installed before the local routing
table ip rule so the 464xlat traffic with as destination the IPv6 anycast address
is routed to the nat46 module otherwise the traffic will be dropped in the IPv6
local table.

Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
This commit is contained in:
Hans Dedecker 2017-06-02 15:38:10 +02:00
parent c39de0ab35
commit 8d7993d8f9
2 changed files with 21 additions and 3 deletions

View File

@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=nat46
PKG_VERSION:=9
PKG_VERSION:=10
PKG_RELEASE:=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
@ -33,7 +33,7 @@ endef
define Package/464xlat
SECTION:=net
CATEGORY:=Network
DEPENDS:=+kmod-nat46
DEPENDS:=+kmod-nat46 +ip
TITLE:=464xlat CLAT support
endef

View File

@ -43,6 +43,11 @@ proto_464xlat_setup() {
return
fi
ip -6 rule del from all lookup local
ip -6 rule add from all lookup local pref 1
ip -6 rule add to $ip6addr lookup prelocal pref 0
echo "$ip6addr" > /tmp/464-$cfg-anycast
proto_init_update "$link" 1
proto_add_ipv4_route "0.0.0.0" 0 "" "" 2048
proto_add_ipv6_route $ip6addr 128 "" "" "" "" 128
@ -74,7 +79,20 @@ proto_464xlat_setup() {
}
proto_464xlat_teardown() {
464xlatcfg "464-$1"
local cfg="$1"
local link="464-$cfg"
local ip6addr=$(cat /tmp/464-$cfg-anycast)
local anycast_active
464xlatcfg "$link"
rm -rf /tmp/464-$cfg-anycast
ip -6 rule del to $ip6addr lookup prelocal
if [ -z "$(ls /tmp/464-*-anycast 2>&-)" ]; then
ip -6 rule del from all lookup local
ip -6 rule add from all lookup local pref 0
fi
}
proto_464xlat_init_config() {