You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
openwrt/package/kernel/switch/files/switch.sh

54 lines
1.1 KiB
Bash

#!/bin/sh
# Copyright (C) 2006-2010 OpenWrt.org
setup_switch_hw() {
local dev="$1"
local enable reset evlan
config_get_bool enable "$dev" enable 1
config_get_bool evlan "$dev" enable_vlan 1
config_get_bool reset "$dev" reset 1
local proc="/proc/switch/$dev"
[ -d "$proc" ] && {
ifconfig "$dev" up
echo "$reset" > "$proc/reset"
echo "$evlan" > "$proc/enable_vlan"
[ -f "$proc/enable" ] && echo "$enable" > "$proc/enable"
}
local vlan
for vlan in `seq 0 15`; do
proc="/proc/switch/$dev/vlan/$vlan/ports"
[ -f "$proc" ] && echo "" > "$proc"
done
}
setup_switch_vlan() {
local s="$1"
local dev vlan ports
config_get dev "$s" device
config_get vlan "$s" vlan
config_get ports "$s" ports
[ -n "$dev" ] && [ -n "$vlan" ] && {
ports="${ports%\*}"
[ "$_vlan_pvid_set" = 1 ] || {
ports="$ports*"
_vlan_pvid_set=1
}
local proc="/proc/switch/$dev/vlan/$vlan/ports"
[ -f "$proc" ] && echo "$ports" > "$proc"
}
}
setup_switch() {
_vlan_pvid_set=0
config_load network
config_foreach setup_switch_hw switch
config_foreach setup_switch_vlan switch_vlan
}