[build] configure needs to check for struct icmphdr for IRDP

2007-06-22 Paul Jakma <paul.jakma@sun.com>

	* configure.ac: IRDP also depends on struct icmphdr, enabling
	  only on in_pktinfo breaks when an OS acquires pktinfo, as
	  Solaris NV has. Reported by Jim Carlson.
diff --git a/ChangeLog b/ChangeLog
index 4de8e87..7db88da 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2007-06-22 Paul Jakma <paul.jakma@sun.com>
+
+	* configure.ac: IRDP also depends on struct icmphdr, enabling
+	  only on in_pktinfo breaks when an OS acquires pktinfo, as
+	  Solaris NV has. Reported by Jim Carlson.
+
 2007-05-10 Paul Jakma <paul.jakma@sun.com>
 
 	* configure.ac: Add back check for inet_aton, which got dropped
diff --git a/configure.ac b/configure.ac
index f66336c..1c50ef2 100755
--- a/configure.ac
+++ b/configure.ac
@@ -418,7 +418,7 @@
 
 AC_CHECK_HEADERS([sys/un.h net/if.h netinet/in_systm.h netinet/in_var.h \
 	net/if_dl.h net/if_var.h net/netopt.h net/route.h \
-	inet/nd.h arpa/inet.h \
+	inet/nd.h arpa/inet.h netinet/ip_icmp.h \
 	fcntl.h stddef.h sys/ioctl.h syslog.h wchar.h wctype.h \
 	sys/sysctl.h sys/sockio.h kvm.h sys/conf.h],
 	[], [], QUAGGA_INCLUDES)
@@ -462,6 +462,10 @@
 #if HAVE_ARPA_INET_H
 # include <arpa/inet.h>
 #endif
+/* Required for IDRP */
+#if HAVE_NETINET_IP_ICMP_H
+# include <netinet/ip_icmp.h>
+#endif
 ])dnl
 
 dnl V6 headers are checked below, after we check for v6
@@ -1204,8 +1208,7 @@
 	socklen_t,
 	struct ifaliasreq, struct if6_aliasreq, struct in6_aliasreq,
 	struct nd_opt_adv_interval, struct rt_addrinfo,
-	struct nd_opt_homeagent_info, struct nd_opt_adv_interval,
-	struct in_pktinfo],
+	struct nd_opt_homeagent_info, struct nd_opt_adv_interval],
 	[], [], QUAGGA_INCLUDES)
 
 AC_CHECK_MEMBERS([struct sockaddr.sa_len,
@@ -1216,12 +1219,16 @@
 	[], [], QUAGGA_INCLUDES)
 
 dnl ---------------------------
-dnl pktinfo checks
+dnl IRDP/pktinfo/icmphdr checks
 dnl ---------------------------
 AC_CHECK_TYPES([struct in_pktinfo], 
- [if test "${enable_irdp}" != "no"; then
-    AC_DEFINE(HAVE_IRDP,, IRDP)
-  fi],
+ [AC_CHECK_TYPES([struct icmphdr],
+   [if test "${enable_irdp}" != "no"; then
+      AC_DEFINE(HAVE_IRDP,, IRDP)
+    fi],
+   [if test "${enable_irdp}" = "yes"; then
+      AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
+    fi], [QUAGGA_INCLUDES])],
  [if test "${enable_irdp}" = "yes"; then
     AC_MSG_ERROR(['IRDP requires in_pktinfo at the moment!'])
   fi], [QUAGGA_INCLUDES])