1#! /bin/sh
2#
3# Setup an ap that accepts wds traffic from associated stations.
4# This can be used as the "back end" for setup.extender and/or
5# setup.repeater.  Note that the wds vap's are created by the
6# wlanwds program that listens for wds discovery events (to create
7# wds vaps) and for sta leave events (to destroy wds vaps it
8# created).  The WDSUP script is invoked for each wds vap that
9# gets created--to add the vap to a bridge.
10#
11# Notes!
12#
13# * If the main AP VAP is running with encryption, the plumbed up
14#   WDS VAP needs to have privacy enabled (wepmode mixed, for example)
15#   otherwise frames transmitted from the WDS AP to the WDS STA
16#   will not be encrypted.
17#
18# * Because wlanwds is running on the physical interface (for now),
19#   and NOT the parent VAP, it will create cloned interfaces using
20#   the MAC address of the physical interface.  So, until that
21#   whole setup is fixed, please only associate DWDS to the first
22#   VAP on a physical interface, which shares the MAC address of
23#   the physical NIC.
24#
25#
26PATH=.:$PATH
27. config
28
29SSID='freebsd+wdsmain'
30WDSUP=$TMPDIR/wdsup$$
31
32#mwldebug state+node+reset+xmit+recv+beacon+hal+hal2
33WLAN_AP=`ifconfig wlan create wlanmode hostap wlandev $WIRELESS`
34ifconfig $WLAN_AP ssid "$SSID" channel $CHANNEL mtu 1500
35ifconfig $WLAN_AP dwds -apbridge
36wlandebug -i $WLAN_AP state+scan+assoc+auth+wds+11n
37
38BRIDGE=`ifconfig bridge create`
39
40# NB: start wlanwds first to avoid races.
41rm -f $WDSUP
42cat >$WDSUP <<EOF
43#! /bin/sh
44DEV=\$1
45ifconfig $BRIDGE addm \$DEV
46ifconfig \$DEV up
47EOF
48chmod +x $WDSUP
49$WLANWDS -v -s $WDSUP &
50
51ifconfig $BRIDGE addm $WLAN_AP addm $WIRED up
52ifconfig $WIRED up
53ifconfig $WLAN_AP up
54