diff --git a/package/network/ipv6/6in4/Makefile b/package/network/ipv6/6in4/Makefile index edbb7d71a01a..3c7dd4609b31 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 PKGARCH:=all diff --git a/package/network/ipv6/6in4/files/6in4.sh b/package/network/ipv6/6in4/files/6in4.sh index 99b2b763124b..e500c6dec8e4 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" ] && {