]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/wpa/src/ap/ap_list.h
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / wpa / src / ap / ap_list.h
1 /*
2  * hostapd / AP table
3  * Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi>
4  * Copyright (c) 2003-2004, Instant802 Networks, Inc.
5  * Copyright (c) 2006, Devicescape Software, Inc.
6  *
7  * This software may be distributed under the terms of the BSD license.
8  * See README for more details.
9  */
10
11 #ifndef AP_LIST_H
12 #define AP_LIST_H
13
14 struct ap_info {
15         /* Note: next/prev pointers are updated whenever a new beacon is
16          * received because these are used to find the least recently used
17          * entries. iter_next/iter_prev are updated only when adding new BSSes
18          * and when removing old ones. These should be used when iterating
19          * through the table in a manner that allows beacons to be received
20          * during the iteration. */
21         struct ap_info *next; /* next entry in AP list */
22         struct ap_info *prev; /* previous entry in AP list */
23         struct ap_info *hnext; /* next entry in hash table list */
24         struct ap_info *iter_next; /* next entry in AP iteration list */
25         struct ap_info *iter_prev; /* previous entry in AP iteration list */
26         u8 addr[6];
27         u16 beacon_int;
28         u16 capability;
29         u8 supported_rates[WLAN_SUPP_RATES_MAX];
30         u8 ssid[33];
31         size_t ssid_len;
32         int wpa;
33         int erp; /* ERP Info or -1 if ERP info element not present */
34
35         int channel;
36         int datarate; /* in 100 kbps */
37
38         int ht_support;
39
40         unsigned int num_beacons; /* number of beacon frames received */
41         os_time_t last_beacon;
42
43         int already_seen; /* whether API call AP-NEW has already fetched
44                            * information about this AP */
45 };
46
47 struct ieee802_11_elems;
48 struct hostapd_frame_info;
49
50 struct ap_info * ap_get_ap(struct hostapd_iface *iface, const u8 *sta);
51 int ap_ap_for_each(struct hostapd_iface *iface,
52                    int (*func)(struct ap_info *s, void *data), void *data);
53 void ap_list_process_beacon(struct hostapd_iface *iface,
54                             const struct ieee80211_mgmt *mgmt,
55                             struct ieee802_11_elems *elems,
56                             struct hostapd_frame_info *fi);
57 #ifdef NEED_AP_MLME
58 int ap_list_init(struct hostapd_iface *iface);
59 void ap_list_deinit(struct hostapd_iface *iface);
60 #else /* NEED_AP_MLME */
61 static inline int ap_list_init(struct hostapd_iface *iface)
62 {
63         return 0;
64 }
65
66 static inline void ap_list_deinit(struct hostapd_iface *iface)
67 {
68 }
69 #endif /* NEED_AP_MLME */
70
71 #endif /* AP_LIST_H */