Author: gnn
Date: Thu Dec 17 02:02:09 2015
New Revision: 292394
URL: https://svnweb.freebsd.org/changeset/base/292394

Log:
  Switch the IPsec related statistics to using the built in sysctl
  variable set rather than reading from kernel memory.
  This also makes the -z (zero) flag work correctly
  
  MFC after:    1 week
  Sponsored by: Rubicon Communications, LLC (Netgate)
  Differential Revision:        https://reviews.freebsd.org/D4591

Modified:
  head/usr.bin/netstat/ipsec.c
  head/usr.bin/netstat/main.c

Modified: head/usr.bin/netstat/ipsec.c
==============================================================================
--- head/usr.bin/netstat/ipsec.c        Thu Dec 17 01:33:45 2015        
(r292393)
+++ head/usr.bin/netstat/ipsec.c        Thu Dec 17 02:02:09 2015        
(r292394)
@@ -216,10 +216,17 @@ ipsec_stats(u_long off, const char *name
 {
        struct ipsecstat ipsecstat;
 
-       if (off == 0)
-               return;
+       if (strcmp(name, "ipsec6") == 0) {
+               if (fetch_stats("net.inet6.ipsec6.ipsecstats", off,&ipsecstat,
+                               sizeof(ipsecstat), kread_counters) != 0)
+                       return;
+       } else {
+               if (fetch_stats("net.inet.ipsec.ipsecstats", off, &ipsecstat,
+                               sizeof(ipsecstat), kread_counters) != 0)
+                       return;
+       }
+
        xo_emit("{T:/%s}:\n", name);
-       kread_counters(off, (char *)&ipsecstat, sizeof(ipsecstat));
 
        print_ipsecstats(&ipsecstat);
 }
@@ -318,10 +325,11 @@ ah_stats(u_long off, const char *name, i
 {
        struct ahstat ahstat;
 
-       if (off == 0)
+       if (fetch_stats("net.inet.ah.stats", off, &ahstat,
+           sizeof(ahstat), kread_counters) != 0)
                return;
+
        xo_emit("{T:/%s}:\n", name);
-       kread_counters(off, (char *)&ahstat, sizeof(ahstat));
 
        print_ahstats(&ahstat);
 }
@@ -377,10 +385,11 @@ esp_stats(u_long off, const char *name, 
 {
        struct espstat espstat;
 
-       if (off == 0)
+       if (fetch_stats("net.inet.esp.stats", off, &espstat,
+           sizeof(espstat), kread_counters) != 0)
                return;
+
        xo_emit("{T:/%s}:\n", name);
-       kread_counters(off, (char *)&espstat, sizeof(espstat));
 
        print_espstats(&espstat);
 }
@@ -434,10 +443,11 @@ ipcomp_stats(u_long off, const char *nam
 {
        struct ipcompstat ipcompstat;
 
-       if (off == 0)
+       if (fetch_stats("net.inet.ipcomp.stats", off, &ipcompstat,
+           sizeof(ipcompstat), kread_counters) != 0)
                return;
+
        xo_emit("{T:/%s}:\n", name);
-       kread_counters(off, (char *)&ipcompstat, sizeof(ipcompstat));
 
        print_ipcompstats(&ipcompstat);
 }

Modified: head/usr.bin/netstat/main.c
==============================================================================
--- head/usr.bin/netstat/main.c Thu Dec 17 01:33:45 2015        (r292393)
+++ head/usr.bin/netstat/main.c Thu Dec 17 02:02:09 2015        (r292394)
@@ -108,13 +108,13 @@ static struct protox {
          igmp_stats,   NULL,           "igmp", 1,      IPPROTO_IGMP },
 #ifdef IPSEC
        { -1,           N_IPSEC4STAT,   1,      NULL,   /* keep as compat */
-         ipsec_stats,  NULL,           "ipsec", 0,     0},
+         ipsec_stats,  NULL,           "ipsec", 1,     0},
        { -1,           N_AHSTAT,       1,      NULL,
-         ah_stats,     NULL,           "ah",   0,      0},
+         ah_stats,     NULL,           "ah",   1,      0},
        { -1,           N_ESPSTAT,      1,      NULL,
-         esp_stats,    NULL,           "esp",  0,      0},
+         esp_stats,    NULL,           "esp",  1,      0},
        { -1,           N_IPCOMPSTAT,   1,      NULL,
-         ipcomp_stats, NULL,           "ipcomp", 0,    0},
+         ipcomp_stats, NULL,           "ipcomp", 1,    0},
 #endif
        { N_RIPCBINFO,  N_PIMSTAT,      1,      protopr,
          pim_stats,    NULL,           "pim",  1,      IPPROTO_PIM },
@@ -146,7 +146,7 @@ static struct protox ip6protox[] = {
 #endif
 #ifdef IPSEC
        { -1,           N_IPSEC6STAT,   1,      NULL,
-         ipsec_stats,  NULL,           "ipsec6", 0,    0 },
+         ipsec_stats,  NULL,           "ipsec6", 1,    0 },
 #endif
 #ifdef notyet
        { -1,           N_PIM6STAT,     1,      NULL,
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to