summaryrefslogtreecommitdiff
path: root/openwrt/target/linux/package/base-files/files/brcm-2.4/etc/hotplug.d/09-net
blob: 75604ebef045d3cf608b4fbd19c831e83ed6b261 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#!/bin/sh
setup_eth()
{
	for part in $(nvram get unused_ifnames); do
		[ "$part" = "$INTERFACE" ] && exit 0
	done
	[ -f /proc/net/wl0 ] && {
		lsmod | grep wlcompat >&- || insmod wlcompat
	}
	iwconfig "$INTERFACE" 2>&- | grep -v 'no wireless' >&- && {
		/sbin/wifi
	}
	[ -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/enable_vlan"
	for vlan in $(seq 0 15); do
		[ "$(nvram get vlan${vlan}hwname)" = "$if" ] && {
			vports="$(nvram get 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;;
	esac
}


case "$ACTION" in
	add|register) do_register;;
esac