diff options
| author | Dimitri Staessens <dimitri.staessens@ugent.be> | 2018-06-06 10:07:02 +0200 | 
|---|---|---|
| committer | Sander Vrijders <sander.vrijders@ugent.be> | 2018-06-06 11:17:42 +0200 | 
| commit | e6ce5160d4de293e69e7d97ddc380ccbc59f16d5 (patch) | |
| tree | e061c1af79bb7fb88481fcbb8afb11dca2ce15ad | |
| parent | ee9bfbed3726140d5601521de7ce8d003c453fb5 (diff) | |
| download | ouroboros-e6ce5160d4de293e69e7d97ddc380ccbc59f16d5.tar.gz ouroboros-e6ce5160d4de293e69e7d97ddc380ccbc59f16d5.zip | |
tools: Add quiet option to oping
This adds a --quiet -Q option to oping so it will only print the
statistics summary. Also fixes a division by 0 if duration is
specified with interval 0.
Signed-off-by: Dimitri Staessens <dimitri.staessens@ugent.be>
Signed-off-by: Sander Vrijders <sander.vrijders@ugent.be>
| -rw-r--r-- | src/tools/oping/oping.c | 15 | ||||
| -rw-r--r-- | src/tools/oping/oping_client.c | 35 | 
2 files changed, 32 insertions, 18 deletions
| diff --git a/src/tools/oping/oping.c b/src/tools/oping/oping.c index 757bd422..18801c2d 100644 --- a/src/tools/oping/oping.c +++ b/src/tools/oping/oping.c @@ -78,6 +78,7 @@ struct c {          uint32_t sent;          uint32_t rcvd;          size_t   ooo; +        bool     quiet;          double rtt_min;          double rtt_max; @@ -123,6 +124,7 @@ static void usage(void)                 "  -n, --server-name         Name of the oping server\n"                 "  -q, --qos                 QoS (raw, best, video or voice)\n"                 "  -s, --size                Payload size (B, default 64)\n" +               "  -Q, --quiet               Only print final statistics\n"                 "  -D, --timeofday           Print time of day before each line"                 "\n"                 "      --help                Display this help text and exit\n"); @@ -166,6 +168,7 @@ int main(int     argc,          client.count     = INT_MAX;          client.timestamp = false;          client.qs        = qos_raw; +        client.quiet     = false;          while (argc > 0) {                  if (strcmp(*argv, "-i") == 0 || @@ -200,6 +203,10 @@ int main(int     argc,                  } else if (strcmp(*argv, "-D") == 0 ||                             strcmp(*argv, "--timeofday") == 0) {                          client.timestamp = true; +                } else if (strcmp(*argv, "-Q") == 0 || +                           strcmp(*argv, "--quiet") == 0) { +                        client.quiet = true; +                  } else {                          goto fail;                  } @@ -207,8 +214,12 @@ int main(int     argc,                  argv++;          } -        if (duration > 0) -                client.count = duration / client.interval; +        if (duration > 0) { +                if (client.interval == 0) +                        client.count = duration * 10; +                else +                        client.count = duration / client.interval; +        }          if (qos != NULL) {                  if (strcmp(qos, "best") == 0) diff --git a/src/tools/oping/oping_client.c b/src/tools/oping/oping_client.c index e777d4cc..0f7695b5 100644 --- a/src/tools/oping/oping_client.c +++ b/src/tools/oping/oping_client.c @@ -102,23 +102,25 @@ void * reader(void * o)                  ms = ts_diff_us(&sent, &now) / 1000.0; -                if (client.timestamp) { -                        struct timespec rtc; -                        clock_gettime(CLOCK_REALTIME, &rtc); -                        printf("[%zd.%06zu] ", -                               (ssize_t) rtc.tv_sec, -                               (size_t) rtc.tv_nsec / 1000); -                } -                  if (id < exp_id)                          ++client.ooo; -                printf("%d bytes from %s: seq=%d time=%.3f ms%s\n", -                       msg_len, -                       client.s_apn, -                       ntohl(msg->id), -                       ms, -                       id < exp_id ? " [out-of-order]" : ""); +                if (!client.quiet) { +                        if (client.timestamp) { +                                struct timespec rtc; +                                clock_gettime(CLOCK_REALTIME, &rtc); +                                printf("[%zd.%06zu] ", +                                       (ssize_t) rtc.tv_sec, +                                       (size_t) rtc.tv_nsec / 1000); +                        } + +                        printf("%d bytes from %s: seq=%d time=%.3f ms%s\n", +                               msg_len, +                               client.s_apn, +                               ntohl(msg->id), +                               ms, +                               id < exp_id ? " [out-of-order]" : ""); +                }                  if (ms < client.rtt_min)                          client.rtt_min = ms; @@ -157,8 +159,9 @@ void * writer(void * o)          msg = (struct oping_msg *) buf; -        printf("Pinging %s with %d bytes of data:\n\n", -               client.s_apn, client.size); +        if (!client.quiet) +                printf("Pinging %s with %d bytes of data (%u packets):\n\n", +                       client.s_apn, client.size, client.count);          pthread_cleanup_push((void (*) (void *)) free, buf); | 
