summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgdt <gdt>2004-08-26 13:14:07 +0000
committergdt <gdt>2004-08-26 13:14:07 +0000
commitd0deca68371c222d1b2ff3fcf61312506395861c (patch)
tree387b78bd5cf21d645f33617ea4b5bb7eb58ce613
parentafa43b23925175ff750d91bbd1c639b47bcb597e (diff)
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.
-rw-r--r--ospfd/ChangeLog8
-rw-r--r--ospfd/ospf_packet.c7
2 files changed, 14 insertions, 1 deletions
diff --git a/ospfd/ChangeLog b/ospfd/ChangeLog
index 1339ba24..3da4571f 100644
--- a/ospfd/ChangeLog
+++ b/ospfd/ChangeLog
@@ -1,3 +1,11 @@
+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.
+
2004-08-19 Paul Jakma <paul@dishone.st>
* ospf_packet.c: update to match sockopt renames.
diff --git a/ospfd/ospf_packet.c b/ospfd/ospf_packet.c
index ce82ee27..8bc49666 100644
--- a/ospfd/ospf_packet.c
+++ b/ospfd/ospf_packet.c
@@ -1881,7 +1881,12 @@ ospf_recv_packet (int fd, struct interface **ifp)
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;