wlantest: Tag and ignore generated packets
Rather than ignoring packets with a minimal 8-byte radiotap header, which may occur elsewhere, tag generated (decrypted) packets with an empty vendor namespace tag and ignore those. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
bacb984b2d
commit
30476e4fe7
3 changed files with 20 additions and 7 deletions
|
@ -18,6 +18,13 @@
|
||||||
|
|
||||||
#define OUI_QCA 0x001374
|
#define OUI_QCA 0x001374
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enum qca_radiotap_vendor_ids - QCA radiotap vendor namespace IDs
|
||||||
|
*/
|
||||||
|
enum qca_radiotap_vendor_ids {
|
||||||
|
QCA_RADIOTAP_VID_WLANTEST = 0,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enum qca_nl80211_vendor_subcmds - QCA nl80211 vendor command identifiers
|
* enum qca_nl80211_vendor_subcmds - QCA nl80211 vendor command identifiers
|
||||||
*
|
*
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include "utils/radiotap.h"
|
#include "utils/radiotap.h"
|
||||||
#include "utils/radiotap_iter.h"
|
#include "utils/radiotap_iter.h"
|
||||||
#include "common/ieee802_11_defs.h"
|
#include "common/ieee802_11_defs.h"
|
||||||
|
#include "common/qca-vendor.h"
|
||||||
#include "wlantest.h"
|
#include "wlantest.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -305,14 +306,16 @@ void wlantest_process(struct wlantest *wt, const u8 *data, size_t len)
|
||||||
failed = le_to_host16((*(u16 *) iter.this_arg)) &
|
failed = le_to_host16((*(u16 *) iter.this_arg)) &
|
||||||
IEEE80211_RADIOTAP_F_TX_FAIL;
|
IEEE80211_RADIOTAP_F_TX_FAIL;
|
||||||
break;
|
break;
|
||||||
|
case IEEE80211_RADIOTAP_VENDOR_NAMESPACE:
|
||||||
}
|
if (WPA_GET_BE24(iter.this_arg) == OUI_QCA &&
|
||||||
}
|
iter.this_arg[3] == QCA_RADIOTAP_VID_WLANTEST) {
|
||||||
|
add_note(wt, MSG_DEBUG,
|
||||||
if (iter._max_length == 8) {
|
"Skip frame inserted by wlantest");
|
||||||
add_note(wt, MSG_DEBUG, "Skip frame inserted by wlantest");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
frame = data + iter._max_length;
|
frame = data + iter._max_length;
|
||||||
frame_len = len - iter._max_length;
|
frame_len = len - iter._max_length;
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
|
|
||||||
#include "utils/common.h"
|
#include "utils/common.h"
|
||||||
#include "wlantest.h"
|
#include "wlantest.h"
|
||||||
|
#include "common/qca-vendor.h"
|
||||||
|
|
||||||
|
|
||||||
int write_pcap_init(struct wlantest *wt, const char *fname)
|
int write_pcap_init(struct wlantest *wt, const char *fname)
|
||||||
|
@ -68,8 +69,10 @@ void write_pcap_decrypted(struct wlantest *wt, const u8 *buf1, size_t len1,
|
||||||
u8 rtap[] = {
|
u8 rtap[] = {
|
||||||
0x00 /* rev */,
|
0x00 /* rev */,
|
||||||
0x00 /* pad */,
|
0x00 /* pad */,
|
||||||
0x08, 0x00, /* header len */
|
0x0e, 0x00, /* header len */
|
||||||
0x00, 0x00, 0x00, 0x00 /* present flags */
|
0x00, 0x00, 0x00, 0x40, /* present flags */
|
||||||
|
0x00, 0x13, 0x74, QCA_RADIOTAP_VID_WLANTEST,
|
||||||
|
0x00, 0x00
|
||||||
};
|
};
|
||||||
u8 *buf;
|
u8 *buf;
|
||||||
size_t len;
|
size_t len;
|
||||||
|
|
Loading…
Reference in a new issue