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

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

#if defined(MDBA_UNSPEC) || (defined(HAVE_DECL_MDBA_UNSPEC) && HAVE_DECL_MDBA_UNSPEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MDBA_UNSPEC) == (0), "MDBA_UNSPEC != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MDBA_UNSPEC 0
#endif
#if defined(MDBA_MDB) || (defined(HAVE_DECL_MDBA_MDB) && HAVE_DECL_MDBA_MDB)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MDBA_MDB) == (1), "MDBA_MDB != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MDBA_MDB 1
#endif
#if defined(MDBA_ROUTER) || (defined(HAVE_DECL_MDBA_ROUTER) && HAVE_DECL_MDBA_ROUTER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((MDBA_ROUTER) == (2), "MDBA_ROUTER != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define MDBA_ROUTER 2
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat rtnl_mdb_attrs in mpers mode

# else

static
const struct xlat rtnl_mdb_attrs[] = {
 XLAT(MDBA_UNSPEC),
 XLAT(MDBA_MDB),
 XLAT(MDBA_ROUTER),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
