| version 1.86, 2006/05/07 16:02:40 |
version 1.86.2.1, 2006/06/19 04:09:49 |
|
|
| * dst are the loopback address and the receiving interface |
* dst are the loopback address and the receiving interface |
| * is not loopback. |
* is not loopback. |
| */ |
*/ |
| |
if (__predict_false( |
| |
m_makewritable(&m, 0, sizeof(struct ip6_hdr), M_DONTWAIT))) |
| |
goto bad; |
| |
ip6 = mtod(m, struct ip6_hdr *); |
| if (in6_clearscope(&ip6->ip6_src) || in6_clearscope(&ip6->ip6_dst)) { |
if (in6_clearscope(&ip6->ip6_src) || in6_clearscope(&ip6->ip6_dst)) { |
| ip6stat.ip6s_badscope++; /* XXX */ |
ip6stat.ip6s_badscope++; /* XXX */ |
| goto bad; |
goto bad; |
| Line 1048 ip6_savecontrol(in6p, mp, ip6, m) |
|
| Line 1052 ip6_savecontrol(in6p, mp, ip6, m) |
|
| mp = &(*mp)->m_next; |
mp = &(*mp)->m_next; |
| } |
} |
| #endif |
#endif |
| |
|
| |
/* some OSes call this logic with IPv4 packet, for SO_TIMESTAMP */ |
| |
if ((ip6->ip6_vfc & IPV6_VERSION_MASK) != IPV6_VERSION) |
| |
return; |
| |
|
| /* RFC 2292 sec. 5 */ |
/* RFC 2292 sec. 5 */ |
| if ((in6p->in6p_flags & IN6P_PKTINFO) != 0) { |
if ((in6p->in6p_flags & IN6P_PKTINFO) != 0) { |
| struct in6_pktinfo pi6; |
struct in6_pktinfo pi6; |