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

Reply via email to