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

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

#if defined(TIPC_IMPORTANCE) || (defined(HAVE_DECL_TIPC_IMPORTANCE) && HAVE_DECL_TIPC_IMPORTANCE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_IMPORTANCE) == (127), "TIPC_IMPORTANCE != 127");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_IMPORTANCE 127
#endif
#if defined(TIPC_SRC_DROPPABLE) || (defined(HAVE_DECL_TIPC_SRC_DROPPABLE) && HAVE_DECL_TIPC_SRC_DROPPABLE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_SRC_DROPPABLE) == (128), "TIPC_SRC_DROPPABLE != 128");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_SRC_DROPPABLE 128
#endif
#if defined(TIPC_DEST_DROPPABLE) || (defined(HAVE_DECL_TIPC_DEST_DROPPABLE) && HAVE_DECL_TIPC_DEST_DROPPABLE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_DEST_DROPPABLE) == (129), "TIPC_DEST_DROPPABLE != 129");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_DEST_DROPPABLE 129
#endif
#if defined(TIPC_CONN_TIMEOUT) || (defined(HAVE_DECL_TIPC_CONN_TIMEOUT) && HAVE_DECL_TIPC_CONN_TIMEOUT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_CONN_TIMEOUT) == (130), "TIPC_CONN_TIMEOUT != 130");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_CONN_TIMEOUT 130
#endif
#if defined(TIPC_NODE_RECVQ_DEPTH) || (defined(HAVE_DECL_TIPC_NODE_RECVQ_DEPTH) && HAVE_DECL_TIPC_NODE_RECVQ_DEPTH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_NODE_RECVQ_DEPTH) == (131), "TIPC_NODE_RECVQ_DEPTH != 131");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_NODE_RECVQ_DEPTH 131
#endif
#if defined(TIPC_SOCK_RECVQ_DEPTH) || (defined(HAVE_DECL_TIPC_SOCK_RECVQ_DEPTH) && HAVE_DECL_TIPC_SOCK_RECVQ_DEPTH)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_SOCK_RECVQ_DEPTH) == (132), "TIPC_SOCK_RECVQ_DEPTH != 132");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_SOCK_RECVQ_DEPTH 132
#endif
#if defined(TIPC_MCAST_BROADCAST) || (defined(HAVE_DECL_TIPC_MCAST_BROADCAST) && HAVE_DECL_TIPC_MCAST_BROADCAST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_MCAST_BROADCAST) == (133), "TIPC_MCAST_BROADCAST != 133");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_MCAST_BROADCAST 133
#endif
#if defined(TIPC_MCAST_REPLICAST) || (defined(HAVE_DECL_TIPC_MCAST_REPLICAST) && HAVE_DECL_TIPC_MCAST_REPLICAST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_MCAST_REPLICAST) == (134), "TIPC_MCAST_REPLICAST != 134");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_MCAST_REPLICAST 134
#endif
#if defined(TIPC_GROUP_JOIN) || (defined(HAVE_DECL_TIPC_GROUP_JOIN) && HAVE_DECL_TIPC_GROUP_JOIN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_GROUP_JOIN) == (135), "TIPC_GROUP_JOIN != 135");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_GROUP_JOIN 135
#endif
#if defined(TIPC_GROUP_LEAVE) || (defined(HAVE_DECL_TIPC_GROUP_LEAVE) && HAVE_DECL_TIPC_GROUP_LEAVE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((TIPC_GROUP_LEAVE) == (136), "TIPC_GROUP_LEAVE != 136");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define TIPC_GROUP_LEAVE 136
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat sock_tipc_options in mpers mode

# else

static
const struct xlat sock_tipc_options[] = {

 XLAT(TIPC_IMPORTANCE),
 XLAT(TIPC_SRC_DROPPABLE),
 XLAT(TIPC_DEST_DROPPABLE),
 XLAT(TIPC_CONN_TIMEOUT),
 XLAT(TIPC_NODE_RECVQ_DEPTH),
 XLAT(TIPC_SOCK_RECVQ_DEPTH),
 XLAT(TIPC_MCAST_BROADCAST),
 XLAT(TIPC_MCAST_REPLICAST),
 XLAT(TIPC_GROUP_JOIN),
 XLAT(TIPC_GROUP_LEAVE),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
