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; | 
