Download raw body.
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);
tcp debug global