0
0
mirror of https://github.com/openwrt/packages.git synced 2025-10-11 07:21:24 +00:00
Files
packages/net/iperf/patches/001-checksums.c-needs-to-define-_GNU_SOURCE.patch
Wei-Ting Yang 99cced3311 iperf: update to 2.2.1
Changelog: https://sourceforge.net/projects/iperf2/files/

Note: 001-checksums.c-needs-to-define-_GNU_SOURCE.patch is added to
fix a build error with musl libc, where struct udphdr members are not
available unless _GNU_SOURCE is defined.

Signed-off-by: Wei-Ting Yang <williamatcg@gmail.com>
2025-08-22 16:13:12 +03:00

44 lines
1.5 KiB
Diff

From: Julien Olivain <ju.o@free.fr>
Date: Mon, 11 Nov 2024 11:41:28 +0100
Subject: [PATCH] checksums.c needs to define _GNU_SOURCE
When compiling with musl libc [1], iperf2 fail to build with error:
checksums.c: In function 'udpchecksum':
checksums.c:175:17: error: 'const struct udphdr' has no member named 'check'
175 | if (!udp_hdr->check) {
| ^~
This failure was introduced in commit [2], in version 2.2.1. This is
due to the switch from using <linux/udp.h> (which always define "struct
udphdr" members), to <netinet/udp.h> which define members in musl libc
only when _GNU_SOURCE is defined. See [3].
Note: those use of udphdr members in checksums.c were introduced in
commit [4], in version 2.1.1.
This commit fixes the issue by defining _GNU_SOURCE in checksums.c.
This issue was found in the iperf integration in Buildroot Linux [5].
[1] https://www.musl-libc.org/
[2] https://sourceforge.net/p/iperf2/code/ci/2a5fe6ffd4519ef3c6fc95704096646f897bd124/
[3] https://git.musl-libc.org/cgit/musl/tree/include/netinet/udp.h?h=v1.2.5#n11
[4] https://sourceforge.net/p/iperf2/code/ci/2ba97baecb4930e373ee5f51fc84115246e85096/
[5] https://buildroot.org/
Signed-off-by: Julien Olivain <ju.o@free.fr>
--- a/src/checksums.c
+++ b/src/checksums.c
@@ -47,6 +47,9 @@
* by Robert J. McMahon (rjmcmahon@rjmcmahon.com, bob.mcmahon@broadcom.com)
* -------------------------------------------------------------------
*/
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
#include "headers.h"
/*