mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-19 07:39:45 +02:00
oooops, bridge patch was broken
git-svn-id: svn://svn.openwrt.org/openwrt/branches/buildroot-ng/openwrt@4306 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
7877024715
commit
be3bafd96c
@ -1,61 +0,0 @@
|
|||||||
diff -rup linux-rb24/net/bridge/br_device.c linux-rb24bpatch/net/bridge/br_device.c
|
|
||||||
--- linux-rb24/net/bridge/br_device.c 2002-02-25 11:38:14.000000000 -0800
|
|
||||||
+++ linux-rb24bpatch/net/bridge/br_device.c 2005-07-05 02:09:17.000000000 -0700
|
|
||||||
@@ -121,6 +121,23 @@ static int br_dev_accept_fastpath(struct
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
+static int
|
|
||||||
+br_set_mac_address(struct net_device *dev, void *addr)
|
|
||||||
+{
|
|
||||||
+ struct net_bridge *br = dev->priv;
|
|
||||||
+ struct sockaddr *sa = (struct sockaddr *) addr;
|
|
||||||
+
|
|
||||||
+ write_lock_bh(&br->lock);
|
|
||||||
+
|
|
||||||
+ memcpy(br->preferred_id.addr, sa->sa_data, ETH_ALEN);
|
|
||||||
+
|
|
||||||
+ br_stp_recalculate_bridge_id(br);
|
|
||||||
+
|
|
||||||
+ write_unlock_bh(&br->lock);
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void br_dev_setup(struct net_device *dev)
|
|
||||||
{
|
|
||||||
memset(dev->dev_addr, 0, ETH_ALEN);
|
|
||||||
@@ -133,5 +150,5 @@ void br_dev_setup(struct net_device *dev
|
|
||||||
dev->stop = br_dev_stop;
|
|
||||||
dev->accept_fastpath = br_dev_accept_fastpath;
|
|
||||||
dev->tx_queue_len = 0;
|
|
||||||
- dev->set_mac_address = NULL;
|
|
||||||
+ dev->set_mac_address = br_set_mac_address;
|
|
||||||
}
|
|
||||||
diff -rup linux-rb24/net/bridge/br_private.h linux-rb24bpatch/net/bridge/br_private.h
|
|
||||||
--- linux-rb24/net/bridge/br_private.h 2004-08-07 16:26:06.000000000 -0700
|
|
||||||
+++ linux-rb24bpatch/net/bridge/br_private.h 2005-07-05 02:12:56.000000000 -0700
|
|
||||||
@@ -95,6 +95,7 @@ struct net_bridge
|
|
||||||
int hello_time;
|
|
||||||
int forward_delay;
|
|
||||||
bridge_id bridge_id;
|
|
||||||
+ bridge_id preferred_id;
|
|
||||||
int bridge_max_age;
|
|
||||||
int bridge_hello_time;
|
|
||||||
int bridge_forward_delay;
|
|
||||||
diff -rup linux-rb24/net/bridge/br_stp_if.c linux-rb24bpatch/net/bridge/br_stp_if.c
|
|
||||||
--- linux-rb24/net/bridge/br_stp_if.c 2001-04-19 08:38:50.000000000 -0700
|
|
||||||
+++ linux-rb24bpatch/net/bridge/br_stp_if.c 2005-07-05 02:22:11.000000000 -0700
|
|
||||||
@@ -162,6 +162,12 @@ void br_stp_recalculate_bridge_id(struct
|
|
||||||
|
|
||||||
p = br->port_list;
|
|
||||||
while (p != NULL) {
|
|
||||||
+ /* match against preferred address first */
|
|
||||||
+ if (memcmp(p->dev->dev_addr,br->preferred_id.addr,ETH_ALEN) == 0) {
|
|
||||||
+ addr = p->dev->dev_addr;
|
|
||||||
+ break;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (addr == br_mac_zero ||
|
|
||||||
memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0)
|
|
||||||
addr = p->dev->dev_addr;
|
|
Loading…
Reference in New Issue
Block a user