From: gdt Date: Fri, 23 Jul 2004 16:14:32 +0000 (+0000) Subject: 2004-07-23 Greg Troxel X-Git-Tag: frr-2.0-rc1~3649 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=33f92320e8a6b078a5972d05c8f49487d8edf19c;p=matthieu%2Ffrr.git 2004-07-23 Greg Troxel * sockopt.c (getsockopt_ipv4_pktinfo_ifindex): Make this compile on NetBSD, and add comments to make it less confusing. Change the sense of the SUNOS_5 test to make parallel structure between the variables and the code. --- diff --git a/lib/ChangeLog b/lib/ChangeLog index ff813bba0f..4540456adc 100644 --- a/lib/ChangeLog +++ b/lib/ChangeLog @@ -1,3 +1,10 @@ +2004-07-23 Greg Troxel + + * sockopt.c (getsockopt_ipv4_pktinfo_ifindex): Make this compile + on NetBSD, and add comments to make it less confusing. Change the + sense of the SUNOS_5 test to make parallel structure between the + variables and the code. + 2004-07-23 Paul Jakma * sockopt.h: Add SOPT_SIZE_CMSG_PKTINFO{_IPV{4,6}} define, for diff --git a/lib/sockopt.c b/lib/sockopt.c index ee10ac302f..682b7397b1 100644 --- a/lib/sockopt.c +++ b/lib/sockopt.c @@ -272,28 +272,31 @@ getsockopt_ipv4_pktinfo_ifindex (struct msghdr *msgh) int ifindex = 0; #if defined (IP_PKTINFO) struct in_pktinfo *pktinfo; -#elif defined (IP_REVCIF) +#elif defined (IP_RECVIF) #ifndef SUNOS_5 + /* RECVIF, but not SUNOS, so BSD */ struct sockaddr_dl *sdl; #endif /* SUNOS_5 */ + /* SUNOS_5 doesn't need a structure to extract ifindex */ #else /* IP_RECVIF */ - char *pktinfo; + /* XXX Neither, so we are going to lose. */ #endif /* IP_PKTINFO */ #ifdef IP_PKTINFO pktinfo = (struct in_pktinfo *)getsockopt_cmsg_data (msgh, IPPROTO_IP, IP_PKTINFO); #elif defined (IP_RECVIF) -#ifdef SUNOS_5 - ifindex = *(uint_t *)getsockopt_cmsg_data (msgh, IPPROTO_IP, IP_RECVIF); -#else - pktinfo = +#ifndef SUNOS_5 + sdl = (struct sockaddr_dl *)getsockopt_cmsg_data (msgh, IPPROTO_IP, IP_RECVIF); - ifindex = pktinfo->sdl_index; + ifindex = sdl->sdl_index; +#else + ifindex = *(uint_t *)getsockopt_cmsg_data (msgh, IPPROTO_IP, IP_RECVIF); #endif /* SUNOS_5 */ #else #warning "getsockopt_ipv4_pktinfo_ifindex: dont have PKTINFO or RECVIF" - ifindex = 0; + /* XXX why not -1 - this is a failure condition. */ + ifindex = 0; #endif /* IP_PKTINFO */ return ifindex;