base-files: uci-defaults-new: add ucidef_add_switch_port_attr() helper
authorJo-Philipp Wich <jow@openwrt.org>
Wed, 25 Nov 2015 15:43:28 +0000 (15:43 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 25 Nov 2015 15:43:28 +0000 (15:43 +0000)
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
SVN-Revision: 47645

package/base-files/files/lib/functions/uci-defaults-new.sh

index 9d1ecb60e0f55955635d97aa23e1392cb553f3aa..120f35acdb45c4f61c95b8682f4b653be410a2d2 100755 (executable)
@@ -144,6 +144,42 @@ ucidef_add_switch_ports() {
        json_select ..
 }
 
+ucidef_add_switch_port_attr() {
+       local name=$1
+       local port=$2
+       local key=$3
+       local val=$4
+       local ports i num
+
+       json_select_object switch
+       json_select_object $name
+
+       json_get_keys ports ports
+       json_select_array ports
+
+       for i in $ports; do
+               json_select $i
+               json_get_var num num
+
+               if [ -n "$num" ] && [ $num -eq $port ]; then
+                       json_select_object attr
+
+                       case "$val" in
+                               [0-9]) json_add_int "$key" "$val" ;;
+                               *) json_add_string "$key" "$val" ;;
+                       esac
+
+                       json_select ..
+               fi
+
+               json_select ..
+       done
+
+       json_select ..
+       json_select ..
+       json_select ..
+}
+
 ucidef_add_switch_vlan() {
        local name=$1
        local vlan=$2