git: eeefa919306d - main - net/pkt-gen: update to g2026.08.08

From: Olivier Cochard <olivier_at_FreeBSD.org>
Date: Thu, 24 Sep 2026 16:20:40 UTC
The branch main has been updated by olivier:

URL: https://cgit.FreeBSD.org/ports/commit/?id=eeefa919306d3ac2fe99192bb194c6a4c4dc62ed

commit eeefa919306d3ac2fe99192bb194c6a4c4dc62ed
Author:     Olivier Cochard <olivier@FreeBSD.org>
AuthorDate: 2026-09-24 16:14:53 +0000
Commit:     Olivier Cochard <olivier@FreeBSD.org>
CommitDate: 2026-09-24 16:17:28 +0000

    net/pkt-gen: update to g2026.08.08
    
    fix UDP checksum when IPv6 address ranges are used.
---
 net/pkt-gen/Makefile                           |  4 +-
 net/pkt-gen/distinfo                           |  6 +-
 net/pkt-gen/files/patch-apps_pkt-gen_pkt-gen.c | 98 ++++++++++++++++++++++++++
 3 files changed, 103 insertions(+), 5 deletions(-)

diff --git a/net/pkt-gen/Makefile b/net/pkt-gen/Makefile
index b33fa11be4e9..34a6a7202e8b 100644
--- a/net/pkt-gen/Makefile
+++ b/net/pkt-gen/Makefile
@@ -1,5 +1,5 @@
 PORTNAME=	pkt-gen
-PORTVERSION=	g2025.10.08
+PORTVERSION=	g2026.08.08
 CATEGORIES=	net
 
 MAINTAINER=	olivier@FreeBSD.org
@@ -12,7 +12,7 @@ USES=		gmake
 USE_GITHUB=	yes
 GH_ACCOUNT=	luigirizzo
 GH_PROJECT=	netmap
-GH_TAGNAME=	bc3a126
+GH_TAGNAME=	389daea
 
 MAKEFILE=	GNUmakefile
 
diff --git a/net/pkt-gen/distinfo b/net/pkt-gen/distinfo
index 93c29fdfecdd..8db849f38fae 100644
--- a/net/pkt-gen/distinfo
+++ b/net/pkt-gen/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1759939977
-SHA256 (luigirizzo-netmap-g2025.10.08-bc3a126_GH0.tar.gz) = de3abd8353612777784fce661bd56eed9731f24d93216a4bac37a92d66b0dcbd
-SIZE (luigirizzo-netmap-g2025.10.08-bc3a126_GH0.tar.gz) = 775215
+TIMESTAMP = 1790262446
+SHA256 (luigirizzo-netmap-g2026.08.08-389daea_GH0.tar.gz) = e102c0a56ccd6d78211d2a542bac979fd3459956c9db3592f175ea3f79da14b1
+SIZE (luigirizzo-netmap-g2026.08.08-389daea_GH0.tar.gz) = 774116
diff --git a/net/pkt-gen/files/patch-apps_pkt-gen_pkt-gen.c b/net/pkt-gen/files/patch-apps_pkt-gen_pkt-gen.c
new file mode 100644
index 000000000000..d4ffab6fe0d5
--- /dev/null
+++ b/net/pkt-gen/files/patch-apps_pkt-gen_pkt-gen.c
@@ -0,0 +1,98 @@
+Fix stale UDP checksum when IPv6 source/destination ranges are used.
+
+--- apps/pkt-gen/pkt-gen.c.orig	2026-09-24 16:05:21 UTC
++++ apps/pkt-gen/pkt-gen.c
+@@ -917,7 +917,7 @@ update_ip6(struct pkt *pkt, struct targ *t)
+ 	struct glob_arg *g = t->g;
+ 	struct ip6_hdr ip6;
+ 	struct udphdr udp;
+-	uint16_t udp_sum;
++	uint16_t udp_sum = 0;
+ 	uint16_t oaddr, naddr;
+ 	uint16_t oport, nport;
+ 	uint8_t group;
+@@ -925,7 +925,6 @@ update_ip6(struct pkt *pkt, struct targ *t)
+ 	memcpy(&ip6, &pkt->ipv6.ip, sizeof(ip6));
+ 	memcpy(&udp, &pkt->ipv6.udp, sizeof(udp));
+ 	do {
+-		udp_sum = 0;
+ 		group = g->src_ip.ipv6.sgroup;
+ 		naddr = oaddr = ntohs(ip6.ip6_src.s6_addr16[group]);
+ 		nport = oport = ntohs(udp.uh_sport);
+@@ -934,30 +933,29 @@ update_ip6(struct pkt *pkt, struct targ *t)
+ 			udp.uh_sport = nrand48(t->seed);
+ 			naddr = ntohs(ip6.ip6_src.s6_addr16[group]);
+ 			nport = ntohs(udp.uh_sport);
++			udp_sum = new_udp_sum(udp_sum, oaddr, naddr);
++			udp_sum = new_udp_sum(udp_sum, oport, nport);
+ 			break;
+ 		}
+ 		if (oport < g->src_ip.port1) {
+ 			nport = oport + 1;
+ 			udp.uh_sport = htons(nport);
++			udp_sum = new_udp_sum(udp_sum, oport, nport);
+ 			break;
+ 		}
+ 		nport = g->src_ip.port0;
+ 		udp.uh_sport = htons(nport);
++		udp_sum = new_udp_sum(udp_sum, oport, nport);
+ 		if (oaddr < ntohs(g->src_ip.ipv6.end.s6_addr16[group])) {
+ 			naddr = oaddr + 1;
+ 			ip6.ip6_src.s6_addr16[group] = htons(naddr);
++			udp_sum = new_udp_sum(udp_sum, oaddr, naddr);
+ 			break;
+ 		}
+ 		naddr = ntohs(g->src_ip.ipv6.start.s6_addr16[group]);
+ 		ip6.ip6_src.s6_addr16[group] = htons(naddr);
++		udp_sum = new_udp_sum(udp_sum, oaddr, naddr);
+ 
+-		/* update checksums if needed */
+-		if (oaddr != naddr)
+-			udp_sum = cksum_add(~oaddr, naddr);
+-		if (oport != nport)
+-			udp_sum = cksum_add(udp_sum,
+-			    cksum_add(~oport, nport));
+-
+ 		group = g->dst_ip.ipv6.egroup;
+ 		naddr = oaddr = ntohs(ip6.ip6_dst.s6_addr16[group]);
+ 		nport = oport = ntohs(udp.uh_dport);
+@@ -966,32 +964,32 @@ update_ip6(struct pkt *pkt, struct targ *t)
+ 			udp.uh_dport = nrand48(t->seed);
+ 			naddr = ntohs(ip6.ip6_dst.s6_addr16[group]);
+ 			nport = ntohs(udp.uh_dport);
++			udp_sum = new_udp_sum(udp_sum, oaddr, naddr);
++			udp_sum = new_udp_sum(udp_sum, oport, nport);
+ 			break;
+ 		}
+ 		if (oport < g->dst_ip.port1) {
+ 			nport = oport + 1;
+ 			udp.uh_dport = htons(nport);
++			udp_sum = new_udp_sum(udp_sum, oport, nport);
+ 			break;
+ 		}
+ 		nport = g->dst_ip.port0;
+ 		udp.uh_dport = htons(nport);
++		udp_sum = new_udp_sum(udp_sum, oport, nport);
+ 		if (oaddr < ntohs(g->dst_ip.ipv6.end.s6_addr16[group])) {
+ 			naddr = oaddr + 1;
+ 			ip6.ip6_dst.s6_addr16[group] = htons(naddr);
++			udp_sum = new_udp_sum(udp_sum, oaddr, naddr);
+ 			break;
+ 		}
+ 		naddr = ntohs(g->dst_ip.ipv6.start.s6_addr16[group]);
+ 		ip6.ip6_dst.s6_addr16[group] = htons(naddr);
++		udp_sum = new_udp_sum(udp_sum, oaddr, naddr);
+ 	} while (0);
+ 	/* update checksums */
+-	if (oaddr != naddr)
+-		udp_sum = cksum_add(udp_sum,
+-		    cksum_add(~oaddr, naddr));
+-	if (oport != nport)
+-		udp_sum = cksum_add(udp_sum,
+-		    cksum_add(~oport, nport));
+ 	if (udp_sum != 0)
+-		udp.uh_sum = ~cksum_add(~udp.uh_sum, udp_sum);
++		udp.uh_sum = ~cksum_add(~udp.uh_sum, htons(udp_sum));
+ 	memcpy(&pkt->ipv6.ip, &ip6, sizeof(ip6));
+ 	memcpy(&pkt->ipv6.udp, &udp, sizeof(udp));
+ }