while json_is_a "$__idx" object; do
json_select "$((__idx++))"
- json_get_var __tmp target
-
- case "${__tmp}" in
- 0.0.0.0)
- __network_set_cache "${__key}_gateway4" nexthop
- ;;
- ::)
- __network_set_cache "${__key}_gateway6" nexthop
- ;;
- esac
+ json_get_var __tmp table
+
+ if [ -z "$__tmp" ]; then
+ json_get_var __tmp target
+
+ case "${__tmp}" in
+ 0.0.0.0)
+ __network_set_cache "${__key}_gateway4" nexthop
+ ;;
+ ::)
+ __network_set_cache "${__key}_gateway6" nexthop
+ ;;
+ esac
+ fi
json_select ".."
# determine IPv6 prefix
network_get_prefix6() {
- local __prefix="$1"
+ local __var="$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_export __mask "${__iface}_prefix6_mask" || return 1
+ __network_export "$__var" "${__iface}_prefix6_address" "/$__mask"
+ return $?
}