summaryrefslogtreecommitdiffstats
path: root/package/broadcom-wl/files/etc/hotplug.d/net/20-broadcom_wds
blob: e4b537cc0775dd76f45c7639814a9ce539687d21 (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
41
42
43
44
45
46
47
48
49
include /lib/wifi

setup_broadcom_wds() {
	local iface="$1"
	local remote="$(wlc ifname "$iface" wdsmac)"

	[ -z "$remote" ] && return
	
	config_cb() {
		[ -z "$CONFIG_SECTION" ] && return
	
		config_get type "$CONFIG_SECTION" TYPE
		[ "$type" = "wifi-iface" ] || return
		
		config_get network "$CONFIG_SECTION" network
		[ -z "$network" ] && return
		
		config_get addr "$CONFIG_SECTION" bssid
		addr=$(echo "$addr" | tr 'A-F' 'a-f')
		[ "$addr" = "$remote" ] && {
			local cfg="$CONFIG_SECTION"
			
			include /lib/network
			scan_interfaces

			setup_interface "$iface" "$network"
			
			config_get encryption "$cfg" encryption
			config_get key "$cfg" key
			config_get ssid "$cfg" ssid
		
			[ "$encryption" != "none" ] && {
				sleep 1
				nas4not lan "$iface" up auto aes "$encryption" "$key" "$ssid" 
			}

			brctl stp br-lan on
			
		}
	}

	config_load wireless
}

case "$ACTION" in
	add|register)
		[ "${INTERFACE%%0.*}" = wds ] && setup_broadcom_wds "$INTERFACE"
	;;
esac