]> git.puffer.fish Git - matthieu/frr.git/commitdiff
2004-07-23 Greg Troxel <gdt@poblano.ir.bbn.com>
authorgdt <gdt>
Fri, 23 Jul 2004 16:14:32 +0000 (16:14 +0000)
committergdt <gdt>
Fri, 23 Jul 2004 16:14:32 +0000 (16:14 +0000)
* 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
lib/sockopt.c

index ff813bba0fed2d0f5c18c2c12c75ba0bef9ea52d..4540456adc5b73c8397da2e6e5e09f085ba9a3f8 100644 (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
index ee10ac302f3a3c70abc857875f7d5052c78588f8..682b7397b13a0fb34064967775db1a4663baed5f 100644 (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;