18dbcf02cSchristos /* 28dbcf02cSchristos * hostapd / AP table 38dbcf02cSchristos * Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi> 48dbcf02cSchristos * Copyright (c) 2003-2004, Instant802 Networks, Inc. 58dbcf02cSchristos * Copyright (c) 2006, Devicescape Software, Inc. 68dbcf02cSchristos * 7e604d861Schristos * This software may be distributed under the terms of the BSD license. 8e604d861Schristos * See README for more details. 98dbcf02cSchristos */ 108dbcf02cSchristos 118dbcf02cSchristos #ifndef AP_LIST_H 128dbcf02cSchristos #define AP_LIST_H 138dbcf02cSchristos 148dbcf02cSchristos struct ap_info { 158dbcf02cSchristos /* Note: next/prev pointers are updated whenever a new beacon is 168dbcf02cSchristos * received because these are used to find the least recently used 173c260e60Schristos * entries. */ 188dbcf02cSchristos struct ap_info *next; /* next entry in AP list */ 198dbcf02cSchristos struct ap_info *prev; /* previous entry in AP list */ 208dbcf02cSchristos struct ap_info *hnext; /* next entry in hash table list */ 218dbcf02cSchristos u8 addr[6]; 228dbcf02cSchristos u8 supported_rates[WLAN_SUPP_RATES_MAX]; 238dbcf02cSchristos int erp; /* ERP Info or -1 if ERP info element not present */ 248dbcf02cSchristos 258dbcf02cSchristos int channel; 268dbcf02cSchristos 278dbcf02cSchristos int ht_support; 288dbcf02cSchristos 293c260e60Schristos struct os_reltime last_beacon; 308dbcf02cSchristos }; 318dbcf02cSchristos 328dbcf02cSchristos struct ieee802_11_elems; 338dbcf02cSchristos struct hostapd_frame_info; 348dbcf02cSchristos 358dbcf02cSchristos void ap_list_process_beacon(struct hostapd_iface *iface, 368dbcf02cSchristos const struct ieee80211_mgmt *mgmt, 378dbcf02cSchristos struct ieee802_11_elems *elems, 388dbcf02cSchristos struct hostapd_frame_info *fi); 398dbcf02cSchristos #ifdef NEED_AP_MLME 408dbcf02cSchristos int ap_list_init(struct hostapd_iface *iface); 418dbcf02cSchristos void ap_list_deinit(struct hostapd_iface *iface); 42*36ebd06eSchristos void ap_list_timer(struct hostapd_iface *iface); 438dbcf02cSchristos #else /* NEED_AP_MLME */ ap_list_init(struct hostapd_iface * iface)448dbcf02cSchristosstatic inline int ap_list_init(struct hostapd_iface *iface) 458dbcf02cSchristos { 468dbcf02cSchristos return 0; 478dbcf02cSchristos } 488dbcf02cSchristos ap_list_deinit(struct hostapd_iface * iface)498dbcf02cSchristosstatic inline void ap_list_deinit(struct hostapd_iface *iface) 508dbcf02cSchristos { 518dbcf02cSchristos } 52*36ebd06eSchristos ap_list_timer(struct hostapd_iface * iface)53*36ebd06eSchristosstatic inline void ap_list_timer(struct hostapd_iface *iface) 54*36ebd06eSchristos { 55*36ebd06eSchristos } 568dbcf02cSchristos #endif /* NEED_AP_MLME */ 578dbcf02cSchristos 588dbcf02cSchristos #endif /* AP_LIST_H */ 59