Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 19 Feb 2025 10:41:37 GMT
From:      Kristof Provost <kp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: b34f497b3e6e - main - pf: simplify pf_check_proto_cksum()
Message-ID:  <202502191041.51JAfbCJ035294@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kp:

URL: https://cgit.FreeBSD.org/src/commit/?id=b34f497b3e6eff1c7b12f5700d897743073dfcff

commit b34f497b3e6eff1c7b12f5700d897743073dfcff
Author:     Kristof Provost <kp@FreeBSD.org>
AuthorDate: 2025-02-11 13:24:56 +0000
Commit:     Kristof Provost <kp@FreeBSD.org>
CommitDate: 2025-02-19 10:41:09 +0000

    pf: simplify pf_check_proto_cksum()
    
    Simplify and shorten the way ICMP checksums are verified in
    pf_check_proto_cksum() by letting it use the same in4_cksum() call that
    is used for TCP and UDP checksums.
    
    ok henning@ naddy@
    
    Obtained from:  OpenBSD, lteo <lteo@openbsd.org>, 3c23016fb7
    Sponsored by:   Rubicon Communications, LLC ("Netgate")
---
 sys/netpfil/pf/pf.c | 16 +++-------------
 1 file changed, 3 insertions(+), 13 deletions(-)

diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c
index ea5687407881..da741364d372 100644
--- a/sys/netpfil/pf/pf.c
+++ b/sys/netpfil/pf/pf.c
@@ -9276,19 +9276,9 @@ pf_check_proto_cksum(struct mbuf *m, int off, int len, u_int8_t p, sa_family_t a
 	if (!hw_assist) {
 		switch (af) {
 		case AF_INET:
-			if (p == IPPROTO_ICMP) {
-				if (m->m_len < off)
-					return (1);
-				m->m_data += off;
-				m->m_len -= off;
-				sum = in_cksum(m, len);
-				m->m_data -= off;
-				m->m_len += off;
-			} else {
-				if (m->m_len < sizeof(struct ip))
-					return (1);
-				sum = in4_cksum(m, p, off, len);
-			}
+			if (m->m_len < sizeof(struct ip))
+				return (1);
+			sum = in4_cksum(m, (p == IPPROTO_ICMP ? 0 : p), off, len);
 			break;
 #ifdef INET6
 		case AF_INET6:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202502191041.51JAfbCJ035294>