From c4218f71352ae5e39692e030d9af2c665dbb2eee Mon Sep 17 00:00:00 2001 From: Peter Seiderer Date: Thu, 9 Apr 2020 22:21:36 +0200 Subject: [PATCH] ell/rtnl: fix compile with older toolchains 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) [Upstream: https://lists.ofono.org/hyperkitty/list/ell@lists.01.org/thread/TOJ5XEY7X6WMOMJHX4KWI5LFEOX2QTBQ] [Rebased for ell-0.35] Signed-off-by: Peter Seiderer --- configure.ac | 2 ++ ell/rtnl.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 1e5ead9..bec472d 100644 --- a/configure.ac +++ b/configure.ac @@ -110,6 +110,8 @@ AC_CHECK_FUNC(epoll_create, dummy=yes, AC_CHECK_HEADERS(linux/types.h linux/if_alg.h) +AC_CHECK_DECLS([RTA_PREF], [], [], [[#include ]]) + 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 c115573..ccfa6fe 100644 --- a/ell/rtnl.c +++ b/ell/rtnl.c @@ -25,9 +25,10 @@ #endif #define _GNU_SOURCE -#include +#include #include #include +#include #include #include "util.h" @@ -524,6 +525,10 @@ LIB_EXPORT bool l_rtnl_route_set_scope(struct l_rtnl_route *rt, uint8_t scope) return true; } +#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.29.2