Author: jow
Date: 2015-11-25 16:43:50 +0100 (Wed, 25 Nov 2015)
New Revision: 47648

Modified:
   trunk/package/base-files/files/bin/config_generate
Log:
base-files: config_generate: handle switch port attributes and better group 
json_select

Signed-off-by: Jo-Philipp Wich <[email protected]>

Modified: trunk/package/base-files/files/bin/config_generate
===================================================================
--- trunk/package/base-files/files/bin/config_generate  2015-11-25 15:43:43 UTC 
(rev 47647)
+++ trunk/package/base-files/files/bin/config_generate  2015-11-25 15:43:50 UTC 
(rev 47648)
@@ -96,7 +96,7 @@
 
 calculate_switch_vlans() {
        local switch=$1
-       local ports port
+       local ports port attr val
        local prev_role
        local num device role index
        local n_cpu=0 cpu0 cpu1 cpu2 cpu3
@@ -113,6 +113,26 @@
                json_select "$port"
                json_get_vars num device role
 
+               if json_is_a attr object; then
+                       json_get_keys attr attr
+                       json_select attr
+
+                       uci -q batch <<-EOF
+                               add network switch_port
+                               set network.@switch_port[-1].device='$switch'
+                               set network.@switch_port[-1].port=$num
+                       EOF
+
+                       for attr in $attr; do
+                               json_get_var val "$attr"
+                               uci -q set network.@switch_port[-1].$attr="$val"
+                       done
+
+                       json_select ..
+               fi
+
+               json_select ..
+
                if [ -n "$num" ] && [ -n "$device" ]; then
                        export "cpu$n_cpu=$num"
                        export "dev$n_cpu=$device"
@@ -122,18 +142,16 @@
                        n_vlan=$((n_vlan + 1))
                        prev_role="$role"
                fi
-
-               json_select ..
        done
 
        unset prev_role
 
        # autogenerate vlans
        for port in $ports ""; do
-               json_select "$port"
-
                if [ -n "$port" ]; then
+                       json_select "$port"
                        json_get_vars num device role
+                       json_select ..
                else
                        num="-"; role="-"
                fi
@@ -160,8 +178,6 @@
                        fi
 
                fi
-
-               json_select ..
        done
 
        json_select ..
_______________________________________________
openwrt-commits mailing list
[email protected]
https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits

Reply via email to