From 33f92320e8a6b078a5972d05c8f49487d8edf19c Mon Sep 17 00:00:00 2001 From: gdt Date: Fri, 23 Jul 2004 16:14:32 +0000 Subject: 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. --- lib/ChangeLog | 7 +++++++ lib/sockopt.c | 19 +++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) (limited to 'lib') diff --git a/lib/ChangeLog b/lib/ChangeLog index ff813bba..4540456a 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 ee10ac30..682b7397 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; -- cgit v1.2.1