package/pppd: fix build with kernel < 4.7

Fix the following build failure with kernel < 4.7 raised since bump to
version 2.5.0 in commit 0c15169f5a and
81ad945630:

sys-linux.c: In function 'get_ppp_stats_rtnetlink':
sys-linux.c:1783:29: error: field 'ifsm' has incomplete type
 1783 |         struct if_stats_msg ifsm;
      |                             ^~~~

Fixes:
 - http://autobuild.buildroot.org/results/82392df447f650f241f23e59e65131fb4a930010

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
This commit is contained in:
Fabrice Fontaine 2024-05-05 17:53:49 +02:00 committed by Thomas Petazzoni
parent f82384652c
commit 45c1def991

View File

@ -0,0 +1,66 @@
From 7a3f478a4b7128d4f70ea64d99fedec766b1c009 Mon Sep 17 00:00:00 2001
From: Jaco Kroon <jaco@uls.co.za>
Date: Tue, 31 Oct 2023 11:47:21 +0200
Subject: [PATCH] pppd/sys-linux: Fix compile with older Linux kernel headers
(#452)
When compiling pppd against kernel headers which don't provide
the definitions for the NETLINK mechanisms, leave out the code
which uses NETLINK, so as to avoid getting compile errors.
Upstream commit in Linux refers.
commit 10c9ead9f3c6bb24bddc9a96681f7d58e6623966
Author: Roopa Prabhu <roopa@cumulusnetworks.com>
Date: Wed Apr 20 08:43:43 2016 -0700
rtnetlink: add new RTM_GETSTATS message to dump link stats
This commit adds the #defines and structs used, so simply not compiling
this code if the required #defines isn't there should solve the problem.
Closes: #450
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
Upstream: https://github.com/ppp-project/ppp/commit/7a3f478a4b7128d4f70ea64d99fedec766b1c009
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
---
pppd/sys-linux.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/pppd/sys-linux.c b/pppd/sys-linux.c
index 561b150f2..a8d6cd95b 100644
--- a/pppd/sys-linux.c
+++ b/pppd/sys-linux.c
@@ -131,16 +131,6 @@
#include <linux/netlink.h>
#include <linux/rtnetlink.h>
#include <linux/if_link.h>
-
-/* Attempt at retaining compile-support with older than 4.7 kernels, or kernels
- * where RTM_NEWSTATS isn't defined for whatever reason.
- */
-#ifndef RTM_NEWSTATS
-#define RTM_NEWSTATS 92
-#define RTM_GETSTATS 94
-#define IFLA_STATS_LINK_64 1
-#endif
-
#include <linux/if_addr.h>
/* glibc versions prior to 2.24 do not define SOL_NETLINK */
@@ -1776,6 +1766,7 @@ get_ppp_stats_ioctl(int u, struct pppd_stats *stats)
static int
get_ppp_stats_rtnetlink(int u, struct pppd_stats *stats)
{
+#ifdef RTM_NEWSTATS
static int fd = -1;
struct {
@@ -1825,6 +1816,7 @@ get_ppp_stats_rtnetlink(int u, struct pppd_stats *stats)
err:
close(fd);
fd = -1;
+#endif
return 0;
}