openwrt/package/base-files/files/etc/uci-defaults/11_network-migrate-bridges

50 lines
997 B
Plaintext

. /lib/functions.sh
migrate_ports() {
local config="$1"
local type ports ifname
config_get type "$config" type
[ "$type" != "bridge" ] && return
config_get ports "$config" ports
[ -n "$ports" ] && return
config_get ifname "$config" ifname
[ -z "$ifname" ] && return
for port in $ifname; do
uci add_list network.$config.ports="$port"
done
uci delete network.$config.ifname
}
migrate_bridge() {
local config="$1"
local type ifname
config_get type "$config" type
[ "$type" != "bridge" ] && return
config_get ifname "$config" ifname
uci -q batch <<-EOF
add network device
set network.@device[-1].name='br-$config'
set network.@device[-1].type='bridge'
EOF
for port in $ifname; do
uci add_list network.@device[-1].ports="$port"
done
uci -q batch <<-EOF
delete network.$config.type
delete network.$config.ifname
set network.$config.device='br-$config'
EOF
}
config_load network
config_foreach migrate_ports device
config_foreach migrate_bridge interface