From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org 069AE4023B DKIM-Filter: OpenDKIM Filter v2.11.0 smtp2.osuosl.org B374E4011F From: Hans Schultz Date: Thu, 30 Jun 2022 13:16:34 +0200 Message-Id: <20220630111634.610320-1-hans@kapio-technology.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [Bridge] [PATCH net-next v1 1/1] net: bridge: ensure that link-local traffic cannot unlock a locked port List-Id: Linux Ethernet Bridging List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: davem@davemloft.net, kuba@kernel.org Cc: Ivan Vecera , Andrew Lunn , Florian Fainelli , Jiri Pirko , Daniel Borkmann , Hans Schultz , netdev@vger.kernel.org, Nikolay Aleksandrov , bridge@lists.linux-foundation.org, Hans Schultz , Ido Schimmel , linux-kernel@vger.kernel.org, Eric Dumazet , linux-kselftest@vger.kernel.org, Roopa Prabhu , Paolo Abeni , Vladimir Oltean , Shuah Khan , Vivien Didelot This patch is related to the patch set "Add support for locked bridge ports (for 802.1X)" Link: https://lore.kernel.org/netdev/20220223101650.1212814-1-schultz.hans+netdev@gmail.com/ This patch makes the locked port feature work with learning turned on, which is enabled with the command: bridge link set dev DEV learning on Without this patch, link local traffic (01:80:c2) like EAPOL packets will create a fdb entry when ingressing on a locked port with learning turned on, thus unintentionally opening up the port for traffic for the said MAC. Some switchcore features like Mac-Auth and refreshing of FDB entries, require learning enables on some switchcores, f.ex. the mv88e6xxx family. Other features may apply too. Since many switchcores trap or mirror various multicast packets to the CPU, link local traffic will unintentionally unlock the port for the SA mac in question unless prevented by this patch. Signed-off-by: Hans Schultz --- net/bridge/br_input.c | 1 + 1 file changed, 1 insertion(+) diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 68b3e850bcb9..a3ce0a151817 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -215,6 +215,7 @@ static void __br_handle_local_finish(struct sk_buff *skb) if ((p->flags & BR_LEARNING) && nbp_state_should_learn(p) && !br_opt_get(p->br, BROPT_NO_LL_LEARN) && + !(p->flags & BR_PORT_LOCKED) && br_should_learn(p, skb, &vid)) br_fdb_update(p->br, p, eth_hdr(skb)->h_source, vid, 0); } -- 2.30.2