| To: | "David S. Miller" <davem@xxxxxxxxxx> |
|---|---|
| Subject: | [1/11] bridge - handle delete of multiple devices with same address |
| From: | Stephen Hemminger <shemminger@xxxxxxxx> |
| Date: | Fri, 21 May 2004 15:45:11 -0700 |
| Cc: | bridge@xxxxxxxx, netdev@xxxxxxxxxxx, David Woodhouse <dwmw2@xxxxxxxxxxxxx>, Diego Liziero <liziero.diego@xxxxxxxxxx> |
| Organization: | Open Source Development Lab |
| Sender: | netdev-bounce@xxxxxxxxxxx |
This fixes the issue discovered when removing bluetooth devices from a bridge.
Need to add special case code when forwarding table is being cleaned up to
handle the case where several devices share the same hardware address.
(Could fix on 2.4 if there is demand for it)
diff -Nru a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c
--- a/net/bridge/br_fdb.c 2004-05-20 08:43:46 -07:00
+++ b/net/bridge/br_fdb.c 2004-05-20 08:43:46 -07:00
@@ -157,9 +157,28 @@
hlist_for_each_safe(h, g, &br->hash[i]) {
struct net_bridge_fdb_entry *f
= hlist_entry(h, struct net_bridge_fdb_entry,
hlist);
- if (f->dst == p) {
- fdb_delete(f);
+ if (f->dst != p)
+ continue;
+
+ /*
+ * if multiple ports all have the same device address
+ * then when one port is deleted, assign
+ * the local entry to other port
+ */
+ if (f->is_local) {
+ struct net_bridge_port *op;
+ list_for_each_entry(op, &br->port_list, list) {
+ if (op != p &&
+ !memcmp(op->dev->dev_addr,
+ f->addr.addr, ETH_ALEN)) {
+ f->dst = op;
+ goto skip_delete;
+ }
+ }
}
+
+ fdb_delete(f);
+ skip_delete: ;
}
}
write_unlock_bh(&br->hash_lock);
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | Re: [PATCH 1/5] 2.6.6-bk8 pcnet32 add static to two routines., Jeff Garzik |
|---|---|
| Next by Date: | [PATCH] (2/11) bridge -- cleanup of bridge allocation, Stephen Hemminger |
| Previous by Thread: | [PATCH 5/5] 2.4.27-pre3 pcnet32 remove timer and complexity., Don Fry |
| Next by Thread: | [PATCH] (2/11) bridge -- cleanup of bridge allocation, Stephen Hemminger |
| Indexes: | [Date] [Thread] [Top] [All Lists] |