bin/153206

Maxim Konovalov maxim.konovalov at gmail.com
Wed Jul 27 10:50:09 UTC 2011


The following reply was made to PR bin/153206; it has been noted by GNATS.

From: Maxim Konovalov <maxim.konovalov at gmail.com>
To: bug-followup at freebsd.org
Cc:  
Subject: bin/153206
Date: Wed, 27 Jul 2011 14:43:44 +0400 (MSD)

 Hello,
 
 please try the following patch:
 
 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, zefostat;
  	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


More information about the freebsd-bugs mailing list