/*
* Received frame processing
- * Copyright (c) 2010, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2010-2019, Jouni Malinen <j@w1.fi>
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
const u8 *frame, *fcspos;
size_t frame_len;
+ if (wt->ethernet)
+ return;
+
wpa_hexdump(MSG_EXCESSIVE, "Process data", data, len);
if (ieee80211_radiotap_iterator_init(&iter, (void *) data, len, NULL)) {
/*
* wlantest - IEEE 802.11 protocol monitoring and testing tool
- * Copyright (c) 2010-2015, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2010-2019, Jouni Malinen <j@w1.fi>
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
static void usage(void)
{
- printf("wlantest [-cddhqqFNt] [-i<ifname>] [-r<pcap file>] "
+ printf("wlantest [-cddehqqFNt] [-i<ifname>] [-r<pcap file>] "
"[-p<passphrase>]\n"
" [-I<wired ifname>] [-R<wired pcap file>] "
"[-P<RADIUS shared secret>]\n"
wlantest_init(&wt);
for (;;) {
- c = getopt(argc, argv, "cdf:Fhi:I:L:n:Np:P:qr:R:tT:w:W:");
+ c = getopt(argc, argv, "cdef:Fhi:I:L:n:Np:P:qr:R:tT:w:W:");
if (c < 0)
break;
switch (c) {
if (wpa_debug_level > 0)
wpa_debug_level--;
break;
+ case 'e':
+ wt.ethernet = 1;
+ break;
case 'f':
if (add_pmk_file(&wt, optarg) < 0)
return -1;
/*
* wlantest - IEEE 802.11 protocol monitoring and testing tool
- * Copyright (c) 2010-2013, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2010-2019, Jouni Malinen <j@w1.fi>
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
unsigned int assume_fcs:1;
unsigned int pcap_no_buffer:1;
+ unsigned int ethernet:1;
char *notes[MAX_NOTES];
size_t num_notes;
/*
* PCAP capture file writer
- * Copyright (c) 2010, Jouni Malinen <j@w1.fi>
+ * Copyright (c) 2010-2019, Jouni Malinen <j@w1.fi>
*
* This software may be distributed under the terms of the BSD license.
* See README for more details.
int write_pcap_init(struct wlantest *wt, const char *fname)
{
- wt->write_pcap = pcap_open_dead(DLT_IEEE802_11_RADIO, 4000);
+ int linktype = wt->ethernet ? DLT_EN10MB : DLT_IEEE802_11_RADIO;
+
+ wt->write_pcap = pcap_open_dead(linktype, 4000);
if (wt->write_pcap == NULL)
return -1;
wt->write_pcap_dumper = pcap_dump_open(wt->write_pcap, fname);
desc.block_type = PCAPNG_BLOCK_IFACE_DESC;
desc.block_total_len = sizeof(desc);
desc.block_total_len2 = desc.block_total_len;
- desc.link_type = LINKTYPE_IEEE802_11_RADIO;
+ desc.link_type = wt->ethernet ? DLT_EN10MB : LINKTYPE_IEEE802_11_RADIO;
desc.snap_len = 65535;
fwrite(&desc, sizeof(desc), 1, wt->pcapng);
if (wt->pcap_no_buffer)
pos = (u8 *) (pkt + 1);
switch (dlt) {
+ case DLT_EN10MB:
case DLT_IEEE802_11_RADIO:
break;
case DLT_PRISM_HEADER:
gettimeofday(&h.ts, NULL);
h.caplen = len;
h.len = len;
- write_pcapng_write_read(wt, DLT_IEEE802_11_RADIO, &h, buf);
+ write_pcapng_write_read(wt, wt->ethernet ? DLT_EN10MB :
+ DLT_IEEE802_11_RADIO, &h, buf);
}