add programm startup arguments

This commit is contained in:
Martin/Geno 2018-07-24 19:53:57 +02:00
parent a2bc53241c
commit 081967e141
No known key found for this signature in database
GPG Key ID: 9D7D3C6BFF600C6A
2 changed files with 111 additions and 4 deletions

View File

@ -1,6 +1,8 @@
#ifndef __WIFICTLD_LOG_H #ifndef __WIFICTLD_LOG_H
#define __WIFICTLD_LOG_H #define __WIFICTLD_LOG_H
#define BOOL2STR(v) (v)? "true" : "false"
void log_info(const char *format, ...); void log_info(const char *format, ...);
void log_verbose(const char *format, ...); void log_verbose(const char *format, ...);
void log_debug(const char *format, ...); void log_debug(const char *format, ...);

View File

@ -4,6 +4,47 @@
#include "wifi_clients.h" #include "wifi_clients.h"
#include "ubus.h" #include "ubus.h"
struct option longopts[] = {
{"verbose", no_argument, 0, 'v'},
{"help", no_argument, 0, 'h'},
// Bandsteering options
{"try", required_argument, 0, 't'},
{"signal", required_argument, 0, 's'},
{"force", optional_argument, 0, 'f'},
{"force-probe", optional_argument, 0, 1},
{"probe", optional_argument, 0, 'p'},
{"probe-learning", optional_argument, 0, 2},
// memory options
{"clean-every", required_argument, 0, 3},
{"clean-older-then", required_argument, 0, 4},
{"clean-authed", optional_argument, 0, 5},
};
void usage(int c) {
printf("Usage: wifictld ...\n");
#ifdef DEBUG
printf(" -v|--verbose log verbose and debug (current: %s)\n", BOOL2STR(config_verbose));
#else
printf(" -v|--verbose log verbose (current: %s)\n", BOOL2STR(config_verbose));
#endif
printf(" -h|--help show this help text\n");
printf("\nbandsteering options:\n");
printf(" -t|--try threashold till allow (current: %d)\n", config_client_try_threashold);
printf(" -s|--signal threashold to allow (current: %d)\n", config_client_signal_threashold);
printf(" -f|--force force steering (current: %s)\n", BOOL2STR(config_client_force));
printf(" --force-probe force steering only for probes (current: %s)\n", BOOL2STR(config_client_force_probe));
printf(" -p|--probe probe-steering (current: %s)\n", BOOL2STR(config_client_probe_steering));
printf(" --probe-learning probe-learing (current: %s)\n", BOOL2STR(config_client_probe_learning));
printf(" (parameter ignored if probe-steering on)\n");
printf("\nmemory cleanup options:\n");
printf(" --clean-every run cleaning every (current: %ds)\n", config_client_clean_every);
printf(" --clean-older-then clean unseen for secound (current: %ds)\n", config_client_clean_older_then);
printf(" --clean-authed clean already authed also (not only learned by probes) (current: %s)\n", BOOL2STR(config_client_clean_authed));
printf("\nConfig could be changed by ubus, see `ubus -v list wifictld`\n");
if(c)
printf("Invalid parameter %c ignored.\n", c);
}
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int ret = 0; int ret = 0;
@ -14,14 +55,78 @@ int main(int argc, char *argv[])
log_info("start wifictld (full)\n"); log_info("start wifictld (full)\n");
#endif #endif
int c = 0; int c = 0, indexptr = 0;
while ((c = getopt(argc, argv, "v")) != -1) { while ((c = getopt_long(argc, argv, "vht:s:fp",longopts, &indexptr)) != -1) {
switch (c) { switch (c) {
case 'v': case 'v':
config_verbose = 1; config_verbose = !config_verbose;
break;
case 'h':
usage(0);
return 0;
// Bandsteering options
case 't':
config_client_try_threashold = atoi(optarg);
if (config_client_try_threashold < 0) {
printf("negativ tries count not supported\n");
return 1;
}
break;
case 's':
config_client_signal_threashold = atoi(optarg);
if (config_client_signal_threashold > 0) {
printf("prositiv signal not supported\n");
return 1;
}
break;
case 'f':
if(optarg)
config_client_force = atoi(optarg);
else
config_client_force = !config_client_force;
break;
case 1:
if(optarg)
config_client_force_probe = atoi(optarg);
else
config_client_force_probe = !config_client_force_probe;
break;
case 'p':
if(optarg)
config_client_probe_steering = atoi(optarg);
else
config_client_probe_steering = !config_client_probe_steering;
break;
case 2:
if(optarg)
config_client_probe_learning = atoi(optarg);
else
config_client_probe_learning = !config_client_probe_learning;
break;
// memory options
case 3:
config_client_clean_every = atoi(optarg);
if (config_client_clean_every < 0) {
printf("negativ time not supported\n");
return 1;
}
break;
case 4:
config_client_clean_older_then = atoi(optarg);
if (config_client_clean_older_then < 0) {
printf("negativ time not supported\n");
return 1;
}
break;
case 5:
if(optarg)
config_client_clean_authed = atoi(optarg);
else
config_client_clean_authed = !config_client_clean_authed;
break; break;
default: default:
log_error("Invalid parameter %c ignored.\n", c); usage(c);
return 1;
} }
} }