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.

44 lines
930 B
Bash

#!/bin/sh
setup_wl()
{
[ -f /proc/net/wl0 ] && {
lsmod | grep wlcompat >&- || insmod wlcompat
}
iwconfig "$INTERFACE" 2>&- | grep -v 'no wireless' >&- && {
/sbin/wifi
}
}
setup_eth()
{
[ -d /proc/switch ] || {
insmod switch-core
insmod switch-robo || insmod switch-adm
}
if="$(echo "$INTERFACE" | sed s,eth,et,)"
ifconfig "$INTERFACE" up 2>&- >&-
[ -d "/proc/switch/$INTERFACE" ] || return 0
echo "1" > "/proc/switch/$INTERFACE/reset"
echo "1" > "/proc/switch/$INTERFACE/enable_vlan"
for vlan in $(seq 0 15); do
eval "hwname=\"\${vlan${vlan}hwname}\""
[ "$hwname" = "$if" ] && {
eval "vports=\"\${vlan${vlan}ports}\""
[ -n "$vports" ] && echo "$vports" > "/proc/switch/$INTERFACE/vlan/$vlan/ports"
$DEBUG vconfig add "$INTERFACE" "$vlan"
}
done
}
do_register()
{
case "${INTERFACE%%[0-9]*}" in
eth) setup_eth;;
wl) setup_wl;;
esac
}
case "$ACTION" in
add|register) do_register;;
esac