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

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

#if defined(RT_SCOPE_UNIVERSE) || (defined(HAVE_DECL_RT_SCOPE_UNIVERSE) && HAVE_DECL_RT_SCOPE_UNIVERSE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_SCOPE_UNIVERSE) == (0), "RT_SCOPE_UNIVERSE != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_SCOPE_UNIVERSE 0
#endif
#if defined(RT_SCOPE_SITE) || (defined(HAVE_DECL_RT_SCOPE_SITE) && HAVE_DECL_RT_SCOPE_SITE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_SCOPE_SITE) == (200), "RT_SCOPE_SITE != 200");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_SCOPE_SITE 200
#endif
#if defined(RT_SCOPE_LINK) || (defined(HAVE_DECL_RT_SCOPE_LINK) && HAVE_DECL_RT_SCOPE_LINK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_SCOPE_LINK) == (253), "RT_SCOPE_LINK != 253");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_SCOPE_LINK 253
#endif
#if defined(RT_SCOPE_HOST) || (defined(HAVE_DECL_RT_SCOPE_HOST) && HAVE_DECL_RT_SCOPE_HOST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_SCOPE_HOST) == (254), "RT_SCOPE_HOST != 254");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_SCOPE_HOST 254
#endif
#if defined(RT_SCOPE_NOWHERE) || (defined(HAVE_DECL_RT_SCOPE_NOWHERE) && HAVE_DECL_RT_SCOPE_NOWHERE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_SCOPE_NOWHERE) == (255), "RT_SCOPE_NOWHERE != 255");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_SCOPE_NOWHERE 255
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat routing_scopes[] = {
 XLAT(RT_SCOPE_UNIVERSE),
 XLAT(RT_SCOPE_SITE),
 XLAT(RT_SCOPE_LINK),
 XLAT(RT_SCOPE_HOST),
 XLAT(RT_SCOPE_NOWHERE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
