From: Alexander Bluhm Subject: tcp debug global To: tech@openbsd.org Date: Wed, 10 Apr 2024 23:54:37 +0200 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 #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 #include -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);