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>