1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter.git synced 2025-03-09 15:40:20 +00:00
openmptcprouter/root/target/linux/sunxi/base-files/lib/network/switch.sh
2021-03-07 07:15:05 +01:00

84 lines
2 KiB
Bash
Executable file

#!/bin/sh
# Copyright (C) 2009 OpenWrt.org
# Copyright (c) 2021 Oliver Welter
setup_switch_dsa() {
local tries=15
/bin/sleep 10
local bridge_names=`/sbin/uci show network | /bin/grep type | /bin/grep bridge | /usr/bin/cut -d . -f2`
for name in $bridge_names; do
local bridge_interface=`/sbin/uci get network.$name.ifname`
local trycount=1
while true; do
local my_interface=""
for intf in $bridge_interface; do
local eth=`/bin/echo $intf | /bin/grep -v eth`
if [ "$eth" != "" ]; then
my_interface="$eth"
fi
done
if [ "$my_interface" = "" ]; then
break
fi
local has_interface=`/sbin/ifconfig $my_interface >/dev/null 2>&1 && echo 1`
if [ "$has_interface" = "" ]; then
/bin/sleep 1
trycount=$(($trycount+1))
if [ $trycount -gt $tries ]; then
break
fi
else
break
fi
done
if [ "$has_interface" = "1" -a "$bridge_interface" != "" ]; then
for iface in $bridge_interface; do
local eth=`/bin/echo $iface | /bin/grep eth`
if [ "$eth" != "" ]; then
local vlan=`/bin/echo $iface | /usr/bin/cut -d . -f2`
if [ "$vlan" != "" ]; then
if [ "$vlan" = "$eth" ]; then
/usr/bin/logger -t switch.sh "Found interface $my_interface for alias $iface in bridge $name - adding to master"
/usr/sbin/bridge vlan add dev $my_interface vid 1 master
else
/usr/bin/logger -t switch.sh "Found interface $my_interface for alias $iface in bridge $name - adding to VLAN $vlan"
/usr/sbin/bridge vlan add dev $my_interface vid $vlan pvid untagged
fi
fi
fi
done
fi
done
}
setup_switch_dev() {
local name
config_get name "$1" name
name="${name:-$1}"
[ -d "/sys/class/net/$name" ] && ip link set dev "$name" up
swconfig dev "$name" load network
}
setup_switch() {
config_load network
if [ -f "/etc/.lamobo-r1.dsa" ]; then
setup_switch_dsa & return
else
config_foreach setup_switch_dev switch
fi
}