summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksandr V. Piskunov2024-07-16 13:44:35 +0000
committerHauke Mehrtens2024-09-22 14:28:51 +0000
commit6b5aea74293fe93e8abac411f9d974e8876e3252 (patch)
tree3afb599746df7d138b875111c379b9e72dfe88a2
parentcdb535ac3231cdcbb15f8682e0f165424e282003 (diff)
downloadopenwrt-6b5aea74293fe93e8abac411f9d974e8876e3252.tar.gz
6in4: Support fqdn as remote tunnel endpoint
Same as fqdn support in GRE (commit a79f3d11b3) and IPIP (commit 311682905e) Signed-off-by: Aleksandr V. Piskunov <aleksandr.v.piskunov@gmail.com> Link: https://github.com/openwrt/openwrt/pull/15961 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
-rw-r--r--package/network/ipv6/6in4/Makefile2
-rwxr-xr-xpackage/network/ipv6/6in4/files/6in4.sh15
2 files changed, 15 insertions, 2 deletions
diff --git a/package/network/ipv6/6in4/Makefile b/package/network/ipv6/6in4/Makefile
index edbb7d71a0..3c7dd4609b 100644
--- a/package/network/ipv6/6in4/Makefile
+++ b/package/network/ipv6/6in4/Makefile
@@ -16,7 +16,7 @@ include $(INCLUDE_DIR)/package.mk
define Package/6in4
SECTION:=net
CATEGORY:=Network
- DEPENDS:=@IPV6 +kmod-sit +uclient-fetch
+ DEPENDS:=@IPV6 +kmod-sit +uclient-fetch +resolveip
TITLE:=IPv6-in-IPv4 configuration support
MAINTAINER:=Jo-Philipp Wich <jo@mein.io>
PKGARCH:=all
diff --git a/package/network/ipv6/6in4/files/6in4.sh b/package/network/ipv6/6in4/files/6in4.sh
index 99b2b76312..e500c6dec8 100755
--- a/package/network/ipv6/6in4/files/6in4.sh
+++ b/package/network/ipv6/6in4/files/6in4.sh
@@ -44,6 +44,7 @@ proto_6in4_setup() {
local cfg="$1"
local iface="$2"
local link="6in4-$cfg"
+ local remoteip
local mtu ttl tos ipaddr peeraddr ip6addr ip6prefix ip6prefixes tunlink tunnelid username password updatekey device
json_get_vars mtu ttl tos ipaddr peeraddr ip6addr tunlink tunnelid username password updatekey device
@@ -52,11 +53,23 @@ proto_6in4_setup() {
[ -n "$device" ] && link="$device"
[ -z "$peeraddr" ] && {
- proto_notify_error "$cfg" "MISSING_ADDRESS"
+ proto_notify_error "$cfg" "MISSING_PEER_ADDRESS"
proto_block_restart "$cfg"
return
}
+ remoteip=$(resolveip -t 10 -4 "$peeraddr")
+
+ if [ -z "$remoteip" ]; then
+ proto_notify_error "$cfg" "PEER_RESOLVE_FAIL"
+ return
+ fi
+
+ for ip in $remoteip; do
+ peeraddr=$ip
+ break
+ done
+
( proto_add_host_dependency "$cfg" "$peeraddr" "$tunlink" )
[ -z "$ipaddr" ] && {