diff options
author | gnn <gnn@FreeBSD.org> | 2014-01-16 21:46:43 +0000 |
---|---|---|
committer | gnn <gnn@FreeBSD.org> | 2014-01-16 21:46:43 +0000 |
commit | 06cb3d4dfd897c7a7ccc772f90d43da4b13194a1 (patch) | |
tree | 6d50080ffb753a593c6b461f05114f7bcc5be2d4 /tools | |
parent | 14cf77d37c9aa83835a19a1f1d43ceddc870828f (diff) | |
download | FreeBSD-src-06cb3d4dfd897c7a7ccc772f90d43da4b13194a1.zip FreeBSD-src-06cb3d4dfd897c7a7ccc772f90d43da4b13194a1.tar.gz |
Add a command line argument to turn off blocking waiting for the user
to press Ctrl-C (-b). This allows tests with tight loops of mcgrabs
that can stress the multicast tables.
MFC after: 2 weeks
Diffstat (limited to 'tools')
-rw-r--r-- | tools/tools/mcgrab/mcgrab.cc | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/tools/tools/mcgrab/mcgrab.cc b/tools/tools/mcgrab/mcgrab.cc index 5522f30..35687b8 100644 --- a/tools/tools/mcgrab/mcgrab.cc +++ b/tools/tools/mcgrab/mcgrab.cc @@ -88,7 +88,7 @@ void usage(string message) // // @return 0 for 0K, -1 for error, sets errno // -void grab(char *interface, struct in_addr *group, int number) { +void grab(char *interface, struct in_addr *group, int number, int block) { int sock; @@ -138,8 +138,10 @@ void grab(char *interface, struct in_addr *group, int number) { group->s_addr = htonl(ntohl(group->s_addr) + 1); } - printf("Press Control-C to exit.\n"); - sleep(INT_MAX); + if (block > 0) { + printf("Press Control-C to exit.\n"); + sleep(INT_MAX); + } } @@ -160,11 +162,12 @@ int main(int argc, char**argv) char* interface = 0; ///< Name of the interface struct in_addr *group = NULL; ///< the multicast group address int number = 0; ///< Number of addresses to grab + int block = 1; ///< Do we block or just return? - if (argc != 7) + if ((argc < 7) || (argc > 8)) usage(); - while ((ch = getopt(argc, argv, "g:i:n:h")) != -1) { + while ((ch = getopt(argc, argv, "g:i:n:bh")) != -1) { switch (ch) { case 'g': group = new (struct in_addr ); @@ -178,12 +181,15 @@ int main(int argc, char**argv) case 'n': number = atoi(optarg); break; + case 'b': + block = 0; + break; case 'h': usage(string("Help\n")); break; } } - grab(interface, group, number); + grab(interface, group, number, block); } |