[PATCH] SNMP MIB for TCP variables 2.4.18+

DORMANTno replies

From: Nivedita Singhvi <hidden>
Date: 2002-05-15 16:55:01

This is a patch to support some SNMP TCP MIB variables currently
not provided by Linux (reqd by RFC 2012).

Patch applies to 2.4.18+ cleanly.
Can provide diffs against 2.5+ separately as well if needed.

I'm following up on work done by Mark Price a while ago
which included some larger changes. Will be working those 
separately.


thanks,
Nivedita


diff -urN linux-2.4.18/include/net/tcp.h linux-2.4.18statp/include/net/tcp.h
--- linux-2.4.18/include/net/tcp.h	Thu Nov 22 11:47:22 2001
+++ linux-2.4.18statp/include/net/tcp.h	Mon Apr 22 20:21:02 2002
@@ -331,6 +331,7 @@
 #define TCP_DELACK_MIN	4U
 #define TCP_ATO_MIN	4U
 #endif
+#define TCP_RTO_OTHER	1
 #define TCP_RTO_MAX	((unsigned)(120*HZ))
 #define TCP_RTO_MIN	((unsigned)(HZ/5))
 #define TCP_TIMEOUT_INIT ((unsigned)(3*HZ))	/* RFC 1122 initial RTO value	*/
diff -urN linux-2.4.18/net/ipv4/proc.c linux-2.4.18statp/net/ipv4/proc.c
--- linux-2.4.18/net/ipv4/proc.c	Wed May 16 10:21:45 2001
+++ linux-2.4.18statp/net/ipv4/proc.c	Mon Apr 22 22:45:52 2002
@@ -134,9 +134,17 @@
 	len += sprintf (buffer + len,
 		"\nTcp: RtoAlgorithm RtoMin RtoMax MaxConn ActiveOpens PassiveOpens AttemptFails EstabResets CurrEstab InSegs OutSegs RetransSegs InErrs OutRsts\n"
 		  "Tcp:");
-	for (i=0; i<offsetof(struct tcp_mib, __pad)/sizeof(unsigned long); i++)
-		len += sprintf(buffer+len, " %lu", fold_field((unsigned long*)tcp_statistics, sizeof(struct tcp_mib), i));
-
+	for (i=0; i<offsetof(struct tcp_mib, __pad)/sizeof(unsigned long); i++) { 
+		/* MaxConn field is negative, RFC 2012 */
+		if (i == 3) 
+			len += sprintf(buffer+len, " %ld", 
+		 	   (long) fold_field((unsigned long*)tcp_statistics, 
+			   sizeof(struct tcp_mib), i));
+		else 
+			len += sprintf(buffer+len, " %lu", 
+			   fold_field((unsigned long*)tcp_statistics, 
+			   sizeof(struct tcp_mib), i));
+	}
 	len += sprintf (buffer + len,
 		"\nUdp: InDatagrams NoPorts InErrors OutDatagrams\n"
 		  "Udp:");
diff -urN linux-2.4.18/net/ipv4/tcp.c linux-2.4.18statp/net/ipv4/tcp.c
--- linux-2.4.18/net/ipv4/tcp.c	Fri Dec 21 09:42:05 2001
+++ linux-2.4.18statp/net/ipv4/tcp.c	Mon Apr 22 20:20:22 2002
@@ -2555,5 +2555,11 @@
 	printk("TCP: Hash tables configured (established %d bind %d)\n",
 	       tcp_ehash_size<<1, tcp_bhash_size);
 
+	/* RFC2012 */
+	tcp_statistics[0].TcpRtoAlgorithm = TCP_RTO_OTHER;
+	tcp_statistics[0].TcpRtoMin = TCP_RTO_MIN*1000/HZ;
+	tcp_statistics[0].TcpRtoMax = TCP_RTO_MAX*1000/HZ;
+	tcp_statistics[0].TcpMaxConn = -1; 
+
 	tcpdiag_init();
 }
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help