0002-ell-rtnl-fix-compile-with-older-toolchains.patch 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. From 60b4cd4c703be380aef194d31a1ffc4b42431bde Mon Sep 17 00:00:00 2001
  2. From: Peter Seiderer <ps.report@gmx.net>
  3. Date: Thu, 9 Apr 2020 22:21:36 +0200
  4. Subject: [PATCH] ell/rtnl: fix compile with older toolchains
  5. Older toolchains need to include sys/types.h and sys/socket.h before
  6. linux/if.h, RTA_PREF was introduces with linux-4.1.x.
  7. Fixes:
  8. In file included from ell/rtnl.c:28:0:
  9. .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:185:19: error: field 'ifru_addr' has incomplete type
  10. .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:186:19: error: field 'ifru_dstaddr' has incomplete type
  11. .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:187:19: error: field 'ifru_broadaddr' has incomplete type
  12. .../host/arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:188:19: error: field 'ifru_netmask' has incomplete type
  13. .../arm-buildroot-linux-gnueabi/sysroot/usr/include/linux/if.h:189:20: error: field 'ifru_hwaddr' has incomplete type
  14. ell/rtnl.c: In function 'l_rtnl_route_extract':
  15. ell/rtnl.c:120:8: error: 'RTA_PREF' undeclared (first use in this function)
  16. [Upstream: https://lists.ofono.org/hyperkitty/list/ell@lists.01.org/thread/TOJ5XEY7X6WMOMJHX4KWI5LFEOX2QTBQ]
  17. Signed-off-by: Peter Seiderer <ps.report@gmx.net>
  18. ---
  19. configure.ac | 2 ++
  20. ell/rtnl.c | 7 ++++++-
  21. 2 files changed, 8 insertions(+), 1 deletion(-)
  22. diff --git a/configure.ac b/configure.ac
  23. index 0351f89..3be35a4 100644
  24. --- a/configure.ac
  25. +++ b/configure.ac
  26. @@ -113,6 +113,8 @@ AC_CHECK_LIB(dl, dlopen, dummy=yes,
  27. AC_CHECK_HEADERS(linux/types.h linux/if_alg.h)
  28. +AC_CHECK_DECLS([RTA_PREF], [], [], [[#include <linux/rtnetlink.h>]])
  29. +
  30. AC_ARG_ENABLE(glib, AC_HELP_STRING([--enable-glib],
  31. [enable ell/glib main loop example]),
  32. [enable_glib=${enableval}])
  33. diff --git a/ell/rtnl.c b/ell/rtnl.c
  34. index dc83937..3493d34 100644
  35. --- a/ell/rtnl.c
  36. +++ b/ell/rtnl.c
  37. @@ -25,8 +25,9 @@
  38. #endif
  39. #define _GNU_SOURCE
  40. -#include <linux/if.h>
  41. +#include <sys/types.h>
  42. #include <sys/socket.h>
  43. +#include <linux/if.h>
  44. #include <arpa/inet.h>
  45. #include "util.h"
  46. @@ -35,6 +36,10 @@
  47. #include "rtnl.h"
  48. #include "private.h"
  49. +#if defined HAVE_DECL_RTA_PREF && !HAVE_DECL_RTA_PREF
  50. +#define RTA_PREF 20
  51. +#endif
  52. +
  53. static size_t rta_add_u8(void *rta_buf, unsigned short type, uint8_t value)
  54. {
  55. struct rtattr *rta = rta_buf;
  56. --
  57. 2.26.0