Source: radvd Version: 1:1.9.1-1.3 Severity: important Tags: patch Justification: fails to build from source
Hi, attached patch fixes the issue by autoconf’ing sysctl(2) and disabling the use of it if it’s not there, such as on x32, and probably arm64. Please apply. -- System Information: Debian Release: jessie/sid APT prefers unreleased APT policy: (500, 'unreleased'), (500, 'unstable') Architecture: x32 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.14-2-amd64 (SMP w/4 CPU cores) Locale: LANG=C, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/lksh
diff -Nru radvd-1.9.1/debian/changelog radvd-1.9.1/debian/changelog --- radvd-1.9.1/debian/changelog 2014-08-05 17:47:20.000000000 +0200 +++ radvd-1.9.1/debian/changelog 2014-09-03 12:47:34.000000000 +0200 @@ -1,3 +1,9 @@ +radvd (1:1.9.1-1.3+x32.1) unreleased; urgency=medium + + * Work around lack of sysctl(2) in x32 (which I disagree with) + + -- Thorsten Glaser <t...@mirbsd.de> Wed, 03 Sep 2014 12:47:33 +0200 + radvd (1:1.9.1-1.3) unstable; urgency=medium * Non-maintainer upload. diff -Nru radvd-1.9.1/debian/patches/series radvd-1.9.1/debian/patches/series --- radvd-1.9.1/debian/patches/series 2012-01-23 18:05:54.000000000 +0100 +++ radvd-1.9.1/debian/patches/series 2014-09-03 12:38:19.000000000 +0200 @@ -2,3 +2,4 @@ 0006-removing-mdelay-in-unicast-only-case.patch 0007-checking-iface-name-more-carefully.patch kfreebsd.patch +x32.patch diff -Nru radvd-1.9.1/debian/patches/x32.patch radvd-1.9.1/debian/patches/x32.patch --- radvd-1.9.1/debian/patches/x32.patch 1970-01-01 01:00:00.000000000 +0100 +++ radvd-1.9.1/debian/patches/x32.patch 2014-09-03 12:47:33.000000000 +0200 @@ -0,0 +1,50 @@ +--- a/configure.ac ++++ b/configure.ac +@@ -179,7 +179,7 @@ int u = in6_u.s6_addr16;], [AC_MSG_RESU + AC_MSG_RESULT(no)) + + dnl Checks for library functions. +-AC_CHECK_FUNCS(getopt_long) ++AC_CHECK_FUNCS([getopt_long sysctl]) + + CONDITIONAL_SOURCES="device-${arch}.${OBJEXT} ${CONDITIONAL_SOURCES}" + if test x${arch} = xlinux ; then +--- a/includes.h ++++ b/includes.h +@@ -72,7 +72,9 @@ + + #include <arpa/inet.h> + ++#ifdef HAVE_SYSCTL + #include <sys/sysctl.h> ++#endif + + #include <net/if.h> + +--- a/radvd.c ++++ b/radvd.c +@@ -763,7 +763,9 @@ check_conffile_perm(const char *username + int + check_ip6_forwarding(void) + { ++#ifdef HAVE_SYSCTL + int forw_sysctl[] = { SYSCTL_IP6_FORWARDING }; ++#endif + int value; + size_t size = sizeof(value); + FILE *fp = NULL; +@@ -785,8 +787,12 @@ check_ip6_forwarding(void) + "or the kernel interface has changed?"); + #endif /* __linux__ */ + +- if (!fp && sysctl(forw_sysctl, sizeof(forw_sysctl)/sizeof(forw_sysctl[0]), +- &value, &size, NULL, 0) < 0) { ++ if (!fp ++#ifdef HAVE_SYSCTL ++ && sysctl(forw_sysctl, sizeof(forw_sysctl)/sizeof(forw_sysctl[0]), ++ &value, &size, NULL, 0) < 0 ++#endif ++ ) { + flog(LOG_DEBUG, "Correct IPv6 forwarding sysctl branch not found, " + "perhaps the kernel interface has changed?"); + return(0); /* this is of advisory value only */