]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
nl80211: Pass data frames from unknown STAs to hostapd
authorHelmut Schaa <helmut.schaa@googlemail.com>
Sun, 31 Oct 2010 19:36:43 +0000 (21:36 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 31 Oct 2010 19:36:43 +0000 (21:36 +0200)
Pass data frames from unknown STAs to hostapd in order to reply with
a Deauthentication or Disassociation frame. This fixes compliance
with IEEE Std 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@googlemail.com>
src/drivers/driver_nl80211.c

index c172409609c1c49b2e7ba584d5d8bf3a1d9e32ff..5caa2fc68f2a592bc12ef5a4bef6111292dd23ce 100644 (file)
@@ -3652,8 +3652,15 @@ 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
        /*