diff options
Diffstat (limited to 'package/base-files/files/lib/functions')
-rw-r--r-- | package/base-files/files/lib/functions/network.sh | 30 |
1 files changed, 13 insertions, 17 deletions
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 |