/* This file is part of GNUnet. (C) 2009 Christian Grothoff (and other contributing authors) GNUnet is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNUnet is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNUnet; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /** * @file transport/gnunet-transport-wlan-helper.h * @brief common internal definitions for the wlan mediator * @author David Brodski */ #ifndef gnunet_wlan_H #define gnunet_wlan_H #include #include #include #include #include #include #include #include #include #include #include typedef unsigned int u32; typedef unsigned short u16; typedef unsigned char u8; typedef u32 __le32; #if __BYTE_ORDER == __LITTLE_ENDIAN #define le16_to_cpu(x) (x) #define le32_to_cpu(x) (x) #else #define le16_to_cpu(x) ((((x)&0xff)<<8)|(((x)&0xff00)>>8)) #define le32_to_cpu(x) \ ((((x)&0xff)<<24)|(((x)&0xff00)<<8)|(((x)&0xff0000)>>8)|(((x)&0xff000000)>>24)) #endif #define unlikely(x) (x) #endif /* gnunet_wlan_H */ /* Radiotap header iteration * implemented in net/wireless/radiotap.c * docs in Documentation/networking/radiotap-headers.txt */ /** * struct ieee80211_radiotap_iterator - tracks walk thru present radiotap args * rtheader: pointer to the radiotap header we are walking through * max_length: length of radiotap header in cpu byte ordering * this_arg_index: IEEE80211_RADIOTAP_... index of current arg * this_arg: pointer to current radiotap arg * arg_index: internal next argument index * arg: internal next argument pointer * next_bitmap: internal pointer to next present u32 * bitmap_shifter: internal shifter for curr u32 bitmap, b0 set == arg present */ struct ieee80211_radiotap_iterator { struct ieee80211_radiotap_header *rtheader; int max_length; int this_arg_index; u8 *this_arg; int arg_index; u8 *arg; __le32 *next_bitmap; u32 bitmap_shifter; }; extern int ieee80211_radiotap_iterator_init( struct ieee80211_radiotap_iterator *iterator, struct ieee80211_radiotap_header *radiotap_header, int max_length); extern int ieee80211_radiotap_iterator_next( struct ieee80211_radiotap_iterator *iterator);