diff options
author | Stephen Hemminger <shemminger@vyatta.com> | 2008-06-17 19:10:06 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-06-17 19:10:06 -0400 |
commit | 92c0574f11598c8036f81e27d2e8bdd6eed7d76d (patch) | |
tree | 179c0a8ef7291cc65a692043310b543d35c16eac /net/bridge/br_stp_if.c | |
parent | 43aa1920117801fe9ae3d1fad886b62511e09bee (diff) |
bridge: make bridge address settings sticky
Normally, the bridge just chooses the smallest mac address as the
bridge id and mac address of bridge device. But if the administrator
has explictly set the interface address then don't change it.
Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bridge/br_stp_if.c')
-rw-r--r-- | net/bridge/br_stp_if.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/bridge/br_stp_if.c b/net/bridge/br_stp_if.c index 1a4e5c37a0cf..9a52ac5b4525 100644 --- a/net/bridge/br_stp_if.c +++ b/net/bridge/br_stp_if.c | |||
@@ -214,6 +214,10 @@ void br_stp_recalculate_bridge_id(struct net_bridge *br) | |||
214 | const unsigned char *addr = br_mac_zero; | 214 | const unsigned char *addr = br_mac_zero; |
215 | struct net_bridge_port *p; | 215 | struct net_bridge_port *p; |
216 | 216 | ||
217 | /* user has chosen a value so keep it */ | ||
218 | if (br->flags & BR_SET_MAC_ADDR) | ||
219 | return; | ||
220 | |||
217 | list_for_each_entry(p, &br->port_list, list) { | 221 | list_for_each_entry(p, &br->port_list, list) { |
218 | if (addr == br_mac_zero || | 222 | if (addr == br_mac_zero || |
219 | memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0) | 223 | memcmp(p->dev->dev_addr, addr, ETH_ALEN) < 0) |