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);
        
 }
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to