Add metric for deleting clients

This commit is contained in:
PolynomialDivision 2017-07-24 20:20:43 +02:00
parent 7339a6ecbc
commit e9b02067eb
5 changed files with 171 additions and 78 deletions

View file

@ -14,60 +14,66 @@
#endif
#define SORT_NUM 5
#define TIME_THRESHOLD 5 // every minute
#define TIME_THRESHOLD 600 // every minute
// Probe entrys
typedef struct probe_entry_s {
uint8_t bssid_addr[ETH_ALEN];
uint8_t client_addr[ETH_ALEN];
uint8_t target_addr[ETH_ALEN];
uint32_t signal;
uint32_t freq;
uint8_t ht_support;
uint8_t vht_support;
time_t time;
int counter;
uint8_t bssid_addr[ETH_ALEN];
uint8_t client_addr[ETH_ALEN];
uint8_t target_addr[ETH_ALEN];
uint32_t signal;
uint32_t freq;
uint8_t ht_support;
uint8_t vht_support;
time_t time;
int counter;
} probe_entry;
typedef struct {
uint32_t freq;
uint32_t freq;
} client_request;
typedef struct client_s {
uint8_t bssid_addr[ETH_ALEN];
uint8_t client_addr[ETH_ALEN];
uint8_t ht_supported;
uint8_t vht_supported;
uint32_t freq;
uint8_t auth;
uint8_t assoc;
uint8_t authorized;
uint8_t preauth;
uint8_t wds;
uint8_t wmm;
uint8_t ht;
uint8_t vht;
uint8_t wps;
uint8_t mfp;
time_t time;
uint32_t aid;
uint8_t bssid_addr[ETH_ALEN];
uint8_t client_addr[ETH_ALEN];
uint8_t ht_supported;
uint8_t vht_supported;
uint32_t freq;
uint8_t auth;
uint8_t assoc;
uint8_t authorized;
uint8_t preauth;
uint8_t wds;
uint8_t wmm;
uint8_t ht;
uint8_t vht;
uint8_t wps;
uint8_t mfp;
time_t time;
uint32_t aid;
} client;
// Array
#define ARRAY_CLIENT_LEN 1000
#define TIME_THRESHOLD_CLIENT 5
#define TIME_THRESHOLD_CLIENT 10
#define TIME_THRESHOLD_CLIENT_UPDATE 5
struct client_s client_array[ARRAY_CLIENT_LEN];
pthread_mutex_t client_array_mutex;
void insert_client_to_array(client entry);
void kick_clients(uint8_t bssid[]);
void client_array_insert(client entry);
client* client_array_delete(client entry);
client *client_array_delete(client entry);
void print_client_array();
void print_client_entry(client entry);
void *remove_client_array_thread(void *arg);
#define ARRAY_LEN 1000
@ -76,38 +82,30 @@ struct probe_entry_s probe_array[ARRAY_LEN];
pthread_mutex_t probe_array_mutex;
void insert_to_array(probe_entry entry, int inc_counter);
void probe_array_insert(probe_entry entry);
probe_entry* probe_array_delete(probe_entry entry);
probe_entry *probe_array_delete(probe_entry entry);
void print_array();
void *remove_array_thread(void *arg);
// List
typedef struct node {
probe_entry data;
struct node *ptr;
probe_entry data;
struct node *ptr;
} node;
node *insert(node *head, probe_entry entry);
void free_list(node *head);
void print_list();
void insert_to_list(probe_entry entry, int inc_counter);
int mac_first_in_probe_list(uint8_t bssid_addr[], uint8_t client_addr[]);
void *remove_thread(void *arg);

View file

@ -8,7 +8,7 @@
int dawn_init_ubus(const char *ubus_socket, char *hostapd_dir);
int parse_to_probe_req(struct blob_attr *msg, probe_entry *prob_req);
int parse_to_clients(struct blob_attr *msg);
int parse_to_clients(struct blob_attr *msg, int do_kick);
void del_client(const uint8_t* client_addr, uint32_t reason, uint8_t deauth, uint32_t ban_time);
void *update_clients_thread(void *arg);