From: Vitaliy Makkoveev Subject: Re: tcp debug global To: Alexander Bluhm Cc: tech@openbsd.org Date: Thu, 11 Apr 2024 01:00:37 +0300 > On 11 Apr 2024, at 00:54, Alexander Bluhm wrote: > > Hi, > > Move the global variables for TCP debug onto the tcp_input() stack. > > ok? > ok mvs > 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); >