mirror of
git://git.openwrt.org/openwrt/openwrt.git
synced 2024-12-14 02:44:45 +00:00
base-files: add board.d support for bridge device
Latest netifd allows us to setup network bridges with implicit vlan tagging. For this to work, we need to setup several additional uci sections. This feature is particularly usefull for DSA tupe devices. Add board.d and uci-defaults support for generating the sections. Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
parent
df9ee254aa
commit
be09c5a3cd
@ -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/
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user