From patchwork Tue Jun 14 01:06:58 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Fernando_Luis_V=C3=A1zquez_Cao?= X-Patchwork-Id: 100212 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 17A0DB6FB6 for ; Tue, 14 Jun 2011 11:07:06 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755629Ab1FNBHA (ORCPT ); Mon, 13 Jun 2011 21:07:00 -0400 Received: from serv2.oss.ntt.co.jp ([222.151.198.100]:54821 "EHLO serv2.oss.ntt.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755575Ab1FNBG7 (ORCPT ); Mon, 13 Jun 2011 21:06:59 -0400 Received: from serv2.oss.ntt.co.jp (localhost [127.0.0.1]) by serv2.oss.ntt.co.jp (Postfix) with ESMTP id A9A4F248573; Tue, 14 Jun 2011 10:06:58 +0900 (JST) Received: from serv1.oss.ntt.co.jp (serv1.oss.ntt.co.jp [172.19.0.2]) by serv2.oss.ntt.co.jp (Postfix) with ESMTP id 9771D248557; Tue, 14 Jun 2011 10:06:58 +0900 (JST) Received: from [172.17.1.84] (unknown [172.17.1.84]) by serv1.oss.ntt.co.jp (Postfix) with ESMTP id 8162C260436; Tue, 14 Jun 2011 10:06:58 +0900 (JST) Subject: [PATCH 2/2] IGMP snooping: set mrouters_only flag for IPv6 traffic properly From: Fernando Luis =?ISO-8859-1?Q?V=E1zquez?= Cao To: Herbert Xu Cc: Stephen Hemminger , netdev@vger.kernel.org, Hideaki YOSHIFUJI , "David S. Miller" In-Reply-To: <1308013301.3896.6.camel@nexus.oss.ntt.co.jp> References: <1307933995.2704.11.camel@nausicaa> <1308013301.3896.6.camel@nexus.oss.ntt.co.jp> Organization: NTT Open Source Software Center Date: Tue, 14 Jun 2011 10:06:58 +0900 Message-ID: <1308013618.3896.11.camel@nexus.oss.ntt.co.jp> Mime-Version: 1.0 X-Mailer: Evolution 2.32.3 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Upon reception of a MGM report packet the kernel sets the mrouters_only flag in a skb that is a clone of the original skb, which means that the bridge loses track of MGM packets (cb buffers are tied to a specific skb and not shared) and it ends up forwading join requests to the bridge interface. This can cause unexpected membership timeouts and intermitent/permanent loss of connectivity as described in RFC 4541 [2.1.1. IGMP Forwarding Rules]: A snooping switch should forward IGMP Membership Reports only to those ports where multicast routers are attached. [...] Sending membership reports to other hosts can result, for IGMPv1 and IGMPv2, in unintentionally preventing a host from joining a specific multicast group. Signed-off-by: Fernando Luis Vazquez Cao --- -- 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 -urNp linux-3.0-rc2-orig/net/bridge/br_multicast.c linux-3.0-rc2/net/bridge/br_multicast.c --- linux-3.0-rc2-orig/net/bridge/br_multicast.c 2011-06-13 12:10:27.805554187 +0900 +++ linux-3.0-rc2/net/bridge/br_multicast.c 2011-06-13 12:12:27.591626915 +0900 @@ -1543,7 +1543,7 @@ static int br_multicast_ipv6_rcv(struct goto out; } mld = (struct mld_msg *)skb_transport_header(skb2); - BR_INPUT_SKB_CB(skb2)->mrouters_only = 1; + BR_INPUT_SKB_CB(skb)->mrouters_only = 1; err = br_ip6_multicast_add_group(br, port, &mld->mld_mca); break; }