uci -q batch <<-EOF
delete network.loopback
set network.loopback='interface'
- set network.loopback.ifname='lo'
+ set network.loopback.device='lo'
set network.loopback.proto='static'
set network.loopback.ipaddr='127.0.0.1'
set network.loopback.netmask='255.0.0.0'
addr_offset=2
generate_network() {
- local ports ifname macaddr protocol type ipaddr netmask vlan
+ local ports device macaddr protocol type ipaddr netmask vlan
local bridge=$2
json_select network
json_select "$1"
+ json_get_vars device macaddr protocol ipaddr netmask vlan
json_get_values ports ports
- json_get_vars ifname macaddr protocol ipaddr netmask vlan
json_select ..
json_select ..
- [ -n "$ifname" -o -n "$ports" ] || return
+ [ -n "$device" -o -n "$ports" ] || return
# Force bridge for "lan" as it may have other devices (e.g. wireless)
# bridged
[ "$1" = "lan" -a -z "$ports" ] && {
- ports="$ifname"
+ ports="$device"
}
- [ -n "$ports" ] && {
+ [ -n "$ports" -a -z "$bridge" ] && {
uci -q batch <<-EOF
add network device
set network.@device[-1].name='br-$1'
set network.@device[-1].type='bridge'
EOF
for port in $ports; do uci add_list network.@device[-1].ports="$port"; done
- ifname=br-$1
+ [ -n "$macaddr" ] && {
+ for port in $ports; do
+ uci -q batch <<-EOF
+ add network device
+ set network.@device[-1].name='$port'
+ set network.@device[-1].macaddr='$macaddr'
+ EOF
+ done
+ }
+ device=br-$1
type=
+ macaddr=""
}
[ -n "$bridge" ] && {
+ [ -z "$ports" ] && ports="$device"
if [ -z "$vlan" ]; then
bridge_vlan_id=$((bridge_vlan_id + 1))
vlan=$bridge_vlan_id
fi
- generate_bridge_vlan $1 $bridge "$ifname" $vlan
- ifname=$bridge.$vlan
+ generate_bridge_vlan $1 $bridge "$ports" $vlan
+ device=$bridge.$vlan
type=""
}
+ if [ -n "$macaddr" ]; then
+ uci -q batch <<-EOF
+ add network device
+ set network.@device[-1].name='$device'
+ set network.@device[-1].macaddr='$macaddr'
+ EOF
+ fi
+
uci -q batch <<-EOF
delete network.$1
set network.$1='interface'
set network.$1.type='$type'
- set network.$1.ifname='$ifname'
+ set network.$1.device='$device'
set network.$1.proto='none'
EOF
- if [ -n "$macaddr" ]; then
- for name in $ifname; do
- uci -q batch <<-EOF
- delete network.$1_${name/./_}_dev
- set network.$1_${name/./_}_dev='device'
- set network.$1_${name/./_}_dev.name='$name'
- set network.$1_${name/./_}_dev.macaddr='$macaddr'
- EOF
- done
- fi
-
case "$protocol" in
static)
local ipad
dhcp)
# fixup IPv6 slave interface if parent is a bridge
- [ "$type" = "bridge" ] && ifname="br-$1"
+ [ "$type" = "bridge" ] && device="br-$1"
uci set network.$1.proto='dhcp'
[ -e /proc/sys/net/ipv6 ] && {
uci -q batch <<-EOF
delete network.${1}6
set network.${1}6='interface'
- set network.${1}6.ifname='$ifname'
+ set network.${1}6.device='$device'
set network.${1}6.proto='dhcpv6'
EOF
}
set network.$1.ipv6='1'
delete network.${1}6
set network.${1}6='interface'
- set network.${1}6.ifname='@${1}'
+ set network.${1}6.device='@${1}'
set network.${1}6.proto='dhcpv6'
EOF
}