ap_list.h revision c5ec7f57ead87efa365800228aa0b09a12d9e6c4
18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * hostapd / AP table
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2003-2004, Instant802 Networks, Inc.
58d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2006, Devicescape Software, Inc.
68d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
7c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
8c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef AP_LIST_H
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define AP_LIST_H
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ap_info {
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	/* Note: next/prev pointers are updated whenever a new beacon is
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	 * received because these are used to find the least recently used
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	 * entries. iter_next/iter_prev are updated only when adding new BSSes
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	 * and when removing old ones. These should be used when iterating
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	 * through the table in a manner that allows beacons to be received
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	 * during the iteration. */
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct ap_info *next; /* next entry in AP list */
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct ap_info *prev; /* previous entry in AP list */
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct ap_info *hnext; /* next entry in hash table list */
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct ap_info *iter_next; /* next entry in AP iteration list */
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct ap_info *iter_prev; /* previous entry in AP iteration list */
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 addr[6];
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u16 beacon_int;
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u16 capability;
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 supported_rates[WLAN_SUPP_RATES_MAX];
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	u8 ssid[33];
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	size_t ssid_len;
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int wpa;
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int erp; /* ERP Info or -1 if ERP info element not present */
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int channel;
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int datarate; /* in 100 kbps */
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int ssi_signal;
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int ht_support;
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	unsigned int num_beacons; /* number of beacon frames received */
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	os_time_t last_beacon;
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int already_seen; /* whether API call AP-NEW has already fetched
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			   * information about this AP */
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ieee802_11_elems;
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct hostapd_frame_info;
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstruct ap_info * ap_get_ap(struct hostapd_iface *iface, const u8 *sta);
528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint ap_ap_for_each(struct hostapd_iface *iface,
538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt		   int (*func)(struct ap_info *s, void *data), void *data);
548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid ap_list_process_beacon(struct hostapd_iface *iface,
558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			    const struct ieee80211_mgmt *mgmt,
568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			    struct ieee802_11_elems *elems,
578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt			    struct hostapd_frame_info *fi);
588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef NEED_AP_MLME
598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtint ap_list_init(struct hostapd_iface *iface);
608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtvoid ap_list_deinit(struct hostapd_iface *iface);
618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#else /* NEED_AP_MLME */
628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline int ap_list_init(struct hostapd_iface *iface)
638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	return 0;
658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtstatic inline void ap_list_deinit(struct hostapd_iface *iface)
688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}
708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* NEED_AP_MLME */
718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* AP_LIST_H */
73