Index | Thread | Search

From:
Alexander Bluhm <bluhm@openbsd.org>
Subject:
tcp debug global
To:
tech@openbsd.org
Date:
Wed, 10 Apr 2024 23:54:37 +0200

Download raw body.

Thread
  • Alexander Bluhm:

    tcp debug global

Hi,

Move the global variables for TCP debug onto the tcp_input() stack.

ok?

bluhm

Index: netinet/tcp_input.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_input.c,v
diff -u -p -r1.401 tcp_input.c
--- netinet/tcp_input.c	13 Feb 2024 12:22:09 -0000	1.401
+++ netinet/tcp_input.c	10 Apr 2024 21:47:12 -0000
@@ -100,8 +100,6 @@
 #include <net/pfvar.h>
 #endif
 
-struct	tcpiphdr tcp_saveti;
-
 int tcp_mss_adv(struct mbuf *, int);
 int tcp_flush_queue(struct tcpcb *);
 
@@ -109,8 +107,6 @@ int tcp_flush_queue(struct tcpcb *);
 #include <netinet6/in6_var.h>
 #include <netinet6/nd6.h>
 
-struct  tcpipv6hdr tcp_saveti6;
-
 /* for the packet header length in the mbuf */
 #define M_PH_LEN(m)      (((struct mbuf *)(m))->m_pkthdr.len)
 #define M_V6_LEN(m)      (M_PH_LEN(m) - sizeof(struct ip6_hdr))
@@ -373,7 +369,13 @@ tcp_input(struct mbuf **mp, int *offp, i
 	int todrop, acked, ourfinisacked;
 	int hdroptlen = 0;
 	short ostate;
-	caddr_t saveti;
+	union {
+		struct	tcpiphdr tcpip;
+#ifdef INET6
+		struct  tcpipv6hdr tcpip6;
+#endif
+		char	caddr;
+	} saveti;
 	tcp_seq iss, *reuse = NULL;
 	uint64_t now;
 	u_long tiwin;
@@ -672,15 +674,13 @@ findpcb:
 			switch (af) {
 #ifdef INET6
 			case AF_INET6:
-				saveti = (caddr_t) &tcp_saveti6;
-				memcpy(&tcp_saveti6.ti6_i, ip6, sizeof(*ip6));
-				memcpy(&tcp_saveti6.ti6_t, th, sizeof(*th));
+				saveti.tcpip6.ti6_i = *ip6;
+				saveti.tcpip6.ti6_t = *th;
 				break;
 #endif
 			case AF_INET:
-				saveti = (caddr_t) &tcp_saveti;
-				memcpy(&tcp_saveti.ti_i, ip, sizeof(*ip));
-				memcpy(&tcp_saveti.ti_t, th, sizeof(*th));
+				memcpy(&saveti.tcpip.ti_i, ip, sizeof(*ip));
+				saveti.tcpip.ti_t = *th;
 				break;
 			}
 		}
@@ -2031,7 +2031,7 @@ dodata:							/* XXX */
 		}
 	}
 	if (otp)
-		tcp_trace(TA_INPUT, ostate, tp, otp, saveti, 0, tlen);
+		tcp_trace(TA_INPUT, ostate, tp, otp, &saveti.caddr, 0, tlen);
 
 	/*
 	 * Return any desired output.
@@ -2110,7 +2110,7 @@ drop:
 	 * Drop space held by incoming segment and return.
 	 */
 	if (otp)
-		tcp_trace(TA_DROP, ostate, tp, otp, saveti, 0, tlen);
+		tcp_trace(TA_DROP, ostate, tp, otp, &saveti.caddr, 0, tlen);
 
 	m_freem(m);
 	in_pcbunref(inp);