diff --git a/ChangeLog b/ChangeLog
index 959ac85..ab58b58 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 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).
+
+2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
 	* NEWS: Note improved logging facilities.
 
 2004-12-29 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
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 ------------------------------
diff --git a/lib/ChangeLog b/lib/ChangeLog
index d50b859..2fee461 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,11 @@
+2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* 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.
+
 2005-01-02 Hasso Tepper <hasso at quagga.net>
 
 	* command.c: Revert int -> unsigned int fixes in
diff --git a/lib/sockopt.c b/lib/sockopt.c
index d755746..81db88d 100644
--- a/lib/sockopt.c
+++ b/lib/sockopt.c
@@ -42,7 +42,7 @@
   struct cmsghdr *cmsg;
   void *ptr = NULL;
   
-  for (cmsg = CMSG_FIRSTHDR(msgh); 
+  for (cmsg = ZCMSG_FIRSTHDR(msgh); 
        cmsg != NULL;
        cmsg = CMSG_NXTHDR(msgh, cmsg))
     if (cmsg->cmsg_level == level && cmsg->cmsg_type)
diff --git a/lib/zebra.h b/lib/zebra.h
index 83da37c..8c2dcab 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -215,6 +215,23 @@
 
 #endif /* BSDI_NRL */
 
+#ifdef HAVE_BROKEN_CMSG_FIRSTHDR
+/* This bug is present in Solaris 8 and pre-patch Solaris 9 <sys/socket.h>;
+   please refer to http://bugzilla.quagga.net/show_bug.cgi?id=142 */
+
+/* Check that msg_controllen is large enough. */
+#define ZCMSG_FIRSTHDR(mhdr) \
+  (((size_t)((mhdr)->msg_controllen) >= sizeof(struct cmsghdr)) ? \
+   CMSG_FIRSTHDR(mhdr) : (struct cmsghdr *)NULL)
+
+#warning "CMSG_FIRSTHDR is broken on this platform, using a workaround"
+
+#else /* HAVE_BROKEN_CMSG_FIRSTHDR */
+#define ZCMSG_FIRSTHDR(M) CMSG_FIRSTHDR(M)
+#endif /* HAVE_BROKEN_CMSG_FIRSTHDR */
+
+
+
 /* 
  * RFC 3542 defines several macros for using struct cmsghdr.
  * Here, we define those that are not present
diff --git a/ripd/ChangeLog b/ripd/ChangeLog
index 9d56611..1372280 100644
--- a/ripd/ChangeLog
+++ b/ripd/ChangeLog
@@ -1,3 +1,7 @@
+2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* ripd.c: (rip_recvmsg) Use ZCMSG_FIRSTHDR instead of CMSG_FIRSTHDR.
+
 2004-12-15 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* ripd.c: (rip_read) Improve 2 error messages to show the source of
diff --git a/ripd/ripd.c b/ripd/ripd.c
index 0407065..c5baf8a 100644
--- a/ripd/ripd.c
+++ b/ripd/ripd.c
@@ -1632,7 +1632,7 @@
   if (ret < 0)
     return ret;
 
-  for (ptr = CMSG_FIRSTHDR(&msg); ptr != NULL; ptr = CMSG_NXTHDR(&msg, ptr))
+  for (ptr = ZCMSG_FIRSTHDR(&msg); ptr != NULL; ptr = CMSG_NXTHDR(&msg, ptr))
     if (ptr->cmsg_level == IPPROTO_IP && ptr->cmsg_type == IP_PKTINFO) 
       {
 	struct in_pktinfo *pktinfo;
diff --git a/ripngd/ChangeLog b/ripngd/ChangeLog
index 7f85cc4..dcd8ded 100644
--- a/ripngd/ChangeLog
+++ b/ripngd/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* ripngd.c: (ripng_recv_packet) Use ZCMSG_FIRSTHDR instead of
+	  CMSG_FIRSTHDR.
+
 2004-12-16 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* ripng_nexthop.c: Replace NEXTHOP_OUT macro with NEXTHOP_OUT_PTR,
diff --git a/ripngd/ripngd.c b/ripngd/ripngd.c
index 84ed45e..34282b8 100644
--- a/ripngd/ripngd.c
+++ b/ripngd/ripngd.c
@@ -263,7 +263,7 @@
   if (ret < 0)
     return ret;
 
-  for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL;
+  for (cmsgptr = ZCMSG_FIRSTHDR(&msg); cmsgptr != NULL;
        cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) 
     {
       /* I want interface index which this packet comes from. */
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 3ed8c63..e26204c 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-04 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
+	* rtadv.c: (rtadv_recv_packet,rtadv_send_packet) Use ZCMSG_FIRSTHDR
+	  instead of CMSG_FIRSTHDR.
+
 2004-12-22 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
 	* connected.c: (connected_add_ipv4) Limit warning about /32 addresses
diff --git a/zebra/rtadv.c b/zebra/rtadv.c
index 65b2f87..1238396 100644
--- a/zebra/rtadv.c
+++ b/zebra/rtadv.c
@@ -121,7 +121,7 @@
   if (ret < 0)
     return ret;
 
-  for (cmsgptr = CMSG_FIRSTHDR(&msg); cmsgptr != NULL;
+  for (cmsgptr = ZCMSG_FIRSTHDR(&msg); cmsgptr != NULL;
        cmsgptr = CMSG_NXTHDR(&msg, cmsgptr)) 
     {
       /* I want interface index which this packet comes from. */
@@ -288,7 +288,7 @@
   iov.iov_base = buf;
   iov.iov_len = len;
 
-  cmsgptr = CMSG_FIRSTHDR(&msg);
+  cmsgptr = ZCMSG_FIRSTHDR(&msg);
   cmsgptr->cmsg_len = CMSG_LEN(sizeof(struct in6_pktinfo));
   cmsgptr->cmsg_level = IPPROTO_IPV6;
   cmsgptr->cmsg_type = IPV6_PKTINFO;
