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

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

#if defined(NFNL_MSG_ACCT_NEW) || (defined(HAVE_DECL_NFNL_MSG_ACCT_NEW) && HAVE_DECL_NFNL_MSG_ACCT_NEW)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NFNL_MSG_ACCT_NEW) == (0), "NFNL_MSG_ACCT_NEW != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NFNL_MSG_ACCT_NEW 0
#endif
#if defined(NFNL_MSG_ACCT_GET) || (defined(HAVE_DECL_NFNL_MSG_ACCT_GET) && HAVE_DECL_NFNL_MSG_ACCT_GET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NFNL_MSG_ACCT_GET) == (1), "NFNL_MSG_ACCT_GET != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NFNL_MSG_ACCT_GET 1
#endif
#if defined(NFNL_MSG_ACCT_GET_CTRZERO) || (defined(HAVE_DECL_NFNL_MSG_ACCT_GET_CTRZERO) && HAVE_DECL_NFNL_MSG_ACCT_GET_CTRZERO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NFNL_MSG_ACCT_GET_CTRZERO) == (2), "NFNL_MSG_ACCT_GET_CTRZERO != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NFNL_MSG_ACCT_GET_CTRZERO 2
#endif
#if defined(NFNL_MSG_ACCT_DEL) || (defined(HAVE_DECL_NFNL_MSG_ACCT_DEL) && HAVE_DECL_NFNL_MSG_ACCT_DEL)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NFNL_MSG_ACCT_DEL) == (3), "NFNL_MSG_ACCT_DEL != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NFNL_MSG_ACCT_DEL 3
#endif
#if defined(NFNL_MSG_ACCT_OVERQUOTA) || (defined(HAVE_DECL_NFNL_MSG_ACCT_OVERQUOTA) && HAVE_DECL_NFNL_MSG_ACCT_OVERQUOTA)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((NFNL_MSG_ACCT_OVERQUOTA) == (4), "NFNL_MSG_ACCT_OVERQUOTA != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define NFNL_MSG_ACCT_OVERQUOTA 4
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat nf_acct_msg_types in mpers mode

# else

static
const struct xlat nf_acct_msg_types[] = {
 XLAT(NFNL_MSG_ACCT_NEW),
 XLAT(NFNL_MSG_ACCT_GET),
 XLAT(NFNL_MSG_ACCT_GET_CTRZERO),
 XLAT(NFNL_MSG_ACCT_DEL),
 XLAT(NFNL_MSG_ACCT_OVERQUOTA),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
