base-files: change network_find_wan() procedure to ignore default gateways in differe...
[openwrt/staging/lynxis/omap.git] / package / base-files / files / lib / functions / network.sh
index 8f87d1d0beb6521ef10067097d4a5613222a119b..d86a504bf44c3f66392d5e2252e6fcadb293a687 100644 (file)
@@ -80,16 +80,20 @@ __network_parse_ifstatus()
                        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 ".."
 
@@ -186,18 +190,15 @@ network_get_subnet6() { __network_ipaddr "$1" "$2" 6 1; }
 
 # 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 $?
 }