/* Generated by ./xlat/gen.sh from ./xlat/arp_hardware_types.in; do not edit. */

#include "gcc_compat.h"
#include "static_assert.h"

#if defined(ARPHRD_NETROM) || (defined(HAVE_DECL_ARPHRD_NETROM) && HAVE_DECL_ARPHRD_NETROM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_NETROM) == (0), "ARPHRD_NETROM != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_NETROM 0
#endif
#if defined(ARPHRD_ETHER) || (defined(HAVE_DECL_ARPHRD_ETHER) && HAVE_DECL_ARPHRD_ETHER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_ETHER) == (1), "ARPHRD_ETHER != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_ETHER 1
#endif
#if defined(ARPHRD_EETHER) || (defined(HAVE_DECL_ARPHRD_EETHER) && HAVE_DECL_ARPHRD_EETHER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_EETHER) == (2), "ARPHRD_EETHER != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_EETHER 2
#endif
#if defined(ARPHRD_AX25) || (defined(HAVE_DECL_ARPHRD_AX25) && HAVE_DECL_ARPHRD_AX25)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_AX25) == (3), "ARPHRD_AX25 != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_AX25 3
#endif
#if defined(ARPHRD_PRONET) || (defined(HAVE_DECL_ARPHRD_PRONET) && HAVE_DECL_ARPHRD_PRONET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_PRONET) == (4), "ARPHRD_PRONET != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_PRONET 4
#endif
#if defined(ARPHRD_CHAOS) || (defined(HAVE_DECL_ARPHRD_CHAOS) && HAVE_DECL_ARPHRD_CHAOS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_CHAOS) == (5), "ARPHRD_CHAOS != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_CHAOS 5
#endif
#if defined(ARPHRD_IEEE802) || (defined(HAVE_DECL_ARPHRD_IEEE802) && HAVE_DECL_ARPHRD_IEEE802)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IEEE802) == (6), "ARPHRD_IEEE802 != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IEEE802 6
#endif
#if defined(ARPHRD_ARCNET) || (defined(HAVE_DECL_ARPHRD_ARCNET) && HAVE_DECL_ARPHRD_ARCNET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_ARCNET) == (7), "ARPHRD_ARCNET != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_ARCNET 7
#endif
#if defined(ARPHRD_APPLETLK) || (defined(HAVE_DECL_ARPHRD_APPLETLK) && HAVE_DECL_ARPHRD_APPLETLK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_APPLETLK) == (8), "ARPHRD_APPLETLK != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_APPLETLK 8
#endif
#if defined(ARPHRD_DLCI) || (defined(HAVE_DECL_ARPHRD_DLCI) && HAVE_DECL_ARPHRD_DLCI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_DLCI) == (15), "ARPHRD_DLCI != 15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_DLCI 15
#endif
#if defined(ARPHRD_ATM) || (defined(HAVE_DECL_ARPHRD_ATM) && HAVE_DECL_ARPHRD_ATM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_ATM) == (19), "ARPHRD_ATM != 19");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_ATM 19
#endif
#if defined(ARPHRD_METRICOM) || (defined(HAVE_DECL_ARPHRD_METRICOM) && HAVE_DECL_ARPHRD_METRICOM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_METRICOM) == (23), "ARPHRD_METRICOM != 23");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_METRICOM 23
#endif
#if defined(ARPHRD_IEEE1394) || (defined(HAVE_DECL_ARPHRD_IEEE1394) && HAVE_DECL_ARPHRD_IEEE1394)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IEEE1394) == (24), "ARPHRD_IEEE1394 != 24");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IEEE1394 24
#endif
#if defined(ARPHRD_EUI64) || (defined(HAVE_DECL_ARPHRD_EUI64) && HAVE_DECL_ARPHRD_EUI64)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_EUI64) == (27), "ARPHRD_EUI64 != 27");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_EUI64 27
#endif
#if defined(ARPHRD_INFINIBAND) || (defined(HAVE_DECL_ARPHRD_INFINIBAND) && HAVE_DECL_ARPHRD_INFINIBAND)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_INFINIBAND) == (32), "ARPHRD_INFINIBAND != 32");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_INFINIBAND 32
#endif
#if defined(ARPHRD_SLIP) || (defined(HAVE_DECL_ARPHRD_SLIP) && HAVE_DECL_ARPHRD_SLIP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_SLIP) == (256), "ARPHRD_SLIP != 256");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_SLIP 256
#endif
#if defined(ARPHRD_CSLIP) || (defined(HAVE_DECL_ARPHRD_CSLIP) && HAVE_DECL_ARPHRD_CSLIP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_CSLIP) == (257), "ARPHRD_CSLIP != 257");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_CSLIP 257
#endif
#if defined(ARPHRD_SLIP6) || (defined(HAVE_DECL_ARPHRD_SLIP6) && HAVE_DECL_ARPHRD_SLIP6)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_SLIP6) == (258), "ARPHRD_SLIP6 != 258");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_SLIP6 258
#endif
#if defined(ARPHRD_CSLIP6) || (defined(HAVE_DECL_ARPHRD_CSLIP6) && HAVE_DECL_ARPHRD_CSLIP6)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_CSLIP6) == (259), "ARPHRD_CSLIP6 != 259");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_CSLIP6 259
#endif
#if defined(ARPHRD_RSRVD) || (defined(HAVE_DECL_ARPHRD_RSRVD) && HAVE_DECL_ARPHRD_RSRVD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_RSRVD) == (260), "ARPHRD_RSRVD != 260");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_RSRVD 260
#endif
#if defined(ARPHRD_ADAPT) || (defined(HAVE_DECL_ARPHRD_ADAPT) && HAVE_DECL_ARPHRD_ADAPT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_ADAPT) == (264), "ARPHRD_ADAPT != 264");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_ADAPT 264
#endif
#if defined(ARPHRD_ROSE) || (defined(HAVE_DECL_ARPHRD_ROSE) && HAVE_DECL_ARPHRD_ROSE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_ROSE) == (270), "ARPHRD_ROSE != 270");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_ROSE 270
#endif
#if defined(ARPHRD_X25) || (defined(HAVE_DECL_ARPHRD_X25) && HAVE_DECL_ARPHRD_X25)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_X25) == (271), "ARPHRD_X25 != 271");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_X25 271
#endif
#if defined(ARPHRD_HWX25) || (defined(HAVE_DECL_ARPHRD_HWX25) && HAVE_DECL_ARPHRD_HWX25)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_HWX25) == (272), "ARPHRD_HWX25 != 272");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_HWX25 272
#endif
#if defined(ARPHRD_CAN) || (defined(HAVE_DECL_ARPHRD_CAN) && HAVE_DECL_ARPHRD_CAN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_CAN) == (280), "ARPHRD_CAN != 280");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_CAN 280
#endif
#if defined(ARPHRD_PPP) || (defined(HAVE_DECL_ARPHRD_PPP) && HAVE_DECL_ARPHRD_PPP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_PPP) == (512), "ARPHRD_PPP != 512");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_PPP 512
#endif
#if defined(ARPHRD_CISCO) || (defined(HAVE_DECL_ARPHRD_CISCO) && HAVE_DECL_ARPHRD_CISCO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_CISCO) == (513), "ARPHRD_CISCO != 513");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_CISCO 513
#endif
#if defined(ARPHRD_LAPB) || (defined(HAVE_DECL_ARPHRD_LAPB) && HAVE_DECL_ARPHRD_LAPB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_LAPB) == (516), "ARPHRD_LAPB != 516");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_LAPB 516
#endif
#if defined(ARPHRD_DDCMP) || (defined(HAVE_DECL_ARPHRD_DDCMP) && HAVE_DECL_ARPHRD_DDCMP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_DDCMP) == (517), "ARPHRD_DDCMP != 517");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_DDCMP 517
#endif
#if defined(ARPHRD_RAWHDLC) || (defined(HAVE_DECL_ARPHRD_RAWHDLC) && HAVE_DECL_ARPHRD_RAWHDLC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_RAWHDLC) == (518), "ARPHRD_RAWHDLC != 518");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_RAWHDLC 518
#endif
#if defined(ARPHRD_RAWIP) || (defined(HAVE_DECL_ARPHRD_RAWIP) && HAVE_DECL_ARPHRD_RAWIP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_RAWIP) == (519), "ARPHRD_RAWIP != 519");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_RAWIP 519
#endif
#if defined(ARPHRD_TUNNEL) || (defined(HAVE_DECL_ARPHRD_TUNNEL) && HAVE_DECL_ARPHRD_TUNNEL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_TUNNEL) == (768), "ARPHRD_TUNNEL != 768");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_TUNNEL 768
#endif
#if defined(ARPHRD_TUNNEL6) || (defined(HAVE_DECL_ARPHRD_TUNNEL6) && HAVE_DECL_ARPHRD_TUNNEL6)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_TUNNEL6) == (769), "ARPHRD_TUNNEL6 != 769");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_TUNNEL6 769
#endif
#if defined(ARPHRD_FRAD) || (defined(HAVE_DECL_ARPHRD_FRAD) && HAVE_DECL_ARPHRD_FRAD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_FRAD) == (770), "ARPHRD_FRAD != 770");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_FRAD 770
#endif
#if defined(ARPHRD_SKIP) || (defined(HAVE_DECL_ARPHRD_SKIP) && HAVE_DECL_ARPHRD_SKIP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_SKIP) == (771), "ARPHRD_SKIP != 771");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_SKIP 771
#endif
#if defined(ARPHRD_LOOPBACK) || (defined(HAVE_DECL_ARPHRD_LOOPBACK) && HAVE_DECL_ARPHRD_LOOPBACK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_LOOPBACK) == (772), "ARPHRD_LOOPBACK != 772");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_LOOPBACK 772
#endif
#if defined(ARPHRD_LOCALTLK) || (defined(HAVE_DECL_ARPHRD_LOCALTLK) && HAVE_DECL_ARPHRD_LOCALTLK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_LOCALTLK) == (773), "ARPHRD_LOCALTLK != 773");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_LOCALTLK 773
#endif
#if defined(ARPHRD_FDDI) || (defined(HAVE_DECL_ARPHRD_FDDI) && HAVE_DECL_ARPHRD_FDDI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_FDDI) == (774), "ARPHRD_FDDI != 774");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_FDDI 774
#endif
#if defined(ARPHRD_BIF) || (defined(HAVE_DECL_ARPHRD_BIF) && HAVE_DECL_ARPHRD_BIF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_BIF) == (775), "ARPHRD_BIF != 775");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_BIF 775
#endif
#if defined(ARPHRD_SIT) || (defined(HAVE_DECL_ARPHRD_SIT) && HAVE_DECL_ARPHRD_SIT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_SIT) == (776), "ARPHRD_SIT != 776");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_SIT 776
#endif
#if defined(ARPHRD_IPDDP) || (defined(HAVE_DECL_ARPHRD_IPDDP) && HAVE_DECL_ARPHRD_IPDDP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IPDDP) == (777), "ARPHRD_IPDDP != 777");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IPDDP 777
#endif
#if defined(ARPHRD_IPGRE) || (defined(HAVE_DECL_ARPHRD_IPGRE) && HAVE_DECL_ARPHRD_IPGRE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IPGRE) == (778), "ARPHRD_IPGRE != 778");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IPGRE 778
#endif
#if defined(ARPHRD_PIMREG) || (defined(HAVE_DECL_ARPHRD_PIMREG) && HAVE_DECL_ARPHRD_PIMREG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_PIMREG) == (779), "ARPHRD_PIMREG != 779");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_PIMREG 779
#endif
#if defined(ARPHRD_HIPPI) || (defined(HAVE_DECL_ARPHRD_HIPPI) && HAVE_DECL_ARPHRD_HIPPI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_HIPPI) == (780), "ARPHRD_HIPPI != 780");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_HIPPI 780
#endif
#if defined(ARPHRD_ASH) || (defined(HAVE_DECL_ARPHRD_ASH) && HAVE_DECL_ARPHRD_ASH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_ASH) == (781), "ARPHRD_ASH != 781");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_ASH 781
#endif
#if defined(ARPHRD_ECONET) || (defined(HAVE_DECL_ARPHRD_ECONET) && HAVE_DECL_ARPHRD_ECONET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_ECONET) == (782), "ARPHRD_ECONET != 782");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_ECONET 782
#endif
#if defined(ARPHRD_IRDA) || (defined(HAVE_DECL_ARPHRD_IRDA) && HAVE_DECL_ARPHRD_IRDA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IRDA) == (783), "ARPHRD_IRDA != 783");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IRDA 783
#endif
#if defined(ARPHRD_FCPP) || (defined(HAVE_DECL_ARPHRD_FCPP) && HAVE_DECL_ARPHRD_FCPP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_FCPP) == (784), "ARPHRD_FCPP != 784");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_FCPP 784
#endif
#if defined(ARPHRD_FCAL) || (defined(HAVE_DECL_ARPHRD_FCAL) && HAVE_DECL_ARPHRD_FCAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_FCAL) == (785), "ARPHRD_FCAL != 785");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_FCAL 785
#endif
#if defined(ARPHRD_FCPL) || (defined(HAVE_DECL_ARPHRD_FCPL) && HAVE_DECL_ARPHRD_FCPL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_FCPL) == (786), "ARPHRD_FCPL != 786");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_FCPL 786
#endif
#if defined(ARPHRD_FCFABRIC) || (defined(HAVE_DECL_ARPHRD_FCFABRIC) && HAVE_DECL_ARPHRD_FCFABRIC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_FCFABRIC) == (787), "ARPHRD_FCFABRIC != 787");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_FCFABRIC 787
#endif
#if defined(ARPHRD_IEEE802_TR) || (defined(HAVE_DECL_ARPHRD_IEEE802_TR) && HAVE_DECL_ARPHRD_IEEE802_TR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IEEE802_TR) == (800), "ARPHRD_IEEE802_TR != 800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IEEE802_TR 800
#endif
#if defined(ARPHRD_IEEE80211) || (defined(HAVE_DECL_ARPHRD_IEEE80211) && HAVE_DECL_ARPHRD_IEEE80211)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IEEE80211) == (801), "ARPHRD_IEEE80211 != 801");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IEEE80211 801
#endif
#if defined(ARPHRD_IEEE80211_PRISM) || (defined(HAVE_DECL_ARPHRD_IEEE80211_PRISM) && HAVE_DECL_ARPHRD_IEEE80211_PRISM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IEEE80211_PRISM) == (802), "ARPHRD_IEEE80211_PRISM != 802");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IEEE80211_PRISM 802
#endif
#if defined(ARPHRD_IEEE80211_RADIOTAP) || (defined(HAVE_DECL_ARPHRD_IEEE80211_RADIOTAP) && HAVE_DECL_ARPHRD_IEEE80211_RADIOTAP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IEEE80211_RADIOTAP) == (803), "ARPHRD_IEEE80211_RADIOTAP != 803");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IEEE80211_RADIOTAP 803
#endif
#if defined(ARPHRD_IEEE802154) || (defined(HAVE_DECL_ARPHRD_IEEE802154) && HAVE_DECL_ARPHRD_IEEE802154)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IEEE802154) == (804), "ARPHRD_IEEE802154 != 804");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IEEE802154 804
#endif
#if defined(ARPHRD_IEEE802154_MONITOR) || (defined(HAVE_DECL_ARPHRD_IEEE802154_MONITOR) && HAVE_DECL_ARPHRD_IEEE802154_MONITOR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IEEE802154_MONITOR) == (805), "ARPHRD_IEEE802154_MONITOR != 805");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IEEE802154_MONITOR 805
#endif
#if defined(ARPHRD_PHONET) || (defined(HAVE_DECL_ARPHRD_PHONET) && HAVE_DECL_ARPHRD_PHONET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_PHONET) == (820), "ARPHRD_PHONET != 820");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_PHONET 820
#endif
#if defined(ARPHRD_PHONET_PIPE) || (defined(HAVE_DECL_ARPHRD_PHONET_PIPE) && HAVE_DECL_ARPHRD_PHONET_PIPE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_PHONET_PIPE) == (821), "ARPHRD_PHONET_PIPE != 821");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_PHONET_PIPE 821
#endif
#if defined(ARPHRD_CAIF) || (defined(HAVE_DECL_ARPHRD_CAIF) && HAVE_DECL_ARPHRD_CAIF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_CAIF) == (822), "ARPHRD_CAIF != 822");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_CAIF 822
#endif
#if defined(ARPHRD_IP6GRE) || (defined(HAVE_DECL_ARPHRD_IP6GRE) && HAVE_DECL_ARPHRD_IP6GRE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_IP6GRE) == (823), "ARPHRD_IP6GRE != 823");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_IP6GRE 823
#endif
#if defined(ARPHRD_NETLINK) || (defined(HAVE_DECL_ARPHRD_NETLINK) && HAVE_DECL_ARPHRD_NETLINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_NETLINK) == (824), "ARPHRD_NETLINK != 824");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_NETLINK 824
#endif
#if defined(ARPHRD_6LOWPAN) || (defined(HAVE_DECL_ARPHRD_6LOWPAN) && HAVE_DECL_ARPHRD_6LOWPAN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_6LOWPAN) == (825), "ARPHRD_6LOWPAN != 825");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_6LOWPAN 825
#endif
#if defined(ARPHRD_VSOCKMON) || (defined(HAVE_DECL_ARPHRD_VSOCKMON) && HAVE_DECL_ARPHRD_VSOCKMON)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_VSOCKMON) == (826), "ARPHRD_VSOCKMON != 826");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_VSOCKMON 826
#endif
#if defined(ARPHRD_NONE) || (defined(HAVE_DECL_ARPHRD_NONE) && HAVE_DECL_ARPHRD_NONE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_NONE) == (0xFFFE), "ARPHRD_NONE != 0xFFFE");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_NONE 0xFFFE
#endif
#if defined(ARPHRD_VOID) || (defined(HAVE_DECL_ARPHRD_VOID) && HAVE_DECL_ARPHRD_VOID)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ARPHRD_VOID) == (0xFFFF), "ARPHRD_VOID != 0xFFFF");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ARPHRD_VOID 0xFFFF
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat arp_hardware_types[] = {

 XLAT(ARPHRD_NETROM),
 XLAT(ARPHRD_ETHER),
 XLAT(ARPHRD_EETHER),
 XLAT(ARPHRD_AX25),
 XLAT(ARPHRD_PRONET),
 XLAT(ARPHRD_CHAOS),
 XLAT(ARPHRD_IEEE802),
 XLAT(ARPHRD_ARCNET),
 XLAT(ARPHRD_APPLETLK),
 XLAT(ARPHRD_DLCI),
 XLAT(ARPHRD_ATM),
 XLAT(ARPHRD_METRICOM),
 XLAT(ARPHRD_IEEE1394),
 XLAT(ARPHRD_EUI64),
 XLAT(ARPHRD_INFINIBAND),
 XLAT(ARPHRD_SLIP),
 XLAT(ARPHRD_CSLIP),
 XLAT(ARPHRD_SLIP6),
 XLAT(ARPHRD_CSLIP6),
 XLAT(ARPHRD_RSRVD),
 XLAT(ARPHRD_ADAPT),
 XLAT(ARPHRD_ROSE),
 XLAT(ARPHRD_X25),
 XLAT(ARPHRD_HWX25),
 XLAT(ARPHRD_CAN),
 XLAT(ARPHRD_PPP),
 XLAT(ARPHRD_CISCO),
 XLAT(ARPHRD_LAPB),
 XLAT(ARPHRD_DDCMP),
 XLAT(ARPHRD_RAWHDLC),
 XLAT(ARPHRD_RAWIP),
 XLAT(ARPHRD_TUNNEL),
 XLAT(ARPHRD_TUNNEL6),
 XLAT(ARPHRD_FRAD),
 XLAT(ARPHRD_SKIP),
 XLAT(ARPHRD_LOOPBACK),
 XLAT(ARPHRD_LOCALTLK),
 XLAT(ARPHRD_FDDI),
 XLAT(ARPHRD_BIF),
 XLAT(ARPHRD_SIT),
 XLAT(ARPHRD_IPDDP),
 XLAT(ARPHRD_IPGRE),
 XLAT(ARPHRD_PIMREG),
 XLAT(ARPHRD_HIPPI),
 XLAT(ARPHRD_ASH),
 XLAT(ARPHRD_ECONET),
 XLAT(ARPHRD_IRDA),
 XLAT(ARPHRD_FCPP),
 XLAT(ARPHRD_FCAL),
 XLAT(ARPHRD_FCPL),
 XLAT(ARPHRD_FCFABRIC),
 XLAT(ARPHRD_IEEE802_TR),
 XLAT(ARPHRD_IEEE80211),
 XLAT(ARPHRD_IEEE80211_PRISM),
 XLAT(ARPHRD_IEEE80211_RADIOTAP),
 XLAT(ARPHRD_IEEE802154),
 XLAT(ARPHRD_IEEE802154_MONITOR),
 XLAT(ARPHRD_PHONET),
 XLAT(ARPHRD_PHONET_PIPE),
 XLAT(ARPHRD_CAIF),
 XLAT(ARPHRD_IP6GRE),
 XLAT(ARPHRD_NETLINK),
 XLAT(ARPHRD_6LOWPAN),
 XLAT(ARPHRD_VSOCKMON),
 XLAT(ARPHRD_NONE),
 XLAT(ARPHRD_VOID),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
