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()
This commit is contained in:
paul 2004-07-23 15:25:01 +00:00
parent caa248198a
commit 1470bafb7a
3 changed files with 10 additions and 11 deletions

View 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 2004-07-13 David Wiggins <dwiggins@bbn.com
* kernel_socket.c (rtm_flag_dump): terminate buffer with '\0', not '0'. * kernel_socket.c (rtm_flag_dump): terminate buffer with '\0', not '0'.

View File

@ -124,9 +124,7 @@ irdp_sock_init (void)
return ret; return ret;
}; };
i = 1; ret = setsockopt_pktinfo_ipv4 (irdp_sock, 1);
ret = setsockopt (irdp_sock, IPPROTO_IP, IP_PKTINFO,
(void *) &i, sizeof (i));
if (ret < 0) { if (ret < 0) {
zlog_warn ("IRDP: can't do irdp sockopt %s", strerror(errno)); zlog_warn ("IRDP: can't do irdp sockopt %s", strerror(errno));
return ret; return ret;

View File

@ -186,7 +186,7 @@ int irdp_recvmsg (int sock,
struct msghdr msg; struct msghdr msg;
struct iovec iov; struct iovec iov;
struct cmsghdr *ptr; struct cmsghdr *ptr;
char adata[1024]; char adata[CMSG_SPACE( SOPT_SIZE_CMSG_PKTINFO_IPV4() )];
int ret; int ret;
msg.msg_name = (void *)0; msg.msg_name = (void *)0;
@ -214,13 +214,8 @@ int irdp_recvmsg (int sock,
return ret; return ret;
} }
for (ptr = CMSG_FIRSTHDR(&msg); ptr ; ptr = CMSG_NXTHDR(&msg, ptr)) ifindex = getsockopt_pktinfo_ifindex (AF_INET, &msg);
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;
}
return ret; return ret;
} }