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

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

#if defined(SYS_SOCKET) || (defined(HAVE_DECL_SYS_SOCKET) && HAVE_DECL_SYS_SOCKET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_SOCKET) == (1), "SYS_SOCKET != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_SOCKET 1
#endif
#if defined(SYS_BIND) || (defined(HAVE_DECL_SYS_BIND) && HAVE_DECL_SYS_BIND)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_BIND) == (2), "SYS_BIND != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_BIND 2
#endif
#if defined(SYS_CONNECT) || (defined(HAVE_DECL_SYS_CONNECT) && HAVE_DECL_SYS_CONNECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_CONNECT) == (3), "SYS_CONNECT != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_CONNECT 3
#endif
#if defined(SYS_LISTEN) || (defined(HAVE_DECL_SYS_LISTEN) && HAVE_DECL_SYS_LISTEN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_LISTEN) == (4), "SYS_LISTEN != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_LISTEN 4
#endif
#if defined(SYS_ACCEPT) || (defined(HAVE_DECL_SYS_ACCEPT) && HAVE_DECL_SYS_ACCEPT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_ACCEPT) == (5), "SYS_ACCEPT != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_ACCEPT 5
#endif
#if defined(SYS_GETSOCKNAME) || (defined(HAVE_DECL_SYS_GETSOCKNAME) && HAVE_DECL_SYS_GETSOCKNAME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_GETSOCKNAME) == (6), "SYS_GETSOCKNAME != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_GETSOCKNAME 6
#endif
#if defined(SYS_GETPEERNAME) || (defined(HAVE_DECL_SYS_GETPEERNAME) && HAVE_DECL_SYS_GETPEERNAME)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_GETPEERNAME) == (7), "SYS_GETPEERNAME != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_GETPEERNAME 7
#endif
#if defined(SYS_SOCKETPAIR) || (defined(HAVE_DECL_SYS_SOCKETPAIR) && HAVE_DECL_SYS_SOCKETPAIR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_SOCKETPAIR) == (8), "SYS_SOCKETPAIR != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_SOCKETPAIR 8
#endif
#if defined(SYS_SEND) || (defined(HAVE_DECL_SYS_SEND) && HAVE_DECL_SYS_SEND)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_SEND) == (9), "SYS_SEND != 9");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_SEND 9
#endif
#if defined(SYS_RECV) || (defined(HAVE_DECL_SYS_RECV) && HAVE_DECL_SYS_RECV)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_RECV) == (10), "SYS_RECV != 10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_RECV 10
#endif
#if defined(SYS_SENDTO) || (defined(HAVE_DECL_SYS_SENDTO) && HAVE_DECL_SYS_SENDTO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_SENDTO) == (11), "SYS_SENDTO != 11");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_SENDTO 11
#endif
#if defined(SYS_RECVFROM) || (defined(HAVE_DECL_SYS_RECVFROM) && HAVE_DECL_SYS_RECVFROM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_RECVFROM) == (12), "SYS_RECVFROM != 12");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_RECVFROM 12
#endif
#if defined(SYS_SHUTDOWN) || (defined(HAVE_DECL_SYS_SHUTDOWN) && HAVE_DECL_SYS_SHUTDOWN)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_SHUTDOWN) == (13), "SYS_SHUTDOWN != 13");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_SHUTDOWN 13
#endif
#if defined(SYS_SETSOCKOPT) || (defined(HAVE_DECL_SYS_SETSOCKOPT) && HAVE_DECL_SYS_SETSOCKOPT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_SETSOCKOPT) == (14), "SYS_SETSOCKOPT != 14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_SETSOCKOPT 14
#endif
#if defined(SYS_GETSOCKOPT) || (defined(HAVE_DECL_SYS_GETSOCKOPT) && HAVE_DECL_SYS_GETSOCKOPT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_GETSOCKOPT) == (15), "SYS_GETSOCKOPT != 15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_GETSOCKOPT 15
#endif
#if defined(SYS_SENDMSG) || (defined(HAVE_DECL_SYS_SENDMSG) && HAVE_DECL_SYS_SENDMSG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_SENDMSG) == (16), "SYS_SENDMSG != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_SENDMSG 16
#endif
#if defined(SYS_RECVMSG) || (defined(HAVE_DECL_SYS_RECVMSG) && HAVE_DECL_SYS_RECVMSG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_RECVMSG) == (17), "SYS_RECVMSG != 17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_RECVMSG 17
#endif
#if defined(SYS_ACCEPT4) || (defined(HAVE_DECL_SYS_ACCEPT4) && HAVE_DECL_SYS_ACCEPT4)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_ACCEPT4) == (18), "SYS_ACCEPT4 != 18");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_ACCEPT4 18
#endif
#if defined(SYS_RECVMMSG) || (defined(HAVE_DECL_SYS_RECVMMSG) && HAVE_DECL_SYS_RECVMMSG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_RECVMMSG) == (19), "SYS_RECVMMSG != 19");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_RECVMMSG 19
#endif
#if defined(SYS_SENDMMSG) || (defined(HAVE_DECL_SYS_SENDMMSG) && HAVE_DECL_SYS_SENDMMSG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SYS_SENDMMSG) == (20), "SYS_SENDMMSG != 20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SYS_SENDMMSG 20
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat socketcalls in mpers mode

# else

static
const struct xlat socketcalls[] = {
 XLAT(SYS_SOCKET),
 XLAT(SYS_BIND),
 XLAT(SYS_CONNECT),
 XLAT(SYS_LISTEN),
 XLAT(SYS_ACCEPT),
 XLAT(SYS_GETSOCKNAME),
 XLAT(SYS_GETPEERNAME),
 XLAT(SYS_SOCKETPAIR),
 XLAT(SYS_SEND),
 XLAT(SYS_RECV),
 XLAT(SYS_SENDTO),
 XLAT(SYS_RECVFROM),
 XLAT(SYS_SHUTDOWN),
 XLAT(SYS_SETSOCKOPT),
 XLAT(SYS_GETSOCKOPT),
 XLAT(SYS_SENDMSG),
 XLAT(SYS_RECVMSG),
 XLAT(SYS_ACCEPT4),
 XLAT(SYS_RECVMMSG),
 XLAT(SYS_SENDMMSG),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
