Ver Fonte

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 <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/15961
Signed-off-by: Hauke Mehrtens <[email protected]>
Aleksandr V. Piskunov há 1 ano atrás
pai
commit
6b5aea7429

+ 1 - 1
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 <[email protected]>
   PKGARCH:=all

+ 14 - 1
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" ] && {