Return-Path: Message-ID: <4ED5E9D6.3070404@jp.fujitsu.com> Date: Wed, 30 Nov 2011 17:31:18 +0900 From: Koki Sanagi MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Subject: [Bridge] [PATCH] bridge: Cannot communicate with brX when its MAC address is changed List-Id: Linux Ethernet Bridging List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: shemminger@linux-foundation.org, bridge@lists.linux-foundation.org Cc: netdev@vger.kernel.org, davem@davemloft.net When the MAC address of a bridge interface is changed, it cannot communicate with others. Because Whether or not a packet should be transferred to bridge interface depends on whether or not dst of a packet is in fdb and is_local=y. If we change MAC address of a bridge interface, it isn't in fdb. This patch adds an condition that dst of a packet matches MAC address of a bridge interface to the conventional condition. Signed-off-by: Koki Sanagi --- net/bridge/br_input.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 5a31731..4e5c862 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -94,7 +94,8 @@ int br_handle_frame_finish(struct sk_buff *skb) skb2 = skb; br->dev->stats.multicast++; - } else if ((dst = __br_fdb_get(br, dest)) && dst->is_local) { + } else if ((dst = __br_fdb_get(br, dest) && dst->is_local) || + !compare_ether_addr(p->br->dev->dev_addr, dest)) { skb2 = skb; /* Do not forward the packet since it's local. */ skb = NULL;