From 14e6559eee9202d17f99493b5c7603b369c56294 Mon Sep 17 00:00:00 2001 From: Steven Barth Date: Thu, 9 Oct 2014 07:16:29 +0000 Subject: [PATCH] base-files: add network_get_ipaddrs_all() Return all IPv4 and IPv6 addresses. Signed-off-by: Mathias Kresin SVN-Revision: 42856 --- .../base-files/files/lib/functions/network.sh | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) 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