2004-07-23 Greg Troxel <gdt@poblano.ir.bbn.com>

* 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.
This commit is contained in:
gdt 2004-07-23 16:14:32 +00:00
parent 5b73a671aa
commit 33f92320e8
2 changed files with 18 additions and 8 deletions

View File

@ -1,3 +1,10 @@
2004-07-23 Greg Troxel <gdt@poblano.ir.bbn.com>
* 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 <paul@dishone.st>
* sockopt.h: Add SOPT_SIZE_CMSG_PKTINFO{_IPV{4,6}} define, for

View File

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