]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ether-addr-util: introduce hw_addr_compare(), hw_addr_equal(), and hw_addr_is_null()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 9 Jun 2021 15:24:43 +0000 (00:24 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Wed, 9 Jun 2021 15:24:43 +0000 (00:24 +0900)
src/basic/ether-addr-util.c
src/basic/ether-addr-util.h

index 289faaba1b65fc4ad134fa5df5e83dd97ca58995..3925810768dd96912bf2b5f32a2311d275b8ec8e 100644 (file)
@@ -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);
index 6ca54f6af9c8ca4a3d66e03ac5e5358a659e8d2c..46b5c0553ff6d169ee482f9c895d62b1b3b16501 100644 (file)
@@ -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]