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

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

#if defined(RTNH_F_DEAD) || (defined(HAVE_DECL_RTNH_F_DEAD) && HAVE_DECL_RTNH_F_DEAD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTNH_F_DEAD) == (1), "RTNH_F_DEAD != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTNH_F_DEAD 1
#endif
#if defined(RTNH_F_PERVASIVE) || (defined(HAVE_DECL_RTNH_F_PERVASIVE) && HAVE_DECL_RTNH_F_PERVASIVE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTNH_F_PERVASIVE) == (2), "RTNH_F_PERVASIVE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTNH_F_PERVASIVE 2
#endif
#if defined(RTNH_F_ONLINK) || (defined(HAVE_DECL_RTNH_F_ONLINK) && HAVE_DECL_RTNH_F_ONLINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTNH_F_ONLINK) == (4), "RTNH_F_ONLINK != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTNH_F_ONLINK 4
#endif
#if defined(RTNH_F_OFFLOAD) || (defined(HAVE_DECL_RTNH_F_OFFLOAD) && HAVE_DECL_RTNH_F_OFFLOAD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTNH_F_OFFLOAD) == (8), "RTNH_F_OFFLOAD != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTNH_F_OFFLOAD 8
#endif
#if defined(RTNH_F_LINKDOWN) || (defined(HAVE_DECL_RTNH_F_LINKDOWN) && HAVE_DECL_RTNH_F_LINKDOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTNH_F_LINKDOWN) == (16), "RTNH_F_LINKDOWN != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTNH_F_LINKDOWN 16
#endif
#if defined(RTNH_F_UNRESOLVED) || (defined(HAVE_DECL_RTNH_F_UNRESOLVED) && HAVE_DECL_RTNH_F_UNRESOLVED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RTNH_F_UNRESOLVED) == (32), "RTNH_F_UNRESOLVED != 32");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RTNH_F_UNRESOLVED 32
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat route_nexthop_flags in mpers mode

# else

static
const struct xlat route_nexthop_flags[] = {
 XLAT(RTNH_F_DEAD),
 XLAT(RTNH_F_PERVASIVE),
 XLAT(RTNH_F_ONLINK),
 XLAT(RTNH_F_OFFLOAD),
 XLAT(RTNH_F_LINKDOWN),
 XLAT(RTNH_F_UNRESOLVED),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
