arphrd-util: introduce arphrd_to_hw_addr_len()

This commit is contained in:
Yu Watanabe
2021-11-07 15:23:38 +09:00
parent f09d20256a
commit 91961fff43
2 changed files with 25 additions and 0 deletions

View 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;
}
}

View 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);