>Number:         145934
>Category:       bin
>Synopsis:       [patch] add count option to netstat
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Thu Apr 22 07:00:12 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Dmitry Banshchikov
>Release:        FreeBSD 8.0-RELEASE
>Organization:
>Environment:
>Description:
Allows user to specify -c for netstat, to repeat display output in case of -w 
option(Similar to -c option of iostat utility)

Example usage:
#./netstat -w2 -c3
            input        (Total)           output
   packets  errs      bytes    packets  errs      bytes colls
        20     0       1830          5     0        334     0
         9     0       3037          9     0       1246     0
        14     0       1268          7     0        658     0
#


>How-To-Repeat:

>Fix:


Patch attached with submission follows:

--- if.c        2009-10-25 04:10:29.000000000 +0300
+++ if.c        2010-04-21 11:32:15.000000000 +0400
@@ -676,6 +676,10 @@
        if (!first)
                putchar('\n');
        fflush(stdout);
+       if (cflag)
+               count--;
+       if (count < 0 && cflag)
+               exit(0);
        oldmask = sigblock(sigmask(SIGALRM));
        while (!signalled)
                sigpause(0);
--- main.c      2009-10-25 04:10:29.000000000 +0300
+++ main.c      2010-04-22 10:30:57.000000000 +0400
@@ -322,6 +322,7 @@
 int    aflag;          /* show all sockets (including servers) */
 int    Bflag;          /* show information about bpf consumers */
 int    bflag;          /* show i/f total bytes in/out */
+int    cflag;          /* repeat display */
 int    dflag;          /* show i/f dropped packets */
 int    gflag;          /* show group (multicast) routing or stats */
 int    hflag;          /* show counters in human readable format */
@@ -339,6 +340,7 @@
 int    zflag;          /* zero stats */
 
 int    interval;       /* repeat interval for i/f stats */
+int    count;          /* repeat display output */
 
 char   *interface;     /* desired i/f for stats, or NULL for all i/fs */
 int    unit;           /* unit number for above */
@@ -354,7 +356,7 @@
 
        af = AF_UNSPEC;
 
-       while ((ch = getopt(argc, argv, "AaBbdf:ghI:iLlM:mN:np:rSstuWw:xz")) != 
-1)
+       while ((ch = getopt(argc, argv, "AaBbc:df:ghI:iLlM:mN:np:rSstuWw:xz")) 
!= -1)
                switch(ch) {
                case 'A':
                        Aflag = 1;
@@ -368,6 +370,10 @@
                case 'b':
                        bflag = 1;
                        break;
+               case 'c':
+                       cflag = 1;
+                       count = atoi(optarg);
+                       break;
                case 'd':
                        dflag = 1;
                        break;
--- netstat.1   2009-10-25 04:10:29.000000000 +0300
+++ netstat.1   2010-04-22 10:27:40.000000000 +0400
@@ -132,6 +132,7 @@
 .Bk -words
 .Nm
 .Fl w Ar wait
+.Op Fl c Ar count
 .Op Fl I Ar interface
 .Op Fl d
 .Op Fl M Ar core
@@ -141,7 +142,9 @@
 At intervals of
 .Ar wait
 seconds,
-display the information regarding packet
+display
+.Ar count
+times the information regarding packet
 traffic on all configured network interfaces
 or a single
 .Ar interface .
--- netstat.h   2009-10-25 04:10:29.000000000 +0300
+++ netstat.h   2010-04-22 10:29:12.000000000 +0400
@@ -39,6 +39,7 @@
 extern int     Aflag;  /* show addresses of protocol control block */
 extern int     aflag;  /* show all sockets (including servers) */
 extern int     bflag;  /* show i/f total bytes in/out */
+extern int     cflag;  /* repeat display output */
 extern int     dflag;  /* show i/f dropped packets */
 extern int     gflag;  /* show group (multicast) routing or stats */
 extern int     hflag;  /* show counters in human readable format */
@@ -55,6 +56,7 @@
 extern int     zflag;  /* zero stats */
 
 extern int     interval; /* repeat interval for i/f stats */
+extern int     count;    /* repeat display output */
 
 extern char    *interface; /* desired i/f for stats, or NULL for all i/fs */
 extern int     unit;   /* unit number for above */


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
freebsd-bugs@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"

Reply via email to