From 30b977251ce76eaaae8e4a21836516b47fd7ed84 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 10 Jun 2021 00:24:43 +0900 Subject: [PATCH] ether-addr-util: introduce hw_addr_compare(), hw_addr_equal(), and hw_addr_is_null() --- src/basic/ether-addr-util.c | 13 +++++++++++++ src/basic/ether-addr-util.h | 8 ++++++++ 2 files changed, 21 insertions(+) diff --git a/src/basic/ether-addr-util.c b/src/basic/ether-addr-util.c index 289faaba1b6..3925810768d 100644 --- a/src/basic/ether-addr-util.c +++ b/src/basic/ether-addr-util.c @@ -24,6 +24,19 @@ char* hw_addr_to_string(const struct hw_addr_data *addr, char buffer[HW_ADDR_TO_ return buffer; } +int hw_addr_compare(const struct hw_addr_data *a, const struct hw_addr_data *b) { + int r; + + assert(a); + assert(b); + + r = CMP(a->length, b->length); + if (r != 0) + return r; + + return memcmp(a->bytes, b->bytes, a->length); +} + char* ether_addr_to_string(const struct ether_addr *addr, char buffer[ETHER_ADDR_TO_STRING_MAX]) { assert(addr); assert(buffer); diff --git a/src/basic/ether-addr-util.h b/src/basic/ether-addr-util.h index 6ca54f6af9c..46b5c0553ff 100644 --- a/src/basic/ether-addr-util.h +++ b/src/basic/ether-addr-util.h @@ -28,6 +28,14 @@ char* hw_addr_to_string(const struct hw_addr_data *addr, char buffer[HW_ADDR_TO_ #define HW_ADDR_NULL ((const struct hw_addr_data){}) +int hw_addr_compare(const struct hw_addr_data *a, const struct hw_addr_data *b); +static inline bool hw_addr_equal(const struct hw_addr_data *a, const struct hw_addr_data *b) { + return hw_addr_compare(a, b) == 0; +} +static inline bool hw_addr_is_null(const struct hw_addr_data *addr) { + return hw_addr_equal(addr, &HW_ADDR_NULL); +} + #define ETHER_ADDR_FORMAT_STR "%02X%02X%02X%02X%02X%02X" #define ETHER_ADDR_FORMAT_VAL(x) (x).ether_addr_octet[0], (x).ether_addr_octet[1], (x).ether_addr_octet[2], (x).ether_addr_octet[3], (x).ether_addr_octet[4], (x).ether_addr_octet[5] -- 2.47.3