aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net/ifconfig.sh.Linux.in')
-rw-r--r--net/ifconfig.sh.Linux.in26
1 files changed, 23 insertions, 3 deletions
diff --git a/net/ifconfig.sh.Linux.in b/net/ifconfig.sh.Linux.in
index b2203cb..25f1fef 100644
--- a/net/ifconfig.sh.Linux.in
+++ b/net/ifconfig.sh.Linux.in
@@ -86,21 +86,41 @@ _get_inet_address()
echo "/$(_netmask2cidr "$1")"
}
-_get_inet_addresses()
+_get_inet6_address()
+{
+ set -- $(LC_ALL=C ifconfig "${IFACE}" |
+ sed -n -e 's/.*\(inet6 addr:\|inet6\) \([^ /]*\)\(\/\| *prefixlen \)\([^ ]*\).*/\2\/\4/p')
+ [ -z "$1" ] && return 1
+
+ echo -n "$1"
+}
+
+_get_addresses_fn()
{
+ local fn="$1"
local iface=${IFACE} i=0
- local addrs="$(_get_inet_address)"
+ local addrs="$($fn)"
while true; do
local IFACE="${iface}:${i}"
_exists || break
- local addr="$(_get_inet_address)"
+ local addr="$($fn)"
[ -n "${addr}" ] && addrs="${addrs}${addrs:+ }${addr}"
: $(( i += 1 ))
done
echo "${addrs}"
}
+_get_inet_addresses()
+{
+ _get_addresses_fn _get_inet_address
+}
+
+_get_inet6_addresses()
+{
+ _get_addresses_fn _get_inet6_address
+}
+
_cidr2netmask()
{
local cidr="$1" netmask="" done=0 i=0 sum=0 cur=128