Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Jan 2014 21:46:43 +0000 (UTC)
From:      "George V. Neville-Neil" <gnn@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r260791 - head/tools/tools/mcgrab
Message-ID:  <201401162146.s0GLkhdB015910@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: gnn
Date: Thu Jan 16 21:46:43 2014
New Revision: 260791
URL: http://svnweb.freebsd.org/changeset/base/260791

Log:
  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

Modified:
  head/tools/tools/mcgrab/mcgrab.cc

Modified: head/tools/tools/mcgrab/mcgrab.cc
==============================================================================
--- head/tools/tools/mcgrab/mcgrab.cc	Thu Jan 16 20:40:02 2014	(r260790)
+++ head/tools/tools/mcgrab/mcgrab.cc	Thu Jan 16 21:46:43 2014	(r260791)
@@ -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_add
 	
 	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);
 	
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201401162146.s0GLkhdB015910>