summaryrefslogtreecommitdiff
path: root/lib/zebra.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/zebra.h')
-rw-r--r--lib/zebra.h27
1 files changed, 21 insertions, 6 deletions
diff --git a/lib/zebra.h b/lib/zebra.h
index ed3024db..7ba01d56 100644
--- a/lib/zebra.h
+++ b/lib/zebra.h
@@ -207,14 +207,29 @@ typedef int socklen_t;
#define IN6_ARE_ADDR_EQUAL IN6_IS_ADDR_EQUAL
-/* BSD/OS 4.0 has lost belows defines, it should appear at
- /usr/include/sys/socket.h. */
-#define CMSG_ALIGN(n) (((n) + 3) & ~3)
-#define CMSG_SPACE(l) (CMSG_ALIGN(sizeof(struct cmsghdr)) + CMSG_ALIGN(l))
-#define CMSG_LEN(l) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (l))
-
#endif /* BSDI_NRL */
+/*
+ * RFC 2553-bis defines not available on some systems.
+ */
+#ifndef _CMSG_DATA_ALIGN
+#define _CMSG_DATA_ALIGN(n) (((n) + 3) & ~3)
+#endif /* _CMSG_DATA_ALIGN */
+
+#ifndef _CMSG_HDR_ALIGN
+#define _CMSG_HDR_ALIGN(n) (((n) + 3) & ~3)
+#endif /* _CMSG_HDR_ALIGN */
+
+#ifndef CMSG_SPACE
+#define CMSG_SPACE(l) (_CMSG_DATA_ALIGN(sizeof(struct cmsghdr)) + \
+ _CMSG_HDR_ALIGN(l))
+#endif /* CMSG_SPACE */
+
+
+#ifndef CMSG_LEN
+#define CMSG_LEN(l) (_CMSG_DATA_ALIGN(sizeof(struct cmsghdr)) + (l))
+#endif /* CMSG_LEN */
+
#if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 5
#define __attribute__(x)
#endif /* !__GNUC__ */