Commit 9e9d4917 authored by Hideaki Yoshifuji's avatar Hideaki Yoshifuji Committed by Stephen Hemminger

[IPV6] DAD must not have source link-layer option

Check if DAD does not have source link-layer address option;
RFC2461 7.1.1.
parent 429c31a5
...@@ -749,14 +749,18 @@ void ndisc_recv_ns(struct sk_buff *skb) ...@@ -749,14 +749,18 @@ void ndisc_recv_ns(struct sk_buff *skb)
printk(KERN_WARNING "ICMP NS: bad lladdr length.\n"); printk(KERN_WARNING "ICMP NS: bad lladdr length.\n");
return; return;
} }
}
/* XXX: RFC2461 7.1.1: /* XXX: RFC2461 7.1.1:
* If the IP source address is the unspecified address, there * If the IP source address is the unspecified address,
* MUST NOT be source link-layer address option in the message. * there MUST NOT be source link-layer address option
* * in the message.
* NOTE! Linux kernel < 2.4.4 broke this rule.
*/ */
if (addr_type == IPV6_ADDR_ANY) {
if (net_ratelimit())
printk(KERN_WARNING "ICMP6 NS: bad DAD packet (link-layer address option)\n");
return;
}
}
if ((ifp = ipv6_get_ifaddr(&msg->target, dev)) != NULL) { if ((ifp = ipv6_get_ifaddr(&msg->target, dev)) != NULL) {
if (ifp->flags & IFA_F_TENTATIVE) { if (ifp->flags & IFA_F_TENTATIVE) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment