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

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

#if defined(IF_RS_SENT) || (defined(HAVE_DECL_IF_RS_SENT) && HAVE_DECL_IF_RS_SENT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IF_RS_SENT) == (0x10), "IF_RS_SENT != 0x10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IF_RS_SENT 0x10
#endif
#if defined(IF_RA_RCVD) || (defined(HAVE_DECL_IF_RA_RCVD) && HAVE_DECL_IF_RA_RCVD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IF_RA_RCVD) == (0x20), "IF_RA_RCVD != 0x20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IF_RA_RCVD 0x20
#endif
#if defined(IF_RA_MANAGED) || (defined(HAVE_DECL_IF_RA_MANAGED) && HAVE_DECL_IF_RA_MANAGED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IF_RA_MANAGED) == (0x40), "IF_RA_MANAGED != 0x40");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IF_RA_MANAGED 0x40
#endif
#if defined(IF_RA_OTHERCONF) || (defined(HAVE_DECL_IF_RA_OTHERCONF) && HAVE_DECL_IF_RA_OTHERCONF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IF_RA_OTHERCONF) == (0x80), "IF_RA_OTHERCONF != 0x80");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IF_RA_OTHERCONF 0x80
#endif
#if defined(IF_READY) || (defined(HAVE_DECL_IF_READY) && HAVE_DECL_IF_READY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IF_READY) == (0x80000000), "IF_READY != 0x80000000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IF_READY 0x80000000
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat inet6_if_flags in mpers mode

# else

static
const struct xlat inet6_if_flags[] = {

 XLAT(IF_RS_SENT),
 XLAT(IF_RA_RCVD),
 XLAT(IF_RA_MANAGED),
 XLAT(IF_RA_OTHERCONF),
 XLAT(IF_READY),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
