aboutsummaryrefslogtreecommitdiffstats
path: root/package
diff options
context:
space:
mode:
authorJo-Philipp Wich <jo@mein.io>2017-06-08 12:02:36 +0200
committerJo-Philipp Wich <jo@mein.io>2017-06-08 12:06:01 +0200
commit7f91cabd0d5b6e1a716d9e3fab4103730d9d2888 (patch)
tree7b5bfdef6f626fd8ecaf2ec5eb4b917812bc176d /package
parent737b063cc2e562485e624cda0fb42fb47f1b90c7 (diff)
downloadupstream-7f91cabd0d5b6e1a716d9e3fab4103730d9d2888.tar.gz
upstream-7f91cabd0d5b6e1a716d9e3fab4103730d9d2888.tar.bz2
upstream-7f91cabd0d5b6e1a716d9e3fab4103730d9d2888.zip
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@mein.io>
Diffstat (limited to 'package')
-rw-r--r--package/base-files/Makefile2
-rw-r--r--package/base-files/files/lib/functions/network.sh30
2 files changed, 14 insertions, 18 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile
index 912449c85a..c669ff0ac6 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 1b0c717204..4b61fe33f2 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