mirror of
https://github.com/berlin-open-wireless-lab/DAWN.git
synced 2025-03-09 15:40:12 +00:00
Merge pull request #4 from berlin-open-wireless-lab/feature/time_config
Read time config from config file
This commit is contained in:
commit
de516c68d3
7 changed files with 85 additions and 11 deletions
|
@ -10,6 +10,11 @@ config settings ordering
|
|||
config settings hostapd
|
||||
option hostapd_dir '/var/run/hostapd'
|
||||
|
||||
config settings times
|
||||
option update_client '50'
|
||||
option remove_client '120'
|
||||
option remove_probe '120'
|
||||
|
||||
config settings metric
|
||||
option ht_support '10'
|
||||
option vht_support '50'
|
||||
|
|
|
@ -28,8 +28,14 @@ struct probe_metric_s {
|
|||
int min_probe_count;
|
||||
};
|
||||
|
||||
struct time_config_s {
|
||||
time_t update_client;
|
||||
time_t remove_client;
|
||||
time_t remove_probe;
|
||||
};
|
||||
|
||||
#define SORT_NUM 5
|
||||
#define TIME_THRESHOLD 30 // every minute
|
||||
#define TIME_THRESHOLD 120 // every minute
|
||||
|
||||
// Probe entrys
|
||||
typedef struct probe_entry_s {
|
||||
|
|
|
@ -3,4 +3,6 @@
|
|||
|
||||
struct probe_metric_s uci_get_dawn_metric();
|
||||
|
||||
struct time_config_s uci_get_time_config();
|
||||
|
||||
#endif //DAWN_UCI_H_H
|
||||
|
|
|
@ -187,6 +187,8 @@ int main(int argc, char **argv) {
|
|||
gcrypt_init();
|
||||
gcrypt_set_key_and_iv(shared_key, iv);
|
||||
|
||||
struct time_config_s time_config = uci_get_time_config();
|
||||
|
||||
if (pthread_mutex_init(&list_mutex, NULL) != 0) {
|
||||
printf("\n mutex init failed\n");
|
||||
return 1;
|
||||
|
@ -209,9 +211,9 @@ int main(int argc, char **argv) {
|
|||
|
||||
init_socket_runopts(opt_broadcast_ip, opt_broadcast_port, 1);
|
||||
|
||||
pthread_create(&tid_probe, NULL, &remove_array_thread, NULL);
|
||||
//pthread_create(&tid_client, NULL, &remove_client_array_thread, NULL);
|
||||
pthread_create(&tid_get_client, NULL, &update_clients_thread, NULL);
|
||||
pthread_create(&tid_probe, NULL, &remove_array_thread, (void*)&time_config.remove_probe);
|
||||
pthread_create(&tid_client, NULL, &remove_client_array_thread, (void*)&time_config.remove_client);
|
||||
pthread_create(&tid_get_client, NULL, &update_clients_thread, (void*)&time_config.update_client);
|
||||
//pthread_create(&tid_kick_clients, NULL, &kick_clients_thread, NULL);
|
||||
//pthread_create(&tid_ap, NULL, &remove_ap_array_thread, NULL);
|
||||
|
||||
|
|
|
@ -470,33 +470,39 @@ void remove_old_ap_entries(time_t current_time, long long int threshold) {
|
|||
}
|
||||
|
||||
void *remove_array_thread(void *arg) {
|
||||
printf("Removing thread with time: %lu\n", *(long int*)arg);
|
||||
time_t time_treshold = *(time_t*)arg;
|
||||
while (1) {
|
||||
sleep(TIME_THRESHOLD);
|
||||
sleep(time_treshold);
|
||||
pthread_mutex_lock(&probe_array_mutex);
|
||||
printf("[Thread] : Removing old entries!\n");
|
||||
remove_old_probe_entries(time(0), TIME_THRESHOLD);
|
||||
remove_old_probe_entries(time(0), time_treshold);
|
||||
pthread_mutex_unlock(&probe_array_mutex);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *remove_client_array_thread(void *arg) {
|
||||
time_t time_treshold_client = *(time_t*)arg;
|
||||
printf("Removing client thread with time: %lu\n", time_treshold_client);
|
||||
while (1) {
|
||||
sleep(TIME_THRESHOLD_CLIENT);
|
||||
sleep(time_treshold_client);
|
||||
pthread_mutex_lock(&client_array_mutex);
|
||||
printf("[Thread] : Removing old client entries!\n");
|
||||
remove_old_client_entries(time(0), TIME_THRESHOLD_CLIENT);
|
||||
remove_old_client_entries(time(0), time_treshold_client);
|
||||
pthread_mutex_unlock(&client_array_mutex);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void *remove_ap_array_thread(void *arg) {
|
||||
time_t time_treshold_ap = *(time_t*)arg;
|
||||
printf("Removing ap thread with time: %lu\n", time_treshold_ap);
|
||||
while (1) {
|
||||
sleep(TIME_THRESHOLD_AP);
|
||||
sleep(time_treshold_ap);
|
||||
pthread_mutex_lock(&ap_array_mutex);
|
||||
printf("[Thread] : Removing old ap entries!\n");
|
||||
remove_old_ap_entries(time(0), TIME_THRESHOLD_AP);
|
||||
remove_old_ap_entries(time(0), time_treshold_ap);
|
||||
pthread_mutex_unlock(&ap_array_mutex);
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -13,6 +13,56 @@ dawn.metric.freq
|
|||
|
||||
*/
|
||||
|
||||
/*
|
||||
config settings times
|
||||
option update_client '50'
|
||||
option remove_client '120'
|
||||
option remove_probe '120'
|
||||
*/
|
||||
|
||||
struct time_config_s uci_get_time_config()
|
||||
{
|
||||
struct time_config_s ret;
|
||||
|
||||
struct uci_context *c;
|
||||
struct uci_ptr ptr;
|
||||
|
||||
c = uci_alloc_context ();
|
||||
|
||||
printf("Loading TImes!");
|
||||
|
||||
|
||||
char tmp_update_client[] = "dawn.times.update_client";
|
||||
if (uci_lookup_ptr (c, &ptr, tmp_update_client, 1) != UCI_OK) {
|
||||
uci_perror(c, "uci_get_daw_metric Error");
|
||||
return ret;
|
||||
}
|
||||
if(ptr.o->type == UCI_TYPE_STRING)
|
||||
ret.update_client = atoi(ptr.o->v.string);
|
||||
|
||||
char tmp_remove_client[] = "dawn.times.remove_client";
|
||||
if (uci_lookup_ptr (c, &ptr, tmp_remove_client, 1) != UCI_OK) {
|
||||
uci_perror(c, "uci_get_daw_metric Error");
|
||||
return ret;
|
||||
}
|
||||
if(ptr.o->type == UCI_TYPE_STRING)
|
||||
ret.remove_client = atoi(ptr.o->v.string);
|
||||
|
||||
char tmp_remove_probe[] = "dawn.times.remove_probe";
|
||||
if (uci_lookup_ptr (c, &ptr, tmp_remove_probe, 1) != UCI_OK) {
|
||||
uci_perror(c, "uci_get_daw_metric Error");
|
||||
return ret;
|
||||
}
|
||||
if(ptr.o->type == UCI_TYPE_STRING)
|
||||
ret.remove_probe = atoi(ptr.o->v.string);
|
||||
|
||||
printf("Times: %lu, %lu, %lu\n", ret.update_client, ret.remove_client, ret.remove_probe);
|
||||
|
||||
uci_free_context(c);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
struct probe_metric_s uci_get_dawn_metric()
|
||||
{
|
||||
struct probe_metric_s ret;
|
||||
|
|
|
@ -515,11 +515,14 @@ static int ubus_get_clients() {
|
|||
}
|
||||
|
||||
void *update_clients_thread(void *arg) {
|
||||
time_t time_update_client = *(time_t*)arg;
|
||||
printf("Update client thread with time: %lu\n", time_update_client);
|
||||
|
||||
const char *ubus_socket = NULL;
|
||||
ctx_clients = ubus_connect(ubus_socket);
|
||||
|
||||
while (1) {
|
||||
sleep(TIME_THRESHOLD_CLIENT_UPDATE);
|
||||
sleep(time_update_client);
|
||||
printf("[Thread] : Kicking clients!\n");
|
||||
ubus_get_clients();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue