|
|
|
@ -9,24 +9,34 @@ find_iface_address() |
|
|
|
|
local ipaddr="$2" |
|
|
|
|
local prefix="$3" |
|
|
|
|
|
|
|
|
|
local idx=1 |
|
|
|
|
local tmp="$(ubus call network.interface."$iface" status 2>/dev/null)" |
|
|
|
|
|
|
|
|
|
json_load "${tmp:-{}}" |
|
|
|
|
json_get_type tmp address |
|
|
|
|
|
|
|
|
|
if [ "$tmp" = array ]; then |
|
|
|
|
|
|
|
|
|
json_select address |
|
|
|
|
json_get_type tmp 1 |
|
|
|
|
|
|
|
|
|
if [ "$tmp" = object ]; then |
|
|
|
|
|
|
|
|
|
json_select 1 |
|
|
|
|
[ -n "$ipaddr" ] && json_get_var "$ipaddr" address |
|
|
|
|
[ -n "$prefix" ] && json_get_var "$prefix" mask |
|
|
|
|
|
|
|
|
|
fi |
|
|
|
|
while true; do |
|
|
|
|
json_get_type tmp $idx |
|
|
|
|
[ "$tmp" = object ] || break |
|
|
|
|
|
|
|
|
|
json_select $((idx++)) |
|
|
|
|
json_get_var tmp address |
|
|
|
|
|
|
|
|
|
case "$tmp" in |
|
|
|
|
*:*) json_select .. ;; |
|
|
|
|
*) |
|
|
|
|
[ -n "$ipaddr" ] && json_get_var $ipaddr address |
|
|
|
|
[ -n "$prefix" ] && json_get_var $prefix mask |
|
|
|
|
return 0 |
|
|
|
|
;; |
|
|
|
|
esac |
|
|
|
|
done |
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
return 1 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if [ "$ACTION" = "add" ] && [ "$INTERFACE" = "wan" ]; then |
|
|
|
|