From patchwork Tue Jun 28 22:03:19 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Lamparter X-Patchwork-Id: 102492 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 641A7B6F73 for ; Wed, 29 Jun 2011 08:04:09 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752654Ab1F1WDv (ORCPT ); Tue, 28 Jun 2011 18:03:51 -0400 Received: from spaceboyz.net ([87.106.131.203]:37241 "EHLO spaceboyz.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752600Ab1F1WDr (ORCPT ); Tue, 28 Jun 2011 18:03:47 -0400 Received: from [2001:8d8:81:5c2::] (helo=jupiter.n2.diac24.net) by spaceboyz.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1QbgNm-0005bx-OT; Wed, 29 Jun 2011 00:03:46 +0200 Received: from arkology.n2.diac24.net ([2001:8d8:81:5c2:219:dbff:feea:a8a8]) by jupiter.n2.diac24.net with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) (envelope-from ) id 1QbgNg-00AWLZ-GI; Wed, 29 Jun 2011 00:03:42 +0200 Received: from equinox by arkology.n2.diac24.net with local (Exim 4.73) (envelope-from ) id 1QbgNg-0002wL-D1; Wed, 29 Jun 2011 00:03:40 +0200 From: David Lamparter To: netdev@vger.kernel.org Cc: Nick Carter , David Lamparter , Stephen Hemminger , davem@davemloft.net Subject: [PATCH 2/2] bridge: pass through 802.1X & co. in 'dumb' mode Date: Wed, 29 Jun 2011 00:03:19 +0200 Message-Id: <1309298599-11266-2-git-send-email-equinox@diac24.net> X-Mailer: git-send-email 1.7.5.3 In-Reply-To: <1309298599-11266-1-git-send-email-equinox@diac24.net> References: <20110628214637.GE2121496@jupiter.n2.diac24.net> <1309298599-11266-1-git-send-email-equinox@diac24.net> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org when operating without STP, we're a dumb switch and should be able to forward ethernet management protocols like 802.1X, LLDP and GVRP. if this is not desired, it can be enacted as local policy through ebtables. if we're in STP mode we basically claim to be an intelligent switch and should implement these protocols properly (in userspace). Signed-off-by: David Lamparter --- compile-tested only net/bridge/br_input.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index c873db5..4cee1b5 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -167,16 +167,19 @@ rx_handler_result_t br_handle_frame(struct sk_buff **pskb) if (dest[5] == 0x01 || dest[5] == 0x02) return RX_HANDLER_PASS; - /* If STP is turned off, then forward */ - if (p->br->stp_enabled == BR_NO_STP && dest[5] == 0) + /* If STP is turned off, we're a dumb switch and therefore + * forward the remaining link-locals. (STP, 802.1X, LLDP, + * GVRP & co.) */ + if (p->br->stp_enabled == BR_NO_STP) goto forward; if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_LOCAL_IN, skb, skb->dev, NULL, br_handle_local_finish)) { return RX_HANDLER_CONSUMED; /* consumed by filter */ } else { + /* stay on physdev for userspace implementation */ *pskb = skb; - return RX_HANDLER_PASS; /* continue processing */ + return RX_HANDLER_PASS; } }