Message ID | 1356010568-21644-1-git-send-email-yanb@mellanox.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Thu, 20 Dec 2012 15:36:08 +0200 Yan Burman <yanb@mellanox.com> wrote: > The socket calls from vxlan to join/leave multicast group aren't > using the index of the underlying device, as a result the stack uses > the first interface that is up. This results in vxlan being non functional > over a device which isn't the 1st to be up. > Fix this by providing the iflink field to the vxlan instance > to the multicast calls. > > Signed-off-by: Yan Burman <yanb@mellanox.com> > --- > drivers/net/vxlan.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c > index 3b3fdf6..40f2cc1 100644 > --- a/drivers/net/vxlan.c > +++ b/drivers/net/vxlan.c > @@ -505,7 +505,8 @@ static int vxlan_join_group(struct net_device *dev) > struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id); > struct sock *sk = vn->sock->sk; > struct ip_mreqn mreq = { > - .imr_multiaddr.s_addr = vxlan->gaddr, > + .imr_multiaddr.s_addr = vxlan->gaddr, > + .imr_ifindex = vxlan->link, > }; > int err; > > @@ -532,7 +533,8 @@ static int vxlan_leave_group(struct net_device *dev) > int err = 0; > struct sock *sk = vn->sock->sk; > struct ip_mreqn mreq = { > - .imr_multiaddr.s_addr = vxlan->gaddr, > + .imr_multiaddr.s_addr = vxlan->gaddr, > + .imr_ifindex = vxlan->link, > }; > > /* Only leave group when last vxlan is done. */ Acked-by: Stephen Hemminger <shemminger@vyatta.com> -- 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: Yan Burman <yanb@mellanox.com> Date: Thu, 20 Dec 2012 15:36:08 +0200 > The socket calls from vxlan to join/leave multicast group aren't > using the index of the underlying device, as a result the stack uses > the first interface that is up. This results in vxlan being non functional > over a device which isn't the 1st to be up. > Fix this by providing the iflink field to the vxlan instance > to the multicast calls. > > Signed-off-by: Yan Burman <yanb@mellanox.com> Applied, thanks. -- 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
> -----Original Message----- > From: Bernhard Schmidt [mailto:berni@birkenwald.de] > Sent: Monday, January 14, 2013 02:48 > To: Yan Burman > Subject: Re: [PATCH net] net/vxlan: Use the underlying device index when > joining/leaving multicast groups > > In gmane.linux.network, Yan Burman wrote: > > Hello, > > thanks! That fixes my issue. Could you please submit this to -stable? > From my understanding David is the one submitting to -stable. I can send it to -stable assuming it's ok with David. Yan > Thanks, > Bernhard > > > The socket calls from vxlan to join/leave multicast group aren't using > > the index of the underlying device, as a result the stack uses the > > first interface that is up. This results in vxlan being non functional > > over a device which isn't the 1st to be up. > > Fix this by providing the iflink field to the vxlan instance to the > > multicast calls. > > > > Signed-off-by: Yan Burman <yanb@mellanox.com> > > --- > > drivers/net/vxlan.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index > > 3b3fdf6..40f2cc1 100644 > > --- a/drivers/net/vxlan.c > > +++ b/drivers/net/vxlan.c > > @@ -505,7 +505,8 @@ static int vxlan_join_group(struct net_device *dev) > > struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id); > > struct sock *sk = vn->sock->sk; > > struct ip_mreqn mreq = { > > - .imr_multiaddr.s_addr = vxlan->gaddr, > > + .imr_multiaddr.s_addr = vxlan->gaddr, > > + .imr_ifindex = vxlan->link, > > }; > > int err; > > > > @@ -532,7 +533,8 @@ static int vxlan_leave_group(struct net_device > *dev) > > int err = 0; > > struct sock *sk = vn->sock->sk; > > struct ip_mreqn mreq = { > > - .imr_multiaddr.s_addr = vxlan->gaddr, > > + .imr_multiaddr.s_addr = vxlan->gaddr, > > + .imr_ifindex = vxlan->link, > > }; > > > > /* Only leave group when last vxlan is done. */ > > -- > > 1.7.11.3 > > -- 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
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c index 3b3fdf6..40f2cc1 100644 --- a/drivers/net/vxlan.c +++ b/drivers/net/vxlan.c @@ -505,7 +505,8 @@ static int vxlan_join_group(struct net_device *dev) struct vxlan_net *vn = net_generic(dev_net(dev), vxlan_net_id); struct sock *sk = vn->sock->sk; struct ip_mreqn mreq = { - .imr_multiaddr.s_addr = vxlan->gaddr, + .imr_multiaddr.s_addr = vxlan->gaddr, + .imr_ifindex = vxlan->link, }; int err; @@ -532,7 +533,8 @@ static int vxlan_leave_group(struct net_device *dev) int err = 0; struct sock *sk = vn->sock->sk; struct ip_mreqn mreq = { - .imr_multiaddr.s_addr = vxlan->gaddr, + .imr_multiaddr.s_addr = vxlan->gaddr, + .imr_ifindex = vxlan->link, }; /* Only leave group when last vxlan is done. */
The socket calls from vxlan to join/leave multicast group aren't using the index of the underlying device, as a result the stack uses the first interface that is up. This results in vxlan being non functional over a device which isn't the 1st to be up. Fix this by providing the iflink field to the vxlan instance to the multicast calls. Signed-off-by: Yan Burman <yanb@mellanox.com> --- drivers/net/vxlan.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)