anyone?
On Fri, May 26, 2023 at 06:44:25PM +0200, Alexander Bluhm wrote:
> Hi,
>
> in_ifcap_cksum() checks ifp == NULL
> in_hdr_cksum_out() sets ip_sum = 0
> in_proto_cksum_out() and in6_proto_cksum_out() always write
> th_sum if M_TCP_CSUM_OUT is set and proto is IPPROTO_TCP.
>
> ok?
>
> bluhm
>
> Index: netinet/ip_output.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/ip_output.c,v
> retrieving revision 1.388
> diff -u -p -r1.388 ip_output.c
> --- netinet/ip_output.c 22 May 2023 16:08:34 -0000 1.388
> +++ netinet/ip_output.c 26 May 2023 11:55:49 -0000
> @@ -1801,7 +1801,7 @@ in_hdr_cksum_out(struct mbuf *m, struct
> struct ip *ip = mtod(m, struct ip *);
>
> ip->ip_sum = 0;
> - if (ifp && in_ifcap_cksum(m, ifp, IFCAP_CSUM_IPv4)) {
> + if (in_ifcap_cksum(m, ifp, IFCAP_CSUM_IPv4)) {
> SET(m->m_pkthdr.csum_flags, M_IPV4_CSUM_OUT);
> } else {
> ipstat_inc(ips_outswcsum);
> Index: netinet/tcp_output.c
> ===================================================================
> RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/tcp_output.c,v
> retrieving revision 1.138
> diff -u -p -r1.138 tcp_output.c
> --- netinet/tcp_output.c 15 May 2023 16:34:56 -0000 1.138
> +++ netinet/tcp_output.c 26 May 2023 15:19:12 -0000
> @@ -1295,7 +1295,6 @@ tcp_chopper(struct mbuf *m0, struct mbuf
>
> /* copy and adjust IP header, calculate checksum */
> SET(m->m_pkthdr.csum_flags, M_TCP_CSUM_OUT);
> - mhth->th_sum = 0;
> if (ip) {
> struct ip *mhip;
>
> @@ -1328,10 +1327,8 @@ tcp_chopper(struct mbuf *m0, struct mbuf
> }
> /* adjust IP header, calculate checksum */
> SET(m0->m_pkthdr.csum_flags, M_TCP_CSUM_OUT);
> - th->th_sum = 0;
> if (ip) {
> ip->ip_len = htons(m0->m_pkthdr.len);
> - ip->ip_sum = 0;
> in_hdr_cksum_out(m0, ifp);
> in_proto_cksum_out(m0, ifp);
> }