Ver Fonte

base-files: config_generate: handle switch port attributes and better group json_select

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

SVN-Revision: 47648
Jo-Philipp Wich há 10 anos atrás
pai
commit
a466bfe8f4
1 ficheiros alterados com 23 adições e 7 exclusões
  1. 23 7
      package/base-files/files/bin/config_generate

+ 23 - 7
package/base-files/files/bin/config_generate

@@ -96,7 +96,7 @@ EOF
 
 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 @@ calculate_switch_vlans() {
 		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 @@ calculate_switch_vlans() {
 			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 @@ calculate_switch_vlans() {
 			fi
 
 		fi
-
-		json_select ..
 	done
 
 	json_select ..