git: eeefa919306d - main - net/pkt-gen: update to g2026.08.08
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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));
+ }