| version 1.98, 2013/05/21 09:54:12 |
version 1.99, 2014/01/13 18:23:36 |
| Line 143 nd6_ns_input(struct mbuf *m, int off, in |
|
| Line 143 nd6_ns_input(struct mbuf *m, int off, in |
|
| goto bad; |
goto bad; |
| } |
} |
| } else { |
} else { |
| |
struct sockaddr_in6 ssin6; |
| |
|
| /* |
/* |
| * Make sure the source address is from a neighbor's address. |
* Make sure the source address is from a neighbor's address. |
| */ |
*/ |
| if (in6ifa_ifplocaladdr(ifp, &saddr6) == NULL) { |
sockaddr_in6_init(&ssin6, &saddr6, 0, 0, 0); |
| |
if (nd6_is_addr_neighbor(&ssin6, ifp) == 0) { |
| nd6log((LOG_INFO, "nd6_ns_input: " |
nd6log((LOG_INFO, "nd6_ns_input: " |
| "NS packet from non-neighbor\n")); |
"NS packet from non-neighbor\n")); |
| goto bad; |
goto bad; |
| Line 563 nd6_na_input(struct mbuf *m, int off, in |
|
| Line 566 nd6_na_input(struct mbuf *m, int off, in |
|
| struct rtentry *rt; |
struct rtentry *rt; |
| struct sockaddr_dl *sdl; |
struct sockaddr_dl *sdl; |
| union nd_opts ndopts; |
union nd_opts ndopts; |
| |
struct sockaddr_in6 ssin6; |
| |
|
| if (ip6->ip6_hlim != 255) { |
if (ip6->ip6_hlim != 255) { |
| nd6log((LOG_ERR, |
nd6log((LOG_ERR, |
| Line 637 nd6_na_input(struct mbuf *m, int off, in |
|
| Line 641 nd6_na_input(struct mbuf *m, int off, in |
|
| ip6_sprintf(&taddr6)); |
ip6_sprintf(&taddr6)); |
| goto freeit; |
goto freeit; |
| } |
} |
| |
|
| /* |
/* |
| * Make sure the source address is from a neighbor's address. |
* Make sure the source address is from a neighbor's address. |
| */ |
*/ |
| if (in6ifa_ifplocaladdr(ifp, &saddr6) == NULL) { |
sockaddr_in6_init(&ssin6, &saddr6, 0, 0, 0); |
| nd6log((LOG_INFO, "nd6_ns_input: " |
if (nd6_is_addr_neighbor(&ssin6, ifp) == 0) { |
| |
nd6log((LOG_INFO, "nd6_na_input: " |
| "ND packet from non-neighbor\n")); |
"ND packet from non-neighbor\n")); |
| goto bad; |
goto bad; |
| } |
} |