aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/lib/functions
diff options
context:
space:
mode:
authorSteven Barth <cyrus@openwrt.org>2013-01-15 13:07:51 +0000
committerSteven Barth <cyrus@openwrt.org>2013-01-15 13:07:51 +0000
commit847cd984b99dd116e6f18c2c4364ea46caea764e (patch)
tree9e1c0c164892980cc16185ff7a298a4a43dce06c /package/base-files/files/lib/functions
parent06890959d1acde1808f22502a334253e62b36e64 (diff)
downloadupstream-847cd984b99dd116e6f18c2c4364ea46caea764e.tar.gz
upstream-847cd984b99dd116e6f18c2c4364ea46caea764e.tar.bz2
upstream-847cd984b99dd116e6f18c2c4364ea46caea764e.zip
base-files: add support for ipv6-prefixes in connection with netifd
SVN-Revision: 35168
Diffstat (limited to 'package/base-files/files/lib/functions')
-rw-r--r--package/base-files/files/lib/functions/network.sh30
1 files changed, 30 insertions, 0 deletions
diff --git a/package/base-files/files/lib/functions/network.sh b/package/base-files/files/lib/functions/network.sh
index 424965acb5..8f87d1d0be 100644
--- a/package/base-files/files/lib/functions/network.sh
+++ b/package/base-files/files/lib/functions/network.sh
@@ -57,6 +57,20 @@ __network_parse_ifstatus()
fi
done
+ # parse prefixes
+ if json_is_a "ipv6_prefix" array; then
+ json_select "ipv6_prefix"
+
+ if json_is_a 1 object; then
+ json_select 1
+ __network_set_cache "${__key}_prefix6_address" address
+ __network_set_cache "${__key}_prefix6_mask" mask
+ json_select ".."
+ fi
+
+ json_select ".."
+ fi
+
# parse routes
if json_is_a route array; then
@@ -170,6 +184,22 @@ network_get_subnet() { __network_ipaddr "$1" "$2" 4 1; }
# 2: interface
network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; }
+# determine IPv6 prefix
+network_get_prefix6() {
+ local __prefix="$1"
+ local __iface="$2"
+ local __address
+ local __mask
+
+ __network_parse_ifstatus "$__iface" || return 1
+ __network_export __address "${__iface}_prefix6_address"
+ local return="$?"
+ [ "$return" -eq 0 ] || return $?
+ __network_export __mask "${__iface}_prefix6_mask"
+ eval "$__prefix=$__address/$__mask"
+ return 0
+}
+
__network_gateway()
{