All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] ell/rtnl: fix compile with older toolchains
@ 2020-04-09 20:38 Peter Seiderer
  2020-04-09 21:15 ` =?unknown-8bit?q?Micha=C5=82?= Lowas-Rzechonek
  2020-04-10 17:58 ` Marcel Holtmann
  0 siblings, 2 replies; 4+ messages in thread
From: Peter Seiderer @ 2020-04-09 20:38 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 2066 bytes --]

Older toolchains need to include sys/types.h and sys/socket.h before
linux/if.h, RTA_PREF was introduces with linux-4.1.x.

Fixes:

  In file included from ell/rtnl.c:28:0:
  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:185:19: error: field 'ifru_addr' has incomplete type
  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:186:19: error: field 'ifru_dstaddr' has incomplete type
  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:187:19: error: field 'ifru_broadaddr' has incomplete type
  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:188:19: error: field 'ifru_netmask' has incomplete type
  .../arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:189:20: error: field 'ifru_hwaddr' has incomplete type
  ell/rtnl.c: In function 'l_rtnl_route_extract':
  ell/rtnl.c:120:8: error: 'RTA_PREF' undeclared (first use in this function)
---
 configure.ac | 2 ++
 ell/rtnl.c   | 7 ++++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/configure.ac b/configure.ac
index 0351f89..3be35a4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -113,6 +113,8 @@ AC_CHECK_LIB(dl, dlopen, dummy=yes,
 
 AC_CHECK_HEADERS(linux/types.h linux/if_alg.h)
 
+AC_CHECK_DECLS([RTA_PREF], [], [], [[#include <linux/rtnetlink.h>]])
+
 AC_ARG_ENABLE(glib, AC_HELP_STRING([--enable-glib],
 				[enable ell/glib main loop example]),
 					[enable_glib=${enableval}])
diff --git a/ell/rtnl.c b/ell/rtnl.c
index dc83937..3493d34 100644
--- a/ell/rtnl.c
+++ b/ell/rtnl.c
@@ -25,8 +25,9 @@
 #endif
 
 #define _GNU_SOURCE
-#include <linux/if.h>
+#include <sys/types.h>
 #include <sys/socket.h>
+#include <linux/if.h>
 #include <arpa/inet.h>
 
 #include "util.h"
@@ -35,6 +36,10 @@
 #include "rtnl.h"
 #include "private.h"
 
+#if defined HAVE_DECL_RTA_PREF && !HAVE_DECL_RTA_PREF
+#define RTA_PREF 20
+#endif
+
 static size_t rta_add_u8(void *rta_buf, unsigned short type, uint8_t value)
 {
 	struct rtattr *rta = rta_buf;
-- 
2.26.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v1] ell/rtnl: fix compile with older toolchains
  2020-04-09 20:38 [PATCH v1] ell/rtnl: fix compile with older toolchains Peter Seiderer
@ 2020-04-09 21:15 ` =?unknown-8bit?q?Micha=C5=82?= Lowas-Rzechonek
  2020-04-10 17:58 ` Marcel Holtmann
  1 sibling, 0 replies; 4+ messages in thread
From: =?unknown-8bit?q?Micha=C5=82?= Lowas-Rzechonek @ 2020-04-09 21:15 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 1303 bytes --]

Peter,

On 04/09, Peter Seiderer wrote:
> Older toolchains need to include sys/types.h and sys/socket.h before
> linux/if.h, RTA_PREF was introduces with linux-4.1.x.
> 
> Fixes:
> 
>   In file included from ell/rtnl.c:28:0:
>   .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:185:19: error: field 'ifru_addr' has incomplete type
>   .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:186:19: error: field 'ifru_dstaddr' has incomplete type
>   .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:187:19: error: field 'ifru_broadaddr' has incomplete type
>   .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:188:19: error: field 'ifru_netmask' has incomplete type
>   .../arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:189:20: error: field 'ifru_hwaddr' has incomplete type
>   ell/rtnl.c: In function 'l_rtnl_route_extract':
>   ell/rtnl.c:120:8: error: 'RTA_PREF' undeclared (first use in this function)

Nice one, I came up with almost identical patch, but eventually forgot
to send it!

Tested-by: Michał Lowas-Rzechonek <michal.lowas-rzechonek@silvair.com>

-- 
Michał Lowas-Rzechonek <michal.lowas-rzechonek@silvair.com>
Silvair http://silvair.com
Jasnogórska 44, 31-358 Krakow, POLAND

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v1] ell/rtnl: fix compile with older toolchains
  2020-04-09 20:38 [PATCH v1] ell/rtnl: fix compile with older toolchains Peter Seiderer
  2020-04-09 21:15 ` =?unknown-8bit?q?Micha=C5=82?= Lowas-Rzechonek
@ 2020-04-10 17:58 ` Marcel Holtmann
  2020-04-10 20:06   ` Peter Seiderer
  1 sibling, 1 reply; 4+ messages in thread
From: Marcel Holtmann @ 2020-04-10 17:58 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 2189 bytes --]

Hi Peter,

> Older toolchains need to include sys/types.h and sys/socket.h before
> linux/if.h, RTA_PREF was introduces with linux-4.1.x.

sounds like these are two separate fixes.

> 
> Fixes:
> 
>  In file included from ell/rtnl.c:28:0:
>  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:185:19: error: field 'ifru_addr' has incomplete type
>  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:186:19: error: field 'ifru_dstaddr' has incomplete type
>  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:187:19: error: field 'ifru_broadaddr' has incomplete type
>  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:188:19: error: field 'ifru_netmask' has incomplete type
>  .../arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:189:20: error: field 'ifru_hwaddr' has incomplete type
>  ell/rtnl.c: In function 'l_rtnl_route_extract':
>  ell/rtnl.c:120:8: error: 'RTA_PREF' undeclared (first use in this function)
> ---
> configure.ac | 2 ++
> ell/rtnl.c   | 7 ++++++-
> 2 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/configure.ac b/configure.ac
> index 0351f89..3be35a4 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -113,6 +113,8 @@ AC_CHECK_LIB(dl, dlopen, dummy=yes,
> 
> AC_CHECK_HEADERS(linux/types.h linux/if_alg.h)
> 
> +AC_CHECK_DECLS([RTA_PREF], [], [], [[#include <linux/rtnetlink.h>]])
> +
> AC_ARG_ENABLE(glib, AC_HELP_STRING([--enable-glib],
> 				[enable ell/glib main loop example]),
> 					[enable_glib=${enableval}])
> diff --git a/ell/rtnl.c b/ell/rtnl.c
> index dc83937..3493d34 100644
> --- a/ell/rtnl.c
> +++ b/ell/rtnl.c
> @@ -25,8 +25,9 @@
> #endif
> 
> #define _GNU_SOURCE
> -#include <linux/if.h>
> +#include <sys/types.h>
> #include <sys/socket.h>
> +#include <linux/if.h>
> #include <arpa/inet.h>
> 
> #include "util.h"
> @@ -35,6 +36,10 @@
> #include "rtnl.h"
> #include "private.h"
> 
> +#if defined HAVE_DECL_RTA_PREF && !HAVE_DECL_RTA_PREF
> +#define RTA_PREF 20
> +#endif
> +

Do we actually care about such an ancient kernel? And I don’t get the if check above.

Regards

Marcel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v1] ell/rtnl: fix compile with older toolchains
  2020-04-10 17:58 ` Marcel Holtmann
@ 2020-04-10 20:06   ` Peter Seiderer
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Seiderer @ 2020-04-10 20:06 UTC (permalink / raw)
  To: ell

[-- Attachment #1: Type: text/plain, Size: 3008 bytes --]

Hello Marcel,

On Fri, 10 Apr 2020 19:58:53 +0200, Marcel Holtmann <marcel@holtmann.org> wrote:

> Hi Peter,
> 
> > Older toolchains need to include sys/types.h and sys/socket.h before
> > linux/if.h, RTA_PREF was introduces with linux-4.1.x.  
> 
> sounds like these are two separate fixes.
> 
> > 
> > Fixes:
> > 
> >  In file included from ell/rtnl.c:28:0:
> >  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:185:19: error: field 'ifru_addr' has incomplete type
> >  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:186:19: error: field 'ifru_dstaddr' has incomplete type
> >  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:187:19: error: field 'ifru_broadaddr' has incomplete type
> >  .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:188:19: error: field 'ifru_netmask' has incomplete type
> >  .../arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:189:20: error: field 'ifru_hwaddr' has incomplete type
> >  ell/rtnl.c: In function 'l_rtnl_route_extract':
> >  ell/rtnl.c:120:8: error: 'RTA_PREF' undeclared (first use in this function)
> > ---
> > configure.ac | 2 ++
> > ell/rtnl.c   | 7 ++++++-
> > 2 files changed, 8 insertions(+), 1 deletion(-)
> > 
> > diff --git a/configure.ac b/configure.ac
> > index 0351f89..3be35a4 100644
> > --- a/configure.ac
> > +++ b/configure.ac
> > @@ -113,6 +113,8 @@ AC_CHECK_LIB(dl, dlopen, dummy=yes,
> > 
> > AC_CHECK_HEADERS(linux/types.h linux/if_alg.h)
> > 
> > +AC_CHECK_DECLS([RTA_PREF], [], [], [[#include <linux/rtnetlink.h>]])
> > +
> > AC_ARG_ENABLE(glib, AC_HELP_STRING([--enable-glib],
> > 				[enable ell/glib main loop example]),
> > 					[enable_glib=${enableval}])
> > diff --git a/ell/rtnl.c b/ell/rtnl.c
> > index dc83937..3493d34 100644
> > --- a/ell/rtnl.c
> > +++ b/ell/rtnl.c
> > @@ -25,8 +25,9 @@
> > #endif
> > 
> > #define _GNU_SOURCE
> > -#include <linux/if.h>
> > +#include <sys/types.h>
> > #include <sys/socket.h>
> > +#include <linux/if.h>
> > #include <arpa/inet.h>
> > 
> > #include "util.h"
> > @@ -35,6 +36,10 @@
> > #include "rtnl.h"
> > #include "private.h"
> > 
> > +#if defined HAVE_DECL_RTA_PREF && !HAVE_DECL_RTA_PREF
> > +#define RTA_PREF 20
> > +#endif
> > +  
> 
> Do we actually care about such an ancient kernel? And I don’t get the if check above.

It is not about ancient kernel, but about the kernel-header files the toolchain uses
(and in the embedded world this may be quiet ancient)...

Depending on the availability RTA_PREF it will be

#define HAVE_DECL_RTA_PREF 0

or 

#define HAVE_DECL_RTA_PREF 1

Both will trigger '#if defined HAVE_DECL_RTA_PREF' the second
one will check for 0 or 1 (but will give a warning in case
HAVE_DECL_RTA_PREF is not defined at all)...

See [1] for motivation of this patch...

Regards,
Peter

[1] http://lists.busybox.net/pipermail/buildroot/2020-April/279531.html

> 
> Regards
> 
> Marcel
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-04-10 20:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-09 20:38 [PATCH v1] ell/rtnl: fix compile with older toolchains Peter Seiderer
2020-04-09 21:15 ` =?unknown-8bit?q?Micha=C5=82?= Lowas-Rzechonek
2020-04-10 17:58 ` Marcel Holtmann
2020-04-10 20:06   ` Peter Seiderer

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.