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

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

#if defined(ALG_SET_KEY) || (defined(HAVE_DECL_ALG_SET_KEY) && HAVE_DECL_ALG_SET_KEY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ALG_SET_KEY) == (1), "ALG_SET_KEY != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ALG_SET_KEY 1
#endif
#if defined(ALG_SET_IV) || (defined(HAVE_DECL_ALG_SET_IV) && HAVE_DECL_ALG_SET_IV)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ALG_SET_IV) == (2), "ALG_SET_IV != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ALG_SET_IV 2
#endif
#if defined(ALG_SET_OP) || (defined(HAVE_DECL_ALG_SET_OP) && HAVE_DECL_ALG_SET_OP)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ALG_SET_OP) == (3), "ALG_SET_OP != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ALG_SET_OP 3
#endif
#if defined(ALG_SET_AEAD_ASSOCLEN) || (defined(HAVE_DECL_ALG_SET_AEAD_ASSOCLEN) && HAVE_DECL_ALG_SET_AEAD_ASSOCLEN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ALG_SET_AEAD_ASSOCLEN) == (4), "ALG_SET_AEAD_ASSOCLEN != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ALG_SET_AEAD_ASSOCLEN 4
#endif
#if defined(ALG_SET_AEAD_AUTHSIZE) || (defined(HAVE_DECL_ALG_SET_AEAD_AUTHSIZE) && HAVE_DECL_ALG_SET_AEAD_AUTHSIZE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((ALG_SET_AEAD_AUTHSIZE) == (5), "ALG_SET_AEAD_AUTHSIZE != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define ALG_SET_AEAD_AUTHSIZE 5
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat sock_alg_options in mpers mode

# else

static
const struct xlat sock_alg_options[] = {
 [ALG_SET_KEY] = XLAT(ALG_SET_KEY),
 [ALG_SET_IV] = XLAT(ALG_SET_IV),
 [ALG_SET_OP] = XLAT(ALG_SET_OP),
 [ALG_SET_AEAD_ASSOCLEN] = XLAT(ALG_SET_AEAD_ASSOCLEN),
 [ALG_SET_AEAD_AUTHSIZE] = XLAT(ALG_SET_AEAD_AUTHSIZE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
