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

Reply via email to