summaryrefslogtreecommitdiffstats
path: root/sys/net80211/ieee80211_input.c
diff options
context:
space:
mode:
authorsam <sam@FreeBSD.org>2007-03-11 06:35:27 +0000
committersam <sam@FreeBSD.org>2007-03-11 06:35:27 +0000
commit679daf849749d409c8c49c8cc5e58093b228968f (patch)
treec09995cd379208f858f56ec1ff6065ed3ceb5a53 /sys/net80211/ieee80211_input.c
parent0ea08cfa346654243d5c3ea9e5907f58342aed0d (diff)
downloadFreeBSD-src-679daf849749d409c8c49c8cc5e58093b228968f.zip
FreeBSD-src-679daf849749d409c8c49c8cc5e58093b228968f.tar.gz
discard deauth+disassoc frames that are not destined for us; these
can be received when the interface is in promisc mode Reviewed by: sephe Obtained from: netbsd
Diffstat (limited to 'sys/net80211/ieee80211_input.c')
-rw-r--r--sys/net80211/ieee80211_input.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/sys/net80211/ieee80211_input.c b/sys/net80211/ieee80211_input.c
index 2517edd..9c1405f9 100644
--- a/sys/net80211/ieee80211_input.c
+++ b/sys/net80211/ieee80211_input.c
@@ -2559,6 +2559,11 @@ ieee80211_recv_mgmt(struct ieee80211com *ic, struct mbuf *m0,
ic->ic_stats.is_rx_deauth++;
IEEE80211_NODE_STAT(ni, rx_deauth);
+ if (!IEEE80211_ADDR_EQ(wh->i_addr1, ic->ic_myaddr)) {
+ /* NB: can happen when in promiscuous mode */
+ ic->ic_stats.is_rx_mgtdiscard++;
+ break;
+ }
IEEE80211_DPRINTF(ic, IEEE80211_MSG_AUTH,
"[%s] recv deauthenticate (reason %d)\n",
ether_sprintf(ni->ni_macaddr), reason);
@@ -2596,6 +2601,11 @@ ieee80211_recv_mgmt(struct ieee80211com *ic, struct mbuf *m0,
ic->ic_stats.is_rx_disassoc++;
IEEE80211_NODE_STAT(ni, rx_disassoc);
+ if (!IEEE80211_ADDR_EQ(wh->i_addr1, ic->ic_myaddr)) {
+ /* NB: can happen when in promiscuous mode */
+ ic->ic_stats.is_rx_mgtdiscard++;
+ break;
+ }
IEEE80211_DPRINTF(ic, IEEE80211_MSG_ASSOC,
"[%s] recv disassociate (reason %d)\n",
ether_sprintf(ni->ni_macaddr), reason);
OpenPOWER on IntegriCloud