insert macs to list

This commit is contained in:
PolynomialDivision 2017-11-21 18:37:12 +01:00
parent 6eee1214a2
commit 1a2aa2c6e2
4 changed files with 77 additions and 2 deletions

2
files/mac_list Normal file
View file

@ -0,0 +1,2 @@
a4:2b:b0:de:f1:fd
f0:79:60:1c:26:f0

View file

@ -13,9 +13,22 @@
#define ETH_ALEN 6
#endif
/* Mac */
// ---------------- Defines -------------------
#define MAC_LIST_LENGTH 100
// ---------------- Structs ----------------
uint8_t mac_list[MAC_LIST_LENGTH][ETH_ALEN];
// ---------------- Functions ----------
void insert_macs_from_file();
/* Metric */
struct probe_metric_s dawn_metric;
// ---------------- Structs ----------------
struct probe_metric_s {
int ht_support;

View file

@ -108,7 +108,6 @@ int main(int argc, char **argv) {
sigaction(SIGTERM, &newSigAction, NULL); /* catch term signal */
sigaction(SIGINT, &newSigAction, NULL); /* catch interrupt signal */
gcrypt_init();
gcrypt_set_key_and_iv(shared_key, iv);

View file

@ -41,9 +41,12 @@ int probe_array_update_rssi(uint8_t bssid_addr[], uint8_t client_addr[], uint32_
int is_connected(uint8_t bssid_addr[], uint8_t client_addr[]);
int mac_in_maclist(uint8_t mac[]);
int probe_entry_last = -1;
int client_entry_last = -1;
int ap_entry_last = -1;
int mac_list_entry_last = -1;
void remove_probe_array_cb(struct uloop_timeout *t);
@ -134,7 +137,7 @@ int better_ap_available(uint8_t bssid_addr[], uint8_t client_addr[]) {
}
int kick_client(struct client_s client_entry) {
return better_ap_available(client_entry.bssid_addr, client_entry.client_addr);
return !mac_in_maclist(client_entry.client_addr) && better_ap_available(client_entry.bssid_addr, client_entry.client_addr);
}
void kick_clients(uint8_t bssid[], uint32_t id) {
@ -600,6 +603,64 @@ void insert_client_to_array(client entry) {
pthread_mutex_unlock(&client_array_mutex);
}
void insert_macs_from_file()
{
FILE * fp;
char * line = NULL;
size_t len = 0;
ssize_t read;
fp = fopen("/etc/config/dawn", "r");
if (fp == NULL)
exit(EXIT_FAILURE);
while ((read = getline(&line, &len, fp)) != -1) {
printf("Retrieved line of length %zu :\n", read);
printf("%s", line);
int tmp_int_mac[ETH_ALEN];
sscanf(line, MACSTR, STR2MAC(tmp_int_mac));
for (int i = 0; i < ETH_ALEN; ++i) {
mac_list[mac_list_entry_last][i] = (uint8_t) tmp_int_mac[i];
}
}
printf("Printing MAC List:\n");
for(int i = 0; i <= mac_list_entry_last; i++)
{
char mac_buf_target[20];
sprintf(mac_buf_target, MACSTR, MAC2STR(mac_list[0]));
printf("%d: %s\n", i, mac_buf_target);
}
fclose(fp);
if (line)
free(line);
exit(EXIT_SUCCESS);
}
int mac_in_maclist(uint8_t mac[])
{
for(int i = 0; i <= mac_list_entry_last; i++)
{
if(mac_is_equal(mac, mac_list[i]))
{
return 1;
}
}
return 0;
}
node *delete_probe_req(node **ret_remove, node *head, uint8_t bssid_addr[],
uint8_t client_addr[]);