Download raw body.
tcp debug global
> On 11 Apr 2024, at 00:54, Alexander Bluhm <bluhm@openbsd.org> 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 <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