Message ID | D6EA916C7149064CB4D5C686612478A3183E2D27D1@MX34A.corp.emc.com |
---|---|
State | Rejected, archived |
Delegated to: | David Miller |
Headers | show |
Meng, Jilin wrote: > we should ignore the looped-back IPv6 DAD packet to avoid configuration failure. > This occurs when a bonding interface with roundrobin mode is being configured an IPv6 address > while the switch side isn't configured bonding/channel yet. > > Signed-off-by: Jilin Meng <jilin.meng@emc.com> > Signed-off-by: Yinglin Sun <yinglin.sun@emc.com> > Signed-off-by: Lakshmanan Prithviraj <lakshmanan.prithviraj@emc.com> > --- > --- linux/net/ipv6/ndisc.c.orig 2013-03-12 17:16:18.000000000 +0800 > +++ linux/net/ipv6/ndisc.c 2013-03-21 10:37:06.000000000 +0800 > @@ -757,6 +757,24 @@ static void ndisc_recv_ns(struct sk_buff > > if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) { > if (dad) { > + if (dev->type == ARPHRD_ETHER) { > + const unsigned char *sadr; > + sadr = skb_mac_header(skb); > + if (sadr[6] == dev->dev_addr[0] && > + sadr[7] == dev->dev_addr[1] && > + sadr[8] == dev->dev_addr[2] && > + sadr[9] == dev->dev_addr[3] && > + sadr[10] == dev->dev_addr[4] && > + sadr[11] == dev->dev_addr[5]) { > + /* > + * looped-back to us. This occurs when > + * a bonding interface with roundrobin > + * mode is being configured while the > + * switch side isn't configured yet. > + */ > + goto out; > + } > + > /* > * We are colliding with another node > * who is doing DAD I would say that it is a configuration error. --yoshfuji -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hello. On 22-03-2013 7:20, Meng, Jilin wrote: > we should ignore the looped-back IPv6 DAD packet to avoid configuration failure. > This occurs when a bonding interface with roundrobin mode is being configured an IPv6 address > while the switch side isn't configured bonding/channel yet. > Signed-off-by: Jilin Meng <jilin.meng@emc.com> > Signed-off-by: Yinglin Sun <yinglin.sun@emc.com> > Signed-off-by: Lakshmanan Prithviraj <lakshmanan.prithviraj@emc.com> > --- > --- linux/net/ipv6/ndisc.c.orig 2013-03-12 17:16:18.000000000 +0800 > +++ linux/net/ipv6/ndisc.c 2013-03-21 10:37:06.000000000 +0800 > @@ -757,6 +757,24 @@ static void ndisc_recv_ns(struct sk_buff > > if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) { > if (dad) { > + if (dev->type == ARPHRD_ETHER) { > + const unsigned char *sadr; Empty line after declaration wouldn't hurt. > + sadr = skb_mac_header(skb); > + if (sadr[6] == dev->dev_addr[0] && > + sadr[7] == dev->dev_addr[1] && > + sadr[8] == dev->dev_addr[2] && > + sadr[9] == dev->dev_addr[3] && > + sadr[10] == dev->dev_addr[4] && > + sadr[11] == dev->dev_addr[5]) { Don't we have memcmp() in Linux? WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 2013-03-22 at 18:37 +0400, Sergei Shtylyov wrote: > Don't we have memcmp() in Linux? > Dont use slow memcmp() in this context but fast ether_addr_equal_64bits() -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Yoshfuji, Partially you are correct. But at least this fix removes the limitation that we must configure the switch for bonding first then host in this case. -Jilin -----Original Message----- From: YOSHIFUJI Hideaki [mailto:yoshfuji@linux-ipv6.org] Sent: Friday, March 22, 2013 11:40 AM To: Meng, Jilin Cc: davem@davemloft.net; kuznet@ms2.inr.ac.ru; jmorris@namei.org; kaber@trash.net; Sun, Yinglin; Prithviraj, Lakshmanan; netdev@vger.kernel.org Subject: Re: [PATCH] net: Fix tentative IPv6 address due to DAD looping back Meng, Jilin wrote: > we should ignore the looped-back IPv6 DAD packet to avoid configuration failure. > This occurs when a bonding interface with roundrobin mode is being > configured an IPv6 address while the switch side isn't configured bonding/channel yet. > > Signed-off-by: Jilin Meng <jilin.meng@emc.com> > Signed-off-by: Yinglin Sun <yinglin.sun@emc.com> > Signed-off-by: Lakshmanan Prithviraj <lakshmanan.prithviraj@emc.com> > --- > --- linux/net/ipv6/ndisc.c.orig 2013-03-12 17:16:18.000000000 +0800 > +++ linux/net/ipv6/ndisc.c 2013-03-21 10:37:06.000000000 +0800 > @@ -757,6 +757,24 @@ static void ndisc_recv_ns(struct sk_buff > > if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) { > if (dad) { > + if (dev->type == ARPHRD_ETHER) { > + const unsigned char *sadr; > + sadr = skb_mac_header(skb); > + if (sadr[6] == dev->dev_addr[0] && > + sadr[7] == dev->dev_addr[1] && > + sadr[8] == dev->dev_addr[2] && > + sadr[9] == dev->dev_addr[3] && > + sadr[10] == dev->dev_addr[4] && > + sadr[11] == dev->dev_addr[5]) { > + /* > + * looped-back to us. This occurs when > + * a bonding interface with roundrobin > + * mode is being configured while the > + * switch side isn't configured yet. > + */ > + goto out; > + } > + > /* > * We are colliding with another node > * who is doing DAD I would say that it is a configuration error. --yoshfuji -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Thanks Sergei for introducing a fast function. -----Original Message----- From: netdev-owner@vger.kernel.org [mailto:netdev-owner@vger.kernel.org] On Behalf Of Eric Dumazet Sent: Friday, March 22, 2013 10:48 PM To: Sergei Shtylyov Cc: Meng, Jilin; davem@davemloft.net; kuznet@ms2.inr.ac.ru; jmorris@namei.org; yoshfuji@linux-ipv6.org; kaber@trash.net; Sun, Yinglin; Prithviraj, Lakshmanan; netdev@vger.kernel.org Subject: Re: [PATCH] net: Fix tentative IPv6 address due to DAD looping back On Fri, 2013-03-22 at 18:37 +0400, Sergei Shtylyov wrote: > Don't we have memcmp() in Linux? > Dont use slow memcmp() in this context but fast ether_addr_equal_64bits() -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: "Meng, Jilin" <Jilin.Meng@emc.com> Date: Thu, 11 Apr 2013 03:13:42 +0000 > Thanks Sergei for introducing a fast function. Do not top post. Quote the email you are responding to, and then put your response after the quoted content, not before. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
--- linux/net/ipv6/ndisc.c.orig 2013-03-12 17:16:18.000000000 +0800 +++ linux/net/ipv6/ndisc.c 2013-03-21 10:37:06.000000000 +0800 @@ -757,6 +757,24 @@ static void ndisc_recv_ns(struct sk_buff if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) { if (dad) { + if (dev->type == ARPHRD_ETHER) { + const unsigned char *sadr; + sadr = skb_mac_header(skb); + if (sadr[6] == dev->dev_addr[0] && + sadr[7] == dev->dev_addr[1] && + sadr[8] == dev->dev_addr[2] && + sadr[9] == dev->dev_addr[3] && + sadr[10] == dev->dev_addr[4] && + sadr[11] == dev->dev_addr[5]) { + /* + * looped-back to us. This occurs when + * a bonding interface with roundrobin + * mode is being configured while the + * switch side isn't configured yet. + */ + goto out; + } + /* * We are colliding with another node * who is doing DAD