/* SPDX-License-Identifier: LGPL-2.1-or-later */ #include #include #include #include #include #include "arphrd-util.h" #include "macro.h" static const struct arphrd_name* lookup_arphrd(register const char *str, register GPERF_LEN_TYPE len); #include "arphrd-from-name.h" #include "arphrd-to-name.h" int arphrd_from_name(const char *name) { const struct arphrd_name *sc; assert(name); sc = lookup_arphrd(name, strlen(name)); if (!sc) return -EINVAL; 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; } }