# 1: destination variable
# 2: interface
network_get_ipaddr6() {
- __network_ifstatus "$1" "$2" "['ipv6-address'][0].address";
+ 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
}
# determine first IPv4 subnet of given logical interface
if __network_ifstatus "__addr" "$2" "['ipv6-address','ipv6-prefix-assignment'][*].address"; then
for __addr in $__addr; do
case "$__addr" in
- *:) __list="${__list:+$__list }${__addr}1" ;;
+ *:) __list="${__list:+$__list }${__addr}1" ;;
+ *) __list="${__list:+$__list }${__addr}" ;;
+ esac
+ done
+
+ export "$1=$__list"
+ return 0
+ fi
+
+ unset "$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