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

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

#if defined(SCTP_RTOINFO) || (defined(HAVE_DECL_SCTP_RTOINFO) && HAVE_DECL_SCTP_RTOINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_RTOINFO) == (0), "SCTP_RTOINFO != 0");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_RTOINFO 0
#endif
#if defined(SCTP_ASSOCINFO) || (defined(HAVE_DECL_SCTP_ASSOCINFO) && HAVE_DECL_SCTP_ASSOCINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_ASSOCINFO) == (1), "SCTP_ASSOCINFO != 1");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_ASSOCINFO 1
#endif
#if defined(SCTP_INITMSG) || (defined(HAVE_DECL_SCTP_INITMSG) && HAVE_DECL_SCTP_INITMSG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_INITMSG) == (2), "SCTP_INITMSG != 2");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_INITMSG 2
#endif
#if defined(SCTP_NODELAY) || (defined(HAVE_DECL_SCTP_NODELAY) && HAVE_DECL_SCTP_NODELAY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_NODELAY) == (3), "SCTP_NODELAY != 3");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_NODELAY 3
#endif
#if defined(SCTP_AUTOCLOSE) || (defined(HAVE_DECL_SCTP_AUTOCLOSE) && HAVE_DECL_SCTP_AUTOCLOSE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_AUTOCLOSE) == (4), "SCTP_AUTOCLOSE != 4");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_AUTOCLOSE 4
#endif
#if defined(SCTP_SET_PEER_PRIMARY_ADDR) || (defined(HAVE_DECL_SCTP_SET_PEER_PRIMARY_ADDR) && HAVE_DECL_SCTP_SET_PEER_PRIMARY_ADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SET_PEER_PRIMARY_ADDR) == (5), "SCTP_SET_PEER_PRIMARY_ADDR != 5");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SET_PEER_PRIMARY_ADDR 5
#endif
#if defined(SCTP_PRIMARY_ADDR) || (defined(HAVE_DECL_SCTP_PRIMARY_ADDR) && HAVE_DECL_SCTP_PRIMARY_ADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_PRIMARY_ADDR) == (6), "SCTP_PRIMARY_ADDR != 6");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_PRIMARY_ADDR 6
#endif
#if defined(SCTP_ADAPTATION_LAYER) || (defined(HAVE_DECL_SCTP_ADAPTATION_LAYER) && HAVE_DECL_SCTP_ADAPTATION_LAYER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_ADAPTATION_LAYER) == (7), "SCTP_ADAPTATION_LAYER != 7");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_ADAPTATION_LAYER 7
#endif
#if defined(SCTP_DISABLE_FRAGMENTS) || (defined(HAVE_DECL_SCTP_DISABLE_FRAGMENTS) && HAVE_DECL_SCTP_DISABLE_FRAGMENTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_DISABLE_FRAGMENTS) == (8), "SCTP_DISABLE_FRAGMENTS != 8");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_DISABLE_FRAGMENTS 8
#endif
#if defined(SCTP_PEER_ADDR_PARAMS) || (defined(HAVE_DECL_SCTP_PEER_ADDR_PARAMS) && HAVE_DECL_SCTP_PEER_ADDR_PARAMS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_PEER_ADDR_PARAMS) == (9), "SCTP_PEER_ADDR_PARAMS != 9");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_PEER_ADDR_PARAMS 9
#endif
#if defined(SCTP_DEFAULT_SEND_PARAM) || (defined(HAVE_DECL_SCTP_DEFAULT_SEND_PARAM) && HAVE_DECL_SCTP_DEFAULT_SEND_PARAM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_DEFAULT_SEND_PARAM) == (10), "SCTP_DEFAULT_SEND_PARAM != 10");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_DEFAULT_SEND_PARAM 10
#endif
#if defined(SCTP_EVENTS) || (defined(HAVE_DECL_SCTP_EVENTS) && HAVE_DECL_SCTP_EVENTS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_EVENTS) == (11), "SCTP_EVENTS != 11");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_EVENTS 11
#endif
#if defined(SCTP_I_WANT_MAPPED_V4_ADDR) || (defined(HAVE_DECL_SCTP_I_WANT_MAPPED_V4_ADDR) && HAVE_DECL_SCTP_I_WANT_MAPPED_V4_ADDR)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_I_WANT_MAPPED_V4_ADDR) == (12), "SCTP_I_WANT_MAPPED_V4_ADDR != 12");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_I_WANT_MAPPED_V4_ADDR 12
#endif
#if defined(SCTP_MAXSEG) || (defined(HAVE_DECL_SCTP_MAXSEG) && HAVE_DECL_SCTP_MAXSEG)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_MAXSEG) == (13), "SCTP_MAXSEG != 13");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_MAXSEG 13
#endif
#if defined(SCTP_STATUS) || (defined(HAVE_DECL_SCTP_STATUS) && HAVE_DECL_SCTP_STATUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_STATUS) == (14), "SCTP_STATUS != 14");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_STATUS 14
#endif
#if defined(SCTP_GET_PEER_ADDR_INFO) || (defined(HAVE_DECL_SCTP_GET_PEER_ADDR_INFO) && HAVE_DECL_SCTP_GET_PEER_ADDR_INFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_PEER_ADDR_INFO) == (15), "SCTP_GET_PEER_ADDR_INFO != 15");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_PEER_ADDR_INFO 15
#endif
#if defined(SCTP_DELAYED_SACK) || (defined(HAVE_DECL_SCTP_DELAYED_SACK) && HAVE_DECL_SCTP_DELAYED_SACK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_DELAYED_SACK) == (16), "SCTP_DELAYED_SACK != 16");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_DELAYED_SACK 16
#endif
#if defined(SCTP_CONTEXT) || (defined(HAVE_DECL_SCTP_CONTEXT) && HAVE_DECL_SCTP_CONTEXT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_CONTEXT) == (17), "SCTP_CONTEXT != 17");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_CONTEXT 17
#endif
#if defined(SCTP_FRAGMENT_INTERLEAVE) || (defined(HAVE_DECL_SCTP_FRAGMENT_INTERLEAVE) && HAVE_DECL_SCTP_FRAGMENT_INTERLEAVE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_FRAGMENT_INTERLEAVE) == (18), "SCTP_FRAGMENT_INTERLEAVE != 18");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_FRAGMENT_INTERLEAVE 18
#endif
#if defined(SCTP_PARTIAL_DELIVERY_POINT) || (defined(HAVE_DECL_SCTP_PARTIAL_DELIVERY_POINT) && HAVE_DECL_SCTP_PARTIAL_DELIVERY_POINT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_PARTIAL_DELIVERY_POINT) == (19), "SCTP_PARTIAL_DELIVERY_POINT != 19");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_PARTIAL_DELIVERY_POINT 19
#endif
#if defined(SCTP_MAX_BURST) || (defined(HAVE_DECL_SCTP_MAX_BURST) && HAVE_DECL_SCTP_MAX_BURST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_MAX_BURST) == (20), "SCTP_MAX_BURST != 20");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_MAX_BURST 20
#endif
#if defined(SCTP_AUTH_CHUNK) || (defined(HAVE_DECL_SCTP_AUTH_CHUNK) && HAVE_DECL_SCTP_AUTH_CHUNK)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_AUTH_CHUNK) == (21), "SCTP_AUTH_CHUNK != 21");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_AUTH_CHUNK 21
#endif
#if defined(SCTP_HMAC_IDENT) || (defined(HAVE_DECL_SCTP_HMAC_IDENT) && HAVE_DECL_SCTP_HMAC_IDENT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_HMAC_IDENT) == (22), "SCTP_HMAC_IDENT != 22");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_HMAC_IDENT 22
#endif
#if defined(SCTP_AUTH_KEY) || (defined(HAVE_DECL_SCTP_AUTH_KEY) && HAVE_DECL_SCTP_AUTH_KEY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_AUTH_KEY) == (23), "SCTP_AUTH_KEY != 23");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_AUTH_KEY 23
#endif
#if defined(SCTP_AUTH_ACTIVE_KEY) || (defined(HAVE_DECL_SCTP_AUTH_ACTIVE_KEY) && HAVE_DECL_SCTP_AUTH_ACTIVE_KEY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_AUTH_ACTIVE_KEY) == (24), "SCTP_AUTH_ACTIVE_KEY != 24");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_AUTH_ACTIVE_KEY 24
#endif
#if defined(SCTP_AUTH_DELETE_KEY) || (defined(HAVE_DECL_SCTP_AUTH_DELETE_KEY) && HAVE_DECL_SCTP_AUTH_DELETE_KEY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_AUTH_DELETE_KEY) == (25), "SCTP_AUTH_DELETE_KEY != 25");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_AUTH_DELETE_KEY 25
#endif
#if defined(SCTP_PEER_AUTH_CHUNKS) || (defined(HAVE_DECL_SCTP_PEER_AUTH_CHUNKS) && HAVE_DECL_SCTP_PEER_AUTH_CHUNKS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_PEER_AUTH_CHUNKS) == (26), "SCTP_PEER_AUTH_CHUNKS != 26");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_PEER_AUTH_CHUNKS 26
#endif
#if defined(SCTP_LOCAL_AUTH_CHUNKS) || (defined(HAVE_DECL_SCTP_LOCAL_AUTH_CHUNKS) && HAVE_DECL_SCTP_LOCAL_AUTH_CHUNKS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_LOCAL_AUTH_CHUNKS) == (27), "SCTP_LOCAL_AUTH_CHUNKS != 27");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_LOCAL_AUTH_CHUNKS 27
#endif
#if defined(SCTP_GET_ASSOC_NUMBER) || (defined(HAVE_DECL_SCTP_GET_ASSOC_NUMBER) && HAVE_DECL_SCTP_GET_ASSOC_NUMBER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_ASSOC_NUMBER) == (28), "SCTP_GET_ASSOC_NUMBER != 28");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_ASSOC_NUMBER 28
#endif
#if defined(SCTP_GET_ASSOC_ID_LIST) || (defined(HAVE_DECL_SCTP_GET_ASSOC_ID_LIST) && HAVE_DECL_SCTP_GET_ASSOC_ID_LIST)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_ASSOC_ID_LIST) == (29), "SCTP_GET_ASSOC_ID_LIST != 29");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_ASSOC_ID_LIST 29
#endif
#if defined(SCTP_AUTO_ASCONF) || (defined(HAVE_DECL_SCTP_AUTO_ASCONF) && HAVE_DECL_SCTP_AUTO_ASCONF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_AUTO_ASCONF) == (30), "SCTP_AUTO_ASCONF != 30");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_AUTO_ASCONF 30
#endif
#if defined(SCTP_PEER_ADDR_THLDS) || (defined(HAVE_DECL_SCTP_PEER_ADDR_THLDS) && HAVE_DECL_SCTP_PEER_ADDR_THLDS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_PEER_ADDR_THLDS) == (31), "SCTP_PEER_ADDR_THLDS != 31");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_PEER_ADDR_THLDS 31
#endif
#if defined(SCTP_RECVRCVINFO) || (defined(HAVE_DECL_SCTP_RECVRCVINFO) && HAVE_DECL_SCTP_RECVRCVINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_RECVRCVINFO) == (32), "SCTP_RECVRCVINFO != 32");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_RECVRCVINFO 32
#endif
#if defined(SCTP_RECVNXTINFO) || (defined(HAVE_DECL_SCTP_RECVNXTINFO) && HAVE_DECL_SCTP_RECVNXTINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_RECVNXTINFO) == (33), "SCTP_RECVNXTINFO != 33");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_RECVNXTINFO 33
#endif
#if defined(SCTP_DEFAULT_SNDINFO) || (defined(HAVE_DECL_SCTP_DEFAULT_SNDINFO) && HAVE_DECL_SCTP_DEFAULT_SNDINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_DEFAULT_SNDINFO) == (34), "SCTP_DEFAULT_SNDINFO != 34");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_DEFAULT_SNDINFO 34
#endif
#if defined(SCTP_AUTH_DEACTIVATE_KEY) || (defined(HAVE_DECL_SCTP_AUTH_DEACTIVATE_KEY) && HAVE_DECL_SCTP_AUTH_DEACTIVATE_KEY)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_AUTH_DEACTIVATE_KEY) == (35), "SCTP_AUTH_DEACTIVATE_KEY != 35");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_AUTH_DEACTIVATE_KEY 35
#endif
#if defined(SCTP_REUSE_PORT) || (defined(HAVE_DECL_SCTP_REUSE_PORT) && HAVE_DECL_SCTP_REUSE_PORT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_REUSE_PORT) == (36), "SCTP_REUSE_PORT != 36");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_REUSE_PORT 36
#endif
#if defined(SCTP_SOCKOPT_BINDX_ADD) || (defined(HAVE_DECL_SCTP_SOCKOPT_BINDX_ADD) && HAVE_DECL_SCTP_SOCKOPT_BINDX_ADD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SOCKOPT_BINDX_ADD) == (100), "SCTP_SOCKOPT_BINDX_ADD != 100");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SOCKOPT_BINDX_ADD 100
#endif
#if defined(SCTP_SOCKOPT_BINDX_REM) || (defined(HAVE_DECL_SCTP_SOCKOPT_BINDX_REM) && HAVE_DECL_SCTP_SOCKOPT_BINDX_REM)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SOCKOPT_BINDX_REM) == (101), "SCTP_SOCKOPT_BINDX_REM != 101");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SOCKOPT_BINDX_REM 101
#endif
#if defined(SCTP_SOCKOPT_PEELOFF) || (defined(HAVE_DECL_SCTP_SOCKOPT_PEELOFF) && HAVE_DECL_SCTP_SOCKOPT_PEELOFF)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SOCKOPT_PEELOFF) == (102), "SCTP_SOCKOPT_PEELOFF != 102");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SOCKOPT_PEELOFF 102
#endif
#if defined(SCTP_GET_PEER_ADDRS_NUM_OLD) || (defined(HAVE_DECL_SCTP_GET_PEER_ADDRS_NUM_OLD) && HAVE_DECL_SCTP_GET_PEER_ADDRS_NUM_OLD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_PEER_ADDRS_NUM_OLD) == (103), "SCTP_GET_PEER_ADDRS_NUM_OLD != 103");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_PEER_ADDRS_NUM_OLD 103
#endif
#if defined(SCTP_GET_PEER_ADDRS_OLD) || (defined(HAVE_DECL_SCTP_GET_PEER_ADDRS_OLD) && HAVE_DECL_SCTP_GET_PEER_ADDRS_OLD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_PEER_ADDRS_OLD) == (104), "SCTP_GET_PEER_ADDRS_OLD != 104");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_PEER_ADDRS_OLD 104
#endif
#if defined(SCTP_GET_LOCAL_ADDRS_NUM_OLD) || (defined(HAVE_DECL_SCTP_GET_LOCAL_ADDRS_NUM_OLD) && HAVE_DECL_SCTP_GET_LOCAL_ADDRS_NUM_OLD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_LOCAL_ADDRS_NUM_OLD) == (105), "SCTP_GET_LOCAL_ADDRS_NUM_OLD != 105");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_LOCAL_ADDRS_NUM_OLD 105
#endif
#if defined(SCTP_GET_LOCAL_ADDRS_OLD) || (defined(HAVE_DECL_SCTP_GET_LOCAL_ADDRS_OLD) && HAVE_DECL_SCTP_GET_LOCAL_ADDRS_OLD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_LOCAL_ADDRS_OLD) == (106), "SCTP_GET_LOCAL_ADDRS_OLD != 106");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_LOCAL_ADDRS_OLD 106
#endif
#if defined(SCTP_SOCKOPT_CONNECTX_OLD) || (defined(HAVE_DECL_SCTP_SOCKOPT_CONNECTX_OLD) && HAVE_DECL_SCTP_SOCKOPT_CONNECTX_OLD)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SOCKOPT_CONNECTX_OLD) == (107), "SCTP_SOCKOPT_CONNECTX_OLD != 107");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SOCKOPT_CONNECTX_OLD 107
#endif
#if defined(SCTP_GET_PEER_ADDRS) || (defined(HAVE_DECL_SCTP_GET_PEER_ADDRS) && HAVE_DECL_SCTP_GET_PEER_ADDRS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_PEER_ADDRS) == (108), "SCTP_GET_PEER_ADDRS != 108");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_PEER_ADDRS 108
#endif
#if defined(SCTP_GET_LOCAL_ADDRS) || (defined(HAVE_DECL_SCTP_GET_LOCAL_ADDRS) && HAVE_DECL_SCTP_GET_LOCAL_ADDRS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_LOCAL_ADDRS) == (109), "SCTP_GET_LOCAL_ADDRS != 109");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_LOCAL_ADDRS 109
#endif
#if defined(SCTP_SOCKOPT_CONNECTX) || (defined(HAVE_DECL_SCTP_SOCKOPT_CONNECTX) && HAVE_DECL_SCTP_SOCKOPT_CONNECTX)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SOCKOPT_CONNECTX) == (110), "SCTP_SOCKOPT_CONNECTX != 110");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SOCKOPT_CONNECTX 110
#endif
#if defined(SCTP_SOCKOPT_CONNECTX3) || (defined(HAVE_DECL_SCTP_SOCKOPT_CONNECTX3) && HAVE_DECL_SCTP_SOCKOPT_CONNECTX3)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SOCKOPT_CONNECTX3) == (111), "SCTP_SOCKOPT_CONNECTX3 != 111");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SOCKOPT_CONNECTX3 111
#endif
#if defined(SCTP_GET_ASSOC_STATS) || (defined(HAVE_DECL_SCTP_GET_ASSOC_STATS) && HAVE_DECL_SCTP_GET_ASSOC_STATS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_GET_ASSOC_STATS) == (112), "SCTP_GET_ASSOC_STATS != 112");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_GET_ASSOC_STATS 112
#endif
#if defined(SCTP_PR_SUPPORTED) || (defined(HAVE_DECL_SCTP_PR_SUPPORTED) && HAVE_DECL_SCTP_PR_SUPPORTED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_PR_SUPPORTED) == (113), "SCTP_PR_SUPPORTED != 113");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_PR_SUPPORTED 113
#endif
#if defined(SCTP_DEFAULT_PRINFO) || (defined(HAVE_DECL_SCTP_DEFAULT_PRINFO) && HAVE_DECL_SCTP_DEFAULT_PRINFO)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_DEFAULT_PRINFO) == (114), "SCTP_DEFAULT_PRINFO != 114");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_DEFAULT_PRINFO 114
#endif
#if defined(SCTP_PR_ASSOC_STATUS) || (defined(HAVE_DECL_SCTP_PR_ASSOC_STATUS) && HAVE_DECL_SCTP_PR_ASSOC_STATUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_PR_ASSOC_STATUS) == (115), "SCTP_PR_ASSOC_STATUS != 115");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_PR_ASSOC_STATUS 115
#endif
#if defined(SCTP_PR_STREAM_STATUS) || (defined(HAVE_DECL_SCTP_PR_STREAM_STATUS) && HAVE_DECL_SCTP_PR_STREAM_STATUS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_PR_STREAM_STATUS) == (116), "SCTP_PR_STREAM_STATUS != 116");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_PR_STREAM_STATUS 116
#endif
#if defined(SCTP_RECONFIG_SUPPORTED) || (defined(HAVE_DECL_SCTP_RECONFIG_SUPPORTED) && HAVE_DECL_SCTP_RECONFIG_SUPPORTED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_RECONFIG_SUPPORTED) == (117), "SCTP_RECONFIG_SUPPORTED != 117");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_RECONFIG_SUPPORTED 117
#endif
#if defined(SCTP_ENABLE_STREAM_RESET) || (defined(HAVE_DECL_SCTP_ENABLE_STREAM_RESET) && HAVE_DECL_SCTP_ENABLE_STREAM_RESET)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_ENABLE_STREAM_RESET) == (118), "SCTP_ENABLE_STREAM_RESET != 118");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_ENABLE_STREAM_RESET 118
#endif
#if defined(SCTP_RESET_STREAMS) || (defined(HAVE_DECL_SCTP_RESET_STREAMS) && HAVE_DECL_SCTP_RESET_STREAMS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_RESET_STREAMS) == (119), "SCTP_RESET_STREAMS != 119");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_RESET_STREAMS 119
#endif
#if defined(SCTP_RESET_ASSOC) || (defined(HAVE_DECL_SCTP_RESET_ASSOC) && HAVE_DECL_SCTP_RESET_ASSOC)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_RESET_ASSOC) == (120), "SCTP_RESET_ASSOC != 120");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_RESET_ASSOC 120
#endif
#if defined(SCTP_ADD_STREAMS) || (defined(HAVE_DECL_SCTP_ADD_STREAMS) && HAVE_DECL_SCTP_ADD_STREAMS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_ADD_STREAMS) == (121), "SCTP_ADD_STREAMS != 121");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_ADD_STREAMS 121
#endif
#if defined(SCTP_SOCKOPT_PEELOFF_FLAGS) || (defined(HAVE_DECL_SCTP_SOCKOPT_PEELOFF_FLAGS) && HAVE_DECL_SCTP_SOCKOPT_PEELOFF_FLAGS)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SOCKOPT_PEELOFF_FLAGS) == (122), "SCTP_SOCKOPT_PEELOFF_FLAGS != 122");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SOCKOPT_PEELOFF_FLAGS 122
#endif
#if defined(SCTP_STREAM_SCHEDULER) || (defined(HAVE_DECL_SCTP_STREAM_SCHEDULER) && HAVE_DECL_SCTP_STREAM_SCHEDULER)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_STREAM_SCHEDULER) == (123), "SCTP_STREAM_SCHEDULER != 123");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_STREAM_SCHEDULER 123
#endif
#if defined(SCTP_STREAM_SCHEDULER_VALUE) || (defined(HAVE_DECL_SCTP_STREAM_SCHEDULER_VALUE) && HAVE_DECL_SCTP_STREAM_SCHEDULER_VALUE)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_STREAM_SCHEDULER_VALUE) == (124), "SCTP_STREAM_SCHEDULER_VALUE != 124");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_STREAM_SCHEDULER_VALUE 124
#endif
#if defined(SCTP_INTERLEAVING_SUPPORTED) || (defined(HAVE_DECL_SCTP_INTERLEAVING_SUPPORTED) && HAVE_DECL_SCTP_INTERLEAVING_SUPPORTED)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_INTERLEAVING_SUPPORTED) == (125), "SCTP_INTERLEAVING_SUPPORTED != 125");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_INTERLEAVING_SUPPORTED 125
#endif
#if defined(SCTP_SENDMSG_CONNECT) || (defined(HAVE_DECL_SCTP_SENDMSG_CONNECT) && HAVE_DECL_SCTP_SENDMSG_CONNECT)
DIAG_PUSH_IGNORE_TAUTOLOGICAL_COMPARE
static_assert((SCTP_SENDMSG_CONNECT) == (126), "SCTP_SENDMSG_CONNECT != 126");
DIAG_POP_IGNORE_TAUTOLOGICAL_COMPARE
#else
# define SCTP_SENDMSG_CONNECT 126
#endif

#ifndef XLAT_MACROS_ONLY

# ifdef IN_MPERS

#  error static const struct xlat sock_sctp_options in mpers mode

# else

static
const struct xlat sock_sctp_options[] = {
 XLAT(SCTP_RTOINFO),
 XLAT(SCTP_ASSOCINFO),
 XLAT(SCTP_INITMSG),
 XLAT(SCTP_NODELAY),
 XLAT(SCTP_AUTOCLOSE),
 XLAT(SCTP_SET_PEER_PRIMARY_ADDR),
 XLAT(SCTP_PRIMARY_ADDR),
 XLAT(SCTP_ADAPTATION_LAYER),
 XLAT(SCTP_DISABLE_FRAGMENTS),
 XLAT(SCTP_PEER_ADDR_PARAMS),
 XLAT(SCTP_DEFAULT_SEND_PARAM),
 XLAT(SCTP_EVENTS),
 XLAT(SCTP_I_WANT_MAPPED_V4_ADDR),
 XLAT(SCTP_MAXSEG),
 XLAT(SCTP_STATUS),
 XLAT(SCTP_GET_PEER_ADDR_INFO),
 XLAT(SCTP_DELAYED_SACK),
 XLAT(SCTP_CONTEXT),
 XLAT(SCTP_FRAGMENT_INTERLEAVE),
 XLAT(SCTP_PARTIAL_DELIVERY_POINT),
 XLAT(SCTP_MAX_BURST),
 XLAT(SCTP_AUTH_CHUNK),
 XLAT(SCTP_HMAC_IDENT),
 XLAT(SCTP_AUTH_KEY),
 XLAT(SCTP_AUTH_ACTIVE_KEY),
 XLAT(SCTP_AUTH_DELETE_KEY),
 XLAT(SCTP_PEER_AUTH_CHUNKS),
 XLAT(SCTP_LOCAL_AUTH_CHUNKS),
 XLAT(SCTP_GET_ASSOC_NUMBER),
 XLAT(SCTP_GET_ASSOC_ID_LIST),
 XLAT(SCTP_AUTO_ASCONF),
 XLAT(SCTP_PEER_ADDR_THLDS),
 XLAT(SCTP_RECVRCVINFO),
 XLAT(SCTP_RECVNXTINFO),
 XLAT(SCTP_DEFAULT_SNDINFO),
 XLAT(SCTP_AUTH_DEACTIVATE_KEY),
 XLAT(SCTP_REUSE_PORT),

 XLAT(SCTP_SOCKOPT_BINDX_ADD),
 XLAT(SCTP_SOCKOPT_BINDX_REM),
 XLAT(SCTP_SOCKOPT_PEELOFF),
 XLAT(SCTP_GET_PEER_ADDRS_NUM_OLD),
 XLAT(SCTP_GET_PEER_ADDRS_OLD),
 XLAT(SCTP_GET_LOCAL_ADDRS_NUM_OLD),
 XLAT(SCTP_GET_LOCAL_ADDRS_OLD),
 XLAT(SCTP_SOCKOPT_CONNECTX_OLD),
 XLAT(SCTP_GET_PEER_ADDRS),
 XLAT(SCTP_GET_LOCAL_ADDRS),
 XLAT(SCTP_SOCKOPT_CONNECTX),
 XLAT(SCTP_SOCKOPT_CONNECTX3),
 XLAT(SCTP_GET_ASSOC_STATS),
 XLAT(SCTP_PR_SUPPORTED),
 XLAT(SCTP_DEFAULT_PRINFO),
 XLAT(SCTP_PR_ASSOC_STATUS),
 XLAT(SCTP_PR_STREAM_STATUS),
 XLAT(SCTP_RECONFIG_SUPPORTED),
 XLAT(SCTP_ENABLE_STREAM_RESET),
 XLAT(SCTP_RESET_STREAMS),
 XLAT(SCTP_RESET_ASSOC),
 XLAT(SCTP_ADD_STREAMS),
 XLAT(SCTP_SOCKOPT_PEELOFF_FLAGS),
 XLAT(SCTP_STREAM_SCHEDULER),
 XLAT(SCTP_STREAM_SCHEDULER_VALUE),
 XLAT(SCTP_INTERLEAVING_SUPPORTED),
 XLAT(SCTP_SENDMSG_CONNECT),
 XLAT_END
};

# endif /* !IN_MPERS */

#endif /* !XLAT_MACROS_ONLY */
