NetBSD Problem Report #44254

From yasuoka@iij.ad.jp  Mon Dec 20 07:30:28 2010
Return-Path: <yasuoka@iij.ad.jp>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id E2E0F63B87A
	for <gnats-bugs@gnats.NetBSD.org>; Mon, 20 Dec 2010 07:30:27 +0000 (UTC)
Message-Id: <20101220.152746.250594949.yasuoka@iij.ad.jp>
Date: Mon, 20 Dec 2010 15:27:46 +0900 (JST)
From: yasuoka@iij.ad.jp
Reply-To: yasuoka@iij.ad.jp
To: gnats-bugs@gnats.NetBSD.org
Subject: sysctl -w net.inet.tcp.timestamps=0 does not work
X-Send-Pr-Version: 3.95

>Number:         44254
>Category:       kern
>Synopsis:       sysctl -w net.inet.tcp.timestamps=0 does not work
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kefren
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Dec 20 07:35:00 +0000 2010
>Closed-Date:    Sun Apr 13 02:23:31 +0000 2014
>Last-Modified:  Sun Apr 13 02:23:31 +0000 2014
>Originator:     yasuoka@iij.ad.jp
>Release:        NetBSD 5.1
>Organization:
Internet Initiative Japan Inc.
>Environment:
System: NetBSD yasuoka-nb2 5.1 NetBSD 5.1 (GENERIC) #0: Sun Nov 7 14:39:56 UTC 2010 builds@b6.netbsd.org:/home/builds/ab/netbsd-5-1-RELEASE/i386/201011061943Z-obj/home/builds/ab/netbsd-5-1-RELEASE/src/sys/arch/i386/compile/GENERIC i386
Architecture: i386
Machine: i386
>Description:
	"sysctl -w net.inet.tcp.timestamps=0" does not disable TCP
	timestamp option.
>How-To-Repeat:
	1. sysctl -w net.inet.tcp.timestamps=0
	2. tcpdump -vni lo0 port 22 &&
	3. telnet 127.0.0.1 22
	Captured packets will be using tcp timestamp option.
>Fix:
Index: tcp_usrreq.c
===================================================================
RCS file: /cvsroot/NetBSD/src/sys/netinet/tcp_usrreq.c,v
retrieving revision 1.149.4.2
diff -u -p -r1.149.4.2 tcp_usrreq.c
--- tcp_usrreq.c	26 Sep 2009 18:34:29 -0000	1.149.4.2
+++ tcp_usrreq.c	20 Dec 2010 06:18:58 -0000
@@ -1038,6 +1038,7 @@ sysctl_net_inet_tcp_mssdflt(SYSCTLFN_ARG
 	if (mssdflt < 32)
 		return (EINVAL);
 	tcp_mssdflt = mssdflt;
+	tcp_tcpcb_template();		/* update the template */

 	return (0);
 }
@@ -1634,6 +1635,20 @@ sysctl_net_inet_tcp_stats(SYSCTLFN_ARGS)
 	return (NETSTAT_SYSCTL(tcpstat_percpu, TCP_NSTATS));
 }

+static int
+sysctl_update_tcpcb_template(SYSCTLFN_ARGS)
+{
+	int error;
+
+	error = sysctl_lookup(SYSCTLFN_CALL(rnode));
+	if (error || newp == NULL)
+		return (error);
+
+	tcp_tcpcb_template();		/* update the template */
+
+	return (0);
+}
+
 /*
  * this (second stage) setup routine is a replacement for tcp_sysctl()
  * (which is currently used for ipv4 and ipv6)
@@ -1672,7 +1687,7 @@ sysctl_net_inet_tcp_setup2(struct sysctl
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "rfc1323",
 		       SYSCTL_DESCR("Enable RFC1323 TCP extensions"),
-		       NULL, 0, &tcp_do_rfc1323, 0,
+		       sysctl_update_tcpcb_template, 0, &tcp_do_rfc1323, 0,
 		       CTL_NET, pf, IPPROTO_TCP, TCPCTL_RFC1323, CTL_EOL);
 	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
@@ -1772,13 +1787,13 @@ sysctl_net_inet_tcp_setup2(struct sysctl
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "win_scale",
 		       SYSCTL_DESCR("Use RFC1323 window scale options"),
-		       NULL, 0, &tcp_do_win_scale, 0,
+		       sysctl_update_tcpcb_template, 0, &tcp_do_win_scale, 0,
 		       CTL_NET, pf, IPPROTO_TCP, TCPCTL_WSCALE, CTL_EOL);
 	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,
 		       CTLTYPE_INT, "timestamps",
 		       SYSCTL_DESCR("Use RFC1323 time stamp options"),
-		       NULL, 0, &tcp_do_timestamps, 0,
+		       sysctl_update_tcpcb_template, 0, &tcp_do_timestamps, 0,
 		       CTL_NET, pf, IPPROTO_TCP, TCPCTL_TSTAMP, CTL_EOL);
 	sysctl_createv(clog, 0, NULL, NULL,
 		       CTLFLAG_PERMANENT|CTLFLAG_READWRITE,

>Release-Note:

>Audit-Trail:
From: buhrow@lothlorien.nfbcal.org (Brian Buhrow)
To: gnats-bugs@gnats.netbsd.org
Cc: buhrow@lothlorien.nfbcal.org
Subject: Re: kern/44254: Also applies to all other net.inet.tcp.x variables
Date: Tue, 28 Dec 2010 22:36:53 -0800

 	Hello.  This problem seems to afflict all net.inet.tcp variables.  For
 example, trying to change the value of tcp_init_win fails as well.  This
 looks to hav been broken from the introduction of these sysctl variables.
 It doesn't work, for example, under NetBSD-4 either.
 -Brian

Responsible-Changed-From-To: kern-bug-people->kefren
Responsible-Changed-By: kefren@NetBSD.org
Responsible-Changed-When: Tue, 03 Dec 2013 12:15:28 +0000
Responsible-Changed-Why:
Hi, I commited your patch and asked for a pullup on NetBSD 6 branch (#992).

Thank you for reporting !


State-Changed-From-To: open->pending-pullups
State-Changed-By: kefren@NetBSD.org
State-Changed-When: Tue, 03 Dec 2013 12:15:28 +0000
State-Changed-Why:
Pullup request #992


State-Changed-From-To: pending-pullups->closed
State-Changed-By: snj@NetBSD.org
State-Changed-When: Sun, 13 Apr 2014 02:23:31 +0000
State-Changed-Why:
Pulled up.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.