Rationalize CMSG_SPACE usage:

  in lib/zebra.h, ensure that RFC3542-required CMSG_SPACE and CMSG_LEN
  are defined.  Warn if alignment assumptions are made, since they are
  i386-centric.

  in lib/sockopt.h, declare that sockopt sizes are without
  CMSG_SPACE-required padding - just simple sizeof.

  in ospfd/ospf_packet.c, simply use CMSG_SPACE

This should remove all instances of CMSG_ALIGN from the source code.
This is a nonstandard, though rational, construct; quagga should use
only those defines in RFC3542.
diff --git a/lib/zebra.h b/lib/zebra.h
index 6980529..f2c396d 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -210,7 +210,13 @@
 #endif /* BSDI_NRL */
 
 /* 
- * RFC 2553-bis defines not available on some systems.
+ * RFC 3542 defines several macros for using struct cmsghdr.
+ * Here, we define those that are not present
+ */
+
+/*
+ * Internal defines, for use only in this file.
+ * These are likely wrong on other than ILP32 machines, so warn.
  */
 #ifndef _CMSG_DATA_ALIGN
 #define _CMSG_DATA_ALIGN(n)           (((n) + 3) & ~3)
@@ -220,16 +226,24 @@
 #define _CMSG_HDR_ALIGN(n)            (((n) + 3) & ~3)
 #endif /* _CMSG_HDR_ALIGN */
 
+/*
+ * CMSG_SPACE and CMSG_LEN are required in RFC3542, but were new in that
+ * version.
+ */
 #ifndef CMSG_SPACE
 #define CMSG_SPACE(l)       (_CMSG_DATA_ALIGN(sizeof(struct cmsghdr)) + \
                               _CMSG_HDR_ALIGN(l))
+#warning "assuming 4-byte alignment for CMSG_SPACE"
 #endif  /* CMSG_SPACE */
 
 
 #ifndef CMSG_LEN
 #define CMSG_LEN(l)         (_CMSG_DATA_ALIGN(sizeof(struct cmsghdr)) + (l))
+#warning "assuming 4-byte alignment for CMSG_LEN"
 #endif /* CMSG_LEN */
 
+
+
 #if !(defined(__GNUC__) || defined(VTYSH_EXTRACT_PL)) 
 #define __attribute__(x)
 #endif  /* !__GNUC__ */