Hi Guys,

I'm new on the list, playing around trying to extract the radiotap headers from IEEE802.11 traffic, specifically relating to signal strength/etc.

I've got some code that is using the functions ieee80211_radiotap_iterator_init() and ieee80211_radiotap_iterator_next() from radiotap-parser.c, 

I'm not sure what I'm doing incorrectly, perhaps someone can educate me? I'm using the sample code from http://www.cs.fsu.edu/~baker/devices/lxr/http/source/linux/Documentation/networking/radiotap-headers.txt?v=2.6.25 more or less without modification, it fits very well to what I was trying to achieve:

 /* where packet is `const u_char *packet' */

struct ieee80211_radiotap_iterator rti;
struct ieee80211_radiotap_header *rth = ( struct ieee80211_radiotap_header * ) packet;
int ret = ieee80211_radiotap_iterator_init(&rti, rth, rth->it_len);
while(!ret) {
  printf("Itteration: %d\n", count++);
  ret = ieee80211_radiotap_iterator_next(&rti);
  if(ret) {
    continue;
  }
  switch(rti.this_arg_index) {
  default:
    printf("Constant: %d\n", *rti.this_arg);
    break;
  }
}

There's limited scope for having screwed something up in that code, I think, I'm confused by the `1' being returned from `ieee80211_radiotap_iterator_init' which according to the implenentation doesn't seem like an error condition in the implementation http://lxr.free-electrons.com/source/net/wireless/radiotap.c#L95

Thanks for anything anyone on the list can suggest, I'm out of my element working at such a low level in C, but needs must!

- Lee Hambley