| version 1.83, 2006/03/05 23:47:08 |
version 1.83.2.1, 2006/04/19 04:46:12 |
| Line 1030 ip6_savecontrol(in6p, mp, ip6, m) |
|
| Line 1030 ip6_savecontrol(in6p, mp, ip6, m) |
|
| struct ip6_hdr *ip6; |
struct ip6_hdr *ip6; |
| struct mbuf *m; |
struct mbuf *m; |
| { |
{ |
| |
|
| #ifdef SO_TIMESTAMP |
#ifdef SO_TIMESTAMP |
| if (in6p->in6p_socket->so_options & SO_TIMESTAMP) { |
if (in6p->in6p_socket->so_options & SO_TIMESTAMP) { |
| struct timeval tv; |
struct timeval tv; |
| Line 1063 ip6_savecontrol(in6p, mp, ip6, m) |
|
| Line 1062 ip6_savecontrol(in6p, mp, ip6, m) |
|
| struct in6_pktinfo pi6; |
struct in6_pktinfo pi6; |
| bcopy(&ip6->ip6_dst, &pi6.ipi6_addr, sizeof(struct in6_addr)); |
bcopy(&ip6->ip6_dst, &pi6.ipi6_addr, sizeof(struct in6_addr)); |
| in6_clearscope(&pi6.ipi6_addr); /* XXX */ |
in6_clearscope(&pi6.ipi6_addr); /* XXX */ |
| pi6.ipi6_ifindex = (m && m->m_pkthdr.rcvif) |
pi6.ipi6_ifindex = m->m_pkthdr.rcvif ? |
| ? m->m_pkthdr.rcvif->if_index |
m->m_pkthdr.rcvif->if_index : 0; |
| : 0; |
|
| *mp = sbcreatecontrol((caddr_t) &pi6, |
*mp = sbcreatecontrol((caddr_t) &pi6, |
| sizeof(struct in6_pktinfo), IPV6_PKTINFO, IPPROTO_IPV6); |
sizeof(struct in6_pktinfo), IPV6_PKTINFO, IPPROTO_IPV6); |
| if (*mp) |
if (*mp) |