aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/lib
diff options
context:
space:
mode:
Diffstat (limited to 'package/base-files/files/lib')
-rwxr-xr-xpackage/base-files/files/lib/functions/uci-defaults-new.sh36
1 files changed, 26 insertions, 10 deletions
diff --git a/package/base-files/files/lib/functions/uci-defaults-new.sh b/package/base-files/files/lib/functions/uci-defaults-new.sh
index 9fa3fa204e..b350549b34 100755
--- a/package/base-files/files/lib/functions/uci-defaults-new.sh
+++ b/package/base-files/files/lib/functions/uci-defaults-new.sh
@@ -32,9 +32,26 @@ json_select_object() {
_ucidef_set_interface() {
local name="$1"
local iface="$2"
+ local proto="$3"
json_select_object "$name"
json_add_string ifname "$iface"
+
+ if ! json_is_a protocol string; then
+ case "$proto" in
+ static|dhcp|none) : ;;
+ *)
+ case "$name" in
+ lan) proto="static" ;;
+ wan) proto="dhcp" ;;
+ *) proto="none" ;;
+ esac
+ ;;
+ esac
+
+ json_add_string protocol "$proto"
+ fi
+
json_select ..
}
@@ -57,19 +74,15 @@ ucidef_set_interface_loopback()
}
ucidef_set_interface_lan() {
- local lan_if="$1"
-
json_select_object network
- _ucidef_set_interface lan "$lan_if"
+ _ucidef_set_interface lan "$@"
json_select ..
}
ucidef_set_interface_wan() {
- local wan_if="$1"
-
- json_select_object network
- _ucidef_set_interface wan "$wan_if"
- json_select ..
+ json_select_object network
+ _ucidef_set_interface wan "$@"
+ json_select ..
}
ucidef_set_interfaces_lan_wan() {
@@ -164,14 +177,17 @@ _ucidef_finish_switch_roles() {
json_select ..
json_select_object network
+ local devices
+
json_select_object "$role"
# attach previous interfaces (for multi-switch devices)
- local devices; json_get_var devices ifname
+ json_get_var devices ifname
if ! list_contains devices "$device"; then
devices="${devices:+$devices }$device"
fi
- json_add_string ifname "$devices"
json_select ..
+
+ _ucidef_set_interface "$role" "$devices"
json_select ..
done
}