From: Yu Watanabe Date: Sun, 7 Nov 2021 06:23:38 +0000 (+0900) Subject: arphrd-util: introduce arphrd_to_hw_addr_len() X-Git-Tag: v250-rc1~328^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=91961fff43d0a3565812e5eeeb237de45242e06a;p=thirdparty%2Fsystemd.git arphrd-util: introduce arphrd_to_hw_addr_len() --- diff --git a/src/basic/arphrd-util.c b/src/basic/arphrd-util.c index b5293475303..3ea2c9d09a9 100644 --- a/src/basic/arphrd-util.c +++ b/src/basic/arphrd-util.c @@ -1,7 +1,9 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include +#include #include +#include #include #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; + } +} diff --git a/src/basic/arphrd-util.h b/src/basic/arphrd-util.h index bc95b4507b4..33f5694abd0 100644 --- a/src/basic/arphrd-util.h +++ b/src/basic/arphrd-util.h @@ -1,5 +1,10 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #pragma once +#include +#include + const char *arphrd_to_name(int id); int arphrd_from_name(const char *name); + +size_t arphrd_to_hw_addr_len(uint16_t arphrd);