Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Oct 2013 09:51:30 -0700
From:      Adrian Chadd <adrian@freebsd.org>
To:        =?ISO-8859-1?Q?Ulrich_Sp=F6rlein?= <uqs@spoerlein.net>
Cc:        "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org>
Subject:   Re: implementing multiple BSSID addresses for different VAPs, or 'why was the flag called bssid again?'
Message-ID:  <CAJ-VmonbyX7cOCJd=n9rpSMgCmzrQ2dEg14vPRrgvnoc3APSPA@mail.gmail.com>
In-Reply-To: <CAJ9axoQa1oTeP79feWBrzk2gMQQRAaHNHQ7rFkrqtzbm7kSROA@mail.gmail.com>
References:  <CAJ-VmoksV3Es3Ef8ecxGzfrD%2BoA8Mx_t=Y_NEB92WoP5Ld6_cQ@mail.gmail.com> <CAJ9axoQa1oTeP79feWBrzk2gMQQRAaHNHQ7rFkrqtzbm7kSROA@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi,

It doesn't surprise me that the devd and rc.conf scripts seem to be
clashing.

I'd very much like to see this fixed. Would someone please take a crack at
it?

Thanks!


-a



On 26 October 2013 07:32, Ulrich Sp=F6rlein <uqs@spoerlein.net> wrote:

> Well, the following in rc.conf
>
> wlans_ath0=3D"wlan0 wlan2"
> create_args_wlan0=3D"bssid wlanmode hostap country DE authmode wpa ssid
> COYOTE"
> ifconfig_wlan0=3D"ssid COYOTE mode 11g pureg up"
> create_args_wlan2=3D"bssid wlanmode hostap country DE authmode wpa ssid
> COYOTE_GUEST"
> ifconfig_wlan2=3D"ssid COYOTE_GUEST mode 11g pureg up"
>
> Does not quite work, I'm left with:
>
> (from dmesg)
> Setting hostname: coyote.spoerlein.net.
> bridge0: Ethernet address: 02:ac:6e:56:db:00
> Created clone interfaces: bridge0.
> wlan0: Ethernet address: 68:a3:c4:51:44:99
> wlan2: Ethernet address: 6e:a3:c4:51:44:99
> ifconfig: SIOCS80211: Device busy
> ath0: stuck beacon; resetting (bmiss count 4)
>
> (not that there's no echo for creating wlan devices, that should maybe
> be added?)
>
> Anyway, I thus get this:
>
> ath0: flags=3D8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST>
> metric 0 mtu 2290
>         ether 68:a3:c4:51:44:99
>         nd6 options=3D21<PERFORMNUD,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: running
> wlan0: flags=3D8d43<UP,BROADCAST,RUNNING,PROMISC,OACTIVE,SIMPLEX,MULTICAS=
T>
> metric 0 mtu 1500
>         ether 68:a3:c4:51:44:99
>         inet6 fe80::6aa3:c4ff:fe51:4499%wlan0 prefixlen 64 tentative
> scopeid 0xa
>         nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: no carrier
>         ssid COYOTE channel 7 (2442 MHz 11g)
>         regdomain ETSI country DE indoor ecm authmode WPA2/802.11i
>         privacy MIXED deftxkey 2 AES-CCM 2:128-bit txpower 30 scanvalid 6=
0
>         pureg protmode CTS wme burst dtimperiod 1 -dfs
> wlan2: flags=3D8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST>
> metric 0 mtu 1500
>         ether 6e:a3:c4:51:44:99
>         inet6 fe80::6ca3:c4ff:fe51:4499%wlan2 prefixlen 64 tentative
> scopeid 0xb
>         nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: running
>         ssid COYOTE_GUEST channel 7 (2442 MHz 11g) bssid 6e:a3:c4:51:44:9=
9
>         regdomain ETSI country DE indoor ecm authmode 802.1x privacy MIXE=
D
>         deftxkey UNDEF txpower 30 scanvalid 60 pureg protmode CTS wme bur=
st
>         dtimperiod 1 -dfs
>
> root@coyote:~# ifconfig ath0
> ath0: flags=3D8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 2290
>         ether 68:a3:c4:51:44:99
>         nd6 options=3D21<PERFORMNUD,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect <hostap>
> (autoselect <hostap>)
>         status: no carrier
> root@coyote:~# ifconfig wlan0 create wlandev ath0 bssid wlanmode
> hostap country DE authmode wpa ssid COYOTE
> root@coyote:~# ifconfig wlan0
> wlan0: flags=3D8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST>
> metric 0 mtu 1500
>         ether 6a:a3:c4:51:44:99
>         inet6 fe80::68a3:c4ff:fe51:4499%wlan0 prefixlen 64 tentative
> scopeid 0xa
>         nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: running
>         ssid COYOTE channel 13 (2472 MHz 11g) bssid 6a:a3:c4:51:44:99
>         regdomain ETSI country DE indoor ecm authmode 802.1x privacy MIXE=
D
>         deftxkey UNDEF txpower 30 scanvalid 60 pureg protmode CTS wme bur=
st
>         dtimperiod 1 -dfs
> root@coyote:~# ifconfig wlan2 create wlandev ath0 bssid wlanmode
> hostap country DE authmode wpa ssid COYOTE_GUEST
> ifconfig: SIOCS80211: Device busy
> Exit 1
> root@coyote:~# ifconfig wlan2
> wlan2: flags=3D8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST>
> metric 0 mtu 1500
>         ether 6e:a3:c4:51:44:99
>         inet6 fe80::6ca3:c4ff:fe51:4499%wlan2 prefixlen 64 tentative
> scopeid 0xb
>         nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: running
>         ssid COYOTE_GUEST channel 13 (2472 MHz 11g) bssid 6e:a3:c4:51:44:=
99
>         regdomain ETSI country DE indoor ecm authmode 802.1x privacy MIXE=
D
>         deftxkey UNDEF txpower 30 scanvalid 60 pureg protmode CTS wme bur=
st
>         dtimperiod 1 -dfs
> root@coyote:~# ifconfig wlan0; ifconfig wlan2
> wlan0: flags=3D8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST>
> metric 0 mtu 1500
>         ether 6a:a3:c4:51:44:99
>         inet6 fe80::68a3:c4ff:fe51:4499%wlan0 prefixlen 64 tentative
> scopeid 0xa
>         nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: running
>         ssid COYOTE channel 13 (2472 MHz 11g) bssid 6a:a3:c4:51:44:99
>         regdomain ETSI country DE indoor ecm authmode 802.1x privacy MIXE=
D
>         deftxkey UNDEF txpower 30 scanvalid 60 pureg protmode CTS wme bur=
st
>         dtimperiod 1 -dfs
> wlan2: flags=3D8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST>
> metric 0 mtu 1500
>         ether 6e:a3:c4:51:44:99
>         inet6 fe80::6ca3:c4ff:fe51:4499%wlan2 prefixlen 64 tentative
> scopeid 0xb
>         nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: running
>         ssid COYOTE_GUEST channel 13 (2472 MHz 11g) bssid 6e:a3:c4:51:44:=
99
>         regdomain ETSI country DE indoor ecm authmode 802.1x privacy MIXE=
D
>         deftxkey UNDEF txpower 30 scanvalid 60 pureg protmode CTS wme bur=
st
>         dtimperiod 1 -dfs
>
>
> Then I also had to bounce the hostapd on wlan0 and start the one on
> wlan2 and it looks very promising currently. Is it possible that there
> is a timing issue involved and doing it manually works better than
> when the startup scripts run through this?
>
>
> I've now got this working version that seems to be solid and comes up
> during boot w/o manual intervention.
>
> /etc/rc.conf:
> wlans_ath0=3D"wlan0 wlan2"
> create_args_wlan0=3D"bssid wlanmode hostap country DE authmode wpa ssid
> COYOTE"
> create_args_wlan2=3D"bssid wlanmode hostap country DE authmode wpa ssid
> COYOTE_GUEST"
> (no ifconfig_wlanX settings, I'm using a bridge for these, no hostapd!)
>
> /etc/rc.local:
> #!/bin/sh
> /etc/rc.d/hostapd start wlan0
> sleep 2
> /etc/rc.d/hostapd start wlan2
>
> and I get:
>
> root@coyote:~# ifconfig wlan0; ifconfig wlan2
> wlan0: flags=3D8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST>
> metric 0 mtu 1500
>         ether 68:a3:c4:51:44:99
>         nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: running
>         ssid COYOTE channel 13 (2472 MHz 11g) bssid 68:a3:c4:51:44:99
>         regdomain ETSI country DE indoor ecm authmode WPA2/802.11i
>         privacy MIXED deftxkey 2 AES-CCM 2:128-bit txpower 30 scanvalid 6=
0
>         protmode CTS wme burst dtimperiod 1 -dfs
> wlan2: flags=3D8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST>
> metric 0 mtu 1500
>         ether 6e:a3:c4:51:44:99
>         nd6 options=3D29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
>         media: IEEE 802.11 Wireless Ethernet autoselect mode 11g <hostap>
>         status: running
>         ssid COYOTE_GUEST channel 13 (2472 MHz 11g) bssid 6e:a3:c4:51:44:=
99
>         regdomain ETSI country DE indoor ecm authmode WPA2/802.11i
>         privacy MIXED deftxkey 2 AES-CCM 2:128-bit txpower 30 scanvalid 6=
0
>         protmode CTS wme burst dtimperiod 1 -dfs
> root@coyote:~# pgrep -fl hostapd
> 3071 /usr/sbin/hostapd -P /var/run/hostapd-wlan2.pid -B
> /etc/hostapd-wlan2.conf
> 3061 /usr/sbin/hostapd -P /var/run/hostapd-wlan0.pid -B
> /etc/hostapd-wlan0.conf
>
> Now I need to un-bridge the wlan2, put in a firewalled guest network
> and tweak pf accordingly. Or maybe I'll use a pf-based filtering
> bridge. And I still need an USB fob for that 5GHz AP.
>
> Thanks!
> Uli
>
>
> 2013/10/21 Adrian Chadd <adrian@freebsd.org>:
> > So, I finally (!) figured out how this address cloning crap works.
> >
> > In if_ath.c, there's assign_address(). It, yes, assigns addresses. If t=
he
> > hardware supports the bssid mask field and the clone flag is set, it
> sets up
> > multiple addresses. This works great for up to 4 MACs. We have to modif=
y
> it
> > to support more than 4 MAC addresses per NIC.
> >
> > .. but, how do you set the clone flag?
> >
> > The ifconfig manpage has two entries for 'bssid'.
> >
> > * the first is when you 'create' a VAP. It's passed as an arguement
> during
> > create, but before wlanmode. It doesn't take an option.
> > * the second is for setting the BSS ID for the VAP. It _does_ take an
> option
> > (the MAC.)
> >
> > If you try this, it fails:
> >
> > * ifconfig wlan11 create wlandev ath0 wlanmode hostap ssid 'foo_2' bssi=
d
> >
> > If you try this, it works:
> >
> > * ifconfig wlan11 create wlandev ath0 bssid wlanomde hostap ssid 'foo_2=
'
> >
> > So, if you run multi-VAP, and you want to use WPA on all of the VAPs,
> please
> > try using 'bssid' as above and ensure you get multiple MAC addresses.
> This
> > should make things behave much, much better. If it doesn't then we have
> > bigger problems.
> >
> > Thanks,
> >
> >
> > -adrian
> >
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmonbyX7cOCJd=n9rpSMgCmzrQ2dEg14vPRrgvnoc3APSPA>