aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoman Yeryomin <roman@advem.lv>2018-05-04 18:42:36 +0300
committerJohn Crispin <john@phrozen.org>2018-05-24 09:39:47 +0200
commit85048a9c1fa4d37b5896d9237d28bbadbbe09d19 (patch)
tree6a92426a48aae15c2f1a938ff87f6560bd373bd1
parent467b07e00c5ead98848587b8e06db61f7b33d3a8 (diff)
downloadupstream-85048a9c1fa4d37b5896d9237d28bbadbbe09d19.tar.gz
upstream-85048a9c1fa4d37b5896d9237d28bbadbbe09d19.tar.bz2
upstream-85048a9c1fa4d37b5896d9237d28bbadbbe09d19.zip
base-files: rework _ucidef_set_interface to be more generic
This is a rework of previously submitted patch reworking ucidef_set_interface_raw [1]. Here, keep the idea but instead make _ucidef_set_interface more generic and use it instead of ucidef_set_interface_raw. Also change the users like ucidef_set_interface_lan and others. [1] https://patchwork.ozlabs.org/patch/844961/ Signed-off-by: Roman Yeryomin <roman@advem.lv>
-rwxr-xr-xpackage/base-files/files/lib/functions/uci-defaults.sh74
-rwxr-xr-xtarget/linux/ar71xx/base-files/etc/board.d/02_network6
2 files changed, 27 insertions, 53 deletions
diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh
index 3126fe6510..8065af24a5 100755
--- a/package/base-files/files/lib/functions/uci-defaults.sh
+++ b/package/base-files/files/lib/functions/uci-defaults.sh
@@ -27,29 +27,26 @@ json_select_object() {
json_select "$1"
}
-_ucidef_set_interface() {
- local name="$1"
- local iface="$2"
- local proto="$3"
+ucidef_set_interface() {
+ local network=$1
- json_select_object "$name"
- json_add_string ifname "$iface"
-
- if ! json_is_a protocol string || [ -n "$proto" ]; then
- case "$proto" in
- static|dhcp|none|pppoe) : ;;
- *)
- case "$name" in
- lan) proto="static" ;;
- wan) proto="dhcp" ;;
- *) proto="none" ;;
- esac
- ;;
- esac
+ [ -z "$network" ] && return
- json_add_string protocol "$proto"
- fi
+ json_select_object network
+ json_select_object "$network"
+ shift
+
+ while [ -n "$1" ]; do
+ local opt="$1"
+ local val="$2"
+ shift; shift;
+ [ -n "$opt" -a -n "$val" ] || break
+
+ json_add_string "$opt" "$val"
+ done
+
+ json_select ..
json_select ..
}
@@ -66,31 +63,19 @@ ucidef_set_model_name() {
}
ucidef_set_interface_lan() {
- json_select_object network
- _ucidef_set_interface lan "$@"
- json_select ..
+ ucidef_set_interface "lan" ifname "$1" protocol "${2:-static}"
}
ucidef_set_interface_wan() {
- json_select_object network
- _ucidef_set_interface wan "$@"
- json_select ..
+ ucidef_set_interface "wan" ifname "$1" protocol "${2:-dhcp}"
}
ucidef_set_interfaces_lan_wan() {
local lan_if="$1"
local wan_if="$2"
- json_select_object network
- _ucidef_set_interface lan "$lan_if"
- _ucidef_set_interface wan "$wan_if"
- json_select ..
-}
-
-ucidef_set_interface_raw() {
- json_select_object network
- _ucidef_set_interface "$@"
- json_select ..
+ ucidef_set_interface_lan "$lan_if"
+ ucidef_set_interface_wan "$wan_if"
}
_ucidef_add_switch_port() {
@@ -185,9 +170,9 @@ _ucidef_finish_switch_roles() {
devices="${devices:+$devices }$device"
fi
json_select ..
-
- _ucidef_set_interface "$role" "$devices"
json_select ..
+
+ ucidef_set_interface "$role" ifname "$devices"
done
}
@@ -300,18 +285,7 @@ ucidef_set_interface_macaddr() {
local network="$1"
local macaddr="$2"
- json_select_object network
-
- json_select "$network"
- [ $? -eq 0 ] || {
- json_select ..
- return
- }
-
- json_add_string macaddr "$macaddr"
- json_select ..
-
- json_select ..
+ ucidef_set_interface "$network" macaddr "$macaddr"
}
ucidef_add_atm_bridge() {
diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network
index 547e2e04d2..1d27ab0bfe 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/02_network
+++ b/target/linux/ar71xx/base-files/etc/board.d/02_network
@@ -402,7 +402,7 @@ ar71xx_setup_interfaces()
"0@eth0" "1:lan:4" "2:lan:3" "3:lan:2" "4:lan:1" "5:wan"
;;
ew-balin)
- ucidef_set_interface_raw "usb2" "usb0" "static"
+ ucidef_set_interface "usb2" ifname "usb0" proto "static"
ucidef_add_switch "switch0" \
"0@eth0" "5:lan:4" "4:lan:5" "3:wan"
;;
@@ -469,7 +469,7 @@ ar71xx_setup_interfaces()
;;
tellstick-znet-lite)
ucidef_set_interface_wan "eth0"
- ucidef_set_interface_raw "wlan" "wlan0" "dhcp"
+ ucidef_set_interface "wlan" ifname "wlan0" proto "dhcp"
;;
tl-mr3420-v2|\
tl-wr841n-v8|\
@@ -500,7 +500,7 @@ ar71xx_setup_interfaces()
;;
tl-wr841n-v1|\
tl-wr941nd)
- ucidef_set_interface_raw "eth" "eth0"
+ ucidef_set_interface "eth" ifname "eth0"
ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan"
;;
tl-wr741nd|\