base-files: add network_get_ipaddrs_all()
authorcyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 9 Oct 2014 07:16:29 +0000 (07:16 +0000)
committercyrus <cyrus@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Thu, 9 Oct 2014 07:16:29 +0000 (07:16 +0000)
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

package/base-files/files/lib/functions/network.sh

index 3a6903f..1b0c717 100644 (file)
@@ -94,6 +94,29 @@ network_get_ipaddrs6() {
        return 1
 }
 
        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
 # determine all IPv4 subnets of given logical interface
 # 1: destination variable
 # 2: interface