diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2015-11-25 15:43:50 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2015-11-25 15:43:50 +0000 |
commit | b116dd0b0d9febfba5e1d8ab68b37cc16dd759bb (patch) | |
tree | 0e18ff9398b190d22b2568882f5bb3834b4b809d /package/base-files/files | |
parent | f4ccef8a229c0a1c84e5331f0be44fd154e66929 (diff) | |
download | master-187ad058-b116dd0b0d9febfba5e1d8ab68b37cc16dd759bb.tar.gz master-187ad058-b116dd0b0d9febfba5e1d8ab68b37cc16dd759bb.tar.bz2 master-187ad058-b116dd0b0d9febfba5e1d8ab68b37cc16dd759bb.zip |
base-files: config_generate: handle switch port attributes and better group json_select
Signed-off-by: Jo-Philipp Wich <jow@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@47648 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/base-files/files')
-rwxr-xr-x | package/base-files/files/bin/config_generate | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate index 64e0888368..ae0d37462c 100755 --- a/package/base-files/files/bin/config_generate +++ b/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 .. |