Skip to contentSkip to conversation

musl support for libnet and netsniff-ng

PATCH New Tobias Klauser 2 participants 7 messages Nov 14, 2016 – Nov 15, 2016

lore
Share & tools
lore
#0 lore raw

cover musl support for libnet and netsniff-ng

netsniff-ng can be build with musl since version 0.5.8, however it depends on libnet which currently fails to build with musl. This series fixes libnet build with musl by adding the corresponding upstream patch and then enabling the netsniff-ng with musl as well.

Tobias Klauser (2):
package/libnet: fix compilation with musl
package/netsniff-ng: allow to build with musl

 package/libnet/0001-support-musl-libc.patch | 50 +++++++++++++++++++++++++++++
 package/netsniff-ng/Config.in               |  3 +-
 2 files changed, 51 insertions(+), 2 deletions(-)
 create mode 100644 package/libnet/0001-support-musl-libc.patch
Signature · 1 line
2.11.0.rc0.7.gbe5a750
#1 lore raw

PATCH 1/2 package/libnet: fix compilation with musl

Patch taken from from upstream:
https://github.com/sam-github/libnet/commit/ffd7fab744a9ad2893169a8fb6244074604d5d0d

Adjusted the file paths manually so the patch applies to the packaged libnet sources.

---
 package/libnet/0001-support-musl-libc.patch | 50 +++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 package/libnet/0001-support-musl-libc.patch
package/libnet/0001-support-musl-libc.patch new file +50 -0
new file mode 100644
index 000000000000..0704157bb57e
@@ -0,0 +1,50 @@
+From ffd7fab744a9ad2893169a8fb6244074604d5d0d Mon Sep 17 00:00:00 2001
+From: rofl0r <[email protected]>
+Date: Tue, 12 Aug 2014 21:51:39 +0200
+Subject: [PATCH] Support musl libc, remove support for glibc < 2.1
+
+The workarounds for glibc < 2.1 (was released february 1999) break the
+build with musl libc.
+
+It is very unlikely that 2.0 or earlier is still in use, and if so,
+1) that's a big security hole
+2) code wouldnt compile anyway since noone tested build in the last decade
+3) user of it wouldn't expect anyway to get bleeding edge sw built on it,
+   so he would just use the latest version that works for him.
+
+Closes #52
+---
+ libnet/src/libnet_link_linux.c | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+diff --git a/libnet/src/libnet_link_linux.c b/libnet/src/libnet_link_linux.c
+index 054458d..3c6df3c 100644
+--- a/src/libnet_link_linux.c
++++ b/src/libnet_link_linux.c
+@@ -30,26 +30,15 @@
+ #include <sys/time.h>
+ 
+ #include <net/if.h>
+-#if (__GLIBC__)
+ #include <netinet/if_ether.h>
+ #include <net/if_arp.h>
+-#else
+-#include <linux/if_arp.h>
+-#include <linux/if_ether.h>
+-#endif
+ 
+ #if (HAVE_PACKET_SOCKET)
+ #ifndef SOL_PACKET
+ #define SOL_PACKET 263
+ #endif  /* SOL_PACKET */
+-#if __GLIBC__ >= 2 && __GLIBC_MINOR >= 1
+ #include <netpacket/packet.h>
+ #include <net/ethernet.h>     /* the L2 protocols */
+-#else
+-#include <asm/types.h>
+-#include <linux/if_packet.h>
+-#include <linux/if_ether.h>   /* The L2 protocols */
+-#endif
+ #endif  /* HAVE_PACKET_SOCKET */
+ 
+ #include "../include/libnet.h"
Signature · 1 line
2.11.0.rc0.7.gbe5a750
#2 lore raw

PATCH 1/2 package/libnet: fix compilation with musl

Hello,

Quoted 11 lines · Tobias Klauser

Patch taken from from upstream:
https://github.com/sam-github/libnet/commit/ffd7fab744a9ad2893169a8fb6244074604d5d0d

Adjusted the file paths manually so the patch applies to the packaged libnet sources.

---
 package/libnet/0001-support-musl-libc.patch | 50 +++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 package/libnet/0001-support-musl-libc.patch

Adding the patch fixing the musl build issue is good... but if you don't adjust the Config.in file of this package to re-enable it for musl configurations, it's a bit useless, no?

So I've fixed that, and applied your patch to next. Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#3 lore raw

PATCH 1/2 package/libnet: fix compilation with musl

Quoted 15 lines · Thomas Petazzoni

Hello,

Quoted 11 lines · Tobias Klauser

Patch taken from from upstream:
https://github.com/sam-github/libnet/commit/ffd7fab744a9ad2893169a8fb6244074604d5d0d

Adjusted the file paths manually so the patch applies to the packaged libnet sources.

---
 package/libnet/0001-support-musl-libc.patch | 50 +++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 package/libnet/0001-support-musl-libc.patch
Quoted 5 lines

Adding the patch fixing the musl build issue is good... but if you don't adjust the Config.in file of this package to re-enable it for musl configurations, it's a bit useless, no?

So I've fixed that, and applied your patch to next. Thanks!

Indeed, I forgot to stage that change in my local commit. Sorry about that and thanks for fixing it up!

#4 lore raw

PATCH 2/2 package/netsniff-ng: allow to build with musl

In reply to Tobias Klauser

netsniff-ng allows build with musl since version 0.5.8. With libnet now being able to build with musl, let's enable musl for netsniff-ng as well.

---
 package/netsniff-ng/Config.in | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
package/netsniff-ng/Config.in +1 -2
index e52bb25f0acd..dca016469736 100644
@@ -7,8 +7,7 @@ config BR2_PACKAGE_NETSNIFF_NG
 	select BR2_PACKAGE_LIBURCU
 	select BR2_PACKAGE_LIBNET
 	# Build with uClibc fails due to missing ceill()
-	# Build with musl fails due to various header issues
-	depends on BR2_TOOLCHAIN_USES_GLIBC
+	depends on !BR2_TOOLCHAIN_USES_UCLIBC
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0
 	depends on BR2_TOOLCHAIN_HAS_THREADS
 	depends on BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS
Signature · 1 line
2.11.0.rc0.7.gbe5a750
#5 lore raw

PATCH 2/2 package/netsniff-ng: allow to build with musl

Hello,

Quoted 14 lines · Tobias Klauser

netsniff-ng allows build with musl since version 0.5.8. With libnet now being able to build with musl, let's enable musl for netsniff-ng as well.

---
 package/netsniff-ng/Config.in | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
package/netsniff-ng/Config.in +0 -0
index e52bb25f0acd..dca016469736 100644

package/netsniff-ng/Config.in config BR2_PACKAGE_NETSNIFF_NG · line 10

Quoted 6 lines
package/netsniff-ng/Config.in +1 -2
@@ -7,8 +7,7 @@ config BR2_PACKAGE_NETSNIFF_NG
 	select BR2_PACKAGE_LIBURCU
 	select BR2_PACKAGE_LIBNET
 	# Build with uClibc fails due to missing ceill()
-	# Build with musl fails due to various header issues
-	depends on BR2_TOOLCHAIN_USES_GLIBC
+	depends on !BR2_TOOLCHAIN_USES_UCLIBC

This is good, but you forgot to update the Config.in comment that shows the dependencies needed for this package. So I've fixed that and applied to next. Thanks!

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux and Kernel engineering
http://free-electrons.com
#6 lore raw

PATCH 2/2 package/netsniff-ng: allow to build with musl

Quoted 12 lines · Thomas Petazzoni

Hello,

Quoted 9 lines · Tobias Klauser

netsniff-ng allows build with musl since version 0.5.8. With libnet now being able to build with musl, let's enable musl for netsniff-ng as well.

---
 package/netsniff-ng/Config.in | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)
Quoted 15 lines

package/netsniff-ng/Config.in config BR2_PACKAGE_NETSNIFF_NG · line 10

Quoted 11 lines
package/netsniff-ng/Config.in +1 -2
index e52bb25f0acd..dca016469736 100644
@@ -7,8 +7,7 @@ config BR2_PACKAGE_NETSNIFF_NG
 	select BR2_PACKAGE_LIBURCU
 	select BR2_PACKAGE_LIBNET
 	# Build with uClibc fails due to missing ceill()
-	# Build with musl fails due to various header issues
-	depends on BR2_TOOLCHAIN_USES_GLIBC
+	depends on !BR2_TOOLCHAIN_USES_UCLIBC

This is good, but you forgot to update the Config.in comment that shows the dependencies needed for this package. So I've fixed that and applied to next. Thanks!

Thanks for fixing it up!