[source] base-files: network.sh: properly report local IPv6 addresses

LEDE Commits lede-commits at lists.infradead.org
Thu Jun 8 03:06:16 PDT 2017


jow pushed a commit to source.git, branch master:
https://git.lede-project.org/7f91cabd0d5b6e1a716d9e3fab4103730d9d2888

commit 7f91cabd0d5b6e1a716d9e3fab4103730d9d2888
Author: Jo-Philipp Wich <jo at mein.io>
AuthorDate: Thu Jun 8 12:02:36 2017 +0200

    base-files: network.sh: properly report local IPv6 addresses
    
    Rework the network_get_ipaddr6() and network_get_ipaddrs6() functions to
    fetch the effective local IPv6 address of delegated prefix from the
    "local-address" field instead of naively hardcoding ":1" as static suffix.
    
    Fixes FS#829.
    
    Signed-off-by: Jo-Philipp Wich <jo at mein.io>
---
 package/base-files/Makefile                       |  2 +-
 package/base-files/files/lib/functions/network.sh | 30 ++++++++++-------------
 2 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 912449c..c669ff0 100644
--- a/package/base-files/Makefile
+++ b/package/base-files/Makefile
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 include $(INCLUDE_DIR)/version.mk
 
 PKG_NAME:=base-files
-PKG_RELEASE:=172
+PKG_RELEASE:=173
 PKG_FLAGS:=nonshared
 
 PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh
index 1b0c717..4b61fe3 100644
--- a/package/base-files/files/lib/functions/network.sh
+++ b/package/base-files/files/lib/functions/network.sh
@@ -29,18 +29,9 @@ network_get_ipaddr() {
 # 1: destination variable
 # 2: interface
 network_get_ipaddr6() {
-	local __addr
-
-	if __network_ifstatus "__addr" "$2" "['ipv6-address','ipv6-prefix-assignment'][0].address"; then
-		case "$__addr" in
-			*:)	export "$1=${__addr}1" ;;
-			*)	export "$1=${__addr}" ;;
-		esac
-		return 0
-	fi
-
-	unset $1
-	return 1
+	__network_ifstatus "$1" "$2" "['ipv6-address'][0].address" || \
+		__network_ifstatus "$1" "$2" "['ipv6-prefix-assignment'][0]['local-address'].address" || \
+		return 1
 }
 
 # determine first IPv4 subnet of given logical interface
@@ -78,14 +69,19 @@ network_get_ipaddrs6() {
 	local __addr
 	local __list=""
 
-	if __network_ifstatus "__addr" "$2" "['ipv6-address','ipv6-prefix-assignment'][*].address"; then
+	if __network_ifstatus "__addr" "$2" "['ipv6-address'][*].address"; then
 		for __addr in $__addr; do
-			case "$__addr" in
-				*:) __list="${__list:+$__list }${__addr}1" ;;
-				*)  __list="${__list:+$__list }${__addr}"  ;;
-			esac
+			__list="${__list:+$__list }${__addr}"
+		done
+	fi
+
+	if __network_ifstatus "__addr" "$2" "['ipv6-prefix-assignment'][*]['local-address'].address"; then
+		for __addr in $__addr; do
+			__list="${__list:+$__list }${__addr}"
 		done
+	fi
 
+	if [ -n "$__list" ]; then
 		export "$1=$__list"
 		return 0
 	fi



More information about the lede-commits mailing list