2004-08-26  Greg Troxel  <gdt@fnord.ir.bbn.com>

	* ospf_packet.c (ospf_recv_packet): adjust size declaration of
	buffer used to get interface index so that it compiles on other
	than Linux and includes the required alignment space.  Probably
	this was only working on sparc/sparc64 because most of sockaddr_dl
	was not being written.
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index ce82ee2..8bc4966 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -1881,7 +1881,12 @@
   unsigned int ifindex = 0;
   struct iovec iov;
   struct cmsghdr *cmsg;
-  char buff [sizeof (*cmsg) + SOPT_SIZE_CMSG_PKTINFO_IPV4()];
+#if defined(CMSG_SPACE)
+  /* Header and data both require alignment. */
+  char buff [CMSG_SPACE(SIZE_CMSG_IFINDEX_IPV4())];
+#else
+  char buff [sizeof (*cmsg) + SOPT_SIZE_CMSG_IFINDEX_IPV4()];
+#endif
   struct msghdr msgh;
 
   msgh.msg_name = NULL;