From patchwork Fri Oct 12 01:17:23 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lin Ming X-Patchwork-Id: 191031 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 028C42C008E for ; Fri, 12 Oct 2012 12:18:42 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752760Ab2JLBSk (ORCPT ); Thu, 11 Oct 2012 21:18:40 -0400 Received: from mail-pa0-f46.google.com ([209.85.220.46]:48052 "EHLO mail-pa0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752197Ab2JLBSj (ORCPT ); Thu, 11 Oct 2012 21:18:39 -0400 Received: by mail-pa0-f46.google.com with SMTP id hz1so2321126pad.19 for ; Thu, 11 Oct 2012 18:18:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer; bh=MrhtK8AqCn+THrnh09urk6hEshDKDP067X+2veeRLg0=; b=tuKLuxsJsovzF+ootgVNhxhzO4q+bGcna1GaI/8MKMf3cbjgsEJnFMNhT4of9ashoX TrLDSbQUgwHbX2GefFIu5cNk/qPsnqAwEtqYnTFsBi9QG5T0crsfHJPK/cE8CVWubuWC GheWol9M7CX0YcW58Aq9X6gQP8nztvNj4i1n5Pya3DnjwI13OB5qba1XE2dJvNGUeDoP tQ/YPI9Xpc7HXVmTh51pqRltjJ+iPw38I/SkA6ODb3lywsGDHcWhTNbSOMx+BZOuWMkK o/VmAtUduMw5d3+KVDERfh1DP9J5Hp2mwjkPUJMjeUnw5JhwgXOlt1yjw5JndFOjaUUy llGQ== Received: by 10.66.81.199 with SMTP id c7mr7028818pay.19.1350004719046; Thu, 11 Oct 2012 18:18:39 -0700 (PDT) Received: from localhost.localdomain ([220.248.17.187]) by mx.google.com with ESMTPS id oi2sm3543767pbb.62.2012.10.11.18.18.36 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 11 Oct 2012 18:18:37 -0700 (PDT) From: Lin Ming To: Herbert Xu Cc: netdev@vger.kernel.org Subject: [PATCH] bridge: don't flood multicast packets if no snooping entry Date: Fri, 12 Oct 2012 09:17:23 +0800 Message-Id: <1350004643-3786-1-git-send-email-minggr@gmail.com> X-Mailer: git-send-email 1.7.2.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Lin Ming Currently, multicast packets will be flood even if there is no mutlicast snooping entry attached to port. With IGMP snooping enabled, we should stop sending multicast packets if there is no member joined. Signed-off-by: Lin Ming --- net/bridge/br_input.c | 2 ++ net/bridge/br_private.h | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-) diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 76f15fd..2821085 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -90,6 +90,8 @@ int br_handle_frame_finish(struct sk_buff *skb) skb = NULL; if (!skb2) goto out; + } else if (!mdst && BR_INPUT_SKB_CB_NOT_IGMP(skb)) { + skb = NULL; } else skb2 = skb; diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h index 9b278c4..e2c894d 100644 --- a/net/bridge/br_private.h +++ b/net/bridge/br_private.h @@ -268,8 +268,10 @@ struct br_input_skb_cb { #ifdef CONFIG_BRIDGE_IGMP_SNOOPING # define BR_INPUT_SKB_CB_MROUTERS_ONLY(__skb) (BR_INPUT_SKB_CB(__skb)->mrouters_only) +# define BR_INPUT_SKB_CB_NOT_IGMP(__skb) (!BR_INPUT_SKB_CB(__skb)->igmp) #else # define BR_INPUT_SKB_CB_MROUTERS_ONLY(__skb) (0) +# define BR_INPUT_SKB_CB_NOT_IGMP(__skb) (0) #endif #define br_printk(level, br, format, args...) \