diff mbox series

[meta-oe,kirkstone,V2] libnet: backport patch to remove configure time SOCK_PACKET check

Message ID 20251015023239.2742022-1-guocai.he.cn@windriver.com
State New
Headers show
Series [meta-oe,kirkstone,V2] libnet: backport patch to remove configure time SOCK_PACKET check | expand

Commit Message

He, Guocai (CN) Oct. 15, 2025, 2:32 a.m. UTC
From: Guocai He <guocai.he.cn@windriver.com>

Backport [1] to fix the do_configure error like below:

checking for packet socket (PF_PACKET)... ./pf_packet-test:
/lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.34' not found

[1] https://github.com/libnet/libnet/commit/19979c4541ddcc817c64ea911a309ee71a8cc250

Signed-off-by: Qi Chen <Qi.Chen@windriver.com>
Signed-off-by: Guocai He <guocai.he.cn@windriver.com>
---
V2:
Correct the mail client's settings about charset
---
 ...move-support-for-SOCK_PACKET-sockets.patch | 251 ++++++++++++++++++
 .../libnet/libnet_1.2-rc3.bb                  |   1 +
 2 files changed, 252 insertions(+)
 create mode 100644 meta-oe/recipes-connectivity/libnet/libnet/0001-Remove-support-for-SOCK_PACKET-sockets.patch

Comments

Gyorgy Sarvari Oct. 15, 2025, 8:01 a.m. UTC | #1
Thank you so much for the correction.
Just for your information, your first version was included in a previous
merge, and is a part of Kirkstone[1].

[1]:
https://git.openembedded.org/meta-openembedded/commit/meta-oe/recipes-connectivity/libnet?h=kirkstone&id=12824411988d10737a840a97336e1ba7c8e4f525

On 10/15/25 04:32, guocai.he.cn@windriver.com wrote:
> From: Guocai He <guocai.he.cn@windriver.com>
>
> Backport [1] to fix the do_configure error like below:
>
> checking for packet socket (PF_PACKET)... ./pf_packet-test:
> /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.34' not found
>
> [1] https://github.com/libnet/libnet/commit/19979c4541ddcc817c64ea911a309ee71a8cc250
>
> Signed-off-by: Qi Chen <Qi.Chen@windriver.com>
> Signed-off-by: Guocai He <guocai.he.cn@windriver.com>
> ---
> V2:
> Correct the mail client's settings about charset
> ---
>  ...move-support-for-SOCK_PACKET-sockets.patch | 251 ++++++++++++++++++
>  .../libnet/libnet_1.2-rc3.bb                  |   1 +
>  2 files changed, 252 insertions(+)
>  create mode 100644 meta-oe/recipes-connectivity/libnet/libnet/0001-Remove-support-for-SOCK_PACKET-sockets.patch
>
> diff --git a/meta-oe/recipes-connectivity/libnet/libnet/0001-Remove-support-for-SOCK_PACKET-sockets.patch b/meta-oe/recipes-connectivity/libnet/libnet/0001-Remove-support-for-SOCK_PACKET-sockets.patch
> new file mode 100644
> index 0000000000..2fc7ecd180
> --- /dev/null
> +++ b/meta-oe/recipes-connectivity/libnet/libnet/0001-Remove-support-for-SOCK_PACKET-sockets.patch
> @@ -0,0 +1,251 @@
> +From dd77c43a9773edb895bfe9074315e83a19cac471 Mon Sep 17 00:00:00 2001
> +From: Guocai He <guocai.he.cn@windriver.com>
> +Date: Tue, 26 Aug 2025 06:15:41 +0000
> +Subject: [PATCH] Remove support for SOCK_PACKET sockets
> +MIME-Version: 1.0
> +Content-Type: text/plain; charset=UTF-8
> +Content-Transfer-Encoding: 8bit
> +
> +The current code has a build-time check to verify that PF_PACKET sockets
> +are supported on Linux systems and if not, fallback on SOCK_PACKET sockets.
> +
> +The test implementation relies on FTM (Feature Test Macros) to detect
> +glibc and its version to include correct headers.
> +But, some libc such as the musl libc do not have such macros, making the
> +test program compilation fail and libnet fallback on SOCK_PACKET.
> +
> +Since PF_PACKET support is present in kernel for more than 20 years now,
> +the simplest solution and safe choice is to just drop support for
> +SOCK_PACKET and assume PF_PACKET is always available on any Linux system.
> +
> +Signed-off-by: Hervé Boisse <admin@netgeek.ovh>
> +
> +Upstream-Status: Backport [19979c4541ddcc817c64ea911a309ee71a8cc250]
> +
> +Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> +Signed-off-by: Guocai He <guocai.he.cn@windriver.com>
> +---
> + acinclude.m4            | 87 -----------------------------------------
> + configure.ac            |  3 --
> + src/libnet_link_linux.c | 19 +--------
> + win32/config.h          |  1 -
> + 4 files changed, 1 insertion(+), 109 deletions(-)
> +
> +diff --git a/acinclude.m4 b/acinclude.m4
> +index 064b582..f8ab967 100644
> +--- a/acinclude.m4
> ++++ b/acinclude.m4
> +@@ -25,93 +25,6 @@ AC_DEFUN([AC_LIBNET_LINUX_PROCFS],
> +                   [Define if you have the Linux /proc filesystem.])
> +     fi])
> + 
> +-dnl
> +-dnl Checks to see if this linux kernel has a working PF_PACKET
> +-dnl
> +-dnl usage:
> +-dnl
> +-dnl     AC_LIBNET_CHECK_PF_PACKET
> +-dnl
> +-dnl results:
> +-dnl
> +-dnl     HAVE_PACKET_SOCKET (DEFINED)
> +-dnl
> +-
> +-AC_DEFUN([AC_LIBNET_CHECK_PF_PACKET],
> +-[
> +-    AC_MSG_CHECKING(for packet socket (PF_PACKET))
> +-    AC_CACHE_VAL(libnet_cv_have_packet_socket,
> +-
> +-        [
> +-    cat > pf_packet-test.c << EOF
> +-#include <stdio.h>
> +-#include <errno.h>
> +-#include <stdlib.h>
> +-#include <netinet/in.h>
> +-#include <sys/socket.h>
> +-#include <features.h>    /* for the glibc version number */
> +-#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
> +- 
> +-#ifndef SOL_PACKET
> +-#define SOL_PACKET 263
> +-#endif  /* SOL_PACKET */
> +- 
> +-int
> +-main(int argc, char **argv)
> +-{
> +-    int fd;
> +- 
> +-    fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
> +-    if (fd == -1)
> +-    {
> +-        if (errno == EPERM)
> +-        {
> +-            /* user's UID != 0 */
> +-            printf("probably");
> +-            exit (EXIT_FAILURE);
> +-        }
> +-        printf("no");
> +-        exit (EXIT_FAILURE);
> +-    }
> +-    printf("yes");
> +-    exit (EXIT_SUCCESS);
> +-}
> +-EOF
> +-    ${CC-cc} -o pf_packet-test $CFLAGS pf_packet-test.c >/dev/null 2>&1
> +-
> +-    # Oopz 4.3 BSD doesn't have this.  Sorry.
> +-    if test ! -x ./pf_packet-test ; then
> +-        libnet_cv_have_packet_socket=choked
> +-    else
> +-        libnet_cv_have_packet_socket=`./pf_packet-test`;
> +-    fi
> +-    if test $libnet_cv_have_packet_socket = choked; then
> +-        AC_MSG_RESULT(test program compile choked... assuming no)
> +-    elif test $libnet_cv_have_packet_socket = yes; then
> +-        AC_MSG_RESULT(yes)
> +-    elif test $libnet_cv_have_packet_socket = probably; then
> +-        AC_MSG_RESULT(test program got EPERM... assuming yes)
> +-    elif test $libnet_cv_have_packet_socket = no; then
> +-        AC_MSG_RESULT(no)
> +-    fi
> +-
> +-    rm -f pf_packet-test* core core.pf_packet-test
> +-
> +-    ])
> +-
> +-    if test $libnet_cv_have_packet_socket = yes -o $libnet_cv_have_packet_socket = probably; then
> +-        AC_DEFINE(HAVE_PACKET_SOCKET, 1,
> +-          [Define if we're running on a Linux system with PF_PACKET sockets.])
> +-    fi
> +-])
> +-
> + dnl
> + dnl Looks for a previous libnet version and attempts to determine which verion
> + dnl it is.  Version 0.8 was the first version that actually knew internally
> +diff --git a/configure.ac b/configure.ac
> +index 4751f62..ad002b9 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -51,7 +51,6 @@ AC_LIBNET_ENDIAN_CHECK
> + dnl AC_LBL_LIBRARY_NET
> + 
> + AC_SUBST(ENDIANESS)
> +-AC_SUBST(HAVE_PACKET_SOCKET)
> + AC_SUBST(ADDITIONAL_LIBS)
> + AC_SUBST(LIBNET_CONFIG_DEFINES)
> + AC_SUBST(LIBNET_CONFIG_LIBS)
> +@@ -87,7 +86,6 @@ if test -n "${with_link_layer}"; then
> +         snoop) AC_LIBOBJ([libnet_link_snoop]) ;;
> +         dlpi)  AC_LIBOBJ([libnet_link_dlpi]) ;;
> +         linux) AC_LIBOBJ([libnet_link_linux])
> +-	       AC_LIBNET_CHECK_PF_PACKET
> + 	       AC_LIBNET_LINUX_PROCFS ;;
> +         none) AC_LIBOBJ([libnet_link_none]) ;;
> +         *) AC_MSG_ERROR([Invalid link type "${with_link_layer}"]) ;;
> +@@ -115,7 +113,6 @@ elif test "${ac_cv_header_sys_dlpi_h}" = "yes" ; then
> + elif test "${ac_cv_header_linux_socket_h}" = "yes" ; then
> +     AC_LIBOBJ([libnet_link_linux])
> +     AC_MSG_RESULT(found link layer linux)
> +-    AC_LIBNET_CHECK_PF_PACKET
> +     AC_LIBNET_LINUX_PROCFS
> + elif test "${cross_compiling}" != "yes" -a -c /dev/bpf0 ; then           # check again in case not readable
> +     AC_LIBOBJ([libnet_link_bpf])
> +diff --git a/src/libnet_link_linux.c b/src/libnet_link_linux.c
> +index 3c6df3c..1dd2a42 100644
> +--- a/src/libnet_link_linux.c
> ++++ b/src/libnet_link_linux.c
> +@@ -33,13 +33,11 @@
> + #include <netinet/if_ether.h>
> + #include <net/if_arp.h>
> + 
> +-#if (HAVE_PACKET_SOCKET)
> + #ifndef SOL_PACKET
> + #define SOL_PACKET 263
> + #endif  /* SOL_PACKET */
> + #include <netpacket/packet.h>
> + #include <net/ethernet.h>     /* the L2 protocols */
> +-#endif  /* HAVE_PACKET_SOCKET */
> + 
> + #include "../include/libnet.h"
> + 
> +@@ -69,11 +67,8 @@ libnet_open_link(libnet_t *l)
> +         return (-1);
> +     } 
> + 
> +-#if (HAVE_PACKET_SOCKET)
> +     l->fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
> +-#else
> +-    l->fd = socket(PF_INET, SOCK_PACKET, htons(ETH_P_ALL));
> +-#endif
> ++    
> +     if (l->fd == -1)
> +     {
> +         if (errno == EPERM) {
> +@@ -177,7 +172,6 @@ libnet_close_link(libnet_t *l)
> + }
> + 
> + 
> +-#if (HAVE_PACKET_SOCKET)
> + static int
> + get_iface_index(int fd, const char *device)
> + {
> +@@ -194,18 +188,12 @@ get_iface_index(int fd, const char *device)
> +  
> +     return ifr.ifr_ifindex;
> + }
> +-#endif
> +-
> + 
> + int
> + libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size)
> + {
> +     int c;
> +-#if (HAVE_PACKET_SOCKET)
> +     struct sockaddr_ll sa;
> +-#else
> +-    struct sockaddr sa;
> +-#endif
> + 
> +     if (l == NULL)
> +     { 
> +@@ -213,7 +201,6 @@ libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size)
> +     }
> + 
> +     memset(&sa, 0, sizeof (sa));
> +-#if (HAVE_PACKET_SOCKET)
> +     sa.sll_family    = AF_PACKET;
> +     sa.sll_ifindex   = get_iface_index(l->fd, l->device);
> +     if (sa.sll_ifindex == -1)
> +@@ -221,10 +208,6 @@ libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size)
> +         return (-1);
> +     }
> +     sa.sll_protocol  = htons(ETH_P_ALL);
> +-#else
> +-	strncpy(sa.sa_data, l->device, sizeof (sa.sa_data) - 1);
> +-    sa.sa_data[sizeof (sa.sa_data) - 1] = 0;
> +-#endif
> + 
> +     c = sendto(l->fd, packet, size, 0,
> +             (struct sockaddr *)&sa, sizeof (sa));
> +diff --git a/win32/config.h b/win32/config.h
> +index 926f12f..12e1ee7 100644
> +--- a/win32/config.h
> ++++ b/win32/config.h
> +@@ -11,7 +11,6 @@
> + #undef HAVE_HPUX11
> + #undef HAVE_SOCKADDR_SA_LEN
> + #undef HAVE_DLPI
> +-#undef HAVE_PACKET_SOCKET
> + #undef HAVE_STRUCT_IP_CSUM
> + #undef HAVE_LIB_PCAP
> + #undef STUPID_SOLARIS_CHECKSUM_BUG
> +-- 
> +2.35.5
> +
> diff --git a/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb b/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
> index 785abf66d6..5e35fc3391 100644
> --- a/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
> +++ b/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
> @@ -10,6 +10,7 @@ PROVIDES = "libnet-1.2rc2"
>  
>  SRC_URI = "${SOURCEFORGE_MIRROR}/libnet-dev/${BPN}-${PV}.tar.gz \
>             file://0001-Support-musl-libc-remove-support-for-glibc-2.1.patch \
> +           file://0001-Remove-support-for-SOCK_PACKET-sockets.patch \
>            "
>  
>  SRC_URI[md5sum] = "f051e6e5bdecddb90f77c701c2ca1804"
diff mbox series

Patch

diff --git a/meta-oe/recipes-connectivity/libnet/libnet/0001-Remove-support-for-SOCK_PACKET-sockets.patch b/meta-oe/recipes-connectivity/libnet/libnet/0001-Remove-support-for-SOCK_PACKET-sockets.patch
new file mode 100644
index 0000000000..2fc7ecd180
--- /dev/null
+++ b/meta-oe/recipes-connectivity/libnet/libnet/0001-Remove-support-for-SOCK_PACKET-sockets.patch
@@ -0,0 +1,251 @@ 
+From dd77c43a9773edb895bfe9074315e83a19cac471 Mon Sep 17 00:00:00 2001
+From: Guocai He <guocai.he.cn@windriver.com>
+Date: Tue, 26 Aug 2025 06:15:41 +0000
+Subject: [PATCH] Remove support for SOCK_PACKET sockets
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The current code has a build-time check to verify that PF_PACKET sockets
+are supported on Linux systems and if not, fallback on SOCK_PACKET sockets.
+
+The test implementation relies on FTM (Feature Test Macros) to detect
+glibc and its version to include correct headers.
+But, some libc such as the musl libc do not have such macros, making the
+test program compilation fail and libnet fallback on SOCK_PACKET.
+
+Since PF_PACKET support is present in kernel for more than 20 years now,
+the simplest solution and safe choice is to just drop support for
+SOCK_PACKET and assume PF_PACKET is always available on any Linux system.
+
+Signed-off-by: Hervé Boisse <admin@netgeek.ovh>
+
+Upstream-Status: Backport [19979c4541ddcc817c64ea911a309ee71a8cc250]
+
+Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
+Signed-off-by: Guocai He <guocai.he.cn@windriver.com>
+---
+ acinclude.m4            | 87 -----------------------------------------
+ configure.ac            |  3 --
+ src/libnet_link_linux.c | 19 +--------
+ win32/config.h          |  1 -
+ 4 files changed, 1 insertion(+), 109 deletions(-)
+
+diff --git a/acinclude.m4 b/acinclude.m4
+index 064b582..f8ab967 100644
+--- a/acinclude.m4
++++ b/acinclude.m4
+@@ -25,93 +25,6 @@ AC_DEFUN([AC_LIBNET_LINUX_PROCFS],
+                   [Define if you have the Linux /proc filesystem.])
+     fi])
+ 
+-dnl
+-dnl Checks to see if this linux kernel has a working PF_PACKET
+-dnl
+-dnl usage:
+-dnl
+-dnl     AC_LIBNET_CHECK_PF_PACKET
+-dnl
+-dnl results:
+-dnl
+-dnl     HAVE_PACKET_SOCKET (DEFINED)
+-dnl
+-
+-AC_DEFUN([AC_LIBNET_CHECK_PF_PACKET],
+-[
+-    AC_MSG_CHECKING(for packet socket (PF_PACKET))
+-    AC_CACHE_VAL(libnet_cv_have_packet_socket,
+-
+-        [
+-    cat > pf_packet-test.c << EOF
+-#include <stdio.h>
+-#include <errno.h>
+-#include <stdlib.h>
+-#include <netinet/in.h>
+-#include <sys/socket.h>
+-#include <features.h>    /* for the glibc version number */
+-#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
+- 
+-#ifndef SOL_PACKET
+-#define SOL_PACKET 263
+-#endif  /* SOL_PACKET */
+- 
+-int
+-main(int argc, char **argv)
+-{
+-    int fd;
+- 
+-    fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
+-    if (fd == -1)
+-    {
+-        if (errno == EPERM)
+-        {
+-            /* user's UID != 0 */
+-            printf("probably");
+-            exit (EXIT_FAILURE);
+-        }
+-        printf("no");
+-        exit (EXIT_FAILURE);
+-    }
+-    printf("yes");
+-    exit (EXIT_SUCCESS);
+-}
+-EOF
+-    ${CC-cc} -o pf_packet-test $CFLAGS pf_packet-test.c >/dev/null 2>&1
+-
+-    # Oopz 4.3 BSD doesn't have this.  Sorry.
+-    if test ! -x ./pf_packet-test ; then
+-        libnet_cv_have_packet_socket=choked
+-    else
+-        libnet_cv_have_packet_socket=`./pf_packet-test`;
+-    fi
+-    if test $libnet_cv_have_packet_socket = choked; then
+-        AC_MSG_RESULT(test program compile choked... assuming no)
+-    elif test $libnet_cv_have_packet_socket = yes; then
+-        AC_MSG_RESULT(yes)
+-    elif test $libnet_cv_have_packet_socket = probably; then
+-        AC_MSG_RESULT(test program got EPERM... assuming yes)
+-    elif test $libnet_cv_have_packet_socket = no; then
+-        AC_MSG_RESULT(no)
+-    fi
+-
+-    rm -f pf_packet-test* core core.pf_packet-test
+-
+-    ])
+-
+-    if test $libnet_cv_have_packet_socket = yes -o $libnet_cv_have_packet_socket = probably; then
+-        AC_DEFINE(HAVE_PACKET_SOCKET, 1,
+-          [Define if we're running on a Linux system with PF_PACKET sockets.])
+-    fi
+-])
+-
+ dnl
+ dnl Looks for a previous libnet version and attempts to determine which verion
+ dnl it is.  Version 0.8 was the first version that actually knew internally
+diff --git a/configure.ac b/configure.ac
+index 4751f62..ad002b9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -51,7 +51,6 @@ AC_LIBNET_ENDIAN_CHECK
+ dnl AC_LBL_LIBRARY_NET
+ 
+ AC_SUBST(ENDIANESS)
+-AC_SUBST(HAVE_PACKET_SOCKET)
+ AC_SUBST(ADDITIONAL_LIBS)
+ AC_SUBST(LIBNET_CONFIG_DEFINES)
+ AC_SUBST(LIBNET_CONFIG_LIBS)
+@@ -87,7 +86,6 @@ if test -n "${with_link_layer}"; then
+         snoop) AC_LIBOBJ([libnet_link_snoop]) ;;
+         dlpi)  AC_LIBOBJ([libnet_link_dlpi]) ;;
+         linux) AC_LIBOBJ([libnet_link_linux])
+-	       AC_LIBNET_CHECK_PF_PACKET
+ 	       AC_LIBNET_LINUX_PROCFS ;;
+         none) AC_LIBOBJ([libnet_link_none]) ;;
+         *) AC_MSG_ERROR([Invalid link type "${with_link_layer}"]) ;;
+@@ -115,7 +113,6 @@ elif test "${ac_cv_header_sys_dlpi_h}" = "yes" ; then
+ elif test "${ac_cv_header_linux_socket_h}" = "yes" ; then
+     AC_LIBOBJ([libnet_link_linux])
+     AC_MSG_RESULT(found link layer linux)
+-    AC_LIBNET_CHECK_PF_PACKET
+     AC_LIBNET_LINUX_PROCFS
+ elif test "${cross_compiling}" != "yes" -a -c /dev/bpf0 ; then           # check again in case not readable
+     AC_LIBOBJ([libnet_link_bpf])
+diff --git a/src/libnet_link_linux.c b/src/libnet_link_linux.c
+index 3c6df3c..1dd2a42 100644
+--- a/src/libnet_link_linux.c
++++ b/src/libnet_link_linux.c
+@@ -33,13 +33,11 @@
+ #include <netinet/if_ether.h>
+ #include <net/if_arp.h>
+ 
+-#if (HAVE_PACKET_SOCKET)
+ #ifndef SOL_PACKET
+ #define SOL_PACKET 263
+ #endif  /* SOL_PACKET */
+ #include <netpacket/packet.h>
+ #include <net/ethernet.h>     /* the L2 protocols */
+-#endif  /* HAVE_PACKET_SOCKET */
+ 
+ #include "../include/libnet.h"
+ 
+@@ -69,11 +67,8 @@ libnet_open_link(libnet_t *l)
+         return (-1);
+     } 
+ 
+-#if (HAVE_PACKET_SOCKET)
+     l->fd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL));
+-#else
+-    l->fd = socket(PF_INET, SOCK_PACKET, htons(ETH_P_ALL));
+-#endif
++    
+     if (l->fd == -1)
+     {
+         if (errno == EPERM) {
+@@ -177,7 +172,6 @@ libnet_close_link(libnet_t *l)
+ }
+ 
+ 
+-#if (HAVE_PACKET_SOCKET)
+ static int
+ get_iface_index(int fd, const char *device)
+ {
+@@ -194,18 +188,12 @@ get_iface_index(int fd, const char *device)
+  
+     return ifr.ifr_ifindex;
+ }
+-#endif
+-
+ 
+ int
+ libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size)
+ {
+     int c;
+-#if (HAVE_PACKET_SOCKET)
+     struct sockaddr_ll sa;
+-#else
+-    struct sockaddr sa;
+-#endif
+ 
+     if (l == NULL)
+     { 
+@@ -213,7 +201,6 @@ libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size)
+     }
+ 
+     memset(&sa, 0, sizeof (sa));
+-#if (HAVE_PACKET_SOCKET)
+     sa.sll_family    = AF_PACKET;
+     sa.sll_ifindex   = get_iface_index(l->fd, l->device);
+     if (sa.sll_ifindex == -1)
+@@ -221,10 +208,6 @@ libnet_write_link(libnet_t *l, const uint8_t *packet, uint32_t size)
+         return (-1);
+     }
+     sa.sll_protocol  = htons(ETH_P_ALL);
+-#else
+-	strncpy(sa.sa_data, l->device, sizeof (sa.sa_data) - 1);
+-    sa.sa_data[sizeof (sa.sa_data) - 1] = 0;
+-#endif
+ 
+     c = sendto(l->fd, packet, size, 0,
+             (struct sockaddr *)&sa, sizeof (sa));
+diff --git a/win32/config.h b/win32/config.h
+index 926f12f..12e1ee7 100644
+--- a/win32/config.h
++++ b/win32/config.h
+@@ -11,7 +11,6 @@
+ #undef HAVE_HPUX11
+ #undef HAVE_SOCKADDR_SA_LEN
+ #undef HAVE_DLPI
+-#undef HAVE_PACKET_SOCKET
+ #undef HAVE_STRUCT_IP_CSUM
+ #undef HAVE_LIB_PCAP
+ #undef STUPID_SOLARIS_CHECKSUM_BUG
+-- 
+2.35.5
+
diff --git a/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb b/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
index 785abf66d6..5e35fc3391 100644
--- a/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
+++ b/meta-oe/recipes-connectivity/libnet/libnet_1.2-rc3.bb
@@ -10,6 +10,7 @@  PROVIDES = "libnet-1.2rc2"
 
 SRC_URI = "${SOURCEFORGE_MIRROR}/libnet-dev/${BPN}-${PV}.tar.gz \
            file://0001-Support-musl-libc-remove-support-for-glibc-2.1.patch \
+           file://0001-Remove-support-for-SOCK_PACKET-sockets.patch \
           "
 
 SRC_URI[md5sum] = "f051e6e5bdecddb90f77c701c2ca1804"