]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/wpa/src/utils/radiotap_iter.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / wpa / src / utils / radiotap_iter.h
1 /*
2  * Radiotap parser
3  *
4  * Copyright 2007               Andy Green <andy@warmcat.com>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * Alternatively, this software may be distributed under the terms of BSD
11  * license.
12  *
13  * See README and COPYING for more details.
14  */
15
16 #ifndef __RADIOTAP_ITER_H
17 #define __RADIOTAP_ITER_H
18
19 #include "radiotap.h"
20
21 /* Radiotap header iteration
22  *   implemented in radiotap.c
23  */
24 /**
25  * struct ieee80211_radiotap_iterator - tracks walk thru present radiotap args
26  * @rtheader: pointer to the radiotap header we are walking through
27  * @max_length: length of radiotap header in cpu byte ordering
28  * @this_arg_index: IEEE80211_RADIOTAP_... index of current arg
29  * @this_arg: pointer to current radiotap arg
30  * @arg_index: internal next argument index
31  * @arg: internal next argument pointer
32  * @next_bitmap: internal pointer to next present u32
33  * @bitmap_shifter: internal shifter for curr u32 bitmap, b0 set == arg present
34  */
35
36 struct ieee80211_radiotap_iterator {
37         struct ieee80211_radiotap_header *rtheader;
38         int max_length;
39         int this_arg_index;
40         unsigned char *this_arg;
41
42         int arg_index;
43         unsigned char *arg;
44         uint32_t *next_bitmap;
45         uint32_t bitmap_shifter;
46 };
47
48 extern int ieee80211_radiotap_iterator_init(
49    struct ieee80211_radiotap_iterator *iterator,
50    struct ieee80211_radiotap_header *radiotap_header,
51    int max_length);
52
53 extern int ieee80211_radiotap_iterator_next(
54    struct ieee80211_radiotap_iterator *iterator);
55
56 #endif /* __RADIOTAP_ITER_H */