2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* configure.ac: Added test for broken CMSG_FIRSTHDR macro
	  (relevant for Solaris 8 and unpatched Solaris 9, don't know
	  whether other platforms are affected).
	* zebra.h: Define ZCMSG_FIRSTHDR appropriately based on whether
	  config.h indicates HAVE_BROKEN_CMSG_FIRSTHDR (as determined
	  by the configure test program).
	* sockopt.c: (getsockopt_cmsg_data) Use ZCMSG_FIRSTHDR instead
	  of CMSG_FIRSTHDR.
	* rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR
	  instead of CMSG_FIRSTHDR.
	* ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.
	* ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of
	  CMSG_FIRSTHDR.
diff --git a/configure.ac b/configure.ac
index 608672b..95056e7 100755
--- a/configure.ac
+++ b/configure.ac
@@ -5,7 +5,7 @@
 ##  Copyright (c) 1996, 97, 98, 99, 2000 Kunihiro Ishiguro <kunihiro@zebra.org>
 ##  Portions Copyright (c) 2003 Paul Jakma <paul@dishone.st>
 ##
-## $Id: configure.ac,v 1.81 2004/12/29 17:50:22 ajs Exp $
+## $Id: configure.ac,v 1.82 2005/01/04 16:24:43 ajs Exp $
 AC_PREREQ(2.53)
 
 AC_INIT(Quagga, 0.97.4, [http://bugzilla.quagga.net])
@@ -494,6 +494,31 @@
 AC_SUBST(KERNEL_METHOD)
 AC_SUBST(OTHER_METHOD)
 
+dnl ------------------------------------
+dnl check for broken CMSG_FIRSTHDR macro
+dnl ------------------------------------
+AC_TRY_RUN([
+#ifdef SUNOS_5
+#define _XPG4_2
+#define __EXTENSIONS__
+#endif
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+
+main()
+{
+  struct msghdr msg;
+  char buf[4];
+
+  msg.msg_control = buf;
+  msg.msg_controllen = 0;
+
+  if (CMSG_FIRSTHDR(&msg) != NULL)
+    exit(0);
+  exit (1);
+}],[AC_DEFINE(HAVE_BROKEN_CMSG_FIRSTHDR,,Broken CMSG_FIRSTHDR)])
+
 dnl ------------------------------
 dnl check kernel route read method
 dnl ------------------------------