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

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

#if defined(RT_TABLE_UNSPEC) || (defined(HAVE_DECL_RT_TABLE_UNSPEC) && HAVE_DECL_RT_TABLE_UNSPEC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_TABLE_UNSPEC) == (0), "RT_TABLE_UNSPEC != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_TABLE_UNSPEC 0
#endif
#if defined(RT_TABLE_COMPAT) || (defined(HAVE_DECL_RT_TABLE_COMPAT) && HAVE_DECL_RT_TABLE_COMPAT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_TABLE_COMPAT) == (252), "RT_TABLE_COMPAT != 252");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_TABLE_COMPAT 252
#endif
#if defined(RT_TABLE_DEFAULT) || (defined(HAVE_DECL_RT_TABLE_DEFAULT) && HAVE_DECL_RT_TABLE_DEFAULT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_TABLE_DEFAULT) == (253), "RT_TABLE_DEFAULT != 253");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_TABLE_DEFAULT 253
#endif
#if defined(RT_TABLE_MAIN) || (defined(HAVE_DECL_RT_TABLE_MAIN) && HAVE_DECL_RT_TABLE_MAIN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_TABLE_MAIN) == (254), "RT_TABLE_MAIN != 254");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_TABLE_MAIN 254
#endif
#if defined(RT_TABLE_LOCAL) || (defined(HAVE_DECL_RT_TABLE_LOCAL) && HAVE_DECL_RT_TABLE_LOCAL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((RT_TABLE_LOCAL) == (255), "RT_TABLE_LOCAL != 255");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define RT_TABLE_LOCAL 255
#endif

#ifndef XLAT_MACROS_ONLY

# ifndef IN_MPERS

const struct xlat routing_table_ids[] = {
 XLAT(RT_TABLE_UNSPEC),
 XLAT(RT_TABLE_COMPAT),
 XLAT(RT_TABLE_DEFAULT),
 XLAT(RT_TABLE_MAIN),
 XLAT(RT_TABLE_LOCAL),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
