From: Steven Barth Date: Thu, 9 Oct 2014 07:16:29 +0000 (+0000) Subject: base-files: add network_get_ipaddrs_all() X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=14e6559eee9202d17f99493b5c7603b369c56294;p=librecmc%2Flibrecmc.git base-files: add network_get_ipaddrs_all() Return all IPv4 and IPv6 addresses. Signed-off-by: Mathias Kresin SVN-Revision: 42856 --- diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh index 3a6903f2de..1b0c717204 100644 --- a/package/base-files/files/lib/functions/network.sh +++ b/package/base-files/files/lib/functions/network.sh @@ -94,6 +94,29 @@ network_get_ipaddrs6() { return 1 } +# determine all IP addresses of given logical interface +# 1: destination variable +# 2: interface +network_get_ipaddrs_all() { + local __addr + local __list="" + + if __network_ifstatus "__addr" "$2" "['ipv4-address','ipv6-address','ipv6-prefix-assignment'][*].address"; then + for __addr in $__addr; do + case "$__addr" in + *:) __list="${__list:+$__list }${__addr}1" ;; + *) __list="${__list:+$__list }${__addr}" ;; + esac + done + + export "$1=$__list" + return 0 + fi + + unset "$1" + return 1 +} + # determine all IPv4 subnets of given logical interface # 1: destination variable # 2: interface