summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorgnn <gnn@FreeBSD.org>2014-01-16 21:46:43 +0000
committergnn <gnn@FreeBSD.org>2014-01-16 21:46:43 +0000
commit06cb3d4dfd897c7a7ccc772f90d43da4b13194a1 (patch)
tree6d50080ffb753a593c6b461f05114f7bcc5be2d4 /tools
parent14cf77d37c9aa83835a19a1f1d43ceddc870828f (diff)
downloadFreeBSD-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.cc18
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);
}
OpenPOWER on IntegriCloud