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

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

#if defined(IPCTNL_MSG_TIMEOUT_NEW) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_NEW) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_NEW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPCTNL_MSG_TIMEOUT_NEW) == (0), "IPCTNL_MSG_TIMEOUT_NEW != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPCTNL_MSG_TIMEOUT_NEW 0
#endif
#if defined(IPCTNL_MSG_TIMEOUT_GET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_GET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_GET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPCTNL_MSG_TIMEOUT_GET) == (1), "IPCTNL_MSG_TIMEOUT_GET != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPCTNL_MSG_TIMEOUT_GET 1
#endif
#if defined(IPCTNL_MSG_TIMEOUT_DELETE) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DELETE) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DELETE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPCTNL_MSG_TIMEOUT_DELETE) == (2), "IPCTNL_MSG_TIMEOUT_DELETE != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPCTNL_MSG_TIMEOUT_DELETE 2
#endif
#if defined(IPCTNL_MSG_TIMEOUT_DEFAULT_SET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_SET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_SET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPCTNL_MSG_TIMEOUT_DEFAULT_SET) == (3), "IPCTNL_MSG_TIMEOUT_DEFAULT_SET != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPCTNL_MSG_TIMEOUT_DEFAULT_SET 3
#endif
#if defined(IPCTNL_MSG_TIMEOUT_DEFAULT_GET) || (defined(HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_GET) && HAVE_DECL_IPCTNL_MSG_TIMEOUT_DEFAULT_GET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((IPCTNL_MSG_TIMEOUT_DEFAULT_GET) == (4), "IPCTNL_MSG_TIMEOUT_DEFAULT_GET != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define IPCTNL_MSG_TIMEOUT_DEFAULT_GET 4
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat nf_cttimeout_msg_types in mpers mode

# else

static
const struct xlat nf_cttimeout_msg_types[] = {
 XLAT(IPCTNL_MSG_TIMEOUT_NEW),
 XLAT(IPCTNL_MSG_TIMEOUT_GET),
 XLAT(IPCTNL_MSG_TIMEOUT_DELETE),
 XLAT(IPCTNL_MSG_TIMEOUT_DEFAULT_SET),
 XLAT(IPCTNL_MSG_TIMEOUT_DEFAULT_GET),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
