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

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

#if defined(SO_IPRMDATA_MSG) || (defined(HAVE_DECL_SO_IPRMDATA_MSG) && HAVE_DECL_SO_IPRMDATA_MSG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SO_IPRMDATA_MSG) == (0x0080), "SO_IPRMDATA_MSG != 0x0080");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SO_IPRMDATA_MSG 0x0080
#endif
#if defined(SO_MSGLIMIT) || (defined(HAVE_DECL_SO_MSGLIMIT) && HAVE_DECL_SO_MSGLIMIT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SO_MSGLIMIT) == (0x1000), "SO_MSGLIMIT != 0x1000");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SO_MSGLIMIT 0x1000
#endif
#if defined(SO_MSGSIZE) || (defined(HAVE_DECL_SO_MSGSIZE) && HAVE_DECL_SO_MSGSIZE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SO_MSGSIZE) == (0x0800), "SO_MSGSIZE != 0x0800");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SO_MSGSIZE 0x0800
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat sock_iucv_options in mpers mode

# else

static
const struct xlat sock_iucv_options[] = {
 XLAT(SO_IPRMDATA_MSG),
 XLAT(SO_MSGLIMIT),
 XLAT(SO_MSGSIZE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
