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

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

#if defined(TCA_ACT_UNSPEC) || (defined(HAVE_DECL_TCA_ACT_UNSPEC) && HAVE_DECL_TCA_ACT_UNSPEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TCA_ACT_UNSPEC) == (0), "TCA_ACT_UNSPEC != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TCA_ACT_UNSPEC 0
#endif
#if defined(TCA_ACT_KIND) || (defined(HAVE_DECL_TCA_ACT_KIND) && HAVE_DECL_TCA_ACT_KIND)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TCA_ACT_KIND) == (1), "TCA_ACT_KIND != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TCA_ACT_KIND 1
#endif
#if defined(TCA_ACT_OPTIONS) || (defined(HAVE_DECL_TCA_ACT_OPTIONS) && HAVE_DECL_TCA_ACT_OPTIONS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TCA_ACT_OPTIONS) == (2), "TCA_ACT_OPTIONS != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TCA_ACT_OPTIONS 2
#endif
#if defined(TCA_ACT_INDEX) || (defined(HAVE_DECL_TCA_ACT_INDEX) && HAVE_DECL_TCA_ACT_INDEX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TCA_ACT_INDEX) == (3), "TCA_ACT_INDEX != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TCA_ACT_INDEX 3
#endif
#if defined(TCA_ACT_STATS) || (defined(HAVE_DECL_TCA_ACT_STATS) && HAVE_DECL_TCA_ACT_STATS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TCA_ACT_STATS) == (4), "TCA_ACT_STATS != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TCA_ACT_STATS 4
#endif
#if defined(TCA_ACT_PAD) || (defined(HAVE_DECL_TCA_ACT_PAD) && HAVE_DECL_TCA_ACT_PAD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TCA_ACT_PAD) == (5), "TCA_ACT_PAD != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TCA_ACT_PAD 5
#endif
#if defined(TCA_ACT_COOKIE) || (defined(HAVE_DECL_TCA_ACT_COOKIE) && HAVE_DECL_TCA_ACT_COOKIE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TCA_ACT_COOKIE) == (6), "TCA_ACT_COOKIE != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TCA_ACT_COOKIE 6
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat rtnl_tc_action_attrs in mpers mode

# else

static
const struct xlat rtnl_tc_action_attrs[] = {
 XLAT(TCA_ACT_UNSPEC),
 XLAT(TCA_ACT_KIND),
 XLAT(TCA_ACT_OPTIONS),
 XLAT(TCA_ACT_INDEX),
 XLAT(TCA_ACT_STATS),
 XLAT(TCA_ACT_PAD),
 XLAT(TCA_ACT_COOKIE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
