6in4: Support fqdn as remote tunnel endpoint
authorAleksandr V. Piskunov <aleksandr.v.piskunov@gmail.com>
Tue, 16 Jul 2024 13:44:35 +0000 (16:44 +0300)
committerHauke Mehrtens <hauke@hauke-m.de>
Sun, 22 Sep 2024 14:28:51 +0000 (16:28 +0200)
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>
package/network/ipv6/6in4/Makefile
package/network/ipv6/6in4/files/6in4.sh

index edbb7d71a01af82c2284e879fa66503786b8054e..3c7dd4609b3123654e3fa92f7b6e31790aa0aafa 100644 (file)
@@ -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
index 99b2b763124b4111638dcc85fca3f0f1efed2e3d..e500c6dec8e4b11af99429e1e5e35fde7c608114 100755 (executable)
@@ -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" ] && {