From: Donald Sharp <[email protected]> The #define IPV6_MINHOPCNT define is never defined on any unix platform. >From what I can tell the original implementation on the linux platform was IPV6_MINHOPCNT, when it got accepted into the mainstream kernel it was transformed into IPV6_MINHOPCOUNT. Since we test for the define before attempting to use the code it was silently doing nothing for a long time.
Signed-off-by: David Lamparter <[email protected]> --- Retry with #include <netinet/in.h> in 4th argument to AC_CHECK_HEADERS, which means it'll be included before linux/in6.h. --- configure.ac | 6 ++++++ lib/sockunion.c | 10 +++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index f68d86f..202bc22 100755 --- a/configure.ac +++ b/configure.ac @@ -1075,6 +1075,9 @@ AC_CHECK_HEADERS([netinet6/in6.h netinet/in6_var.h netinet/icmp6.h \ netinet6/in6_var.h netinet6/nd6.h], [], [], QUAGGA_INCLUDES) +dnl linux/in6.h can be incompatible with netinet/in.h +AC_CHECK_HEADERS([linux/in6.h], [], [], [#include <netinet/in.h>]]) + m4_define([QUAGGA_INCLUDES],dnl QUAGGA_INCLUDES [#if HAVE_NETINET6_IN6_H @@ -1092,6 +1095,9 @@ QUAGGA_INCLUDES #if HAVE_NETINET6_ND6_H # include <netinet6/nd6.h> #endif +#if HAVE_LINUX_IN6_H +# include <linux/in6.h> +#endif ])dnl dnl disable doc check diff --git a/lib/sockunion.c b/lib/sockunion.c index c7315f2..8f3540d 100644 --- a/lib/sockunion.c +++ b/lib/sockunion.c @@ -29,6 +29,10 @@ #include "log.h" #include "jhash.h" +#if defined(HAVE_LINUX_IN6_H) +#include <linux/in6.h> +#endif + #ifndef HAVE_INET_ATON int inet_aton (const char *cp, struct in_addr *inaddr) @@ -506,13 +510,13 @@ sockopt_minttl (int family, int sock, int minttl) return ret; } #endif /* IP_MINTTL */ -#ifdef IPV6_MINHOPCNT +#ifdef IPV6_MINHOPCOUNT if (family == AF_INET6) { - int ret = setsockopt (sock, IPPROTO_IPV6, IPV6_MINHOPCNT, &minttl, sizeof(minttl)); + int ret = setsockopt (sock, IPPROTO_IPV6, IPV6_MINHOPCOUNT, &minttl, sizeof(minttl)); if (ret < 0) zlog (NULL, LOG_WARNING, - "can't set sockopt IPV6_MINHOPCNT to %d on socket %d: %s", + "can't set sockopt IPV6_MINHOPCOUNT to %d on socket %d: %s", minttl, sock, safe_strerror (errno)); return ret; } -- 2.3.6 _______________________________________________ Quagga-dev mailing list [email protected] https://lists.quagga.net/mailman/listinfo/quagga-dev
