Merge branch 'vendor/LIBEDIT'
[dragonfly.git] / contrib / hostapd / hostapd / 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  * Copyright (c) 2007-2008, Intel Corporation
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License version 2 as
10  * published by the Free Software Foundation.
11  *
12  * Alternatively, this software may be distributed under the terms of BSD
13  * license.
14  *
15  * See README and COPYING for more details.
16  */
17
18 #ifndef AP_LIST_H
19 #define AP_LIST_H
20
21 struct ap_info {
22         /* Note: next/prev pointers are updated whenever a new beacon is
23          * received because these are used to find the least recently used
24          * entries. iter_next/iter_prev are updated only when adding new BSSes
25          * and when removing old ones. These should be used when iterating
26          * through the table in a manner that allows beacons to be received
27          * during the iteration. */
28         struct ap_info *next; /* next entry in AP list */
29         struct ap_info *prev; /* previous entry in AP list */
30         struct ap_info *hnext; /* next entry in hash table list */
31         struct ap_info *iter_next; /* next entry in AP iteration list */
32         struct ap_info *iter_prev; /* previous entry in AP iteration list */
33         u8 addr[6];
34         u16 beacon_int;
35         u16 capability;
36         u8 supported_rates[WLAN_SUPP_RATES_MAX];
37         u8 ssid[33];
38         size_t ssid_len;
39         int wpa;
40         int erp; /* ERP Info or -1 if ERP info element not present */
41
42         int phytype; /* .11a / .11b / .11g / Atheros Turbo */
43         int channel;
44         int datarate; /* in 100 kbps */
45         int ssi_signal;
46
47         int ht_support;
48
49         unsigned int num_beacons; /* number of beacon frames received */
50         time_t last_beacon;
51
52         int already_seen; /* whether API call AP-NEW has already fetched
53                            * information about this AP */
54 };
55
56 struct ieee802_11_elems;
57 struct hostapd_frame_info;
58
59 struct ap_info * ap_get_ap(struct hostapd_iface *iface, u8 *sta);
60 int ap_ap_for_each(struct hostapd_iface *iface,
61                    int (*func)(struct ap_info *s, void *data), void *data);
62 void ap_list_process_beacon(struct hostapd_iface *iface,
63                             struct ieee80211_mgmt *mgmt,
64                             struct ieee802_11_elems *elems,
65                             struct hostapd_frame_info *fi);
66 int ap_list_init(struct hostapd_iface *iface);
67 void ap_list_deinit(struct hostapd_iface *iface);
68 int ap_list_reconfig(struct hostapd_iface *iface,
69                      struct hostapd_config *oldconf);
70
71 #endif /* AP_LIST_H */