diff options
-rw-r--r-- | ospfd/ChangeLog | 8 | ||||
-rw-r--r-- | ospfd/ospf_packet.c | 7 |
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; |