From 47fc92eabc296f9232de40ba33be9c2931613c57 Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Thu, 22 Oct 2020 00:30:17 +0000 Subject: [PATCH] reordered makefile for linking compatibility, cast const to remove warning --- main.c | 39 ++++++++++++++++++--------------------- 1 files changed, 18 insertions(+), 21 deletions(-) diff --git a/main.c b/main.c index 2f86224..00d3e50 100644 --- a/main.c +++ b/main.c @@ -16,19 +16,6 @@ #define NUM_TESTS 10 -/* struct test_server_input { */ -/* int dns; */ -/* //struct hosts_list *hosts; */ -/* int num_hosts; */ -/* int num_tests; */ -/* }; */ - -/* struct progress_input { */ -/* int num_hosts; */ -/* int num_tests; */ -/* int num_servers; */ -/* }; */ - int test_dns(void); void *test_server(void *in); void *print_progress(void *in); @@ -43,13 +30,13 @@ int main(int argc, char** argv) { int option, added_hosts = 0; - while((option = getopt(argc, argv, "s:h:t:n:")) != -1) { + while((option = getopt(argc, argv, "s:a:t:n:h")) != -1) { switch (option) { case 's': //server to use add_dns_server(&servers, optarg); num_servers++; break; - case 'h': //hostname to search + case 'a': //hostname to search add_hosts_server(&hosts, optarg); added_hosts++; break; @@ -60,8 +47,15 @@ num_tests = atoi(optarg); break; case '?': + case 'h': default: - printf("Error: invalid option -%c\n", optopt); + printf("Usage: %s [options]\n", argv[0]); + printf("Options:\n"); + printf("\t-s <server>\tadd a DNS server to be tested\n"); + printf("\t-a <hostname>\tadd a hostname to be tested\n"); + printf("\t-t <number>\tspecify the number of hostnames to be tested, capped at 50 + number manually added\n\t\t\tdefaults to test all available\n"); + printf("\t-n <number>\tspecify the number of tests to perform on each hostname\n\t\t\tdefaults to 10\n"); + printf("\t-h\t\tShow this help\n"); free_dns_list(&servers); free_hosts_list(&hosts); exit(1); @@ -71,10 +65,10 @@ num_hosts = NUM_HOSTNAMES + added_hosts; } for (int i = added_hosts; i < num_hosts; i++) { - add_hosts_server(&hosts, HOSTNAMES[i-added_hosts]); + add_hosts_server(&hosts, (char*)HOSTNAMES[i-added_hosts]); } for (int i = 0; i < NUM_DNS; i++) { - add_dns_server(&servers, DNS_SERVERS[i]); + add_dns_server(&servers, (char*)DNS_SERVERS[i]); } test_dns(); sort_servers(&servers); @@ -117,10 +111,13 @@ struct hosts_list *curr = hosts; while (curr) { struct timespec run; + run.tv_sec = -1; run.tv_nsec = 0; unsigned char buf[65536]; - run = resolve(buf, curr->server, dns->server, T_A); - if (run.tv_sec == -1) //currently ignore failed tests, need to figure out what to do with them - continue; + for (int i = 0; i < 3 && run.tv_sec == -1; i++) { + run = resolve(buf, curr->server, dns->server, T_A); + } + if (run.tv_sec == -1) //if test has failed 3 times, set time taken to 3s as penalty + run.tv_sec = 3; dns->time.tv_sec += run.tv_sec; dns->time.tv_nsec += run.tv_nsec; if (dns->time.tv_nsec >= 1000000000) { //nanoseconds have overflowed into seconds -- Gitblit v1.10.0