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

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

#if defined(IN6_ADDR_GEN_MODE_EUI64) || (defined(HAVE_DECL_IN6_ADDR_GEN_MODE_EUI64) && HAVE_DECL_IN6_ADDR_GEN_MODE_EUI64)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IN6_ADDR_GEN_MODE_EUI64) == (0), "IN6_ADDR_GEN_MODE_EUI64 != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IN6_ADDR_GEN_MODE_EUI64 0
#endif
#if defined(IN6_ADDR_GEN_MODE_NONE) || (defined(HAVE_DECL_IN6_ADDR_GEN_MODE_NONE) && HAVE_DECL_IN6_ADDR_GEN_MODE_NONE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IN6_ADDR_GEN_MODE_NONE) == (1), "IN6_ADDR_GEN_MODE_NONE != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IN6_ADDR_GEN_MODE_NONE 1
#endif
#if defined(IN6_ADDR_GEN_MODE_STABLE_PRIVACY) || (defined(HAVE_DECL_IN6_ADDR_GEN_MODE_STABLE_PRIVACY) && HAVE_DECL_IN6_ADDR_GEN_MODE_STABLE_PRIVACY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IN6_ADDR_GEN_MODE_STABLE_PRIVACY) == (2), "IN6_ADDR_GEN_MODE_STABLE_PRIVACY != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IN6_ADDR_GEN_MODE_STABLE_PRIVACY 2
#endif
#if defined(IN6_ADDR_GEN_MODE_RANDOM) || (defined(HAVE_DECL_IN6_ADDR_GEN_MODE_RANDOM) && HAVE_DECL_IN6_ADDR_GEN_MODE_RANDOM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IN6_ADDR_GEN_MODE_RANDOM) == (3), "IN6_ADDR_GEN_MODE_RANDOM != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IN6_ADDR_GEN_MODE_RANDOM 3
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat in6_addr_gen_mode in mpers mode

# else

static
const struct xlat in6_addr_gen_mode[] = {
 [IN6_ADDR_GEN_MODE_EUI64] = XLAT(IN6_ADDR_GEN_MODE_EUI64),
 [IN6_ADDR_GEN_MODE_NONE] = XLAT(IN6_ADDR_GEN_MODE_NONE),
 [IN6_ADDR_GEN_MODE_STABLE_PRIVACY] = XLAT(IN6_ADDR_GEN_MODE_STABLE_PRIVACY),
 [IN6_ADDR_GEN_MODE_RANDOM] = XLAT(IN6_ADDR_GEN_MODE_RANDOM),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
