| /* |
| * hostapd / AP table |
| * Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi> |
| * Copyright (c) 2003-2004, Instant802 Networks, Inc. |
| * Copyright (c) 2006, Devicescape Software, Inc. |
| * |
| * This software may be distributed under the terms of the BSD license. |
| * See README for more details. |
| */ |
| |
| #ifndef AP_LIST_H |
| #define AP_LIST_H |
| |
| struct ap_info { |
| /* Note: next/prev pointers are updated whenever a new beacon is |
| * received because these are used to find the least recently used |
| * entries. iter_next/iter_prev are updated only when adding new BSSes |
| * and when removing old ones. These should be used when iterating |
| * through the table in a manner that allows beacons to be received |
| * during the iteration. */ |
| struct ap_info *next; /* next entry in AP list */ |
| struct ap_info *prev; /* previous entry in AP list */ |
| struct ap_info *hnext; /* next entry in hash table list */ |
| struct ap_info *iter_next; /* next entry in AP iteration list */ |
| struct ap_info *iter_prev; /* previous entry in AP iteration list */ |
| u8 addr[6]; |
| u16 beacon_int; |
| u16 capability; |
| u8 supported_rates[WLAN_SUPP_RATES_MAX]; |
| u8 ssid[33]; |
| size_t ssid_len; |
| int wpa; |
| int erp; /* ERP Info or -1 if ERP info element not present */ |
| |
| int channel; |
| int datarate; /* in 100 kbps */ |
| |
| int ht_support; |
| |
| unsigned int num_beacons; /* number of beacon frames received */ |
| os_time_t last_beacon; |
| |
| int already_seen; /* whether API call AP-NEW has already fetched |
| * information about this AP */ |
| }; |
| |
| struct ieee802_11_elems; |
| struct hostapd_frame_info; |
| |
| struct ap_info * ap_get_ap(struct hostapd_iface *iface, const u8 *sta); |
| int ap_ap_for_each(struct hostapd_iface *iface, |
| int (*func)(struct ap_info *s, void *data), void *data); |
| void ap_list_process_beacon(struct hostapd_iface *iface, |
| const struct ieee80211_mgmt *mgmt, |
| struct ieee802_11_elems *elems, |
| struct hostapd_frame_info *fi); |
| #ifdef NEED_AP_MLME |
| int ap_list_init(struct hostapd_iface *iface); |
| void ap_list_deinit(struct hostapd_iface *iface); |
| #else /* NEED_AP_MLME */ |
| static inline int ap_list_init(struct hostapd_iface *iface) |
| { |
| return 0; |
| } |
| |
| static inline void ap_list_deinit(struct hostapd_iface *iface) |
| { |
| } |
| #endif /* NEED_AP_MLME */ |
| |
| #endif /* AP_LIST_H */ |