]>
git.ipfire.org Git - thirdparty/hostap.git/blob - wlantest/writepcap.c
2 * PCAP capture file writer
3 * Copyright (c) 2010, Jouni Malinen <j@w1.fi>
5 * This software may be distributed under the terms of the BSD license.
6 * See README for more details.
9 #include "utils/includes.h"
13 #include "utils/common.h"
17 int write_pcap_init(struct wlantest
*wt
, const char *fname
)
19 wt
->write_pcap
= pcap_open_dead(DLT_IEEE802_11_RADIO
, 4000);
20 if (wt
->write_pcap
== NULL
)
22 wt
->write_pcap_dumper
= pcap_dump_open(wt
->write_pcap
, fname
);
23 if (wt
->write_pcap_dumper
== NULL
) {
24 pcap_close(wt
->write_pcap
);
25 wt
->write_pcap
= NULL
;
29 wpa_printf(MSG_DEBUG
, "Writing PCAP dump to '%s'", fname
);
35 void write_pcap_deinit(struct wlantest
*wt
)
37 if (wt
->write_pcap_dumper
) {
38 pcap_dump_close(wt
->write_pcap_dumper
);
39 wt
->write_pcap_dumper
= NULL
;
42 pcap_close(wt
->write_pcap
);
43 wt
->write_pcap
= NULL
;
48 void write_pcap_captured(struct wlantest
*wt
, const u8
*buf
, size_t len
)
52 if (!wt
->write_pcap_dumper
)
55 os_memset(&h
, 0, sizeof(h
));
56 gettimeofday(&wt
->write_pcap_time
, NULL
);
57 h
.ts
= wt
->write_pcap_time
;
60 pcap_dump(wt
->write_pcap_dumper
, &h
, buf
);
64 void write_pcap_decrypted(struct wlantest
*wt
, const u8
*buf1
, size_t len1
,
65 const u8
*buf2
, size_t len2
)
71 0x08, 0x00, /* header len */
72 0x00, 0x00, 0x00, 0x00 /* present flags */
77 if (!wt
->write_pcap_dumper
)
80 os_memset(&h
, 0, sizeof(h
));
81 h
.ts
= wt
->write_pcap_time
;
82 len
= sizeof(rtap
) + len1
+ len2
;
86 os_memcpy(buf
, rtap
, sizeof(rtap
));
88 os_memcpy(buf
+ sizeof(rtap
), buf1
, len1
);
89 buf
[sizeof(rtap
) + 1] &= ~0x40; /* Clear Protected flag */
92 os_memcpy(buf
+ sizeof(rtap
) + len1
, buf2
, len2
);
95 pcap_dump(wt
->write_pcap_dumper
, &h
, buf
);