implement 802.11v/k

This commit is contained in:
Polynomialdivision 2020-04-10 13:58:24 +02:00
parent 899eae05f0
commit 0fbef59869
7 changed files with 451 additions and 31 deletions

View file

@ -63,6 +63,10 @@ struct probe_metric_s {
int min_kick_count;
int chan_util_avg_period;
int kicking;
int op_class;
int duration;
int mode;
int scan_channel;
};
struct time_config_s {
@ -74,6 +78,7 @@ struct time_config_s {
time_t update_tcp_con;
time_t denied_req_threshold;
time_t update_chan_util;
time_t update_beacon_reports;
};
struct network_config_s {
@ -113,6 +118,8 @@ typedef struct probe_entry_s {
int deny_counter;
uint8_t max_supp_datarate;
uint8_t min_supp_datarate;
uint32_t rcpi;
uint32_t rsni;
} probe_entry;
typedef struct auth_entry_s {
@ -142,13 +149,14 @@ auth_entry insert_to_denied_req_array(auth_entry entry, int inc_counter);
#define PROBE_ARRAY_LEN 1000
#define SSID_MAX_LEN 32
#define NEIGHBOR_REPORT_LEN 200
// ---------------- Global variables ----------------
struct probe_entry_s probe_array[PROBE_ARRAY_LEN];
pthread_mutex_t probe_array_mutex;
// ---------------- Functions ----------------
probe_entry insert_to_array(probe_entry entry, int inc_counter);
probe_entry insert_to_array(probe_entry entry, int inc_counter, int save_80211k);
void probe_array_insert(probe_entry entry);
@ -201,6 +209,7 @@ typedef struct ap_s {
time_t time;
uint32_t station_count;
uint8_t ssid[SSID_MAX_LEN];
char neighbor_report[NEIGHBOR_REPORT_LEN];
uint32_t collision_domain;
uint32_t bandwidth;
uint32_t ap_weight;
@ -226,6 +235,10 @@ int mac_is_greater(uint8_t addr1[], uint8_t addr2[]);
// ---------------- Functions ----------------
int probe_array_update_rssi(uint8_t bssid_addr[], uint8_t client_addr[], uint32_t rssi, int send_network);
int probe_array_update_rcpi_rsni(uint8_t bssid_addr[], uint8_t client_addr[], uint32_t rcpi, uint32_t rsni, int send_network);
void insert_client_to_array(client entry);
void kick_clients(uint8_t bssid[], uint32_t id);
@ -252,6 +265,8 @@ int probe_array_set_all_probe_count(uint8_t client_addr[], uint32_t probe_count)
int ap_get_collision_count(int col_domain);
void send_beacon_reports(uint8_t bssid[], int id);
/* Utils */
// ---------------- Defines -------------------
@ -261,7 +276,6 @@ int ap_get_collision_count(int col_domain);
char *sort_string;
// ---------------- Functions -------------------
int better_ap_available(uint8_t bssid_addr[], uint8_t client_addr[], int automatic_kick);
int better_ap_available(uint8_t bssid_addr[], uint8_t client_addr[], char* neighbor_report, int automatic_kick);
#endif

View file

@ -103,6 +103,8 @@ void del_client_interface(uint32_t id, const uint8_t *client_addr, uint32_t reas
*/
void del_client_all_interfaces(const uint8_t *client_addr, uint32_t reason, uint8_t deauth, uint32_t ban_time);
void wnm_disassoc_imminent(uint32_t id, const uint8_t *client_addr, char* dest_ap, uint32_t duration);
/**
* Send probe message via the network.
* @param probe_entry
@ -162,4 +164,6 @@ int send_add_mac(uint8_t *client_addr);
int uci_send_via_network();
void ubus_send_beacon_report(uint8_t client[], int id);
#endif

View file

@ -47,4 +47,6 @@ void write_mac_to_file(char *path, uint8_t addr[]);
*/
int string_is_greater(uint8_t *str, uint8_t *str_2);
int rcpi_to_rssi(int rcpi);
#endif