]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
arphrd-util: introduce arphrd_to_hw_addr_len()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 7 Nov 2021 06:23:38 +0000 (15:23 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 8 Nov 2021 23:24:10 +0000 (08:24 +0900)
src/basic/arphrd-util.c
src/basic/arphrd-util.h

index b52934753033488ecd4448b93ee8ed42ca2869a3..3ea2c9d09a90870b203a4bff2c26187e3c171b01 100644 (file)
@@ -1,7 +1,9 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
 #include <errno.h>
+#include <netinet/in.h>
 #include <linux/if_arp.h>
+#include <linux/if_infiniband.h>
 #include <string.h>
 
 #include "arphrd-util.h"
@@ -23,3 +25,21 @@ int arphrd_from_name(const char *name) {
 
         return sc->id;
 }
+
+size_t arphrd_to_hw_addr_len(uint16_t arphrd) {
+        switch (arphrd) {
+        case ARPHRD_ETHER:
+                return ETH_ALEN;
+        case ARPHRD_INFINIBAND:
+                return INFINIBAND_ALEN;
+        case ARPHRD_TUNNEL:
+        case ARPHRD_SIT:
+        case ARPHRD_IPGRE:
+                return sizeof(struct in_addr);
+        case ARPHRD_TUNNEL6:
+        case ARPHRD_IP6GRE:
+                return sizeof(struct in6_addr);
+        default:
+                return 0;
+        }
+}
index bc95b4507b4f72ada52a15ad7afe0ad18ae8ea80..33f5694abd0008883dff3ad892852d8af699d78b 100644 (file)
@@ -1,5 +1,10 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 #pragma once
 
+#include <inttypes.h>
+#include <stddef.h>
+
 const char *arphrd_to_name(int id);
 int arphrd_from_name(const char *name);
+
+size_t arphrd_to_hw_addr_len(uint16_t arphrd);