Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package tcpreplay for openSUSE:Factory checked in at 2026-07-21 23:09:01 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/tcpreplay (Old) and /work/SRC/openSUSE:Factory/.tcpreplay.new.24530 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "tcpreplay" Tue Jul 21 23:09:01 2026 rev:17 rq:1366810 version:4.5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/tcpreplay/tcpreplay.changes 2025-11-11 19:21:29.763873394 +0100 +++ /work/SRC/openSUSE:Factory/.tcpreplay.new.24530/tcpreplay.changes 2026-07-21 23:09:11.371813517 +0200 @@ -1,0 +2,47 @@ +Mon Jul 20 15:41:51 UTC 2026 - Martin Pluskal <[email protected]> + +- Update to version 4.5.3: + * tcpreplay: fix --multiplier timing drift and miscalibrated + overflow guards in calc_sleep_time + * sendpacket: retry EAGAIN/ENOBUFS a bounded number of times + instead of retrying endlessly; warn when sending on a + down/no-carrier interface on Linux + * sendpacket: fix AF_XDP transmission by no longer inhibiting + libbpf's default XDP program load; route "zc:" PF_RING ZC + device names through libpcap + * netmap: bound and make abortable the TX-ring drain wait; + remove stray switch defaults in nm_do_ioctl() that broke + --netmap + * tcprewrite: fix adding a VLAN tag with missing options; + rewrite addresses embedded in ICMPv6 error messages + * tcpprep: fix buffer overflow on truncated packets + * tcpedit: fix wrong end-of-buffer pointer in TCP-sequence and + portmap rewrite + * tcpliveplay: call pcap_breakloop() from the SIGALRM handler so + an unresponsive peer is reported promptly + * fragroute: fix overflow on packets carrying too many MPLS + labels; fix TAILQ_FOREACH_REVERSE portability across queue.h + variants + * tcpr_random: fix signed left-shift undefined behaviour + * configure: stop --with-netmap from leaking -I<DIR>/sys into + CFLAGS +- Convert BuildRequires to pkgconfig() style and drop the obsolete + Group tag +- Add tcpreplay-fix-txring-includes.patch: fix the __GLIBC_MINOR + typo in txring.h (the macro is __GLIBC_MINOR__, so the version + check silently evaluated to 0) and include <linux/if_packet.h>, + which is what actually defines the PACKET_TX_RING API - glibc's + <netpacket/packet.h> never provided it, so correcting the typo + alone does not compile. Sent upstream +- Restore Linux TX_RING packet injection support, which was + disabled by accident: configure probes it by including both + <netpacket/packet.h> and <linux/if_packet.h>, and before C23 + those two collide on struct sockaddr_ll, so the probe always + failed and tcpreplay fell back to the slower PF_PACKET send() + path. configure now reports "Linux TX_RING: yes" +- Narrow the -std=gnu11 pin to the bundled libopts directory + rather than the whole tree. The pin is still required there + (autoopts is not C23-clean under gcc >= 15), but applying it + globally is what dragged the TX_RING probe below C23 + +------------------------------------------------------------------- Old: ---- tcpreplay-4.5.2.tar.xz tcpreplay-4.5.2.tar.xz.asc New: ---- tcpreplay-4.5.3.tar.xz tcpreplay-4.5.3.tar.xz.asc tcpreplay-fix-txring-includes.patch ----------(New B)---------- New: Group tag - Add tcpreplay-fix-txring-includes.patch: fix the __GLIBC_MINOR typo in txring.h (the macro is __GLIBC_MINOR__, so the version ----------(New E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ tcpreplay.spec ++++++ --- /var/tmp/diff_new_pack.ZBqRiF/_old 2026-07-21 23:09:12.187841417 +0200 +++ /var/tmp/diff_new_pack.ZBqRiF/_new 2026-07-21 23:09:12.191841554 +0200 @@ -1,8 +1,7 @@ # # spec file for package tcpreplay # -# Copyright (c) 2025 SUSE LLC -# Copyright (c) 2025 SUSE LLC and contributors +# Copyright (c) 2026 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,23 +17,27 @@ Name: tcpreplay -Version: 4.5.2 +Version: 4.5.3 Release: 0 Summary: Network analysis and testing tools License: GPL-3.0-only -Group: Productivity/Networking/Diagnostic URL: https://tcpreplay.appneta.com/ Source0: https://github.com/appneta/tcpreplay/releases/download/v%{version}/%{name}-%{version}.tar.xz Source1: https://github.com/appneta/tcpreplay/releases/download/v%{version}/%{name}-%{version}.tar.xz.asc Source2: %{name}.keyring # CVE-2025-8746 [bsc#1247917], improper input validation and memory bounds checking when processing certain malformed configuration files Patch0: tcpreplay-CVE-2025-8746.patch -BuildRequires: dbus-1-devel +# Fix the __GLIBC_MINOR typo in txring.h and include <linux/if_packet.h>, +# which is what actually defines the PACKET_TX_RING API - sent upstream +Patch1: tcpreplay-fix-txring-includes.patch BuildRequires: libdnet-devel BuildRequires: libpcap-devel +BuildRequires: pkgconfig BuildRequires: tcpdump +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(libnl-3.0) +BuildRequires: pkgconfig(libnl-genl-3.0) Requires: tcpdump -BuildRequires: libnl3-devel %description Tcpreplay is a suite of utilities for editing and replaying @@ -47,9 +50,15 @@ %autosetup -p1 %build -export CFLAGS="%{optflags} -std=gnu11" %configure \ --enable-dynamic-link +# The bundled libopts (autoopts) is not C23-clean, so it needs an older +# language level than gcc >= 15's -std=gnu23 default. Pin it for that +# directory only: pinning the whole tree also drags configure's TX_RING +# probe below C23, where <netpacket/packet.h> and <linux/if_packet.h> +# cannot be included together, which silently disabled HAVE_TX_RING and +# left tcpreplay on the slower PF_PACKET send() path. +%make_build -C libopts CFLAGS="%{optflags} -std=gnu11" %make_build %install @@ -58,6 +67,18 @@ %files %license docs/LICENSE %doc docs/CHANGELOG -%{_bindir}/* -%{_mandir}/man1/* +%{_bindir}/tcpbridge +%{_bindir}/tcpcapinfo +%{_bindir}/tcpliveplay +%{_bindir}/tcpprep +%{_bindir}/tcpreplay +%{_bindir}/tcpreplay-edit +%{_bindir}/tcprewrite +%{_mandir}/man1/tcpbridge.1%{?ext_man} +%{_mandir}/man1/tcpcapinfo.1%{?ext_man} +%{_mandir}/man1/tcpliveplay.1%{?ext_man} +%{_mandir}/man1/tcpprep.1%{?ext_man} +%{_mandir}/man1/tcpreplay-edit.1%{?ext_man} +%{_mandir}/man1/tcpreplay.1%{?ext_man} +%{_mandir}/man1/tcprewrite.1%{?ext_man} ++++++ tcpreplay-4.5.2.tar.xz -> tcpreplay-4.5.3.tar.xz ++++++ ++++ 3600 lines of diff (skipped) ++++++ tcpreplay-fix-txring-includes.patch ++++++ From: Martin Pluskal <[email protected]> Date: Mon, 20 Jul 2026 16:20:00 +0200 Subject: [PATCH] txring: fix __GLIBC_MINOR typo and include the header that actually defines the TX_RING API txring.h guards its includes with #if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1 but the macro is spelled __GLIBC_MINOR__; __GLIBC_MINOR is not defined by any header, so the preprocessor substitutes 0 and the condition is always false. The #else branch has therefore been taken unconditionally on every glibc system since the check was introduced. That accident is the only reason this file has ever compiled. The glibc header <netpacket/packet.h> selected by the "true" branch defines just struct sockaddr_ll and struct packet_mreq -- it has never provided the PACKET_TX_RING API. struct tpacket_hdr, struct tpacket_req and TPACKET_HDRLEN, all of which txring.h and txring.c use, come only from <linux/if_packet.h>, which is included in the #else branch. Simply correcting the macro name makes the true branch compile-fail with error: storage size of 'h' isn't known (struct tpacket_hdr) error: 'TPACKET_HDRLEN' undeclared so fix the include as well: take <linux/if_packet.h> in both branches and drop <netpacket/packet.h>, which supplies nothing this header needs. Dropping it also avoids a second problem. Before C23, <netpacket/packet.h> and <linux/if_packet.h> cannot be included together -- both define struct sockaddr_ll and struct packet_mreq, and the __UAPI_DEF_* de-duplication does not kick in: /usr/include/linux/if_packet.h:14:8: error: redefinition of 'struct sockaddr_ll' /usr/include/linux/if_packet.h:297:8: error: redefinition of 'struct packet_mreq' Because configure's TX_RING probe includes both headers, that collision makes the probe fail whenever the package is built with -std=gnu11 or -std=gnu17, silently disabling HAVE_TX_RING and taking the slower PF_PACKET send() path instead. With this change txring.h no longer pulls in <netpacket/packet.h> and compiles under -std=gnu11, -std=gnu17 and -std=gnu23 alike. Signed-off-by: Martin Pluskal <[email protected]> --- src/common/txring.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/txring.h b/src/common/txring.h index 3f14cac..832f325 100644 --- a/src/common/txring.h +++ b/src/common/txring.h @@ -38,9 +38,9 @@ #ifdef HAVE_TX_RING -#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1 +#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 #include <net/ethernet.h> /* the L2 protocols */ -#include <netpacket/packet.h> +#include <linux/if_packet.h> #else #include <asm/types.h> #include <linux/if_ether.h> /* The L2 protocols */ -- 2.51.0
