xref: /freebsd-src/contrib/wpa/src/ap/ap_list.h (revision b626f5a73a48f44a31a200291b141e1da408a2ff)
1e28a4053SRui Paulo /*
2e28a4053SRui Paulo  * hostapd / AP table
3e28a4053SRui Paulo  * Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi>
4e28a4053SRui Paulo  * Copyright (c) 2003-2004, Instant802 Networks, Inc.
5e28a4053SRui Paulo  * Copyright (c) 2006, Devicescape Software, Inc.
6e28a4053SRui Paulo  *
7f05cddf9SRui Paulo  * This software may be distributed under the terms of the BSD license.
8f05cddf9SRui Paulo  * See README for more details.
9e28a4053SRui Paulo  */
10e28a4053SRui Paulo 
11e28a4053SRui Paulo #ifndef AP_LIST_H
12e28a4053SRui Paulo #define AP_LIST_H
13e28a4053SRui Paulo 
14e28a4053SRui Paulo struct ap_info {
15e28a4053SRui Paulo 	/* Note: next/prev pointers are updated whenever a new beacon is
16e28a4053SRui Paulo 	 * received because these are used to find the least recently used
175b9c547cSRui Paulo 	 * entries. */
18e28a4053SRui Paulo 	struct ap_info *next; /* next entry in AP list */
19e28a4053SRui Paulo 	struct ap_info *prev; /* previous entry in AP list */
20e28a4053SRui Paulo 	struct ap_info *hnext; /* next entry in hash table list */
21e28a4053SRui Paulo 	u8 addr[6];
22e28a4053SRui Paulo 	u8 supported_rates[WLAN_SUPP_RATES_MAX];
23e28a4053SRui Paulo 	int erp; /* ERP Info or -1 if ERP info element not present */
24e28a4053SRui Paulo 
25e28a4053SRui Paulo 	int channel;
26e28a4053SRui Paulo 
27e28a4053SRui Paulo 	int ht_support;
28e28a4053SRui Paulo 
295b9c547cSRui Paulo 	struct os_reltime last_beacon;
30e28a4053SRui Paulo };
31e28a4053SRui Paulo 
32e28a4053SRui Paulo struct ieee802_11_elems;
33e28a4053SRui Paulo struct hostapd_frame_info;
34e28a4053SRui Paulo 
35e28a4053SRui Paulo void ap_list_process_beacon(struct hostapd_iface *iface,
36e28a4053SRui Paulo 			    const struct ieee80211_mgmt *mgmt,
37e28a4053SRui Paulo 			    struct ieee802_11_elems *elems,
38e28a4053SRui Paulo 			    struct hostapd_frame_info *fi);
39e28a4053SRui Paulo #ifdef NEED_AP_MLME
40e28a4053SRui Paulo int ap_list_init(struct hostapd_iface *iface);
41e28a4053SRui Paulo void ap_list_deinit(struct hostapd_iface *iface);
42*325151a3SRui Paulo void ap_list_timer(struct hostapd_iface *iface);
43e28a4053SRui Paulo #else /* NEED_AP_MLME */
ap_list_init(struct hostapd_iface * iface)44e28a4053SRui Paulo static inline int ap_list_init(struct hostapd_iface *iface)
45e28a4053SRui Paulo {
46e28a4053SRui Paulo 	return 0;
47e28a4053SRui Paulo }
48e28a4053SRui Paulo 
ap_list_deinit(struct hostapd_iface * iface)49e28a4053SRui Paulo static inline void ap_list_deinit(struct hostapd_iface *iface)
50e28a4053SRui Paulo {
51e28a4053SRui Paulo }
52*325151a3SRui Paulo 
ap_list_timer(struct hostapd_iface * iface)53*325151a3SRui Paulo static inline void ap_list_timer(struct hostapd_iface *iface)
54*325151a3SRui Paulo {
55*325151a3SRui Paulo }
56e28a4053SRui Paulo #endif /* NEED_AP_MLME */
57e28a4053SRui Paulo 
58e28a4053SRui Paulo #endif /* AP_LIST_H */
59