base-files: rework _ucidef_set_interface to be more generic
authorRoman Yeryomin <roman@advem.lv>
Fri, 4 May 2018 15:42:36 +0000 (18:42 +0300)
committerJo-Philipp Wich <jo@mein.io>
Tue, 18 Dec 2018 16:32:19 +0000 (17:32 +0100)
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>
(backported from 85048a9c1fa4d37b5896d9237d28bbadbbe09d19)

package/base-files/files/lib/functions/uci-defaults.sh
target/linux/ar71xx/base-files/etc/board.d/02_network

index 3126fe65101e331aeb80c4b74df6b7c28d1e7796..8065af24a520cd55cb72f1750a12098f5c3a5c10 100755 (executable)
@@ -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() {
index b0076366bc505d578f2daa7b83987f788dbda2f4..a2e400ec7de4b8e0a430f7c147346cebd8d45fe3 100755 (executable)
@@ -411,7 +411,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"
                ;;
@@ -478,7 +478,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|\
@@ -510,7 +510,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|\