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

Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>

SVN-Revision: 47648
lede-17.01
Jo-Philipp Wich 2015-11-25 15:43:50 +00:00
parent 97baeb2fa4
commit a466bfe8f4
1 changed files with 23 additions and 7 deletions

View File

@ -96,7 +96,7 @@ EOF
calculate_switch_vlans() { calculate_switch_vlans() {
local switch=$1 local switch=$1
local ports port local ports port attr val
local prev_role local prev_role
local num device role index local num device role index
local n_cpu=0 cpu0 cpu1 cpu2 cpu3 local n_cpu=0 cpu0 cpu1 cpu2 cpu3
@ -113,6 +113,26 @@ calculate_switch_vlans() {
json_select "$port" json_select "$port"
json_get_vars num device role 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 if [ -n "$num" ] && [ -n "$device" ]; then
export "cpu$n_cpu=$num" export "cpu$n_cpu=$num"
export "dev$n_cpu=$device" export "dev$n_cpu=$device"
@ -122,18 +142,16 @@ calculate_switch_vlans() {
n_vlan=$((n_vlan + 1)) n_vlan=$((n_vlan + 1))
prev_role="$role" prev_role="$role"
fi fi
json_select ..
done done
unset prev_role unset prev_role
# autogenerate vlans # autogenerate vlans
for port in $ports ""; do for port in $ports ""; do
json_select "$port"
if [ -n "$port" ]; then if [ -n "$port" ]; then
json_select "$port"
json_get_vars num device role json_get_vars num device role
json_select ..
else else
num="-"; role="-" num="-"; role="-"
fi fi
@ -160,8 +178,6 @@ calculate_switch_vlans() {
fi fi
fi fi
json_select ..
done done
json_select .. json_select ..