6f417d5b4b
Some devices were renamed when converted from diag to in kernel board detection and it was not changed in netconfig. Devices not in the kernel board detection are removed now. This should close: #17111, #16968, #13202 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 41663
240 lines
6.7 KiB
Bash
Executable file
240 lines
6.7 KiB
Bash
Executable file
#!/bin/sh /etc/rc.common
|
|
# Copyright (C) 2006 OpenWrt.org
|
|
|
|
START=05
|
|
|
|
start() {
|
|
[ -e /etc/config/network ] && {
|
|
local batch
|
|
|
|
config_cb() {
|
|
case "$1" in
|
|
switch)
|
|
option_cb() {
|
|
case "$1" in
|
|
vlan[0-9]|vlan1[0-5])
|
|
local id="${1#vlan}"
|
|
local ports="${2%\*}"
|
|
append batch "delete network.eth0.${1}${N}"
|
|
append batch "set network.eth0_${id}=switch_vlan${N}"
|
|
append batch "set network.eth0_${id}.device=eth0${N}"
|
|
append batch "set network.eth0_${id}.vlan=${id}${N}"
|
|
append batch "set network.eth0_${id}.ports='${ports}'${N}"
|
|
;;
|
|
esac
|
|
}
|
|
;;
|
|
switch_vlan)
|
|
option_cb() { :; }
|
|
batch=""
|
|
;;
|
|
esac
|
|
}
|
|
|
|
config_load network
|
|
|
|
[ -n "$batch" ] && {
|
|
logger -t netconfig "migrating switch config to new format ..."
|
|
echo "$batch${N}commit network" | uci batch
|
|
}
|
|
|
|
exit 0
|
|
}
|
|
|
|
mkdir -p /etc/config
|
|
|
|
local cpuport=5
|
|
[ -e /sbin/swconfig ] && cpuport=$(swconfig dev switch0 help 2>/dev/null | sed -ne "s|.*cpu @ \([0-9]*\).*|\1|p")
|
|
local switchname=eth0
|
|
[ -e /sbin/swconfig ] && switchname=$(swconfig dev switch0 help 2>/dev/null | sed -ne "s|switch0: \([^\\\\(]*\).*|\1|p")
|
|
local model=$(awk 'BEGIN{FS="[ \t]+:[ \t]"} /machine/ {print $2}' /proc/cpuinfo)
|
|
|
|
local network_defs=`(
|
|
if grep -E 'mtd0: 000(6|a)0000' /proc/mtd 2>&- >&-; then
|
|
# WGT634u
|
|
echo boardtype=wgt634u
|
|
else
|
|
strings "$(find_mtd_part nvram)"
|
|
fi
|
|
) | awk -v cpuport="$cpuport" -v model="$model" '
|
|
function macinc(mac, maca, i, result) {
|
|
split(mac, maca, ":")
|
|
for (i = 1; i <= 6; i++) maca[i] = "0x" maca[i]
|
|
if (++maca[6] > 0xff) {
|
|
maca[5]++
|
|
maca[6] = 0
|
|
}
|
|
for (i = 1; i <= 6; i++) {
|
|
if (i != 1) result = result ":"
|
|
result = result sprintf("%02x", maca[i])
|
|
}
|
|
return result
|
|
}
|
|
|
|
BEGIN {
|
|
FS="="
|
|
c["lan_ifname"]="eth0.1"
|
|
c["wan_ifname"]="eth0.2"
|
|
c["vlan1ports"]="1 2 3 4 5t"
|
|
c["vlan2ports"]="0 5t"
|
|
for (i = 0; i < 6; i++) {
|
|
if (mac_check != "") mac_check = mac_check ":"
|
|
mac_check = mac_check "[0-9a-fA-F][0-9a-fA-F]"
|
|
}
|
|
if (cpuport == "8") {
|
|
c["vlan1ports"]="1 2 3 4 8t"
|
|
c["vlan2ports"]="0 8t"
|
|
}
|
|
}
|
|
|
|
($1 == "boardnum") || ($1 == "boardtype") || ($1 == "boardflags") || ($1 ~ /macaddr/) || \
|
|
($1 ~ /^vlan[0-9]{1,2}ports$/) {
|
|
nvram[$1] = $2
|
|
}
|
|
|
|
END {
|
|
if (((nvram["vlan0ports"] ~ /^0 1 2 3 8/ ) && (nvram["vlan1ports"] ~ /^4 8/ && (cpuport == "8"))) || \
|
|
((nvram["vlan1ports"] ~ /^0 1 2 3 8/ ) && (nvram["vlan2ports"] ~ /^4 8/ && (cpuport == "8"))) || \
|
|
((nvram["vlan2ports"] ~ /^0 1 2 3 8/ ) && (nvram["vlan1ports"] ~ /^4 8/ && (cpuport == "8")))) {
|
|
c["vlan1ports"] = "0 1 2 3 8t"
|
|
c["vlan2ports"] = "4 8t"
|
|
}
|
|
if (((nvram["vlan0ports"] ~ /^0 1 2 3 5/ ) && (nvram["vlan1ports"] ~ /^4 5/ && (cpuport == "5"))) || \
|
|
((nvram["vlan1ports"] ~ /^0 1 2 3 5/ ) && (nvram["vlan2ports"] ~ /^4 5/ && (cpuport == "5"))) || \
|
|
((nvram["vlan2ports"] ~ /^0 1 2 3 5/ ) && (nvram["vlan1ports"] ~ /^4 5/ && (cpuport == "5")))) {
|
|
c["vlan1ports"] = "0 1 2 3 5t"
|
|
c["vlan2ports"] = "4 5t"
|
|
}
|
|
if ((model == "Asus WLHDD") || (model == "Asus WL300G")) {
|
|
c["wan_ifname"] = ""
|
|
c["lan_ifname"] = "eth1"
|
|
}
|
|
if (model == "Asus WL330GE") {
|
|
c["wan_ifname"] = ""
|
|
c["lan_ifname"] = "eth0.1"
|
|
c["vlan1ports"] = "4 5t"
|
|
c["vlan2ports"] = ""
|
|
}
|
|
if ((model == "Asus WL500G") || (model == "Microsoft MN-700")) {
|
|
c["wan_ifname"] = "eth1"
|
|
c["lan_ifname"] = "eth0"
|
|
}
|
|
if ((model == "Asus WL500GP V2") || (model == "Buffalo WHR-G125")) {
|
|
c["vlan1ports"] = "0 1 2 3 5t"
|
|
c["vlan2ports"] = "4 5t"
|
|
}
|
|
if (model == "Dell TrueMobile 2300") {
|
|
c["lan_ifname"] = "eth0"
|
|
c["wan_ifname"] = "eth1"
|
|
c["vlan1ports"] = "0 1 2 3 4 5"
|
|
c["vlan2ports"] = ""
|
|
}
|
|
if (nvram["boardtype"] == "bcm94710r4") {
|
|
# Toshiba WRC-1000
|
|
c["lan_ifname"] = "eth0"
|
|
c["wan_ifname"] = "eth1"
|
|
}
|
|
if ((nvram["boardtype"] == "wgt634u") || (nvram["boardtype"] == "0x0467")) {
|
|
c["vlan1ports"] = "0 1 2 3 5t"
|
|
c["vlan2ports"] = "4 5t"
|
|
}
|
|
if ((nvram["boardtype"] == "0x042f") || (nvram["boardtype"] == "0x0472")) {
|
|
if (nvram["boardnum"] == "45") {
|
|
# WL-500gP
|
|
c["vlan1ports"] = "1 2 3 4 5t"
|
|
c["vlan2ports"] = "0 5t"
|
|
} else {
|
|
# Generic BCM94704
|
|
c["vlan1ports"] = "0 1 2 3 4 5"
|
|
c["vlan2ports"] = ""
|
|
c["lan_ifname"] = "eth0"
|
|
c["wan_ifname"] = "eth1"
|
|
|
|
# MAC addresses on 4704 tend to be screwed up. Add a workaround here
|
|
if (nvram["et0macaddr"] ~ mac_check) {
|
|
c["lan_macaddr"] = nvram["et0macaddr"]
|
|
c["wan_macaddr"] = macinc(c["lan_macaddr"])
|
|
}
|
|
}
|
|
}
|
|
# Buffalo WBR-B11 and Buffalo WBR-G54
|
|
if (nvram["boardtype"] == "bcm94710ap") {
|
|
c["vlan1ports"] = "0 1 2 3 4 5"
|
|
c["vlan2ports"] = ""
|
|
c["lan_ifname"] = "eth0"
|
|
c["wan_ifname"] = "eth1"
|
|
}
|
|
|
|
# WAP54G
|
|
if ((nvram["boardnum"] == "2") || \
|
|
(nvram["boardnum"] == "1024")) {
|
|
c["lan_ifname"]="eth0"
|
|
c["wan_ifname"]=""
|
|
}
|
|
|
|
# Sitecom WL-105b
|
|
if ((nvram["boardum"] == "2") && \
|
|
(nvram["GemtekPmonVer"] == "1")) {
|
|
c["lan_ifname"]="eth0"
|
|
c["wan_ifname"]=""
|
|
}
|
|
|
|
# ASUS WL-700gE
|
|
# These are actually same as defaults above. For some reason this script applies
|
|
# Generic BCM94704 settings instead so we revert to proper settings here.
|
|
# Hopefully someone will fix this properly soon.
|
|
if (model == "Asus WL700") {
|
|
c["lan_ifname"]="eth0.1"
|
|
c["wan_ifname"]="eth0.2"
|
|
c["vlan1ports"]="1 2 3 4 5t"
|
|
c["vlan2ports"]="0 5t"
|
|
}
|
|
if ((model == "Motorola WR850G") || (model == "Siemens SE505 V2")) {
|
|
c["vlan1ports"]="0 1 2 3 5t"
|
|
c["vlan2ports"]="4 5t"
|
|
}
|
|
if (model == "Asus WL500W") {
|
|
c["lan_ifname"] = "eth0"
|
|
c["wan_ifname"] = "eth1"
|
|
c["vlan1ports"] = "0 1 2 3 4 5"
|
|
c["vlan2ports"] = ""
|
|
}
|
|
print "local vlan1ports=\"" c["vlan1ports"] "\";"
|
|
print "local vlan2ports=\"" c["vlan2ports"] "\";"
|
|
print "local lan_ifname=\"" c["lan_ifname"] "\";"
|
|
print "local lan_macaddr=\"" c["lan_macaddr"] "\";"
|
|
print "local wan_ifname=\"" c["wan_ifname"] "\";"
|
|
print "local wan_macaddr=\"" c["wan_macaddr"] "\";"
|
|
}'`
|
|
|
|
. /lib/functions/uci-defaults.sh
|
|
|
|
touch /etc/config/network
|
|
|
|
eval "$network_defs"
|
|
|
|
[ -n "$vlan1ports" -o -n "$vlan2ports" ] && {
|
|
local cfg=`ucidef_add_switch "$switchname" 1 1`
|
|
[ -n "$cfg" ] && uci rename network.$cfg=eth0
|
|
[ -n "$vlan1ports" ] && {
|
|
cfg=`ucidef_add_switch_vlan "$switchname" 1 "$vlan1ports"`
|
|
[ -n "$cfg" ] && uci rename network.$cfg=eth0_1
|
|
}
|
|
[ -n "$vlan2ports" ] && {
|
|
cfg=`ucidef_add_switch_vlan "$switchname" 2 "$vlan2ports"`
|
|
[ -n "$cfg" ] && uci rename network.$cfg=eth0_2
|
|
}
|
|
}
|
|
|
|
ucidef_set_interface_loopback
|
|
|
|
ucidef_set_interface_lan "$lan_ifname"
|
|
[ -n "$lan_macaddr" ] && ucidef_set_interface_macaddr lan "$lan_macaddr"
|
|
|
|
[ -n "$wan_ifname" ] && {
|
|
ucidef_set_interface_wan "$wan_ifname"
|
|
[ -n "$wan_macaddr" ] && ucidef_set_interface_macaddr wan "$wan_macaddr"
|
|
}
|
|
|
|
uci commit network
|
|
}
|