From d0deca68371c222d1b2ff3fcf61312506395861c Mon Sep 17 00:00:00 2001 From: gdt Date: Thu, 26 Aug 2004 13:14:07 +0000 Subject: 2004-08-26 Greg Troxel * 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. --- ospfd/ospf_packet.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'ospfd/ospf_packet.c') 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; -- cgit v1.2.3