From: Yu Watanabe Date: Wed, 9 Jun 2021 15:24:43 +0000 (+0900) Subject: ether-addr-util: introduce hw_addr_compare(), hw_addr_equal(), and hw_addr_is_null() X-Git-Tag: v249-rc1~47^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=30b977251ce76eaaae8e4a21836516b47fd7ed84;p=thirdparty%2Fsystemd.git ether-addr-util: introduce hw_addr_compare(), hw_addr_equal(), and hw_addr_is_null() --- 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]