aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files
diff options
context:
space:
mode:
authorSteven Barth <steven@midlink.org>2014-10-09 07:16:29 +0000
committerSteven Barth <steven@midlink.org>2014-10-09 07:16:29 +0000
commitc9ab6f3a677551b7945a56de31af9aff64fc632e (patch)
tree2e2e507632dda28d5e86d76d0ac8d0b0172f876e /package/base-files/files
parenta1dde5fcb622d7081b7f48816ca62cb1260d1161 (diff)
downloadupstream-c9ab6f3a677551b7945a56de31af9aff64fc632e.tar.gz
upstream-c9ab6f3a677551b7945a56de31af9aff64fc632e.tar.bz2
upstream-c9ab6f3a677551b7945a56de31af9aff64fc632e.zip
base-files: add network_get_ipaddrs_all()
Return all IPv4 and IPv6 addresses. Signed-off-by: Mathias Kresin <openwrt@kresin.me> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42856 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/base-files/files')
-rw-r--r--package/base-files/files/lib/functions/network.sh23
1 files changed, 23 insertions, 0 deletions
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