Here is the patch with the fixed typo.

Index: sys/netinet6/in6_proto.c
===================================================================
--- sys/netinet6/in6_proto.c    (revision 224466)
+++ sys/netinet6/in6_proto.c    (working copy)
@@ -515,7 +515,7 @@
        &VNET_NAME(ip6_sendredirects), 0, "");
 SYSCTL_VNET_INT(_net_inet6_ip6, IPV6CTL_DEFHLIM, hlim, CTLFLAG_RW,
        &VNET_NAME(ip6_defhlim), 0, "");
-SYSCTL_VNET_STRUCT(_net_inet6_ip6, IPV6CTL_STATS, stats, CTLFLAG_RD,
+SYSCTL_VNET_STRUCT(_net_inet6_ip6, IPV6CTL_STATS, stats, CTLFLAG_RW,
        &VNET_NAME(ip6stat), ip6stat, "");
 SYSCTL_VNET_INT(_net_inet6_ip6, IPV6CTL_MAXFRAGPACKETS, maxfragpackets,
        CTLFLAG_RW, &VNET_NAME(ip6_maxfragpackets), 0, "");
@@ -551,7 +551,7 @@
        &VNET_NAME(ip6_v6only), 0, "");
 SYSCTL_VNET_INT(_net_inet6_ip6, IPV6CTL_AUTO_LINKLOCAL, auto_linklocal,
        CTLFLAG_RW, &VNET_NAME(ip6_auto_linklocal), 0, "");
-SYSCTL_VNET_STRUCT(_net_inet6_ip6, IPV6CTL_RIP6STATS, rip6stats, CTLFLAG_RD,
+SYSCTL_VNET_STRUCT(_net_inet6_ip6, IPV6CTL_RIP6STATS, rip6stats, CTLFLAG_RW,
        &VNET_NAME(rip6stat), rip6stat, "");
 SYSCTL_VNET_INT(_net_inet6_ip6, IPV6CTL_PREFER_TEMPADDR, prefer_tempaddr,
        CTLFLAG_RW, &VNET_NAME(ip6_prefer_tempaddr), 0, "");
@@ -571,7 +571,7 @@
        CTLFLAG_RW, &VNET_NAME(icmp6_rediraccept), 0, "");
 SYSCTL_VNET_INT(_net_inet6_icmp6, ICMPV6CTL_REDIRTIMEOUT, redirtimeout,
        CTLFLAG_RW, &VNET_NAME(icmp6_redirtimeout), 0, "");
-SYSCTL_VNET_STRUCT(_net_inet6_icmp6, ICMPV6CTL_STATS, stats, CTLFLAG_RD,
+SYSCTL_VNET_STRUCT(_net_inet6_icmp6, ICMPV6CTL_STATS, stats, CTLFLAG_RW,
        &VNET_NAME(icmp6stat), icmp6stat, "");
 SYSCTL_VNET_INT(_net_inet6_icmp6, ICMPV6CTL_ND6_PRUNE, nd6_prune, CTLFLAG_RW,
        &VNET_NAME(nd6_prune), 0, "");
Index: sys/netinet6/ip6_mroute.c
===================================================================
--- sys/netinet6/ip6_mroute.c   (revision 224466)
+++ sys/netinet6/ip6_mroute.c   (working copy)
@@ -250,7 +250,7 @@
 static mifi_t reg_mif_num = (mifi_t)-1;

 static struct pim6stat pim6stat;
-SYSCTL_STRUCT(_net_inet6_pim, PIM6CTL_STATS, stats, CTLFLAG_RD,
+SYSCTL_STRUCT(_net_inet6_pim, PIM6CTL_STATS, stats, CTLFLAG_RW,
     &pim6stat, pim6stat,
     "PIM Statistics (struct pim6stat, netinet6/pim_var.h)");

Index: usr.bin/netstat/inet6.c
===================================================================
--- usr.bin/netstat/inet6.c     (revision 224466)
+++ usr.bin/netstat/inet6.c     (working copy)
@@ -364,15 +364,17 @@
 void
 ip6_stats(u_long off, const char *name, int af1 __unused, int proto __unused)
 {
-       struct ip6stat ip6stat;
+       struct ip6stat ip6stat, zerostat;
        int first, i;
        size_t len;

        len = sizeof ip6stat;
        if (live) {
                memset(&ip6stat, 0, len);
-               if (sysctlbyname("net.inet6.ip6.stats", &ip6stat, &len, NULL,
-                   0) < 0) {
+               if (zflag)
+                       memset(&zerostat, 0, len);
+               if (sysctlbyname("net.inet6.ip6.stats", &ip6stat, &len,
+                   zflag ? &zerostat : NULL, zflag ? len : 0) < 0) {
                        if (errno != ENOENT)
                                warn("sysctl: net.inet6.ip6.stats");
                        return;
@@ -844,15 +846,17 @@
 void
 icmp6_stats(u_long off, const char *name, int af1 __unused, int proto __unused)
 {
-       struct icmp6stat icmp6stat;
+       struct icmp6stat icmp6stat, zerostat;
        int i, first;
        size_t len;

        len = sizeof icmp6stat;
        if (live) {
                memset(&icmp6stat, 0, len);
+               if (zflag)
+                       memset(&zerostat, 0, len);
                if (sysctlbyname("net.inet6.icmp6.stats", &icmp6stat, &len,
-                   NULL, 0) < 0) {
+                   zflag ? &zerostat : NULL, zflag ? len : 0) < 0) {
                        if (errno != ENOENT)
                                warn("sysctl: net.inet6.icmp6.stats");
                        return;
@@ -1037,14 +1041,16 @@
 void
 rip6_stats(u_long off, const char *name, int af1 __unused, int proto __unused)
 {
-       struct rip6stat rip6stat;
+       struct rip6stat rip6stat, zerostat;
        u_quad_t delivered;
        size_t len;

        len = sizeof(rip6stat);
        if (live) {
+               if (zflag)
+                       memset(&zerostat, 0, len);
                if (sysctlbyname("net.inet6.ip6.rip6stats", &rip6stat, &len,
-                   NULL, 0) < 0) {
+                   zflag ? &zerostat : NULL, zflag ? len : 0) < 0) {
                        if (errno != ENOENT)
                                warn("sysctl: net.inet6.ip6.rip6stats");
                        return;
%%%

-- 
Maxim Konovalov
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to