diff options
author | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2014-11-23 18:36:03 +0100 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2014-11-24 22:04:57 +0100 |
commit | cb54da1b03f2e6d684416c614021735dfe276606 (patch) | |
tree | cdf87faf4d36e9c6fac97fcb4082239c2fa85843 /package/radvd | |
parent | 870b94c944d5f1ccf7ffd96ac513801eb37339f7 (diff) |
radvd: add a patch to fix build failure on architectures without sysctl()
Modern architectures such as ARC do not provide the sysctl() system
call, since it is deprecated. However, uClibc still installs
<sys/sysctl.h> in such cases, which defeats radvd check for the
availability of sysctl(). This commit adds a patch to radvd which
improves the sysctl() checking.
Fixes:
http://autobuild.buildroot.org/results/458/4581c4220adeaebbf6761e3b923088d8de8522d5/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Diffstat (limited to 'package/radvd')
-rw-r--r-- | package/radvd/0003-Improve-check-of-the-sysctl-function.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/package/radvd/0003-Improve-check-of-the-sysctl-function.patch b/package/radvd/0003-Improve-check-of-the-sysctl-function.patch new file mode 100644 index 000000000..3053f7b64 --- /dev/null +++ b/package/radvd/0003-Improve-check-of-the-sysctl-function.patch @@ -0,0 +1,49 @@ +From 4c86b3cbf52f810615d92835e98d83e9555a4d88 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +Date: Sun, 23 Nov 2014 12:13:47 +0100 +Subject: [PATCH 3/3] Improve check of the sysctl() function + +Since sysctl is a deprecated system call, new architectures such as +ARC don't implement it. In such cases, uClibc installs the +<sys/sysctl.h> header, but dos not implement the sysctl() +function. This has the annoying side effect of breaking the sysctl +detection of radvd, which is purely based on the header file being +present. + +To fix this, this commit adds a check based on the existence of the +sysctl() function. + +Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +--- + configure.ac | 1 + + device-linux.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 5dde3b2..5518f71 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -161,6 +161,7 @@ AC_CHECK_HEADERS( \ + time.h \ + ) + AC_HEADER_TIME ++AC_CHECK_FUNCS([sysctl]) + + dnl Checks for typedefs, structures, and compiler characteristics. + AC_MSG_CHECKING(whether struct sockaddr_in6 has sin6_scope_id) +diff --git a/device-linux.c b/device-linux.c +index 1ecaa6b..d9b56b8 100644 +--- a/device-linux.c ++++ b/device-linux.c +@@ -183,7 +183,7 @@ int check_ip6_forwarding(void) + value = -1; + } + +-#ifdef HAVE_SYS_SYSCTL_H ++#if defined(HAVE_SYS_SYSCTL_H) && defined(HAVE_SYSCTL) + int forw_sysctl[] = { SYSCTL_IP6_FORWARDING }; + size_t size = sizeof(value); + if (!fp && sysctl(forw_sysctl, sizeof(forw_sysctl) / sizeof(forw_sysctl[0]), &value, &size, NULL, 0) < 0) { +-- +2.1.0 + |