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

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

#if defined(NLM_F_REQUEST) || (defined(HAVE_DECL_NLM_F_REQUEST) && HAVE_DECL_NLM_F_REQUEST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NLM_F_REQUEST) == (0x1), "NLM_F_REQUEST != 0x1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NLM_F_REQUEST 0x1
#endif
#if defined(NLM_F_MULTI) || (defined(HAVE_DECL_NLM_F_MULTI) && HAVE_DECL_NLM_F_MULTI)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NLM_F_MULTI) == (0x2), "NLM_F_MULTI != 0x2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NLM_F_MULTI 0x2
#endif
#if defined(NLM_F_ACK) || (defined(HAVE_DECL_NLM_F_ACK) && HAVE_DECL_NLM_F_ACK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NLM_F_ACK) == (0x4), "NLM_F_ACK != 0x4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NLM_F_ACK 0x4
#endif
#if defined(NLM_F_ECHO) || (defined(HAVE_DECL_NLM_F_ECHO) && HAVE_DECL_NLM_F_ECHO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NLM_F_ECHO) == (0x8), "NLM_F_ECHO != 0x8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NLM_F_ECHO 0x8
#endif
#if defined(NLM_F_DUMP_INTR) || (defined(HAVE_DECL_NLM_F_DUMP_INTR) && HAVE_DECL_NLM_F_DUMP_INTR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NLM_F_DUMP_INTR) == (0x10), "NLM_F_DUMP_INTR != 0x10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NLM_F_DUMP_INTR 0x10
#endif
#if defined(NLM_F_DUMP_FILTERED) || (defined(HAVE_DECL_NLM_F_DUMP_FILTERED) && HAVE_DECL_NLM_F_DUMP_FILTERED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NLM_F_DUMP_FILTERED) == (0x20), "NLM_F_DUMP_FILTERED != 0x20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NLM_F_DUMP_FILTERED 0x20
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat netlink_flags in mpers mode

# else

static
const struct xlat netlink_flags[] = {
 XLAT(NLM_F_REQUEST),
 XLAT(NLM_F_MULTI),
 XLAT(NLM_F_ACK),
 XLAT(NLM_F_ECHO),
 XLAT(NLM_F_DUMP_INTR),
 XLAT(NLM_F_DUMP_FILTERED),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
