[ovs-dev] [PATCH 3/8] packets: Add eth_addr_cmp function.

Ethan Jackson ethan at nicira.com
Sun Jan 30 23:56:53 UTC 2011


This commit adds eth_addr_cmp() which behaves like memcmp for
Ethernet addresses.
---
 lib/packets.h     |    7 ++++++-
 ofproto/in-band.c |    2 +-
 vswitchd/bridge.c |    2 +-
 3 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/lib/packets.h b/lib/packets.h
index 0514afd..60f7e75 100644
--- a/lib/packets.h
+++ b/lib/packets.h
@@ -59,10 +59,15 @@ static inline bool eth_addr_is_zero(const uint8_t ea[6])
 {
     return !(ea[0] | ea[1] | ea[2] | ea[3] | ea[4] | ea[5]);
 }
+static inline int eth_addr_cmp(const uint8_t a[ETH_ADDR_LEN],
+                               const uint8_t b[ETH_ADDR_LEN])
+{
+    return memcmp(a, b, ETH_ADDR_LEN);
+}
 static inline bool eth_addr_equals(const uint8_t a[ETH_ADDR_LEN],
                                    const uint8_t b[ETH_ADDR_LEN])
 {
-    return !memcmp(a, b, ETH_ADDR_LEN);
+    return !eth_addr_cmp(a, b);
 }
 static inline uint64_t eth_addr_to_uint64(const uint8_t ea[ETH_ADDR_LEN])
 {
diff --git a/ofproto/in-band.c b/ofproto/in-band.c
index 94d2cb5..52bf118 100644
--- a/ofproto/in-band.c
+++ b/ofproto/in-band.c
@@ -641,7 +641,7 @@ compare_addrs(const void *a_, const void *b_)
 static int
 compare_macs(const void *a, const void *b)
 {
-    return memcmp(a, b, ETH_ADDR_LEN);
+    return eth_addr_cmp(a, b);
 }
 
 void
diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
index 730b4eb..dc57c18 100644
--- a/vswitchd/bridge.c
+++ b/vswitchd/bridge.c
@@ -1000,7 +1000,7 @@ bridge_pick_local_hw_addr(struct bridge *br, uint8_t ea[ETH_ADDR_LEN],
             !eth_addr_is_local(iface_ea) &&
             !eth_addr_is_reserved(iface_ea) &&
             !eth_addr_is_zero(iface_ea) &&
-            memcmp(iface_ea, ea, ETH_ADDR_LEN) < 0)
+            eth_addr_cmp(iface_ea, ea) < 0)
         {
             memcpy(ea, iface_ea, ETH_ADDR_LEN);
             *hw_addr_iface = iface;
-- 
1.7.2





More information about the dev mailing list