diff options
author | ume <ume@FreeBSD.org> | 2003-10-21 20:05:32 +0000 |
---|---|---|
committer | ume <ume@FreeBSD.org> | 2003-10-21 20:05:32 +0000 |
commit | 5199c863f8f9e7f134710595dee582ad037bffb6 (patch) | |
tree | 56bbb38b63af457fee9d7a7dcb4dabbee7fdf438 /sys/netinet6/ip6_input.c | |
parent | cf8253f2389748ecf024ef70a17807c7d6d733ee (diff) | |
download | FreeBSD-src-5199c863f8f9e7f134710595dee582ad037bffb6.zip FreeBSD-src-5199c863f8f9e7f134710595dee582ad037bffb6.tar.gz |
- change scope to zone.
- change node-local to interface-local.
- better error handling of address-to-scope mapping.
- use in6_clearscope().
Obtained from: KAME
Diffstat (limited to 'sys/netinet6/ip6_input.c')
-rw-r--r-- | sys/netinet6/ip6_input.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/netinet6/ip6_input.c b/sys/netinet6/ip6_input.c index 8062ffe..54f252d 100644 --- a/sys/netinet6/ip6_input.c +++ b/sys/netinet6/ip6_input.c @@ -433,7 +433,8 @@ ip6_input(m) ip6stat.ip6s_badscope++; goto bad; } - if (IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_dst) && + if ((IN6_IS_ADDR_MC_INTFACELOCAL(&ip6->ip6_dst) || + IN6_IS_SCOPE_LINKLOCAL(&ip6->ip6_dst)) && ip6->ip6_dst.s6_addr16[1]) { ip6stat.ip6s_badscope++; goto bad; @@ -1106,8 +1107,7 @@ ip6_savecontrol(in6p, mp, ip6, m) struct in6_pktinfo pi6; bcopy(&ip6->ip6_dst, &pi6.ipi6_addr, sizeof(struct in6_addr)); - if (IN6_IS_SCOPE_LINKLOCAL(&pi6.ipi6_addr)) - pi6.ipi6_addr.s6_addr16[1] = 0; + in6_clearscope(&pi6.ipi6_addr); /* XXX */ pi6.ipi6_ifindex = (m && m->m_pkthdr.rcvif) ? m->m_pkthdr.rcvif->if_index : 0; |