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>
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=nat46
include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=nat46
PKG_RELEASE:=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_RELEASE:=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
define Package/464xlat
SECTION:=net
CATEGORY:=Network
define Package/464xlat
SECTION:=net
CATEGORY:=Network
+ DEPENDS:=+kmod-nat46 +ip
TITLE:=464xlat CLAT support
endef
TITLE:=464xlat CLAT support
endef
+ 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
proto_init_update "$link" 1
proto_add_ipv4_route "0.0.0.0" 0 "" "" 2048
proto_add_ipv6_route $ip6addr 128 "" "" "" "" 128
}
proto_464xlat_teardown() {
}
proto_464xlat_teardown() {
+ 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() {
}
proto_464xlat_init_config() {