summaryrefslogtreecommitdiff
path: root/vswitchd
diff options
context:
space:
mode:
authorJustin Pettit <jpettit@nicira.com>2011-08-26 15:05:53 -0700
committerJustin Pettit <jpettit@nicira.com>2011-08-26 15:24:17 -0700
commit3a48ace3e4799ce25099a8584372abe7a4d6d771 (patch)
treea22f8622d5307ca77751cea33808e28b3a3c7089 /vswitchd
parent00488a5eefd26ff583b403666a012d96ce26bcfd (diff)
downloadopenvswitch-3a48ace3e4799ce25099a8584372abe7a4d6d771.tar.gz
bridge: Make bridge_pick_local_hw_addr() easier to reason.
The use of eth_addr_is_multicast() to see if a reasonable address was found always caused me momentary confusion. This commit uses a flag instead, and also saves a bit of unnecessary array reading and writing.
Diffstat (limited to 'vswitchd')
-rw-r--r--vswitchd/bridge.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index d99d6a1cd..2bfd926e2 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -1004,6 +1004,7 @@ bridge_pick_local_hw_addr(struct bridge *br, uint8_t ea[ETH_ADDR_LEN],
{
const char *hwaddr;
struct port *port;
+ bool found_addr = false;
int error;
*hw_addr_iface = NULL;
@@ -1023,7 +1024,6 @@ bridge_pick_local_hw_addr(struct bridge *br, uint8_t ea[ETH_ADDR_LEN],
/* Otherwise choose the minimum non-local MAC address among all of the
* interfaces. */
- memset(ea, 0xff, ETH_ADDR_LEN);
HMAP_FOR_EACH (port, hmap_node, &br->ports) {
uint8_t iface_ea[ETH_ADDR_LEN];
struct iface *candidate;
@@ -1081,16 +1081,17 @@ bridge_pick_local_hw_addr(struct bridge *br, uint8_t ea[ETH_ADDR_LEN],
{
memcpy(ea, iface_ea, ETH_ADDR_LEN);
*hw_addr_iface = iface;
+ found_addr = true;
}
}
- if (eth_addr_is_multicast(ea)) {
+ if (found_addr) {
+ VLOG_DBG("bridge %s: using bridge Ethernet address "ETH_ADDR_FMT,
+ br->name, ETH_ADDR_ARGS(ea));
+ } else {
memcpy(ea, br->default_ea, ETH_ADDR_LEN);
*hw_addr_iface = NULL;
VLOG_WARN("bridge %s: using default bridge Ethernet "
"address "ETH_ADDR_FMT, br->name, ETH_ADDR_ARGS(ea));
- } else {
- VLOG_DBG("bridge %s: using bridge Ethernet address "ETH_ADDR_FMT,
- br->name, ETH_ADDR_ARGS(ea));
}
}