| /* Exports from main to helper modules |
| * |
| * See copyright notice in main.c |
| */ |
| #ifndef _ORINOCO_MAIN_H_ |
| #define _ORINOCO_MAIN_H_ |
| |
| #include <linux/ieee80211.h> |
| #include "orinoco.h" |
| |
| /********************************************************************/ |
| /* Compile time configuration and compatibility stuff */ |
| /********************************************************************/ |
| |
| /* We do this this way to avoid ifdefs in the actual code */ |
| #ifdef WIRELESS_SPY |
| #define SPY_NUMBER(priv) (priv->spy_data.spy_number) |
| #else |
| #define SPY_NUMBER(priv) 0 |
| #endif /* WIRELESS_SPY */ |
| |
| /********************************************************************/ |
| |
| /* Export module parameter */ |
| extern int force_monitor; |
| |
| /* Forward declarations */ |
| struct net_device; |
| struct work_struct; |
| |
| void set_port_type(struct orinoco_private *priv); |
| int __orinoco_program_rids(struct net_device *dev); |
| void orinoco_reset(struct work_struct *work); |
| |
| |
| /* Information element helpers - find a home for these... */ |
| static inline u8 *orinoco_get_ie(u8 *data, size_t len, |
| enum ieee80211_eid eid) |
| { |
| u8 *p = data; |
| while ((p + 2) < (data + len)) { |
| if (p[0] == eid) |
| return p; |
| p += p[1] + 2; |
| } |
| return NULL; |
| } |
| |
| #define WPA_OUI_TYPE "\x00\x50\xF2\x01" |
| #define WPA_SELECTOR_LEN 4 |
| static inline u8 *orinoco_get_wpa_ie(u8 *data, size_t len) |
| { |
| u8 *p = data; |
| while ((p + 2 + WPA_SELECTOR_LEN) < (data + len)) { |
| if ((p[0] == WLAN_EID_GENERIC) && |
| (memcmp(&p[2], WPA_OUI_TYPE, WPA_SELECTOR_LEN) == 0)) |
| return p; |
| p += p[1] + 2; |
| } |
| return NULL; |
| } |
| |
| #endif /* _ORINOCO_MAIN_H_ */ |