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

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

#if defined(DCB_CMD_UNDEFINED) || (defined(HAVE_DECL_DCB_CMD_UNDEFINED) && HAVE_DECL_DCB_CMD_UNDEFINED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_UNDEFINED) == (0), "DCB_CMD_UNDEFINED != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_UNDEFINED 0
#endif
#if defined(DCB_CMD_GSTATE) || (defined(HAVE_DECL_DCB_CMD_GSTATE) && HAVE_DECL_DCB_CMD_GSTATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_GSTATE) == (1), "DCB_CMD_GSTATE != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_GSTATE 1
#endif
#if defined(DCB_CMD_SSTATE) || (defined(HAVE_DECL_DCB_CMD_SSTATE) && HAVE_DECL_DCB_CMD_SSTATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_SSTATE) == (2), "DCB_CMD_SSTATE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_SSTATE 2
#endif
#if defined(DCB_CMD_PGTX_GCFG) || (defined(HAVE_DECL_DCB_CMD_PGTX_GCFG) && HAVE_DECL_DCB_CMD_PGTX_GCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_PGTX_GCFG) == (3), "DCB_CMD_PGTX_GCFG != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_PGTX_GCFG 3
#endif
#if defined(DCB_CMD_PGTX_SCFG) || (defined(HAVE_DECL_DCB_CMD_PGTX_SCFG) && HAVE_DECL_DCB_CMD_PGTX_SCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_PGTX_SCFG) == (4), "DCB_CMD_PGTX_SCFG != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_PGTX_SCFG 4
#endif
#if defined(DCB_CMD_PGRX_GCFG) || (defined(HAVE_DECL_DCB_CMD_PGRX_GCFG) && HAVE_DECL_DCB_CMD_PGRX_GCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_PGRX_GCFG) == (5), "DCB_CMD_PGRX_GCFG != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_PGRX_GCFG 5
#endif
#if defined(DCB_CMD_PGRX_SCFG) || (defined(HAVE_DECL_DCB_CMD_PGRX_SCFG) && HAVE_DECL_DCB_CMD_PGRX_SCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_PGRX_SCFG) == (6), "DCB_CMD_PGRX_SCFG != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_PGRX_SCFG 6
#endif
#if defined(DCB_CMD_PFC_GCFG) || (defined(HAVE_DECL_DCB_CMD_PFC_GCFG) && HAVE_DECL_DCB_CMD_PFC_GCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_PFC_GCFG) == (7), "DCB_CMD_PFC_GCFG != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_PFC_GCFG 7
#endif
#if defined(DCB_CMD_PFC_SCFG) || (defined(HAVE_DECL_DCB_CMD_PFC_SCFG) && HAVE_DECL_DCB_CMD_PFC_SCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_PFC_SCFG) == (8), "DCB_CMD_PFC_SCFG != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_PFC_SCFG 8
#endif
#if defined(DCB_CMD_SET_ALL) || (defined(HAVE_DECL_DCB_CMD_SET_ALL) && HAVE_DECL_DCB_CMD_SET_ALL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_SET_ALL) == (9), "DCB_CMD_SET_ALL != 9");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_SET_ALL 9
#endif
#if defined(DCB_CMD_GPERM_HWADDR) || (defined(HAVE_DECL_DCB_CMD_GPERM_HWADDR) && HAVE_DECL_DCB_CMD_GPERM_HWADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_GPERM_HWADDR) == (10), "DCB_CMD_GPERM_HWADDR != 10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_GPERM_HWADDR 10
#endif
#if defined(DCB_CMD_GCAP) || (defined(HAVE_DECL_DCB_CMD_GCAP) && HAVE_DECL_DCB_CMD_GCAP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_GCAP) == (11), "DCB_CMD_GCAP != 11");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_GCAP 11
#endif
#if defined(DCB_CMD_GNUMTCS) || (defined(HAVE_DECL_DCB_CMD_GNUMTCS) && HAVE_DECL_DCB_CMD_GNUMTCS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_GNUMTCS) == (12), "DCB_CMD_GNUMTCS != 12");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_GNUMTCS 12
#endif
#if defined(DCB_CMD_SNUMTCS) || (defined(HAVE_DECL_DCB_CMD_SNUMTCS) && HAVE_DECL_DCB_CMD_SNUMTCS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_SNUMTCS) == (13), "DCB_CMD_SNUMTCS != 13");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_SNUMTCS 13
#endif
#if defined(DCB_CMD_PFC_GSTATE) || (defined(HAVE_DECL_DCB_CMD_PFC_GSTATE) && HAVE_DECL_DCB_CMD_PFC_GSTATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_PFC_GSTATE) == (14), "DCB_CMD_PFC_GSTATE != 14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_PFC_GSTATE 14
#endif
#if defined(DCB_CMD_PFC_SSTATE) || (defined(HAVE_DECL_DCB_CMD_PFC_SSTATE) && HAVE_DECL_DCB_CMD_PFC_SSTATE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_PFC_SSTATE) == (15), "DCB_CMD_PFC_SSTATE != 15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_PFC_SSTATE 15
#endif
#if defined(DCB_CMD_BCN_GCFG) || (defined(HAVE_DECL_DCB_CMD_BCN_GCFG) && HAVE_DECL_DCB_CMD_BCN_GCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_BCN_GCFG) == (16), "DCB_CMD_BCN_GCFG != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_BCN_GCFG 16
#endif
#if defined(DCB_CMD_BCN_SCFG) || (defined(HAVE_DECL_DCB_CMD_BCN_SCFG) && HAVE_DECL_DCB_CMD_BCN_SCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_BCN_SCFG) == (17), "DCB_CMD_BCN_SCFG != 17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_BCN_SCFG 17
#endif
#if defined(DCB_CMD_GAPP) || (defined(HAVE_DECL_DCB_CMD_GAPP) && HAVE_DECL_DCB_CMD_GAPP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_GAPP) == (18), "DCB_CMD_GAPP != 18");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_GAPP 18
#endif
#if defined(DCB_CMD_SAPP) || (defined(HAVE_DECL_DCB_CMD_SAPP) && HAVE_DECL_DCB_CMD_SAPP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_SAPP) == (19), "DCB_CMD_SAPP != 19");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_SAPP 19
#endif
#if defined(DCB_CMD_IEEE_SET) || (defined(HAVE_DECL_DCB_CMD_IEEE_SET) && HAVE_DECL_DCB_CMD_IEEE_SET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_IEEE_SET) == (20), "DCB_CMD_IEEE_SET != 20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_IEEE_SET 20
#endif
#if defined(DCB_CMD_IEEE_GET) || (defined(HAVE_DECL_DCB_CMD_IEEE_GET) && HAVE_DECL_DCB_CMD_IEEE_GET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_IEEE_GET) == (21), "DCB_CMD_IEEE_GET != 21");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_IEEE_GET 21
#endif
#if defined(DCB_CMD_GDCBX) || (defined(HAVE_DECL_DCB_CMD_GDCBX) && HAVE_DECL_DCB_CMD_GDCBX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_GDCBX) == (22), "DCB_CMD_GDCBX != 22");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_GDCBX 22
#endif
#if defined(DCB_CMD_SDCBX) || (defined(HAVE_DECL_DCB_CMD_SDCBX) && HAVE_DECL_DCB_CMD_SDCBX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_SDCBX) == (23), "DCB_CMD_SDCBX != 23");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_SDCBX 23
#endif
#if defined(DCB_CMD_GFEATCFG) || (defined(HAVE_DECL_DCB_CMD_GFEATCFG) && HAVE_DECL_DCB_CMD_GFEATCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_GFEATCFG) == (24), "DCB_CMD_GFEATCFG != 24");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_GFEATCFG 24
#endif
#if defined(DCB_CMD_SFEATCFG) || (defined(HAVE_DECL_DCB_CMD_SFEATCFG) && HAVE_DECL_DCB_CMD_SFEATCFG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_SFEATCFG) == (25), "DCB_CMD_SFEATCFG != 25");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_SFEATCFG 25
#endif
#if defined(DCB_CMD_CEE_GET) || (defined(HAVE_DECL_DCB_CMD_CEE_GET) && HAVE_DECL_DCB_CMD_CEE_GET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_CEE_GET) == (26), "DCB_CMD_CEE_GET != 26");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_CEE_GET 26
#endif
#if defined(DCB_CMD_IEEE_DEL) || (defined(HAVE_DECL_DCB_CMD_IEEE_DEL) && HAVE_DECL_DCB_CMD_IEEE_DEL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((DCB_CMD_IEEE_DEL) == (27), "DCB_CMD_IEEE_DEL != 27");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define DCB_CMD_IEEE_DEL 27
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat dcb_commands in mpers mode

# else

static
const struct xlat dcb_commands[] = {
 XLAT(DCB_CMD_UNDEFINED),
 XLAT(DCB_CMD_GSTATE),
 XLAT(DCB_CMD_SSTATE),
 XLAT(DCB_CMD_PGTX_GCFG),
 XLAT(DCB_CMD_PGTX_SCFG),
 XLAT(DCB_CMD_PGRX_GCFG),
 XLAT(DCB_CMD_PGRX_SCFG),
 XLAT(DCB_CMD_PFC_GCFG),
 XLAT(DCB_CMD_PFC_SCFG),
 XLAT(DCB_CMD_SET_ALL),
 XLAT(DCB_CMD_GPERM_HWADDR),
 XLAT(DCB_CMD_GCAP),
 XLAT(DCB_CMD_GNUMTCS),
 XLAT(DCB_CMD_SNUMTCS),
 XLAT(DCB_CMD_PFC_GSTATE),
 XLAT(DCB_CMD_PFC_SSTATE),
 XLAT(DCB_CMD_BCN_GCFG),
 XLAT(DCB_CMD_BCN_SCFG),
 XLAT(DCB_CMD_GAPP),
 XLAT(DCB_CMD_SAPP),
 XLAT(DCB_CMD_IEEE_SET),
 XLAT(DCB_CMD_IEEE_GET),
 XLAT(DCB_CMD_GDCBX),
 XLAT(DCB_CMD_SDCBX),
 XLAT(DCB_CMD_GFEATCFG),
 XLAT(DCB_CMD_SFEATCFG),
 XLAT(DCB_CMD_CEE_GET),
 XLAT(DCB_CMD_IEEE_DEL),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
