svn commit: r191631 - projects/mesh11s/sys/net80211
Rui Paulo
rpaulo at FreeBSD.org
Tue Apr 28 17:41:19 UTC 2009
Author: rpaulo
Date: Tue Apr 28 17:41:18 2009
New Revision: 191631
URL: http://svn.freebsd.org/changeset/base/191631
Log:
Mesh nodes always set the BSSID to zero when transmitting beacons and
probe responses.
Sponsored by: The FreeBSD Foundation
Modified:
projects/mesh11s/sys/net80211/ieee80211_output.c
Modified: projects/mesh11s/sys/net80211/ieee80211_output.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_output.c Tue Apr 28 17:36:30 2009 (r191630)
+++ projects/mesh11s/sys/net80211/ieee80211_output.c Tue Apr 28 17:41:18 2009 (r191631)
@@ -420,11 +420,11 @@ ieee80211_send_setup(
const uint8_t bssid[IEEE80211_ADDR_LEN])
{
#define WH4(wh) ((struct ieee80211_frame_addr4 *)wh)
+ static const uint8_t zerobssid[IEEE80211_ADDR_LEN];
+ struct ieee80211vap *vap = ni->ni_vap;
wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | type;
if ((type & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_DATA) {
- struct ieee80211vap *vap = ni->ni_vap;
-
switch (vap->iv_opmode) {
case IEEE80211_M_STA:
wh->i_fc[1] = IEEE80211_FC1_DIR_TODS;
@@ -462,7 +462,10 @@ ieee80211_send_setup(
wh->i_fc[1] = IEEE80211_FC1_DIR_NODS;
IEEE80211_ADDR_COPY(wh->i_addr1, da);
IEEE80211_ADDR_COPY(wh->i_addr2, sa);
- IEEE80211_ADDR_COPY(wh->i_addr3, bssid);
+ if (vap->iv_opmode == IEEE80211_M_MBSS)
+ IEEE80211_ADDR_COPY(wh->i_addr3, zerobssid);
+ else
+ IEEE80211_ADDR_COPY(wh->i_addr3, bssid);
}
*(uint16_t *)&wh->i_dur[0] = 0;
*(uint16_t *)&wh->i_seq[0] =
@@ -2470,6 +2473,7 @@ struct mbuf *
ieee80211_beacon_alloc(struct ieee80211_node *ni,
struct ieee80211_beacon_offsets *bo)
{
+ static const uint8_t zerobssid[IEEE80211_ADDR_LEN];
struct ieee80211vap *vap = ni->ni_vap;
struct ieee80211com *ic = ni->ni_ic;
struct ifnet *ifp = vap->iv_ifp;
@@ -2560,7 +2564,10 @@ ieee80211_beacon_alloc(struct ieee80211_
*(uint16_t *)wh->i_dur = 0;
IEEE80211_ADDR_COPY(wh->i_addr1, ifp->if_broadcastaddr);
IEEE80211_ADDR_COPY(wh->i_addr2, vap->iv_myaddr);
- IEEE80211_ADDR_COPY(wh->i_addr3, ni->ni_bssid);
+ if (vap->iv_opmode == IEEE80211_M_MBSS)
+ IEEE80211_ADDR_COPY(wh->i_addr3, zerobssid);
+ else
+ IEEE80211_ADDR_COPY(wh->i_addr3, ni->ni_bssid);
*(uint16_t *)wh->i_seq = 0;
return m;
More information about the svn-src-projects
mailing list