Line data Source code
1 : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : 3 : #include <errno.h> 4 : #include <linux/if_arp.h> 5 : #include <string.h> 6 : 7 : #include "arphrd-list.h" 8 : #include "macro.h" 9 : 10 : static const struct arphrd_name* lookup_arphrd(register const char *str, register GPERF_LEN_TYPE len); 11 : 12 : #include "arphrd-from-name.h" 13 : #include "arphrd-to-name.h" 14 : 15 67 : const char *arphrd_to_name(int id) { 16 : 17 67 : if (id <= 0) 18 1 : return NULL; 19 : 20 66 : if ((size_t) id >= ELEMENTSOF(arphrd_names)) 21 1 : return NULL; 22 : 23 65 : return arphrd_names[id]; 24 : } 25 : 26 67 : int arphrd_from_name(const char *name) { 27 : const struct arphrd_name *sc; 28 : 29 67 : assert(name); 30 : 31 67 : sc = lookup_arphrd(name, strlen(name)); 32 67 : if (!sc) 33 2 : return -EINVAL; 34 : 35 65 : return sc->id; 36 : } 37 : 38 1 : int arphrd_max(void) { 39 1 : return ELEMENTSOF(arphrd_names); 40 : }