[PATCH] driver_nl80211: Pass data frames from unknown STAs to hostapd

Helmut Schaa helmut.schaa at googlemail.com
Wed Oct 27 10:40:23 EDT 2010


Pass data frames from unknown STAs to hostapd in order to reply with a
deauth or deassoc frame. This ensures compliance with 802.11-2007 11.3.

Furthermore, this does not cause a lot of overhead (at least with
mac80211 drivers) since mac80211 does not pass all data frames (but
at least from unauthenticated and unassociated STAs) to cooked monitor
interfaces.

Tested with rt2800pci on a MIPS board.

Signed-off-by: Helmut Schaa <helmut.schaa at googlemail.com>
---
 src/drivers/driver_nl80211.c |    8 +++++++-
 1 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 3ad8812..a922ccf 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -3368,8 +3368,14 @@ static struct sock_filter msock_filter_insns[] = {
 	 * add a filter here that filters on our DA and that flag
 	 * to allow us to deauth frames to that bad station.
 	 *
-	 * Not a regression -- we didn't do it before either.
+	 * For now allow all to DS data frames through.
 	 */
+	/* load the IEEE 802.11 frame control field */
+	BPF_STMT(BPF_LD  | BPF_H | BPF_IND, 0),
+	/* mask off frame type, version and DS status */
+	BPF_STMT(BPF_ALU | BPF_AND | BPF_K, 0x0F03),
+	/* accept frame if version 0, type 2 and to DS, fall through otherwise */
+	BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K, 0x0801, PASS, 0),
 
 #if 0
 	/*
-- 
1.7.1



More information about the HostAP mailing list