delete network.$1
set network.$1='interface'
set network.$1.ifname='$ifname'
- set network.$1.force_link=1
set network.$1.proto='none'
set network.$1.macaddr='$macaddr'
EOF
set network.$1.ip6assign='60'
EOF
;;
+
wan)
uci -q batch <<-EOF
set network.$1.proto='dhcp'
set network.wan6.proto='dhcpv6'
EOF
;;
+
+ *)
+ uci -q batch <<-EOF
+ set network.$1.force_link=1
+ EOF
+ ;;
esac
}
if [ "$role" != "$prev_role" ]; then
if [ -n "$vlan_ports" ]; then
let cpu_port="cpu$((vlan_off % n_cpu))"
- [ $n_vlan -gt $n_cpu ] && cpu_port="${cpu_port}t"
+ let need_tag="tag$((vlan_off % n_cpu))"
+ [ $n_vlan -gt $n_cpu -o $need_tag -eq 1 ] && cpu_port="${cpu_port}t"
uci -q batch <<-EOF
add network switch_vlan
# autogenerate interfaces
vlan_off=0; while [ $vlan_off -lt $n_vlan ]; do
eval role="\$role$((vlan_off))"
- eval device="\$dev$((vlan_off++ % n_cpu))"
- [ $n_vlan -gt $n_cpu ] && device="$device.$vlan_off"
+ eval device="\$dev$((vlan_off % n_cpu))"
+ let need_tag="tag$((vlan_off++ % n_cpu))"
+ [ $n_vlan -gt $n_cpu -o $need_tag -eq 1 ] && device="$device.$vlan_off"
# quirk: append ifnames for subsequent switches
case "$switch" in switch[1-9])
json_select led
json_select "$key"
- json_get_vars name sysfs type trigger device interface default port_mask
+ json_get_vars name sysfs type trigger default
uci -q batch <<-EOF
delete system.$cfg
set system.$cfg='led'
set system.$cfg.name='$name'
set system.$cfg.sysfs='$sysfs'
- set system.$cfg.dev='$device'
set system.$cfg.trigger='$trigger'
- set system.$cfg.port_mask='$port_mask'
set system.$cfg.default='$default'
EOF
case "$type" in
+ gpio)
+ local gpio inverted
+ json_get_vars gpio inverted
+ uci -q batch <<-EOF
+ set system.$cfg.trigger='gpio'
+ set system.$cfg.gpio='$gpio'
+ set system.$cfg.inverted='$inverted'
+ EOF
+ ;;
+
netdev)
+ local device
+ json_get_vars device
uci -q batch <<-EOF
set system.$cfg.trigger='netdev'
set system.$cfg.mode='link tx rx'
+ set system.$cfg.dev='$device'
EOF
;;
usb)
+ local device
+ json_get_vars device
uci -q batch <<-EOF
set system.$cfg.trigger='usbdev'
set system.$cfg.interval='50'
+ set system.$cfg.dev='$device'
EOF
;;
rssi)
- local minq maxq offset factor
+ local iface minq maxq offset factor
json_get_vars iface minq maxq offset factor
uci -q batch <<-EOF
set system.$cfg.trigger='rssi'
set system.$cfg.factor='$factor'
EOF
;;
+
+ switch)
+ local port_mask
+ json_get_vars port_mask
+ uci -q batch <<-EOF
+ set system.$cfg.port_mask='$port_mask'
+ EOF
+ ;;
esac
json_select ..