diff options
-rw-r--r-- | package/base-files/Makefile | 2 | ||||
-rwxr-xr-x | package/base-files/files/bin/config_generate | 35 | ||||
-rwxr-xr-x | package/base-files/files/lib/functions/uci-defaults.sh | 4 |
3 files changed, 38 insertions, 3 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile index c139ea313b..f63c4db533 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk include $(INCLUDE_DIR)/feeds.mk PKG_NAME:=base-files -PKG_RELEASE:=234 +PKG_RELEASE:=235 PKG_FLAGS:=nonshared PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate index eb6816e519..e23f901504 100755 --- a/package/base-files/files/bin/config_generate +++ b/package/base-files/files/bin/config_generate @@ -7,6 +7,28 @@ CFG=/etc/board.json [ -s $CFG ] || /bin/board_detect || exit 1 [ -s /etc/config/network -a -s /etc/config/system ] && exit 0 +generate_bridge() { + local name=$1 + uci -q batch <<-EOF + set network.$name=device + set network.$name.name=$name + set network.$name.type=bridge + EOF +} + +bridge_vlan_id=0 +generate_bridge_vlan() { + local device=$1 + local ports="$2" + bridge_vlan_id=$((bridge_vlan_id + 1)) + uci -q batch <<-EOF + add network bridge-vlan + set network.@bridge-vlan[-1].device='$device' + set network.@bridge-vlan[-1].vlan='$bridge_vlan_id' + set network.@bridge-vlan[-1].ports='$ports' + EOF +} + generate_static_network() { uci -q batch <<-EOF delete network.loopback @@ -63,6 +85,7 @@ generate_static_network() { addr_offset=2 generate_network() { local ifname macaddr protocol type ipaddr netmask + local bridge=$2 json_select network json_select "$1" @@ -77,6 +100,12 @@ generate_network() { *\ * | lan:*) type="bridge" ;; esac + [ -n "$bridge" ] && { + generate_bridge_vlan $bridge "$ifname" + ifname=$bridge.$bridge_vlan_id + type="" + } + uci -q batch <<-EOF delete network.$1 set network.$1='interface' @@ -236,7 +265,6 @@ generate_switch() { json_select .. } - generate_static_system() { uci -q batch <<-EOF delete system.@system[0] @@ -439,8 +467,11 @@ if [ ! -s /etc/config/network ]; then touch /etc/config/network generate_static_network + json_get_vars bridge + [ -n "$bridge" ] && generate_bridge $bridge + json_get_keys keys network - for key in $keys; do generate_network $key; done + for key in $keys; do generate_network $key $bridge; done json_get_keys keys switch for key in $keys; do generate_switch $key; done diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh index 27a409fe3b..39bbeda24c 100755 --- a/package/base-files/files/lib/functions/uci-defaults.sh +++ b/package/base-files/files/lib/functions/uci-defaults.sh @@ -90,6 +90,10 @@ ucidef_set_interfaces_lan_wan() { ucidef_set_interface_wan "$wan_if" } +ucidef_set_bridge_device() { + json_add_string bridge "${1:switch0}" +} + _ucidef_add_switch_port() { # inherited: $num $device $need_tag $want_untag $role $index $prev_role # inherited: $n_cpu $n_ports $n_vlan $cpu0 $cpu1 $cpu2 $cpu3 $cpu4 $cpu5 |