]> git.puffer.fish Git - mirror/frr.git/commitdiff
2004-07-23 Paul Jakma <paul@dishone.st>
authorpaul <paul>
Fri, 23 Jul 2004 15:25:01 +0000 (15:25 +0000)
committerpaul <paul>
Fri, 23 Jul 2004 15:25:01 +0000 (15:25 +0000)
        * irdp_main.c: use setsockopt_pktinfo_ipv4
        * irdp_packet.c: use SOPT_SIZE_CMSG_PKTINFO_IPV4 and
          getsockopt_pktinfo_ifindex()

zebra/ChangeLog
zebra/irdp_main.c
zebra/irdp_packet.c

index 5a0ff8c66464ff2e490e671f4c8e07bec77212fd..b121b4484cfdc4368dfda67df8161e38ad5b9ea2 100644 (file)
@@ -1,3 +1,9 @@
+2004-07-23 Paul Jakma <paul@dishone.st>
+
+       * irdp_main.c: use setsockopt_pktinfo_ipv4
+       * irdp_packet.c: use SOPT_SIZE_CMSG_PKTINFO_IPV4 and 
+         getsockopt_pktinfo_ifindex()
+
 2004-07-13  David Wiggins <dwiggins@bbn.com
 
        * kernel_socket.c (rtm_flag_dump): terminate buffer with '\0', not '0'.
index 56e41840281335c4a9f04d140511fd56b7a02350..fd56c881093a140acf48b96334a6841bd2a27beb 100644 (file)
@@ -124,9 +124,7 @@ irdp_sock_init (void)
     return ret;
   };
   
-  i = 1;
-  ret = setsockopt (irdp_sock, IPPROTO_IP, IP_PKTINFO, 
-                        (void *) &i, sizeof (i));
+  ret = setsockopt_pktinfo_ipv4 (irdp_sock, 1);
   if (ret < 0) {
     zlog_warn ("IRDP: can't do irdp sockopt %s", strerror(errno));
     return ret;
index 147d5970edf2c8a7d3630caeaf299e7a134c51c0..e881ef937c10277921ea2b2aa7aab9f436596de3 100644 (file)
@@ -186,7 +186,7 @@ int irdp_recvmsg (int sock,
   struct msghdr msg;
   struct iovec iov;
   struct cmsghdr *ptr;
-  char adata[1024];
+  char adata[CMSG_SPACE( SOPT_SIZE_CMSG_PKTINFO_IPV4() )];
   int ret;
 
   msg.msg_name = (void *)0;
@@ -214,13 +214,8 @@ int irdp_recvmsg (int sock,
     return ret;
   }
 
-  for (ptr = CMSG_FIRSTHDR(&msg); ptr ; ptr = CMSG_NXTHDR(&msg, ptr))
-    if (ptr->cmsg_level == SOL_IP && ptr->cmsg_type == IP_PKTINFO) 
-      {
-        struct in_pktinfo *pktinfo;
-           pktinfo = (struct in_pktinfo *) CMSG_DATA (ptr);
-        *ifindex = pktinfo->ipi_ifindex;
-      }
+  ifindex = getsockopt_pktinfo_ifindex (AF_INET, &msg);
+
   return ret;
 }
 \f