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

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

#if defined(AX25_P_ROSE) || (defined(HAVE_DECL_AX25_P_ROSE) && HAVE_DECL_AX25_P_ROSE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_ROSE) == (0x01), "AX25_P_ROSE != 0x01");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_ROSE 0x01
#endif
#if defined(AX25_P_VJCOMP) || (defined(HAVE_DECL_AX25_P_VJCOMP) && HAVE_DECL_AX25_P_VJCOMP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_VJCOMP) == (0x06), "AX25_P_VJCOMP != 0x06");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_VJCOMP 0x06
#endif
#if defined(AX25_P_VJUNCOMP) || (defined(HAVE_DECL_AX25_P_VJUNCOMP) && HAVE_DECL_AX25_P_VJUNCOMP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_VJUNCOMP) == (0x07), "AX25_P_VJUNCOMP != 0x07");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_VJUNCOMP 0x07
#endif
#if defined(AX25_P_SEGMENT) || (defined(HAVE_DECL_AX25_P_SEGMENT) && HAVE_DECL_AX25_P_SEGMENT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_SEGMENT) == (0x08), "AX25_P_SEGMENT != 0x08");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_SEGMENT 0x08
#endif
#if defined(AX25_P_TEXNET) || (defined(HAVE_DECL_AX25_P_TEXNET) && HAVE_DECL_AX25_P_TEXNET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_TEXNET) == (0xc3), "AX25_P_TEXNET != 0xc3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_TEXNET 0xc3
#endif
#if defined(AX25_P_LQ) || (defined(HAVE_DECL_AX25_P_LQ) && HAVE_DECL_AX25_P_LQ)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_LQ) == (0xc4), "AX25_P_LQ != 0xc4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_LQ 0xc4
#endif
#if defined(AX25_P_ATALK) || (defined(HAVE_DECL_AX25_P_ATALK) && HAVE_DECL_AX25_P_ATALK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_ATALK) == (0xca), "AX25_P_ATALK != 0xca");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_ATALK 0xca
#endif
#if defined(AX25_P_ATALK_ARP) || (defined(HAVE_DECL_AX25_P_ATALK_ARP) && HAVE_DECL_AX25_P_ATALK_ARP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_ATALK_ARP) == (0xcb), "AX25_P_ATALK_ARP != 0xcb");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_ATALK_ARP 0xcb
#endif
#if defined(AX25_P_IP) || (defined(HAVE_DECL_AX25_P_IP) && HAVE_DECL_AX25_P_IP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_IP) == (0xcc), "AX25_P_IP != 0xcc");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_IP 0xcc
#endif
#if defined(AX25_P_ARP) || (defined(HAVE_DECL_AX25_P_ARP) && HAVE_DECL_AX25_P_ARP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_ARP) == (0xcd), "AX25_P_ARP != 0xcd");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_ARP 0xcd
#endif
#if defined(AX25_P_FLEXNET) || (defined(HAVE_DECL_AX25_P_FLEXNET) && HAVE_DECL_AX25_P_FLEXNET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_FLEXNET) == (0xce), "AX25_P_FLEXNET != 0xce");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_FLEXNET 0xce
#endif
#if defined(AX25_P_NETROM) || (defined(HAVE_DECL_AX25_P_NETROM) && HAVE_DECL_AX25_P_NETROM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_NETROM) == (0xcf), "AX25_P_NETROM != 0xcf");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_NETROM 0xcf
#endif
#if defined(AX25_P_TEXT) || (defined(HAVE_DECL_AX25_P_TEXT) && HAVE_DECL_AX25_P_TEXT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((AX25_P_TEXT) == (0xf0), "AX25_P_TEXT != 0xf0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define AX25_P_TEXT 0xf0
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat ax25_protocols in mpers mode

# else

static
const struct xlat ax25_protocols[] = {


 XLAT(AX25_P_ROSE),
 XLAT(AX25_P_VJCOMP),

 XLAT(AX25_P_VJUNCOMP),

 XLAT(AX25_P_SEGMENT),
 XLAT(AX25_P_TEXNET),
 XLAT(AX25_P_LQ),
 XLAT(AX25_P_ATALK),
 XLAT(AX25_P_ATALK_ARP),
 XLAT(AX25_P_IP),
 XLAT(AX25_P_ARP),
 XLAT(AX25_P_FLEXNET),
 XLAT(AX25_P_NETROM),
 XLAT(AX25_P_TEXT),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
