diff --git a/LICENSE b/LICENSE deleted file mode 100644 index 914ee49..0000000 --- a/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ - Copyright (c) 2012-2015 Matthieu Herrb - - Permission to use, copy, modify, and distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md index 9c3fb52..da2894e 100644 --- a/README.md +++ b/README.md @@ -5,29 +5,7 @@ echoc is a small network test program that sends UDP packets to the echo service (it should be activated in [x]inetd on the target host). echoc displays the start/end date of loss of connectivity. -Building --------- - -From git, run: - -``` -./autogen.sh -make -make install -``` - -From a source tarball, run: - -``` -./configure -make -make install -``` - -Licence -------- - -Echoc is distributed under the ISC license: +It is distributed under the ISC license: Copyright (c) 2012-2015 Matthieu Herrb diff --git a/autogen.sh b/autogen.sh deleted file mode 100755 index bb05f17..0000000 --- a/autogen.sh +++ /dev/null @@ -1,13 +0,0 @@ -#! /bin/sh -srcdir=`dirname "$0"` -test -z "$srcdir" && srcdir=. - -ORIGDIR=`pwd` -cd "$srcdir" - -autoreconf -v --install || exit 1 -cd "$ORIGDIR" || exit $? - -if test -z "$NOCONFIGURE"; then - exec "$srcdir"/configure "$@" -fi diff --git a/configure.ac b/configure.ac index f4e1c5d..bcd0906 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ -AC_PREREQ([2.71]) -AC_INIT([echoc],[0.6.99],[https://gitlab.laas.fr/matthieu/echoc],[echoc]) +AC_PREREQ([2.65]) +AC_INIT([echoc], 0.4, [https://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/echoc], echoc) AM_INIT_AUTOMAKE([foreign dist-bzip2]) AC_CONFIG_MACRO_DIR([m4]) AC_PROG_CC @@ -7,5 +7,4 @@ AC_PROG_CC AC_CHECK_HEADERS([bsd/stdlib.h]) AC_SEARCH_LIBS(strtonum, [bsd]) -AC_CONFIG_FILES([Makefile]) -AC_OUTPUT +AC_OUTPUT([Makefile]) diff --git a/echoc.c b/echoc.c index 269f4f6..a337cfe 100644 --- a/echoc.c +++ b/echoc.c @@ -37,7 +37,6 @@ int sock = -1; int verbose = 0; -int aborting = 0; struct sockaddr *server; socklen_t serverlen; unsigned int seq = 0; @@ -49,16 +48,11 @@ usage(void) errx(2, "usage: echoc [-c nbr][-d][-i ms][-l len][-p port][-t ms][-v] server"); } -static void -sigint_handler(int unused) -{ - aborting = 1; -} - static void send_packet(int unused) { - char *buf; + char *buf; + buf = malloc(len); if (buf == NULL) return; @@ -89,7 +83,7 @@ main(int argc, char *argv[]) struct tm *tm; struct pollfd pfd[1]; socklen_t addrlen; - long interval = 100; /* default interval (ms) */ + long interval = 100; /* default interval (ms) */ long timeout = 500; /* default timeout (ms) */ int ch; int nfds, received = 0; @@ -167,22 +161,6 @@ main(int argc, char *argv[]) disconnected = 0; memset(&client, 0, sizeof(client)); - recvbuf = malloc(len); - if (recvbuf == NULL) - err(2, "malloc receive buffer"); - -#ifdef IP_MTU_DISCOVER - /* set the DF flag ? */ - if (nofragment) - ch = IP_PMTUDISC_DO; - else - ch = IP_PMTUDISC_DONT; - if (setsockopt(sock, IPPROTO_IP, IP_MTU_DISCOVER, &ch, sizeof(ch)) < 0) - err(2, "setsockopt IP_MTU_DISCOVER"); -#endif - signal(SIGALRM, send_packet); - signal(SIGINT, sigint_handler); - /* timer values */ itv.it_interval.tv_usec = interval*1000; itv.it_interval.tv_sec = 0; @@ -191,14 +169,26 @@ main(int argc, char *argv[]) if (setitimer(ITIMER_REAL, &itv, NULL) == -1) err(2, "setitimer"); - gettimeofday(&last_ts, NULL); - tm = localtime((time_t *)&last_ts.tv_sec); - strftime(date, sizeof(date), "%F %T", tm); - printf("%s.%06ld: starting\n", date, last_ts.tv_usec); + signal(SIGALRM, send_packet); - while (!aborting) { + gettimeofday(&last_ts, NULL); + + recvbuf = malloc(len); + if (recvbuf == NULL) + err(2, "malloc receive buffer"); + +#ifdef IP_MTU_DISCOVER + /* set the DF flag ? */ + if (nofragment) + ch = IP_PMTUDISC_DO; + else + ch = IP_PMTUDISC_DONT; + if (setsockopt(sock, IPPROTO_IP, IP_MTU_DISCOVER, &ch, sizeof(ch)) < 0) + err(2, "setsockopt IP_MTU_DISCOVER"); +#endif + while (1) { /* poll() loop to handle interruptions by SIGALRM */ - while (!aborting) { + while (1) { pfd[0].fd = sock; pfd[0].events = POLLIN; nfds = poll(pfd, 1, timeout); @@ -214,8 +204,6 @@ main(int argc, char *argv[]) break; } } - if (aborting) - break; if ((nfds == 0)) { if (verbose) printf("%d packet(s) dropped in %ld.%06ld s\n", @@ -240,7 +228,7 @@ main(int argc, char *argv[]) if (verbose && (serverlen != addrlen || memcmp(&client, server, addrlen) != 0)) { if ((error = getnameinfo((struct sockaddr *)&client, - addrlen, name, sizeof(name), + addrlen, name, sizeof(name), NULL, 0, NI_DGRAM)) != 0) { warnx("%s", gai_strerror(error)); } else { @@ -271,12 +259,6 @@ main(int argc, char *argv[]) } } } - if (aborting) { - gettimeofday(&now, NULL); - tm = localtime((time_t *)&now.tv_sec); - strftime(date, sizeof(date), "%F %T", tm); - printf("%s.%06ld: aborting\n", date, now.tv_usec); - } close(sock); exit(0); }