2014-04-02 22:40:04 +02:00
|
|
|
#ifndef __AC_WLANS_HEADER__
|
|
|
|
#define __AC_WLANS_HEADER__
|
|
|
|
|
2014-04-06 17:02:31 +02:00
|
|
|
#include "ieee80211.h"
|
|
|
|
|
2014-04-14 22:33:12 +02:00
|
|
|
/* */
|
|
|
|
#define RADIOID_ANY 0
|
|
|
|
|
2014-04-06 17:02:31 +02:00
|
|
|
/* */
|
|
|
|
#define AC_WLANS_STATIONS_HASH_SIZE 256
|
|
|
|
#define AC_WLANS_STATIONS_KEY_SIZE MACADDRESS_EUI48_LENGTH
|
|
|
|
|
2014-04-02 22:40:04 +02:00
|
|
|
/* AC WLAN */
|
|
|
|
struct ac_wlan {
|
2014-04-14 22:33:12 +02:00
|
|
|
struct capwap_list_item* wlanitem;
|
|
|
|
|
2014-04-02 22:40:04 +02:00
|
|
|
uint8_t bssid[MACADDRESS_EUI48_LENGTH];
|
2014-04-06 17:02:31 +02:00
|
|
|
uint8_t radioid;
|
2014-04-02 22:40:04 +02:00
|
|
|
uint8_t wlanid;
|
|
|
|
|
|
|
|
/* CAPWAP Session */
|
|
|
|
struct ac_session_t* session;
|
|
|
|
struct ac_session_data_t* sessiondata;
|
|
|
|
|
2014-04-06 17:02:31 +02:00
|
|
|
/* Stations reference */
|
|
|
|
struct capwap_list* stations;
|
|
|
|
|
2014-04-02 22:40:04 +02:00
|
|
|
/* Capability */
|
|
|
|
uint16_t capability;
|
|
|
|
uint8_t keyindex;
|
|
|
|
uint8_t keystatus;
|
|
|
|
uint16_t keylength;
|
|
|
|
uint8_t* key;
|
|
|
|
uint8_t grouptsc[CAPWAP_ADD_WLAN_GROUPTSC_LENGTH];
|
|
|
|
uint8_t qos;
|
|
|
|
uint8_t authmode;
|
|
|
|
uint8_t macmode;
|
|
|
|
uint8_t tunnelmode;
|
|
|
|
uint8_t suppressssid;
|
|
|
|
uint8_t* ssid;
|
|
|
|
};
|
|
|
|
|
2014-04-14 22:33:12 +02:00
|
|
|
/* */
|
|
|
|
#define AC_STATION_FLAGS_AUTHENTICATED 0x00000001
|
|
|
|
#define AC_STATION_FLAGS_ASSOCIATE 0x00000002
|
|
|
|
#define AC_STATION_FLAGS_AUTHORIZED 0x00000004
|
|
|
|
|
2014-04-02 22:40:04 +02:00
|
|
|
/* AC Station */
|
|
|
|
struct ac_station {
|
|
|
|
uint8_t address[MACADDRESS_EUI48_LENGTH];
|
2014-04-14 22:33:12 +02:00
|
|
|
unsigned long flags;
|
2014-04-02 22:40:04 +02:00
|
|
|
|
|
|
|
/* Reference of WLAN */
|
2014-04-06 17:02:31 +02:00
|
|
|
struct ac_wlan* wlan;
|
|
|
|
struct capwap_list_item* wlanitem;
|
2014-04-14 22:33:12 +02:00
|
|
|
|
|
|
|
/* */
|
|
|
|
uint16_t capability;
|
|
|
|
uint16_t listeninterval;
|
|
|
|
uint16_t aid;
|
|
|
|
|
|
|
|
/* */
|
|
|
|
int supportedratescount;
|
|
|
|
uint8_t supportedrates[IEEE80211_SUPPORTEDRATE_MAX_COUNT];
|
|
|
|
|
|
|
|
/* Authentication */
|
|
|
|
uint16_t authalgorithm;
|
2014-04-02 22:40:04 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
/* */
|
|
|
|
struct ac_wlans {
|
|
|
|
struct capwap_list* wlans[RADIOID_MAX_COUNT];
|
2014-04-06 17:02:31 +02:00
|
|
|
|
|
|
|
/* Stations */
|
|
|
|
struct capwap_hash* stations;
|
2014-04-02 22:40:04 +02:00
|
|
|
};
|
|
|
|
|
2014-04-06 17:02:31 +02:00
|
|
|
/* Management WLANS */
|
2014-04-14 22:33:12 +02:00
|
|
|
void ac_wlans_init(struct ac_session_data_t* sessiondata);
|
|
|
|
void ac_wlans_destroy(struct ac_session_data_t* sessiondata);
|
2014-04-02 22:40:04 +02:00
|
|
|
|
|
|
|
/* */
|
2014-04-14 22:33:12 +02:00
|
|
|
struct ac_wlan* ac_wlans_create_bssid(uint8_t radioid, uint8_t wlanid, const uint8_t* bssid, struct capwap_80211_addwlan_element* addwlan);
|
|
|
|
int ac_wlans_assign_bssid(struct ac_session_data_t* sessiondata, struct ac_wlan* wlan);
|
|
|
|
struct ac_wlan* ac_wlans_get_bssid(struct ac_session_data_t* sessiondata, uint8_t radioid, const uint8_t* bssid);
|
|
|
|
struct ac_wlan* ac_wlans_get_bssid_with_wlanid(struct ac_session_data_t* sessiondata, uint8_t radioid, uint8_t wlanid);
|
|
|
|
void ac_wlans_delete_bssid(struct ac_session_data_t* sessiondata, uint8_t radioid, const uint8_t* bssid);
|
2014-04-02 22:40:04 +02:00
|
|
|
|
2014-04-06 17:02:31 +02:00
|
|
|
/* Management Stations */
|
2014-04-14 22:33:12 +02:00
|
|
|
struct ac_station* ac_stations_create_station(struct ac_session_data_t* sessiondata, uint8_t radioid, const uint8_t* bssid, const uint8_t* address);
|
|
|
|
struct ac_station* ac_stations_get_station(struct ac_session_data_t* sessiondata, uint8_t radioid, const uint8_t* bssid, const uint8_t* address);
|
|
|
|
void ac_stations_delete_station(struct ac_session_data_t* sessiondata, struct ac_station* station);
|
|
|
|
void ac_stations_authorize_station(struct ac_session_data_t* sessiondata, struct ac_station* station);
|
|
|
|
void ac_stations_deauthorize_station(struct ac_session_data_t* sessiondata, struct ac_station* station);
|
2014-04-06 17:02:31 +02:00
|
|
|
|
2014-04-02 22:40:04 +02:00
|
|
|
#endif /* __AC_WLANS_HEADER__ */
|