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

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

#if defined(ETH_P_802_3) || (defined(HAVE_DECL_ETH_P_802_3) && HAVE_DECL_ETH_P_802_3)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_802_3) == (0x0001), "ETH_P_802_3 != 0x0001");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_802_3 0x0001
#endif
#if defined(ETH_P_AX25) || (defined(HAVE_DECL_ETH_P_AX25) && HAVE_DECL_ETH_P_AX25)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_AX25) == (0x0002), "ETH_P_AX25 != 0x0002");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_AX25 0x0002
#endif
#if defined(ETH_P_ALL) || (defined(HAVE_DECL_ETH_P_ALL) && HAVE_DECL_ETH_P_ALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ALL) == (0x0003), "ETH_P_ALL != 0x0003");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ALL 0x0003
#endif
#if defined(ETH_P_802_2) || (defined(HAVE_DECL_ETH_P_802_2) && HAVE_DECL_ETH_P_802_2)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_802_2) == (0x0004), "ETH_P_802_2 != 0x0004");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_802_2 0x0004
#endif
#if defined(ETH_P_SNAP) || (defined(HAVE_DECL_ETH_P_SNAP) && HAVE_DECL_ETH_P_SNAP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_SNAP) == (0x0005), "ETH_P_SNAP != 0x0005");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_SNAP 0x0005
#endif
#if defined(ETH_P_DDCMP) || (defined(HAVE_DECL_ETH_P_DDCMP) && HAVE_DECL_ETH_P_DDCMP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_DDCMP) == (0x0006), "ETH_P_DDCMP != 0x0006");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_DDCMP 0x0006
#endif
#if defined(ETH_P_WAN_PPP) || (defined(HAVE_DECL_ETH_P_WAN_PPP) && HAVE_DECL_ETH_P_WAN_PPP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_WAN_PPP) == (0x0007), "ETH_P_WAN_PPP != 0x0007");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_WAN_PPP 0x0007
#endif
#if defined(ETH_P_PPP_MP) || (defined(HAVE_DECL_ETH_P_PPP_MP) && HAVE_DECL_ETH_P_PPP_MP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PPP_MP) == (0x0008), "ETH_P_PPP_MP != 0x0008");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PPP_MP 0x0008
#endif
#if defined(ETH_P_LOCALTALK) || (defined(HAVE_DECL_ETH_P_LOCALTALK) && HAVE_DECL_ETH_P_LOCALTALK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_LOCALTALK) == (0x0009), "ETH_P_LOCALTALK != 0x0009");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_LOCALTALK 0x0009
#endif
#if defined(ETH_P_CAN) || (defined(HAVE_DECL_ETH_P_CAN) && HAVE_DECL_ETH_P_CAN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_CAN) == (0x000C), "ETH_P_CAN != 0x000C");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_CAN 0x000C
#endif
#if defined(ETH_P_CANFD) || (defined(HAVE_DECL_ETH_P_CANFD) && HAVE_DECL_ETH_P_CANFD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_CANFD) == (0x000D), "ETH_P_CANFD != 0x000D");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_CANFD 0x000D
#endif
#if defined(ETH_P_PPPTALK) || (defined(HAVE_DECL_ETH_P_PPPTALK) && HAVE_DECL_ETH_P_PPPTALK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PPPTALK) == (0x0010), "ETH_P_PPPTALK != 0x0010");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PPPTALK 0x0010
#endif
#if defined(ETH_P_TR_802_2) || (defined(HAVE_DECL_ETH_P_TR_802_2) && HAVE_DECL_ETH_P_TR_802_2)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_TR_802_2) == (0x0011), "ETH_P_TR_802_2 != 0x0011");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_TR_802_2 0x0011
#endif
#if defined(ETH_P_MOBITEX) || (defined(HAVE_DECL_ETH_P_MOBITEX) && HAVE_DECL_ETH_P_MOBITEX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_MOBITEX) == (0x0015), "ETH_P_MOBITEX != 0x0015");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_MOBITEX 0x0015
#endif
#if defined(ETH_P_CONTROL) || (defined(HAVE_DECL_ETH_P_CONTROL) && HAVE_DECL_ETH_P_CONTROL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_CONTROL) == (0x0016), "ETH_P_CONTROL != 0x0016");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_CONTROL 0x0016
#endif
#if defined(ETH_P_IRDA) || (defined(HAVE_DECL_ETH_P_IRDA) && HAVE_DECL_ETH_P_IRDA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IRDA) == (0x0017), "ETH_P_IRDA != 0x0017");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IRDA 0x0017
#endif
#if defined(ETH_P_ECONET) || (defined(HAVE_DECL_ETH_P_ECONET) && HAVE_DECL_ETH_P_ECONET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ECONET) == (0x0018), "ETH_P_ECONET != 0x0018");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ECONET 0x0018
#endif
#if defined(ETH_P_HDLC) || (defined(HAVE_DECL_ETH_P_HDLC) && HAVE_DECL_ETH_P_HDLC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_HDLC) == (0x0019), "ETH_P_HDLC != 0x0019");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_HDLC 0x0019
#endif
#if defined(ETH_P_ARCNET) || (defined(HAVE_DECL_ETH_P_ARCNET) && HAVE_DECL_ETH_P_ARCNET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ARCNET) == (0x001A), "ETH_P_ARCNET != 0x001A");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ARCNET 0x001A
#endif
#if defined(ETH_P_DSA) || (defined(HAVE_DECL_ETH_P_DSA) && HAVE_DECL_ETH_P_DSA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_DSA) == (0x001B), "ETH_P_DSA != 0x001B");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_DSA 0x001B
#endif
#if defined(ETH_P_TRAILER) || (defined(HAVE_DECL_ETH_P_TRAILER) && HAVE_DECL_ETH_P_TRAILER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_TRAILER) == (0x001C), "ETH_P_TRAILER != 0x001C");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_TRAILER 0x001C
#endif
#if defined(ETH_P_LOOP) || (defined(HAVE_DECL_ETH_P_LOOP) && HAVE_DECL_ETH_P_LOOP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_LOOP) == (0x0060), "ETH_P_LOOP != 0x0060");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_LOOP 0x0060
#endif
#if defined(ETH_P_PHONET) || (defined(HAVE_DECL_ETH_P_PHONET) && HAVE_DECL_ETH_P_PHONET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PHONET) == (0x00F5), "ETH_P_PHONET != 0x00F5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PHONET 0x00F5
#endif
#if defined(ETH_P_IEEE802154) || (defined(HAVE_DECL_ETH_P_IEEE802154) && HAVE_DECL_ETH_P_IEEE802154)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IEEE802154) == (0x00F6), "ETH_P_IEEE802154 != 0x00F6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IEEE802154 0x00F6
#endif
#if defined(ETH_P_CAIF) || (defined(HAVE_DECL_ETH_P_CAIF) && HAVE_DECL_ETH_P_CAIF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_CAIF) == (0x00F7), "ETH_P_CAIF != 0x00F7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_CAIF 0x00F7
#endif
#if defined(ETH_P_XDSA) || (defined(HAVE_DECL_ETH_P_XDSA) && HAVE_DECL_ETH_P_XDSA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_XDSA) == (0x00F8), "ETH_P_XDSA != 0x00F8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_XDSA 0x00F8
#endif
#if defined(ETH_P_MAP) || (defined(HAVE_DECL_ETH_P_MAP) && HAVE_DECL_ETH_P_MAP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_MAP) == (0x00F9), "ETH_P_MAP != 0x00F9");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_MAP 0x00F9
#endif
#if defined(ETH_P_PUP) || (defined(HAVE_DECL_ETH_P_PUP) && HAVE_DECL_ETH_P_PUP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PUP) == (0x0200), "ETH_P_PUP != 0x0200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PUP 0x0200
#endif
#if defined(ETH_P_PUPAT) || (defined(HAVE_DECL_ETH_P_PUPAT) && HAVE_DECL_ETH_P_PUPAT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PUPAT) == (0x0201), "ETH_P_PUPAT != 0x0201");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PUPAT 0x0201
#endif
#if defined(ETH_P_802_3_MIN) || (defined(HAVE_DECL_ETH_P_802_3_MIN) && HAVE_DECL_ETH_P_802_3_MIN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_802_3_MIN) == (0x0600), "ETH_P_802_3_MIN != 0x0600");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_802_3_MIN 0x0600
#endif
#if defined(ETH_P_IP) || (defined(HAVE_DECL_ETH_P_IP) && HAVE_DECL_ETH_P_IP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IP) == (0x0800), "ETH_P_IP != 0x0800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IP 0x0800
#endif
#if defined(ETH_P_X25) || (defined(HAVE_DECL_ETH_P_X25) && HAVE_DECL_ETH_P_X25)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_X25) == (0x0805), "ETH_P_X25 != 0x0805");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_X25 0x0805
#endif
#if defined(ETH_P_ARP) || (defined(HAVE_DECL_ETH_P_ARP) && HAVE_DECL_ETH_P_ARP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ARP) == (0x0806), "ETH_P_ARP != 0x0806");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ARP 0x0806
#endif
#if defined(ETH_P_BPQ) || (defined(HAVE_DECL_ETH_P_BPQ) && HAVE_DECL_ETH_P_BPQ)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_BPQ) == (0x08FF), "ETH_P_BPQ != 0x08FF");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_BPQ 0x08FF
#endif
#if defined(ETH_P_IEEEPUP) || (defined(HAVE_DECL_ETH_P_IEEEPUP) && HAVE_DECL_ETH_P_IEEEPUP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IEEEPUP) == (0x0a00), "ETH_P_IEEEPUP != 0x0a00");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IEEEPUP 0x0a00
#endif
#if defined(ETH_P_IEEEPUPAT) || (defined(HAVE_DECL_ETH_P_IEEEPUPAT) && HAVE_DECL_ETH_P_IEEEPUPAT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IEEEPUPAT) == (0x0a01), "ETH_P_IEEEPUPAT != 0x0a01");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IEEEPUPAT 0x0a01
#endif
#if defined(ETH_P_ERSPAN2) || (defined(HAVE_DECL_ETH_P_ERSPAN2) && HAVE_DECL_ETH_P_ERSPAN2)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ERSPAN2) == (0x22EB), "ETH_P_ERSPAN2 != 0x22EB");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ERSPAN2 0x22EB
#endif
#if defined(ETH_P_TSN) || (defined(HAVE_DECL_ETH_P_TSN) && HAVE_DECL_ETH_P_TSN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_TSN) == (0x22F0), "ETH_P_TSN != 0x22F0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_TSN 0x22F0
#endif
#if defined(ETH_P_BATMAN) || (defined(HAVE_DECL_ETH_P_BATMAN) && HAVE_DECL_ETH_P_BATMAN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_BATMAN) == (0x4305), "ETH_P_BATMAN != 0x4305");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_BATMAN 0x4305
#endif
#if defined(ETH_P_DEC) || (defined(HAVE_DECL_ETH_P_DEC) && HAVE_DECL_ETH_P_DEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_DEC) == (0x6000), "ETH_P_DEC != 0x6000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_DEC 0x6000
#endif
#if defined(ETH_P_DNA_DL) || (defined(HAVE_DECL_ETH_P_DNA_DL) && HAVE_DECL_ETH_P_DNA_DL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_DNA_DL) == (0x6001), "ETH_P_DNA_DL != 0x6001");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_DNA_DL 0x6001
#endif
#if defined(ETH_P_DNA_RC) || (defined(HAVE_DECL_ETH_P_DNA_RC) && HAVE_DECL_ETH_P_DNA_RC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_DNA_RC) == (0x6002), "ETH_P_DNA_RC != 0x6002");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_DNA_RC 0x6002
#endif
#if defined(ETH_P_DNA_RT) || (defined(HAVE_DECL_ETH_P_DNA_RT) && HAVE_DECL_ETH_P_DNA_RT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_DNA_RT) == (0x6003), "ETH_P_DNA_RT != 0x6003");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_DNA_RT 0x6003
#endif
#if defined(ETH_P_LAT) || (defined(HAVE_DECL_ETH_P_LAT) && HAVE_DECL_ETH_P_LAT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_LAT) == (0x6004), "ETH_P_LAT != 0x6004");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_LAT 0x6004
#endif
#if defined(ETH_P_DIAG) || (defined(HAVE_DECL_ETH_P_DIAG) && HAVE_DECL_ETH_P_DIAG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_DIAG) == (0x6005), "ETH_P_DIAG != 0x6005");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_DIAG 0x6005
#endif
#if defined(ETH_P_CUST) || (defined(HAVE_DECL_ETH_P_CUST) && HAVE_DECL_ETH_P_CUST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_CUST) == (0x6006), "ETH_P_CUST != 0x6006");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_CUST 0x6006
#endif
#if defined(ETH_P_SCA) || (defined(HAVE_DECL_ETH_P_SCA) && HAVE_DECL_ETH_P_SCA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_SCA) == (0x6007), "ETH_P_SCA != 0x6007");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_SCA 0x6007
#endif
#if defined(ETH_P_TEB) || (defined(HAVE_DECL_ETH_P_TEB) && HAVE_DECL_ETH_P_TEB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_TEB) == (0x6558), "ETH_P_TEB != 0x6558");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_TEB 0x6558
#endif
#if defined(ETH_P_RARP) || (defined(HAVE_DECL_ETH_P_RARP) && HAVE_DECL_ETH_P_RARP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_RARP) == (0x8035), "ETH_P_RARP != 0x8035");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_RARP 0x8035
#endif
#if defined(ETH_P_ATALK) || (defined(HAVE_DECL_ETH_P_ATALK) && HAVE_DECL_ETH_P_ATALK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ATALK) == (0x809B), "ETH_P_ATALK != 0x809B");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ATALK 0x809B
#endif
#if defined(ETH_P_AARP) || (defined(HAVE_DECL_ETH_P_AARP) && HAVE_DECL_ETH_P_AARP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_AARP) == (0x80F3), "ETH_P_AARP != 0x80F3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_AARP 0x80F3
#endif
#if defined(ETH_P_8021Q) || (defined(HAVE_DECL_ETH_P_8021Q) && HAVE_DECL_ETH_P_8021Q)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_8021Q) == (0x8100), "ETH_P_8021Q != 0x8100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_8021Q 0x8100
#endif
#if defined(ETH_P_IPX) || (defined(HAVE_DECL_ETH_P_IPX) && HAVE_DECL_ETH_P_IPX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IPX) == (0x8137), "ETH_P_IPX != 0x8137");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IPX 0x8137
#endif
#if defined(ETH_P_IPV6) || (defined(HAVE_DECL_ETH_P_IPV6) && HAVE_DECL_ETH_P_IPV6)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IPV6) == (0x86DD), "ETH_P_IPV6 != 0x86DD");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IPV6 0x86DD
#endif
#if defined(ETH_P_PAUSE) || (defined(HAVE_DECL_ETH_P_PAUSE) && HAVE_DECL_ETH_P_PAUSE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PAUSE) == (0x8808), "ETH_P_PAUSE != 0x8808");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PAUSE 0x8808
#endif
#if defined(ETH_P_SLOW) || (defined(HAVE_DECL_ETH_P_SLOW) && HAVE_DECL_ETH_P_SLOW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_SLOW) == (0x8809), "ETH_P_SLOW != 0x8809");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_SLOW 0x8809
#endif
#if defined(ETH_P_WCCP) || (defined(HAVE_DECL_ETH_P_WCCP) && HAVE_DECL_ETH_P_WCCP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_WCCP) == (0x883E), "ETH_P_WCCP != 0x883E");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_WCCP 0x883E
#endif
#if defined(ETH_P_MPLS_UC) || (defined(HAVE_DECL_ETH_P_MPLS_UC) && HAVE_DECL_ETH_P_MPLS_UC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_MPLS_UC) == (0x8847), "ETH_P_MPLS_UC != 0x8847");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_MPLS_UC 0x8847
#endif
#if defined(ETH_P_MPLS_MC) || (defined(HAVE_DECL_ETH_P_MPLS_MC) && HAVE_DECL_ETH_P_MPLS_MC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_MPLS_MC) == (0x8848), "ETH_P_MPLS_MC != 0x8848");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_MPLS_MC 0x8848
#endif
#if defined(ETH_P_ATMMPOA) || (defined(HAVE_DECL_ETH_P_ATMMPOA) && HAVE_DECL_ETH_P_ATMMPOA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ATMMPOA) == (0x884c), "ETH_P_ATMMPOA != 0x884c");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ATMMPOA 0x884c
#endif
#if defined(ETH_P_PPP_DISC) || (defined(HAVE_DECL_ETH_P_PPP_DISC) && HAVE_DECL_ETH_P_PPP_DISC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PPP_DISC) == (0x8863), "ETH_P_PPP_DISC != 0x8863");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PPP_DISC 0x8863
#endif
#if defined(ETH_P_PPP_SES) || (defined(HAVE_DECL_ETH_P_PPP_SES) && HAVE_DECL_ETH_P_PPP_SES)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PPP_SES) == (0x8864), "ETH_P_PPP_SES != 0x8864");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PPP_SES 0x8864
#endif
#if defined(ETH_P_LINK_CTL) || (defined(HAVE_DECL_ETH_P_LINK_CTL) && HAVE_DECL_ETH_P_LINK_CTL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_LINK_CTL) == (0x886c), "ETH_P_LINK_CTL != 0x886c");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_LINK_CTL 0x886c
#endif
#if defined(ETH_P_ATMFATE) || (defined(HAVE_DECL_ETH_P_ATMFATE) && HAVE_DECL_ETH_P_ATMFATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ATMFATE) == (0x8884), "ETH_P_ATMFATE != 0x8884");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ATMFATE 0x8884
#endif
#if defined(ETH_P_PAE) || (defined(HAVE_DECL_ETH_P_PAE) && HAVE_DECL_ETH_P_PAE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PAE) == (0x888E), "ETH_P_PAE != 0x888E");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PAE 0x888E
#endif
#if defined(ETH_P_AOE) || (defined(HAVE_DECL_ETH_P_AOE) && HAVE_DECL_ETH_P_AOE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_AOE) == (0x88A2), "ETH_P_AOE != 0x88A2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_AOE 0x88A2
#endif
#if defined(ETH_P_8021AD) || (defined(HAVE_DECL_ETH_P_8021AD) && HAVE_DECL_ETH_P_8021AD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_8021AD) == (0x88A8), "ETH_P_8021AD != 0x88A8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_8021AD 0x88A8
#endif
#if defined(ETH_P_802_EX1) || (defined(HAVE_DECL_ETH_P_802_EX1) && HAVE_DECL_ETH_P_802_EX1)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_802_EX1) == (0x88B5), "ETH_P_802_EX1 != 0x88B5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_802_EX1 0x88B5
#endif
#if defined(ETH_P_ERSPAN) || (defined(HAVE_DECL_ETH_P_ERSPAN) && HAVE_DECL_ETH_P_ERSPAN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_ERSPAN) == (0x88BE), "ETH_P_ERSPAN != 0x88BE");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_ERSPAN 0x88BE
#endif
#if defined(ETH_P_PREAUTH) || (defined(HAVE_DECL_ETH_P_PREAUTH) && HAVE_DECL_ETH_P_PREAUTH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PREAUTH) == (0x88C7), "ETH_P_PREAUTH != 0x88C7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PREAUTH 0x88C7
#endif
#if defined(ETH_P_TIPC) || (defined(HAVE_DECL_ETH_P_TIPC) && HAVE_DECL_ETH_P_TIPC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_TIPC) == (0x88CA), "ETH_P_TIPC != 0x88CA");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_TIPC 0x88CA
#endif
#if defined(ETH_P_MACSEC) || (defined(HAVE_DECL_ETH_P_MACSEC) && HAVE_DECL_ETH_P_MACSEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_MACSEC) == (0x88E5), "ETH_P_MACSEC != 0x88E5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_MACSEC 0x88E5
#endif
#if defined(ETH_P_8021AH) || (defined(HAVE_DECL_ETH_P_8021AH) && HAVE_DECL_ETH_P_8021AH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_8021AH) == (0x88E7), "ETH_P_8021AH != 0x88E7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_8021AH 0x88E7
#endif
#if defined(ETH_P_MVRP) || (defined(HAVE_DECL_ETH_P_MVRP) && HAVE_DECL_ETH_P_MVRP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_MVRP) == (0x88F5), "ETH_P_MVRP != 0x88F5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_MVRP 0x88F5
#endif
#if defined(ETH_P_1588) || (defined(HAVE_DECL_ETH_P_1588) && HAVE_DECL_ETH_P_1588)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_1588) == (0x88F7), "ETH_P_1588 != 0x88F7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_1588 0x88F7
#endif
#if defined(ETH_P_NCSI) || (defined(HAVE_DECL_ETH_P_NCSI) && HAVE_DECL_ETH_P_NCSI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_NCSI) == (0x88F8), "ETH_P_NCSI != 0x88F8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_NCSI 0x88F8
#endif
#if defined(ETH_P_PRP) || (defined(HAVE_DECL_ETH_P_PRP) && HAVE_DECL_ETH_P_PRP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_PRP) == (0x88FB), "ETH_P_PRP != 0x88FB");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_PRP 0x88FB
#endif
#if defined(ETH_P_FCOE) || (defined(HAVE_DECL_ETH_P_FCOE) && HAVE_DECL_ETH_P_FCOE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_FCOE) == (0x8906), "ETH_P_FCOE != 0x8906");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_FCOE 0x8906
#endif
#if defined(ETH_P_TDLS) || (defined(HAVE_DECL_ETH_P_TDLS) && HAVE_DECL_ETH_P_TDLS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_TDLS) == (0x890D), "ETH_P_TDLS != 0x890D");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_TDLS 0x890D
#endif
#if defined(ETH_P_FIP) || (defined(HAVE_DECL_ETH_P_FIP) && HAVE_DECL_ETH_P_FIP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_FIP) == (0x8914), "ETH_P_FIP != 0x8914");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_FIP 0x8914
#endif
#if defined(ETH_P_IBOE) || (defined(HAVE_DECL_ETH_P_IBOE) && HAVE_DECL_ETH_P_IBOE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IBOE) == (0x8915), "ETH_P_IBOE != 0x8915");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IBOE 0x8915
#endif
#if defined(ETH_P_80221) || (defined(HAVE_DECL_ETH_P_80221) && HAVE_DECL_ETH_P_80221)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_80221) == (0x8917), "ETH_P_80221 != 0x8917");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_80221 0x8917
#endif
#if defined(ETH_P_HSR) || (defined(HAVE_DECL_ETH_P_HSR) && HAVE_DECL_ETH_P_HSR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_HSR) == (0x892F), "ETH_P_HSR != 0x892F");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_HSR 0x892F
#endif
#if defined(ETH_P_NSH) || (defined(HAVE_DECL_ETH_P_NSH) && HAVE_DECL_ETH_P_NSH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_NSH) == (0x894F), "ETH_P_NSH != 0x894F");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_NSH 0x894F
#endif
#if defined(ETH_P_LOOPBACK) || (defined(HAVE_DECL_ETH_P_LOOPBACK) && HAVE_DECL_ETH_P_LOOPBACK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_LOOPBACK) == (0x9000), "ETH_P_LOOPBACK != 0x9000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_LOOPBACK 0x9000
#endif
#if defined(ETH_P_QINQ1) || (defined(HAVE_DECL_ETH_P_QINQ1) && HAVE_DECL_ETH_P_QINQ1)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_QINQ1) == (0x9100), "ETH_P_QINQ1 != 0x9100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_QINQ1 0x9100
#endif
#if defined(ETH_P_QINQ2) || (defined(HAVE_DECL_ETH_P_QINQ2) && HAVE_DECL_ETH_P_QINQ2)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_QINQ2) == (0x9200), "ETH_P_QINQ2 != 0x9200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_QINQ2 0x9200
#endif
#if defined(ETH_P_QINQ3) || (defined(HAVE_DECL_ETH_P_QINQ3) && HAVE_DECL_ETH_P_QINQ3)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_QINQ3) == (0x9300), "ETH_P_QINQ3 != 0x9300");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_QINQ3 0x9300
#endif
#if defined(ETH_P_EDSA) || (defined(HAVE_DECL_ETH_P_EDSA) && HAVE_DECL_ETH_P_EDSA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_EDSA) == (0xDADA), "ETH_P_EDSA != 0xDADA");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_EDSA 0xDADA
#endif
#if defined(ETH_P_IFE) || (defined(HAVE_DECL_ETH_P_IFE) && HAVE_DECL_ETH_P_IFE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_IFE) == (0xED3E), "ETH_P_IFE != 0xED3E");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_IFE 0xED3E
#endif
#if defined(ETH_P_AF_IUCV) || (defined(HAVE_DECL_ETH_P_AF_IUCV) && HAVE_DECL_ETH_P_AF_IUCV)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ETH_P_AF_IUCV) == (0xFBFB), "ETH_P_AF_IUCV != 0xFBFB");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ETH_P_AF_IUCV 0xFBFB
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat ethernet_protocols[] = {

 XLAT(ETH_P_802_3),
 XLAT(ETH_P_AX25),
 XLAT(ETH_P_ALL),
 XLAT(ETH_P_802_2),
 XLAT(ETH_P_SNAP),
 XLAT(ETH_P_DDCMP),
 XLAT(ETH_P_WAN_PPP),
 XLAT(ETH_P_PPP_MP),
 XLAT(ETH_P_LOCALTALK),
 XLAT(ETH_P_CAN),
 XLAT(ETH_P_CANFD),
 XLAT(ETH_P_PPPTALK),
 XLAT(ETH_P_TR_802_2),
 XLAT(ETH_P_MOBITEX),
 XLAT(ETH_P_CONTROL),
 XLAT(ETH_P_IRDA),
 XLAT(ETH_P_ECONET),
 XLAT(ETH_P_HDLC),
 XLAT(ETH_P_ARCNET),
 XLAT(ETH_P_DSA),
 XLAT(ETH_P_TRAILER),
 XLAT(ETH_P_LOOP),
 XLAT(ETH_P_PHONET),
 XLAT(ETH_P_IEEE802154),
 XLAT(ETH_P_CAIF),
 XLAT(ETH_P_XDSA),
 XLAT(ETH_P_MAP),
 XLAT(ETH_P_PUP),
 XLAT(ETH_P_PUPAT),
 XLAT(ETH_P_802_3_MIN),
 XLAT(ETH_P_IP),
 XLAT(ETH_P_X25),
 XLAT(ETH_P_ARP),
 XLAT(ETH_P_BPQ),
 XLAT(ETH_P_IEEEPUP),
 XLAT(ETH_P_IEEEPUPAT),
 XLAT(ETH_P_ERSPAN2),
 XLAT(ETH_P_TSN),
 XLAT(ETH_P_BATMAN),
 XLAT(ETH_P_DEC),
 XLAT(ETH_P_DNA_DL),
 XLAT(ETH_P_DNA_RC),
 XLAT(ETH_P_DNA_RT),
 XLAT(ETH_P_LAT),
 XLAT(ETH_P_DIAG),
 XLAT(ETH_P_CUST),
 XLAT(ETH_P_SCA),
 XLAT(ETH_P_TEB),
 XLAT(ETH_P_RARP),
 XLAT(ETH_P_ATALK),
 XLAT(ETH_P_AARP),
 XLAT(ETH_P_8021Q),
 XLAT(ETH_P_IPX),
 XLAT(ETH_P_IPV6),
 XLAT(ETH_P_PAUSE),
 XLAT(ETH_P_SLOW),
 XLAT(ETH_P_WCCP),
 XLAT(ETH_P_MPLS_UC),
 XLAT(ETH_P_MPLS_MC),
 XLAT(ETH_P_ATMMPOA),
 XLAT(ETH_P_PPP_DISC),
 XLAT(ETH_P_PPP_SES),
 XLAT(ETH_P_LINK_CTL),
 XLAT(ETH_P_ATMFATE),
 XLAT(ETH_P_PAE),
 XLAT(ETH_P_AOE),
 XLAT(ETH_P_8021AD),
 XLAT(ETH_P_802_EX1),
 XLAT(ETH_P_ERSPAN),
 XLAT(ETH_P_PREAUTH),
 XLAT(ETH_P_TIPC),
 XLAT(ETH_P_MACSEC),
 XLAT(ETH_P_8021AH),
 XLAT(ETH_P_MVRP),
 XLAT(ETH_P_1588),
 XLAT(ETH_P_NCSI),
 XLAT(ETH_P_PRP),
 XLAT(ETH_P_FCOE),
 XLAT(ETH_P_TDLS),
 XLAT(ETH_P_FIP),
 XLAT(ETH_P_IBOE),
 XLAT(ETH_P_80221),
 XLAT(ETH_P_HSR),
 XLAT(ETH_P_NSH),
 XLAT(ETH_P_LOOPBACK),
 XLAT(ETH_P_QINQ1),
 XLAT(ETH_P_QINQ2),
 XLAT(ETH_P_QINQ3),
 XLAT(ETH_P_EDSA),
 XLAT(ETH_P_IFE),
 XLAT(ETH_P_AF_IUCV),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
