From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/ext/socket/constdefs.c | 6852 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 6852 insertions(+) create mode 100644 jni/ruby/ext/socket/constdefs.c (limited to 'jni/ruby/ext/socket/constdefs.c') diff --git a/jni/ruby/ext/socket/constdefs.c b/jni/ruby/ext/socket/constdefs.c new file mode 100644 index 0000000..18136ba --- /dev/null +++ b/jni/ruby/ext/socket/constdefs.c @@ -0,0 +1,6852 @@ +/* autogenerated file */ + +static st_table *rsock_intern_family_hash; +static st_table *rsock_intern_family_noprefix_hash; +static st_table *rsock_intern_protocol_family_hash; +static st_table *rsock_intern_socktype_hash; +static st_table *rsock_intern_ipproto_hash; +static st_table *rsock_intern_iplevel_hash; +static st_table *rsock_intern_so_optname_hash; +static st_table *rsock_intern_ip_optname_hash; +static st_table *rsock_intern_ipv6_optname_hash; +static st_table *rsock_intern_tcp_optname_hash; +static st_table *rsock_intern_udp_optname_hash; +static st_table *rsock_intern_scm_optname_hash; +static st_table *rsock_intern_local_optname_hash; + +#ifdef HAVE_LONG_LONG +#define INTEGER2NUM(n) \ + (FIXNUM_MAX < (n) ? ULL2NUM(n) : \ + FIXNUM_MIN > (LONG_LONG)(n) ? LL2NUM(n) : \ + LONG2FIX(n)) +#else +#define INTEGER2NUM(n) \ + (FIXNUM_MAX < (n) ? ULONG2NUM(n) : \ + FIXNUM_MIN > (long)(n) ? LONG2NUM(n) : \ + LONG2FIX(n)) +#endif + +static void +init_constants(void) +{ + /* + * Document-module: Socket::Constants + * + * Socket::Constants provides socket-related constants. All possible + * socket constants are listed in the documentation but they may not all + * be present on your platform. + * + * If the underlying platform doesn't define a constant the corresponding + * Ruby constant is not defined. + * + */ + rb_mSockConst = rb_define_module_under(rb_cSocket, "Constants"); + +#if defined(SOCK_STREAM) + /* A stream socket provides a sequenced, reliable two-way connection for a byte stream */ + rb_define_const(rb_cSocket, "SOCK_STREAM", INTEGER2NUM(SOCK_STREAM)); + /* A stream socket provides a sequenced, reliable two-way connection for a byte stream */ + rb_define_const(rb_mSockConst, "SOCK_STREAM", INTEGER2NUM(SOCK_STREAM)); +#endif +#if defined(SOCK_DGRAM) + /* A datagram socket provides connectionless, unreliable messaging */ + rb_define_const(rb_cSocket, "SOCK_DGRAM", INTEGER2NUM(SOCK_DGRAM)); + /* A datagram socket provides connectionless, unreliable messaging */ + rb_define_const(rb_mSockConst, "SOCK_DGRAM", INTEGER2NUM(SOCK_DGRAM)); +#endif +#if defined(SOCK_RAW) + /* A raw socket provides low-level access for direct access or implementing network protocols */ + rb_define_const(rb_cSocket, "SOCK_RAW", INTEGER2NUM(SOCK_RAW)); + /* A raw socket provides low-level access for direct access or implementing network protocols */ + rb_define_const(rb_mSockConst, "SOCK_RAW", INTEGER2NUM(SOCK_RAW)); +#endif +#if defined(SOCK_RDM) + /* A reliable datagram socket provides reliable delivery of messages */ + rb_define_const(rb_cSocket, "SOCK_RDM", INTEGER2NUM(SOCK_RDM)); + /* A reliable datagram socket provides reliable delivery of messages */ + rb_define_const(rb_mSockConst, "SOCK_RDM", INTEGER2NUM(SOCK_RDM)); +#endif +#if defined(SOCK_SEQPACKET) + /* A sequential packet socket provides sequenced, reliable two-way connection for datagrams */ + rb_define_const(rb_cSocket, "SOCK_SEQPACKET", INTEGER2NUM(SOCK_SEQPACKET)); + /* A sequential packet socket provides sequenced, reliable two-way connection for datagrams */ + rb_define_const(rb_mSockConst, "SOCK_SEQPACKET", INTEGER2NUM(SOCK_SEQPACKET)); +#endif +#if defined(SOCK_PACKET) + /* Device-level packet access */ + rb_define_const(rb_cSocket, "SOCK_PACKET", INTEGER2NUM(SOCK_PACKET)); + /* Device-level packet access */ + rb_define_const(rb_mSockConst, "SOCK_PACKET", INTEGER2NUM(SOCK_PACKET)); +#endif +#if defined(AF_UNSPEC) + /* Unspecified protocol, any supported address family */ + rb_define_const(rb_cSocket, "AF_UNSPEC", INTEGER2NUM(AF_UNSPEC)); + /* Unspecified protocol, any supported address family */ + rb_define_const(rb_mSockConst, "AF_UNSPEC", INTEGER2NUM(AF_UNSPEC)); +#endif +#if defined(PF_UNSPEC) + /* Unspecified protocol, any supported address family */ + rb_define_const(rb_cSocket, "PF_UNSPEC", INTEGER2NUM(PF_UNSPEC)); + /* Unspecified protocol, any supported address family */ + rb_define_const(rb_mSockConst, "PF_UNSPEC", INTEGER2NUM(PF_UNSPEC)); +#endif +#if defined(AF_INET) + /* IPv4 protocol */ + rb_define_const(rb_cSocket, "AF_INET", INTEGER2NUM(AF_INET)); + /* IPv4 protocol */ + rb_define_const(rb_mSockConst, "AF_INET", INTEGER2NUM(AF_INET)); +#endif +#if defined(PF_INET) + /* IPv4 protocol */ + rb_define_const(rb_cSocket, "PF_INET", INTEGER2NUM(PF_INET)); + /* IPv4 protocol */ + rb_define_const(rb_mSockConst, "PF_INET", INTEGER2NUM(PF_INET)); +#endif +#if defined(INET6) +#if defined(AF_INET6) + /* IPv6 protocol */ + rb_define_const(rb_cSocket, "AF_INET6", INTEGER2NUM(AF_INET6)); + /* IPv6 protocol */ + rb_define_const(rb_mSockConst, "AF_INET6", INTEGER2NUM(AF_INET6)); +#endif +#endif +#if defined(INET6) +#if defined(PF_INET6) + /* IPv6 protocol */ + rb_define_const(rb_cSocket, "PF_INET6", INTEGER2NUM(PF_INET6)); + /* IPv6 protocol */ + rb_define_const(rb_mSockConst, "PF_INET6", INTEGER2NUM(PF_INET6)); +#endif +#endif +#if defined(AF_UNIX) + /* UNIX sockets */ + rb_define_const(rb_cSocket, "AF_UNIX", INTEGER2NUM(AF_UNIX)); + /* UNIX sockets */ + rb_define_const(rb_mSockConst, "AF_UNIX", INTEGER2NUM(AF_UNIX)); +#endif +#if defined(PF_UNIX) + /* UNIX sockets */ + rb_define_const(rb_cSocket, "PF_UNIX", INTEGER2NUM(PF_UNIX)); + /* UNIX sockets */ + rb_define_const(rb_mSockConst, "PF_UNIX", INTEGER2NUM(PF_UNIX)); +#endif +#if defined(AF_AX25) + /* AX.25 protocol */ + rb_define_const(rb_cSocket, "AF_AX25", INTEGER2NUM(AF_AX25)); + /* AX.25 protocol */ + rb_define_const(rb_mSockConst, "AF_AX25", INTEGER2NUM(AF_AX25)); +#endif +#if defined(PF_AX25) + /* AX.25 protocol */ + rb_define_const(rb_cSocket, "PF_AX25", INTEGER2NUM(PF_AX25)); + /* AX.25 protocol */ + rb_define_const(rb_mSockConst, "PF_AX25", INTEGER2NUM(PF_AX25)); +#endif +#if defined(AF_IPX) + /* IPX protocol */ + rb_define_const(rb_cSocket, "AF_IPX", INTEGER2NUM(AF_IPX)); + /* IPX protocol */ + rb_define_const(rb_mSockConst, "AF_IPX", INTEGER2NUM(AF_IPX)); +#endif +#if defined(PF_IPX) + /* IPX protocol */ + rb_define_const(rb_cSocket, "PF_IPX", INTEGER2NUM(PF_IPX)); + /* IPX protocol */ + rb_define_const(rb_mSockConst, "PF_IPX", INTEGER2NUM(PF_IPX)); +#endif +#if defined(AF_APPLETALK) + /* AppleTalk protocol */ + rb_define_const(rb_cSocket, "AF_APPLETALK", INTEGER2NUM(AF_APPLETALK)); + /* AppleTalk protocol */ + rb_define_const(rb_mSockConst, "AF_APPLETALK", INTEGER2NUM(AF_APPLETALK)); +#endif +#if defined(PF_APPLETALK) + /* AppleTalk protocol */ + rb_define_const(rb_cSocket, "PF_APPLETALK", INTEGER2NUM(PF_APPLETALK)); + /* AppleTalk protocol */ + rb_define_const(rb_mSockConst, "PF_APPLETALK", INTEGER2NUM(PF_APPLETALK)); +#endif +#if defined(AF_LOCAL) + /* Host-internal protocols */ + rb_define_const(rb_cSocket, "AF_LOCAL", INTEGER2NUM(AF_LOCAL)); + /* Host-internal protocols */ + rb_define_const(rb_mSockConst, "AF_LOCAL", INTEGER2NUM(AF_LOCAL)); +#endif +#if defined(PF_LOCAL) + /* Host-internal protocols */ + rb_define_const(rb_cSocket, "PF_LOCAL", INTEGER2NUM(PF_LOCAL)); + /* Host-internal protocols */ + rb_define_const(rb_mSockConst, "PF_LOCAL", INTEGER2NUM(PF_LOCAL)); +#endif +#if defined(AF_IMPLINK) + /* ARPANET IMP protocol */ + rb_define_const(rb_cSocket, "AF_IMPLINK", INTEGER2NUM(AF_IMPLINK)); + /* ARPANET IMP protocol */ + rb_define_const(rb_mSockConst, "AF_IMPLINK", INTEGER2NUM(AF_IMPLINK)); +#endif +#if defined(PF_IMPLINK) + /* ARPANET IMP protocol */ + rb_define_const(rb_cSocket, "PF_IMPLINK", INTEGER2NUM(PF_IMPLINK)); + /* ARPANET IMP protocol */ + rb_define_const(rb_mSockConst, "PF_IMPLINK", INTEGER2NUM(PF_IMPLINK)); +#endif +#if defined(AF_PUP) + /* PARC Universal Packet protocol */ + rb_define_const(rb_cSocket, "AF_PUP", INTEGER2NUM(AF_PUP)); + /* PARC Universal Packet protocol */ + rb_define_const(rb_mSockConst, "AF_PUP", INTEGER2NUM(AF_PUP)); +#endif +#if defined(PF_PUP) + /* PARC Universal Packet protocol */ + rb_define_const(rb_cSocket, "PF_PUP", INTEGER2NUM(PF_PUP)); + /* PARC Universal Packet protocol */ + rb_define_const(rb_mSockConst, "PF_PUP", INTEGER2NUM(PF_PUP)); +#endif +#if defined(AF_CHAOS) + /* MIT CHAOS protocols */ + rb_define_const(rb_cSocket, "AF_CHAOS", INTEGER2NUM(AF_CHAOS)); + /* MIT CHAOS protocols */ + rb_define_const(rb_mSockConst, "AF_CHAOS", INTEGER2NUM(AF_CHAOS)); +#endif +#if defined(PF_CHAOS) + /* MIT CHAOS protocols */ + rb_define_const(rb_cSocket, "PF_CHAOS", INTEGER2NUM(PF_CHAOS)); + /* MIT CHAOS protocols */ + rb_define_const(rb_mSockConst, "PF_CHAOS", INTEGER2NUM(PF_CHAOS)); +#endif +#if defined(AF_NS) + /* XEROX NS protocols */ + rb_define_const(rb_cSocket, "AF_NS", INTEGER2NUM(AF_NS)); + /* XEROX NS protocols */ + rb_define_const(rb_mSockConst, "AF_NS", INTEGER2NUM(AF_NS)); +#endif +#if defined(PF_NS) + /* XEROX NS protocols */ + rb_define_const(rb_cSocket, "PF_NS", INTEGER2NUM(PF_NS)); + /* XEROX NS protocols */ + rb_define_const(rb_mSockConst, "PF_NS", INTEGER2NUM(PF_NS)); +#endif +#if defined(AF_ISO) + /* ISO Open Systems Interconnection protocols */ + rb_define_const(rb_cSocket, "AF_ISO", INTEGER2NUM(AF_ISO)); + /* ISO Open Systems Interconnection protocols */ + rb_define_const(rb_mSockConst, "AF_ISO", INTEGER2NUM(AF_ISO)); +#endif +#if defined(PF_ISO) + /* ISO Open Systems Interconnection protocols */ + rb_define_const(rb_cSocket, "PF_ISO", INTEGER2NUM(PF_ISO)); + /* ISO Open Systems Interconnection protocols */ + rb_define_const(rb_mSockConst, "PF_ISO", INTEGER2NUM(PF_ISO)); +#endif +#if defined(AF_OSI) + /* ISO Open Systems Interconnection protocols */ + rb_define_const(rb_cSocket, "AF_OSI", INTEGER2NUM(AF_OSI)); + /* ISO Open Systems Interconnection protocols */ + rb_define_const(rb_mSockConst, "AF_OSI", INTEGER2NUM(AF_OSI)); +#endif +#if defined(PF_OSI) + /* ISO Open Systems Interconnection protocols */ + rb_define_const(rb_cSocket, "PF_OSI", INTEGER2NUM(PF_OSI)); + /* ISO Open Systems Interconnection protocols */ + rb_define_const(rb_mSockConst, "PF_OSI", INTEGER2NUM(PF_OSI)); +#endif +#if defined(AF_ECMA) + /* European Computer Manufacturers protocols */ + rb_define_const(rb_cSocket, "AF_ECMA", INTEGER2NUM(AF_ECMA)); + /* European Computer Manufacturers protocols */ + rb_define_const(rb_mSockConst, "AF_ECMA", INTEGER2NUM(AF_ECMA)); +#endif +#if defined(PF_ECMA) + /* European Computer Manufacturers protocols */ + rb_define_const(rb_cSocket, "PF_ECMA", INTEGER2NUM(PF_ECMA)); + /* European Computer Manufacturers protocols */ + rb_define_const(rb_mSockConst, "PF_ECMA", INTEGER2NUM(PF_ECMA)); +#endif +#if defined(AF_DATAKIT) + /* Datakit protocol */ + rb_define_const(rb_cSocket, "AF_DATAKIT", INTEGER2NUM(AF_DATAKIT)); + /* Datakit protocol */ + rb_define_const(rb_mSockConst, "AF_DATAKIT", INTEGER2NUM(AF_DATAKIT)); +#endif +#if defined(PF_DATAKIT) + /* Datakit protocol */ + rb_define_const(rb_cSocket, "PF_DATAKIT", INTEGER2NUM(PF_DATAKIT)); + /* Datakit protocol */ + rb_define_const(rb_mSockConst, "PF_DATAKIT", INTEGER2NUM(PF_DATAKIT)); +#endif +#if defined(AF_CCITT) + /* CCITT (now ITU-T) protocols */ + rb_define_const(rb_cSocket, "AF_CCITT", INTEGER2NUM(AF_CCITT)); + /* CCITT (now ITU-T) protocols */ + rb_define_const(rb_mSockConst, "AF_CCITT", INTEGER2NUM(AF_CCITT)); +#endif +#if defined(PF_CCITT) + /* CCITT (now ITU-T) protocols */ + rb_define_const(rb_cSocket, "PF_CCITT", INTEGER2NUM(PF_CCITT)); + /* CCITT (now ITU-T) protocols */ + rb_define_const(rb_mSockConst, "PF_CCITT", INTEGER2NUM(PF_CCITT)); +#endif +#if defined(AF_SNA) + /* IBM SNA protocol */ + rb_define_const(rb_cSocket, "AF_SNA", INTEGER2NUM(AF_SNA)); + /* IBM SNA protocol */ + rb_define_const(rb_mSockConst, "AF_SNA", INTEGER2NUM(AF_SNA)); +#endif +#if defined(PF_SNA) + /* IBM SNA protocol */ + rb_define_const(rb_cSocket, "PF_SNA", INTEGER2NUM(PF_SNA)); + /* IBM SNA protocol */ + rb_define_const(rb_mSockConst, "PF_SNA", INTEGER2NUM(PF_SNA)); +#endif +#if defined(AF_DEC) + /* DECnet protocol */ + rb_define_const(rb_cSocket, "AF_DEC", INTEGER2NUM(AF_DEC)); + /* DECnet protocol */ + rb_define_const(rb_mSockConst, "AF_DEC", INTEGER2NUM(AF_DEC)); +#endif +#if defined(PF_DEC) + /* DECnet protocol */ + rb_define_const(rb_cSocket, "PF_DEC", INTEGER2NUM(PF_DEC)); + /* DECnet protocol */ + rb_define_const(rb_mSockConst, "PF_DEC", INTEGER2NUM(PF_DEC)); +#endif +#if defined(AF_DLI) + /* DEC Direct Data Link Interface protocol */ + rb_define_const(rb_cSocket, "AF_DLI", INTEGER2NUM(AF_DLI)); + /* DEC Direct Data Link Interface protocol */ + rb_define_const(rb_mSockConst, "AF_DLI", INTEGER2NUM(AF_DLI)); +#endif +#if defined(PF_DLI) + /* DEC Direct Data Link Interface protocol */ + rb_define_const(rb_cSocket, "PF_DLI", INTEGER2NUM(PF_DLI)); + /* DEC Direct Data Link Interface protocol */ + rb_define_const(rb_mSockConst, "PF_DLI", INTEGER2NUM(PF_DLI)); +#endif +#if defined(AF_LAT) + /* Local Area Transport protocol */ + rb_define_const(rb_cSocket, "AF_LAT", INTEGER2NUM(AF_LAT)); + /* Local Area Transport protocol */ + rb_define_const(rb_mSockConst, "AF_LAT", INTEGER2NUM(AF_LAT)); +#endif +#if defined(PF_LAT) + /* Local Area Transport protocol */ + rb_define_const(rb_cSocket, "PF_LAT", INTEGER2NUM(PF_LAT)); + /* Local Area Transport protocol */ + rb_define_const(rb_mSockConst, "PF_LAT", INTEGER2NUM(PF_LAT)); +#endif +#if defined(AF_HYLINK) + /* NSC Hyperchannel protocol */ + rb_define_const(rb_cSocket, "AF_HYLINK", INTEGER2NUM(AF_HYLINK)); + /* NSC Hyperchannel protocol */ + rb_define_const(rb_mSockConst, "AF_HYLINK", INTEGER2NUM(AF_HYLINK)); +#endif +#if defined(PF_HYLINK) + /* NSC Hyperchannel protocol */ + rb_define_const(rb_cSocket, "PF_HYLINK", INTEGER2NUM(PF_HYLINK)); + /* NSC Hyperchannel protocol */ + rb_define_const(rb_mSockConst, "PF_HYLINK", INTEGER2NUM(PF_HYLINK)); +#endif +#if defined(AF_ROUTE) + /* Internal routing protocol */ + rb_define_const(rb_cSocket, "AF_ROUTE", INTEGER2NUM(AF_ROUTE)); + /* Internal routing protocol */ + rb_define_const(rb_mSockConst, "AF_ROUTE", INTEGER2NUM(AF_ROUTE)); +#endif +#if defined(PF_ROUTE) + /* Internal routing protocol */ + rb_define_const(rb_cSocket, "PF_ROUTE", INTEGER2NUM(PF_ROUTE)); + /* Internal routing protocol */ + rb_define_const(rb_mSockConst, "PF_ROUTE", INTEGER2NUM(PF_ROUTE)); +#endif +#if defined(AF_LINK) + /* Link layer interface */ + rb_define_const(rb_cSocket, "AF_LINK", INTEGER2NUM(AF_LINK)); + /* Link layer interface */ + rb_define_const(rb_mSockConst, "AF_LINK", INTEGER2NUM(AF_LINK)); +#endif +#if defined(PF_LINK) + /* Link layer interface */ + rb_define_const(rb_cSocket, "PF_LINK", INTEGER2NUM(PF_LINK)); + /* Link layer interface */ + rb_define_const(rb_mSockConst, "PF_LINK", INTEGER2NUM(PF_LINK)); +#endif +#if defined(AF_COIP) + /* Connection-oriented IP */ + rb_define_const(rb_cSocket, "AF_COIP", INTEGER2NUM(AF_COIP)); + /* Connection-oriented IP */ + rb_define_const(rb_mSockConst, "AF_COIP", INTEGER2NUM(AF_COIP)); +#endif +#if defined(PF_COIP) + /* Connection-oriented IP */ + rb_define_const(rb_cSocket, "PF_COIP", INTEGER2NUM(PF_COIP)); + /* Connection-oriented IP */ + rb_define_const(rb_mSockConst, "PF_COIP", INTEGER2NUM(PF_COIP)); +#endif +#if defined(AF_CNT) + /* Computer Network Technology */ + rb_define_const(rb_cSocket, "AF_CNT", INTEGER2NUM(AF_CNT)); + /* Computer Network Technology */ + rb_define_const(rb_mSockConst, "AF_CNT", INTEGER2NUM(AF_CNT)); +#endif +#if defined(PF_CNT) + /* Computer Network Technology */ + rb_define_const(rb_cSocket, "PF_CNT", INTEGER2NUM(PF_CNT)); + /* Computer Network Technology */ + rb_define_const(rb_mSockConst, "PF_CNT", INTEGER2NUM(PF_CNT)); +#endif +#if defined(AF_SIP) + /* Simple Internet Protocol */ + rb_define_const(rb_cSocket, "AF_SIP", INTEGER2NUM(AF_SIP)); + /* Simple Internet Protocol */ + rb_define_const(rb_mSockConst, "AF_SIP", INTEGER2NUM(AF_SIP)); +#endif +#if defined(PF_SIP) + /* Simple Internet Protocol */ + rb_define_const(rb_cSocket, "PF_SIP", INTEGER2NUM(PF_SIP)); + /* Simple Internet Protocol */ + rb_define_const(rb_mSockConst, "PF_SIP", INTEGER2NUM(PF_SIP)); +#endif +#if defined(AF_NDRV) + /* Network driver raw access */ + rb_define_const(rb_cSocket, "AF_NDRV", INTEGER2NUM(AF_NDRV)); + /* Network driver raw access */ + rb_define_const(rb_mSockConst, "AF_NDRV", INTEGER2NUM(AF_NDRV)); +#endif +#if defined(PF_NDRV) + /* Network driver raw access */ + rb_define_const(rb_cSocket, "PF_NDRV", INTEGER2NUM(PF_NDRV)); + /* Network driver raw access */ + rb_define_const(rb_mSockConst, "PF_NDRV", INTEGER2NUM(PF_NDRV)); +#endif +#if defined(AF_ISDN) + /* Integrated Services Digital Network */ + rb_define_const(rb_cSocket, "AF_ISDN", INTEGER2NUM(AF_ISDN)); + /* Integrated Services Digital Network */ + rb_define_const(rb_mSockConst, "AF_ISDN", INTEGER2NUM(AF_ISDN)); +#endif +#if defined(PF_ISDN) + /* Integrated Services Digital Network */ + rb_define_const(rb_cSocket, "PF_ISDN", INTEGER2NUM(PF_ISDN)); + /* Integrated Services Digital Network */ + rb_define_const(rb_mSockConst, "PF_ISDN", INTEGER2NUM(PF_ISDN)); +#endif +#if defined(AF_NATM) + /* Native ATM access */ + rb_define_const(rb_cSocket, "AF_NATM", INTEGER2NUM(AF_NATM)); + /* Native ATM access */ + rb_define_const(rb_mSockConst, "AF_NATM", INTEGER2NUM(AF_NATM)); +#endif +#if defined(PF_NATM) + /* Native ATM access */ + rb_define_const(rb_cSocket, "PF_NATM", INTEGER2NUM(PF_NATM)); + /* Native ATM access */ + rb_define_const(rb_mSockConst, "PF_NATM", INTEGER2NUM(PF_NATM)); +#endif +#if defined(AF_SYSTEM) + /* */ + rb_define_const(rb_cSocket, "AF_SYSTEM", INTEGER2NUM(AF_SYSTEM)); + /* */ + rb_define_const(rb_mSockConst, "AF_SYSTEM", INTEGER2NUM(AF_SYSTEM)); +#endif +#if defined(PF_SYSTEM) + /* */ + rb_define_const(rb_cSocket, "PF_SYSTEM", INTEGER2NUM(PF_SYSTEM)); + /* */ + rb_define_const(rb_mSockConst, "PF_SYSTEM", INTEGER2NUM(PF_SYSTEM)); +#endif +#if defined(AF_NETBIOS) + /* NetBIOS */ + rb_define_const(rb_cSocket, "AF_NETBIOS", INTEGER2NUM(AF_NETBIOS)); + /* NetBIOS */ + rb_define_const(rb_mSockConst, "AF_NETBIOS", INTEGER2NUM(AF_NETBIOS)); +#endif +#if defined(PF_NETBIOS) + /* NetBIOS */ + rb_define_const(rb_cSocket, "PF_NETBIOS", INTEGER2NUM(PF_NETBIOS)); + /* NetBIOS */ + rb_define_const(rb_mSockConst, "PF_NETBIOS", INTEGER2NUM(PF_NETBIOS)); +#endif +#if defined(AF_PPP) + /* Point-to-Point Protocol */ + rb_define_const(rb_cSocket, "AF_PPP", INTEGER2NUM(AF_PPP)); + /* Point-to-Point Protocol */ + rb_define_const(rb_mSockConst, "AF_PPP", INTEGER2NUM(AF_PPP)); +#endif +#if defined(PF_PPP) + /* Point-to-Point Protocol */ + rb_define_const(rb_cSocket, "PF_PPP", INTEGER2NUM(PF_PPP)); + /* Point-to-Point Protocol */ + rb_define_const(rb_mSockConst, "PF_PPP", INTEGER2NUM(PF_PPP)); +#endif +#if defined(AF_ATM) + /* Asynchronous Transfer Mode */ + rb_define_const(rb_cSocket, "AF_ATM", INTEGER2NUM(AF_ATM)); + /* Asynchronous Transfer Mode */ + rb_define_const(rb_mSockConst, "AF_ATM", INTEGER2NUM(AF_ATM)); +#endif +#if defined(PF_ATM) + /* Asynchronous Transfer Mode */ + rb_define_const(rb_cSocket, "PF_ATM", INTEGER2NUM(PF_ATM)); + /* Asynchronous Transfer Mode */ + rb_define_const(rb_mSockConst, "PF_ATM", INTEGER2NUM(PF_ATM)); +#endif +#if defined(AF_NETGRAPH) + /* Netgraph sockets */ + rb_define_const(rb_cSocket, "AF_NETGRAPH", INTEGER2NUM(AF_NETGRAPH)); + /* Netgraph sockets */ + rb_define_const(rb_mSockConst, "AF_NETGRAPH", INTEGER2NUM(AF_NETGRAPH)); +#endif +#if defined(PF_NETGRAPH) + /* Netgraph sockets */ + rb_define_const(rb_cSocket, "PF_NETGRAPH", INTEGER2NUM(PF_NETGRAPH)); + /* Netgraph sockets */ + rb_define_const(rb_mSockConst, "PF_NETGRAPH", INTEGER2NUM(PF_NETGRAPH)); +#endif +#if defined(AF_MAX) + /* Maximum address family for this platform */ + rb_define_const(rb_cSocket, "AF_MAX", INTEGER2NUM(AF_MAX)); + /* Maximum address family for this platform */ + rb_define_const(rb_mSockConst, "AF_MAX", INTEGER2NUM(AF_MAX)); +#endif +#if defined(PF_MAX) + /* Maximum address family for this platform */ + rb_define_const(rb_cSocket, "PF_MAX", INTEGER2NUM(PF_MAX)); + /* Maximum address family for this platform */ + rb_define_const(rb_mSockConst, "PF_MAX", INTEGER2NUM(PF_MAX)); +#endif +#if defined(AF_PACKET) + /* Direct link-layer access */ + rb_define_const(rb_cSocket, "AF_PACKET", INTEGER2NUM(AF_PACKET)); + /* Direct link-layer access */ + rb_define_const(rb_mSockConst, "AF_PACKET", INTEGER2NUM(AF_PACKET)); +#endif +#if defined(PF_PACKET) + /* Direct link-layer access */ + rb_define_const(rb_cSocket, "PF_PACKET", INTEGER2NUM(PF_PACKET)); + /* Direct link-layer access */ + rb_define_const(rb_mSockConst, "PF_PACKET", INTEGER2NUM(PF_PACKET)); +#endif +#if defined(AF_E164) + /* CCITT (ITU-T) E.164 recommendation */ + rb_define_const(rb_cSocket, "AF_E164", INTEGER2NUM(AF_E164)); + /* CCITT (ITU-T) E.164 recommendation */ + rb_define_const(rb_mSockConst, "AF_E164", INTEGER2NUM(AF_E164)); +#endif +#if defined(PF_XTP) + /* eXpress Transfer Protocol */ + rb_define_const(rb_cSocket, "PF_XTP", INTEGER2NUM(PF_XTP)); + /* eXpress Transfer Protocol */ + rb_define_const(rb_mSockConst, "PF_XTP", INTEGER2NUM(PF_XTP)); +#endif +#if defined(PF_RTIP) + /* */ + rb_define_const(rb_cSocket, "PF_RTIP", INTEGER2NUM(PF_RTIP)); + /* */ + rb_define_const(rb_mSockConst, "PF_RTIP", INTEGER2NUM(PF_RTIP)); +#endif +#if defined(PF_PIP) + /* */ + rb_define_const(rb_cSocket, "PF_PIP", INTEGER2NUM(PF_PIP)); + /* */ + rb_define_const(rb_mSockConst, "PF_PIP", INTEGER2NUM(PF_PIP)); +#endif +#if defined(PF_KEY) + /* */ + rb_define_const(rb_cSocket, "PF_KEY", INTEGER2NUM(PF_KEY)); + /* */ + rb_define_const(rb_mSockConst, "PF_KEY", INTEGER2NUM(PF_KEY)); +#endif +#if defined(MSG_OOB) + /* Process out-of-band data */ + rb_define_const(rb_cSocket, "MSG_OOB", INTEGER2NUM(MSG_OOB)); + /* Process out-of-band data */ + rb_define_const(rb_mSockConst, "MSG_OOB", INTEGER2NUM(MSG_OOB)); +#endif +#if defined(MSG_PEEK) + /* Peek at incoming message */ + rb_define_const(rb_cSocket, "MSG_PEEK", INTEGER2NUM(MSG_PEEK)); + /* Peek at incoming message */ + rb_define_const(rb_mSockConst, "MSG_PEEK", INTEGER2NUM(MSG_PEEK)); +#endif +#if defined(MSG_DONTROUTE) + /* Send without using the routing tables */ + rb_define_const(rb_cSocket, "MSG_DONTROUTE", INTEGER2NUM(MSG_DONTROUTE)); + /* Send without using the routing tables */ + rb_define_const(rb_mSockConst, "MSG_DONTROUTE", INTEGER2NUM(MSG_DONTROUTE)); +#endif +#if defined(MSG_EOR) + /* Data completes record */ + rb_define_const(rb_cSocket, "MSG_EOR", INTEGER2NUM(MSG_EOR)); + /* Data completes record */ + rb_define_const(rb_mSockConst, "MSG_EOR", INTEGER2NUM(MSG_EOR)); +#endif +#if defined(MSG_TRUNC) + /* Data discarded before delivery */ + rb_define_const(rb_cSocket, "MSG_TRUNC", INTEGER2NUM(MSG_TRUNC)); + /* Data discarded before delivery */ + rb_define_const(rb_mSockConst, "MSG_TRUNC", INTEGER2NUM(MSG_TRUNC)); +#endif +#if defined(MSG_CTRUNC) + /* Control data lost before delivery */ + rb_define_const(rb_cSocket, "MSG_CTRUNC", INTEGER2NUM(MSG_CTRUNC)); + /* Control data lost before delivery */ + rb_define_const(rb_mSockConst, "MSG_CTRUNC", INTEGER2NUM(MSG_CTRUNC)); +#endif +#if defined(MSG_WAITALL) + /* Wait for full request or error */ + rb_define_const(rb_cSocket, "MSG_WAITALL", INTEGER2NUM(MSG_WAITALL)); + /* Wait for full request or error */ + rb_define_const(rb_mSockConst, "MSG_WAITALL", INTEGER2NUM(MSG_WAITALL)); +#endif +#if defined(MSG_DONTWAIT) + /* This message should be non-blocking */ + rb_define_const(rb_cSocket, "MSG_DONTWAIT", INTEGER2NUM(MSG_DONTWAIT)); + /* This message should be non-blocking */ + rb_define_const(rb_mSockConst, "MSG_DONTWAIT", INTEGER2NUM(MSG_DONTWAIT)); +#endif +#if defined(MSG_EOF) + /* Data completes connection */ + rb_define_const(rb_cSocket, "MSG_EOF", INTEGER2NUM(MSG_EOF)); + /* Data completes connection */ + rb_define_const(rb_mSockConst, "MSG_EOF", INTEGER2NUM(MSG_EOF)); +#endif +#if defined(MSG_FLUSH) + /* Start of a hold sequence. Dumps to so_temp */ + rb_define_const(rb_cSocket, "MSG_FLUSH", INTEGER2NUM(MSG_FLUSH)); + /* Start of a hold sequence. Dumps to so_temp */ + rb_define_const(rb_mSockConst, "MSG_FLUSH", INTEGER2NUM(MSG_FLUSH)); +#endif +#if defined(MSG_HOLD) + /* Hold fragment in so_temp */ + rb_define_const(rb_cSocket, "MSG_HOLD", INTEGER2NUM(MSG_HOLD)); + /* Hold fragment in so_temp */ + rb_define_const(rb_mSockConst, "MSG_HOLD", INTEGER2NUM(MSG_HOLD)); +#endif +#if defined(MSG_SEND) + /* Send the packet in so_temp */ + rb_define_const(rb_cSocket, "MSG_SEND", INTEGER2NUM(MSG_SEND)); + /* Send the packet in so_temp */ + rb_define_const(rb_mSockConst, "MSG_SEND", INTEGER2NUM(MSG_SEND)); +#endif +#if defined(MSG_HAVEMORE) + /* Data ready to be read */ + rb_define_const(rb_cSocket, "MSG_HAVEMORE", INTEGER2NUM(MSG_HAVEMORE)); + /* Data ready to be read */ + rb_define_const(rb_mSockConst, "MSG_HAVEMORE", INTEGER2NUM(MSG_HAVEMORE)); +#endif +#if defined(MSG_RCVMORE) + /* Data remains in the current packet */ + rb_define_const(rb_cSocket, "MSG_RCVMORE", INTEGER2NUM(MSG_RCVMORE)); + /* Data remains in the current packet */ + rb_define_const(rb_mSockConst, "MSG_RCVMORE", INTEGER2NUM(MSG_RCVMORE)); +#endif +#if defined(MSG_COMPAT) + /* End of record */ + rb_define_const(rb_cSocket, "MSG_COMPAT", INTEGER2NUM(MSG_COMPAT)); + /* End of record */ + rb_define_const(rb_mSockConst, "MSG_COMPAT", INTEGER2NUM(MSG_COMPAT)); +#endif +#if defined(MSG_PROXY) + /* Wait for full request */ + rb_define_const(rb_cSocket, "MSG_PROXY", INTEGER2NUM(MSG_PROXY)); + /* Wait for full request */ + rb_define_const(rb_mSockConst, "MSG_PROXY", INTEGER2NUM(MSG_PROXY)); +#endif +#if defined(MSG_FIN) + /* */ + rb_define_const(rb_cSocket, "MSG_FIN", INTEGER2NUM(MSG_FIN)); + /* */ + rb_define_const(rb_mSockConst, "MSG_FIN", INTEGER2NUM(MSG_FIN)); +#endif +#if defined(MSG_SYN) + /* */ + rb_define_const(rb_cSocket, "MSG_SYN", INTEGER2NUM(MSG_SYN)); + /* */ + rb_define_const(rb_mSockConst, "MSG_SYN", INTEGER2NUM(MSG_SYN)); +#endif +#if defined(MSG_CONFIRM) + /* Confirm path validity */ + rb_define_const(rb_cSocket, "MSG_CONFIRM", INTEGER2NUM(MSG_CONFIRM)); + /* Confirm path validity */ + rb_define_const(rb_mSockConst, "MSG_CONFIRM", INTEGER2NUM(MSG_CONFIRM)); +#endif +#if defined(MSG_RST) + /* */ + rb_define_const(rb_cSocket, "MSG_RST", INTEGER2NUM(MSG_RST)); + /* */ + rb_define_const(rb_mSockConst, "MSG_RST", INTEGER2NUM(MSG_RST)); +#endif +#if defined(MSG_ERRQUEUE) + /* Fetch message from error queue */ + rb_define_const(rb_cSocket, "MSG_ERRQUEUE", INTEGER2NUM(MSG_ERRQUEUE)); + /* Fetch message from error queue */ + rb_define_const(rb_mSockConst, "MSG_ERRQUEUE", INTEGER2NUM(MSG_ERRQUEUE)); +#endif +#if defined(MSG_NOSIGNAL) + /* Do not generate SIGPIPE */ + rb_define_const(rb_cSocket, "MSG_NOSIGNAL", INTEGER2NUM(MSG_NOSIGNAL)); + /* Do not generate SIGPIPE */ + rb_define_const(rb_mSockConst, "MSG_NOSIGNAL", INTEGER2NUM(MSG_NOSIGNAL)); +#endif +#if defined(MSG_MORE) + /* Sender will send more */ + rb_define_const(rb_cSocket, "MSG_MORE", INTEGER2NUM(MSG_MORE)); + /* Sender will send more */ + rb_define_const(rb_mSockConst, "MSG_MORE", INTEGER2NUM(MSG_MORE)); +#endif +#if defined(MSG_FASTOPEN) + /* Reduce step of the handshake process */ + rb_define_const(rb_cSocket, "MSG_FASTOPEN", INTEGER2NUM(MSG_FASTOPEN)); + /* Reduce step of the handshake process */ + rb_define_const(rb_mSockConst, "MSG_FASTOPEN", INTEGER2NUM(MSG_FASTOPEN)); +#endif +#if defined(SOL_SOCKET) + /* Socket-level options */ + rb_define_const(rb_cSocket, "SOL_SOCKET", INTEGER2NUM(SOL_SOCKET)); + /* Socket-level options */ + rb_define_const(rb_mSockConst, "SOL_SOCKET", INTEGER2NUM(SOL_SOCKET)); +#endif +#if defined(SOL_IP) + /* IP socket options */ + rb_define_const(rb_cSocket, "SOL_IP", INTEGER2NUM(SOL_IP)); + /* IP socket options */ + rb_define_const(rb_mSockConst, "SOL_IP", INTEGER2NUM(SOL_IP)); +#endif +#if defined(SOL_IPX) + /* IPX socket options */ + rb_define_const(rb_cSocket, "SOL_IPX", INTEGER2NUM(SOL_IPX)); + /* IPX socket options */ + rb_define_const(rb_mSockConst, "SOL_IPX", INTEGER2NUM(SOL_IPX)); +#endif +#if defined(SOL_AX25) + /* AX.25 socket options */ + rb_define_const(rb_cSocket, "SOL_AX25", INTEGER2NUM(SOL_AX25)); + /* AX.25 socket options */ + rb_define_const(rb_mSockConst, "SOL_AX25", INTEGER2NUM(SOL_AX25)); +#endif +#if defined(SOL_ATALK) + /* AppleTalk socket options */ + rb_define_const(rb_cSocket, "SOL_ATALK", INTEGER2NUM(SOL_ATALK)); + /* AppleTalk socket options */ + rb_define_const(rb_mSockConst, "SOL_ATALK", INTEGER2NUM(SOL_ATALK)); +#endif +#if defined(SOL_TCP) + /* TCP socket options */ + rb_define_const(rb_cSocket, "SOL_TCP", INTEGER2NUM(SOL_TCP)); + /* TCP socket options */ + rb_define_const(rb_mSockConst, "SOL_TCP", INTEGER2NUM(SOL_TCP)); +#endif +#if defined(SOL_UDP) + /* UDP socket options */ + rb_define_const(rb_cSocket, "SOL_UDP", INTEGER2NUM(SOL_UDP)); + /* UDP socket options */ + rb_define_const(rb_mSockConst, "SOL_UDP", INTEGER2NUM(SOL_UDP)); +#endif +#if defined(IPPROTO_IP) + /* Dummy protocol for IP */ + rb_define_const(rb_cSocket, "IPPROTO_IP", INTEGER2NUM(IPPROTO_IP)); + /* Dummy protocol for IP */ + rb_define_const(rb_mSockConst, "IPPROTO_IP", INTEGER2NUM(IPPROTO_IP)); +#endif +#if defined(IPPROTO_ICMP) + /* Control message protocol */ + rb_define_const(rb_cSocket, "IPPROTO_ICMP", INTEGER2NUM(IPPROTO_ICMP)); + /* Control message protocol */ + rb_define_const(rb_mSockConst, "IPPROTO_ICMP", INTEGER2NUM(IPPROTO_ICMP)); +#endif +#if defined(IPPROTO_IGMP) + /* Group Management Protocol */ + rb_define_const(rb_cSocket, "IPPROTO_IGMP", INTEGER2NUM(IPPROTO_IGMP)); + /* Group Management Protocol */ + rb_define_const(rb_mSockConst, "IPPROTO_IGMP", INTEGER2NUM(IPPROTO_IGMP)); +#endif +#if defined(IPPROTO_GGP) + /* Gateway to Gateway Protocol */ + rb_define_const(rb_cSocket, "IPPROTO_GGP", INTEGER2NUM(IPPROTO_GGP)); + /* Gateway to Gateway Protocol */ + rb_define_const(rb_mSockConst, "IPPROTO_GGP", INTEGER2NUM(IPPROTO_GGP)); +#endif +#if defined(IPPROTO_TCP) + /* TCP */ + rb_define_const(rb_cSocket, "IPPROTO_TCP", INTEGER2NUM(IPPROTO_TCP)); + /* TCP */ + rb_define_const(rb_mSockConst, "IPPROTO_TCP", INTEGER2NUM(IPPROTO_TCP)); +#endif +#if defined(IPPROTO_EGP) + /* Exterior Gateway Protocol */ + rb_define_const(rb_cSocket, "IPPROTO_EGP", INTEGER2NUM(IPPROTO_EGP)); + /* Exterior Gateway Protocol */ + rb_define_const(rb_mSockConst, "IPPROTO_EGP", INTEGER2NUM(IPPROTO_EGP)); +#endif +#if defined(IPPROTO_PUP) + /* PARC Universal Packet protocol */ + rb_define_const(rb_cSocket, "IPPROTO_PUP", INTEGER2NUM(IPPROTO_PUP)); + /* PARC Universal Packet protocol */ + rb_define_const(rb_mSockConst, "IPPROTO_PUP", INTEGER2NUM(IPPROTO_PUP)); +#endif +#if defined(IPPROTO_UDP) + /* UDP */ + rb_define_const(rb_cSocket, "IPPROTO_UDP", INTEGER2NUM(IPPROTO_UDP)); + /* UDP */ + rb_define_const(rb_mSockConst, "IPPROTO_UDP", INTEGER2NUM(IPPROTO_UDP)); +#endif +#if defined(IPPROTO_IDP) + /* XNS IDP */ + rb_define_const(rb_cSocket, "IPPROTO_IDP", INTEGER2NUM(IPPROTO_IDP)); + /* XNS IDP */ + rb_define_const(rb_mSockConst, "IPPROTO_IDP", INTEGER2NUM(IPPROTO_IDP)); +#endif +#if defined(IPPROTO_HELLO) + /* "hello" routing protocol */ + rb_define_const(rb_cSocket, "IPPROTO_HELLO", INTEGER2NUM(IPPROTO_HELLO)); + /* "hello" routing protocol */ + rb_define_const(rb_mSockConst, "IPPROTO_HELLO", INTEGER2NUM(IPPROTO_HELLO)); +#endif +#if defined(IPPROTO_ND) + /* Sun net disk protocol */ + rb_define_const(rb_cSocket, "IPPROTO_ND", INTEGER2NUM(IPPROTO_ND)); + /* Sun net disk protocol */ + rb_define_const(rb_mSockConst, "IPPROTO_ND", INTEGER2NUM(IPPROTO_ND)); +#endif +#if defined(IPPROTO_TP) + /* ISO transport protocol class 4 */ + rb_define_const(rb_cSocket, "IPPROTO_TP", INTEGER2NUM(IPPROTO_TP)); + /* ISO transport protocol class 4 */ + rb_define_const(rb_mSockConst, "IPPROTO_TP", INTEGER2NUM(IPPROTO_TP)); +#endif +#if defined(IPPROTO_XTP) + /* Xpress Transport Protocol */ + rb_define_const(rb_cSocket, "IPPROTO_XTP", INTEGER2NUM(IPPROTO_XTP)); + /* Xpress Transport Protocol */ + rb_define_const(rb_mSockConst, "IPPROTO_XTP", INTEGER2NUM(IPPROTO_XTP)); +#endif +#if defined(IPPROTO_EON) + /* ISO cnlp */ + rb_define_const(rb_cSocket, "IPPROTO_EON", INTEGER2NUM(IPPROTO_EON)); + /* ISO cnlp */ + rb_define_const(rb_mSockConst, "IPPROTO_EON", INTEGER2NUM(IPPROTO_EON)); +#endif +#if defined(IPPROTO_BIP) + /* */ + rb_define_const(rb_cSocket, "IPPROTO_BIP", INTEGER2NUM(IPPROTO_BIP)); + /* */ + rb_define_const(rb_mSockConst, "IPPROTO_BIP", INTEGER2NUM(IPPROTO_BIP)); +#endif +#if defined(IPPROTO_AH) + /* IP6 auth header */ + rb_define_const(rb_cSocket, "IPPROTO_AH", INTEGER2NUM(IPPROTO_AH)); + /* IP6 auth header */ + rb_define_const(rb_mSockConst, "IPPROTO_AH", INTEGER2NUM(IPPROTO_AH)); +#endif +#if defined(IPPROTO_DSTOPTS) + /* IP6 destination option */ + rb_define_const(rb_cSocket, "IPPROTO_DSTOPTS", INTEGER2NUM(IPPROTO_DSTOPTS)); + /* IP6 destination option */ + rb_define_const(rb_mSockConst, "IPPROTO_DSTOPTS", INTEGER2NUM(IPPROTO_DSTOPTS)); +#endif +#if defined(IPPROTO_ESP) + /* IP6 Encapsulated Security Payload */ + rb_define_const(rb_cSocket, "IPPROTO_ESP", INTEGER2NUM(IPPROTO_ESP)); + /* IP6 Encapsulated Security Payload */ + rb_define_const(rb_mSockConst, "IPPROTO_ESP", INTEGER2NUM(IPPROTO_ESP)); +#endif +#if defined(IPPROTO_FRAGMENT) + /* IP6 fragmentation header */ + rb_define_const(rb_cSocket, "IPPROTO_FRAGMENT", INTEGER2NUM(IPPROTO_FRAGMENT)); + /* IP6 fragmentation header */ + rb_define_const(rb_mSockConst, "IPPROTO_FRAGMENT", INTEGER2NUM(IPPROTO_FRAGMENT)); +#endif +#if defined(IPPROTO_HOPOPTS) + /* IP6 hop-by-hop options */ + rb_define_const(rb_cSocket, "IPPROTO_HOPOPTS", INTEGER2NUM(IPPROTO_HOPOPTS)); + /* IP6 hop-by-hop options */ + rb_define_const(rb_mSockConst, "IPPROTO_HOPOPTS", INTEGER2NUM(IPPROTO_HOPOPTS)); +#endif +#if defined(IPPROTO_ICMPV6) + /* ICMP6 */ + rb_define_const(rb_cSocket, "IPPROTO_ICMPV6", INTEGER2NUM(IPPROTO_ICMPV6)); + /* ICMP6 */ + rb_define_const(rb_mSockConst, "IPPROTO_ICMPV6", INTEGER2NUM(IPPROTO_ICMPV6)); +#endif +#if defined(IPPROTO_IPV6) + /* IP6 header */ + rb_define_const(rb_cSocket, "IPPROTO_IPV6", INTEGER2NUM(IPPROTO_IPV6)); + /* IP6 header */ + rb_define_const(rb_mSockConst, "IPPROTO_IPV6", INTEGER2NUM(IPPROTO_IPV6)); +#endif +#if defined(IPPROTO_NONE) + /* IP6 no next header */ + rb_define_const(rb_cSocket, "IPPROTO_NONE", INTEGER2NUM(IPPROTO_NONE)); + /* IP6 no next header */ + rb_define_const(rb_mSockConst, "IPPROTO_NONE", INTEGER2NUM(IPPROTO_NONE)); +#endif +#if defined(IPPROTO_ROUTING) + /* IP6 routing header */ + rb_define_const(rb_cSocket, "IPPROTO_ROUTING", INTEGER2NUM(IPPROTO_ROUTING)); + /* IP6 routing header */ + rb_define_const(rb_mSockConst, "IPPROTO_ROUTING", INTEGER2NUM(IPPROTO_ROUTING)); +#endif +#if defined(IPPROTO_RAW) + /* Raw IP packet */ + rb_define_const(rb_cSocket, "IPPROTO_RAW", INTEGER2NUM(IPPROTO_RAW)); + /* Raw IP packet */ + rb_define_const(rb_mSockConst, "IPPROTO_RAW", INTEGER2NUM(IPPROTO_RAW)); +#endif +#if defined(IPPROTO_MAX) + /* Maximum IPPROTO constant */ + rb_define_const(rb_cSocket, "IPPROTO_MAX", INTEGER2NUM(IPPROTO_MAX)); + /* Maximum IPPROTO constant */ + rb_define_const(rb_mSockConst, "IPPROTO_MAX", INTEGER2NUM(IPPROTO_MAX)); +#endif +#if defined(IPPORT_RESERVED) + /* Default minimum address for bind or connect */ + rb_define_const(rb_cSocket, "IPPORT_RESERVED", INTEGER2NUM(IPPORT_RESERVED)); + /* Default minimum address for bind or connect */ + rb_define_const(rb_mSockConst, "IPPORT_RESERVED", INTEGER2NUM(IPPORT_RESERVED)); +#endif +#if defined(IPPORT_USERRESERVED) + /* Default maximum address for bind or connect */ + rb_define_const(rb_cSocket, "IPPORT_USERRESERVED", INTEGER2NUM(IPPORT_USERRESERVED)); + /* Default maximum address for bind or connect */ + rb_define_const(rb_mSockConst, "IPPORT_USERRESERVED", INTEGER2NUM(IPPORT_USERRESERVED)); +#endif +#if defined(INADDR_ANY) + /* A socket bound to INADDR_ANY receives packets from all interfaces and sends from the default IP address */ + rb_define_const(rb_cSocket, "INADDR_ANY", INTEGER2NUM(INADDR_ANY)); + /* A socket bound to INADDR_ANY receives packets from all interfaces and sends from the default IP address */ + rb_define_const(rb_mSockConst, "INADDR_ANY", INTEGER2NUM(INADDR_ANY)); +#endif +#if defined(INADDR_BROADCAST) + /* The network broadcast address */ + rb_define_const(rb_cSocket, "INADDR_BROADCAST", INTEGER2NUM(INADDR_BROADCAST)); + /* The network broadcast address */ + rb_define_const(rb_mSockConst, "INADDR_BROADCAST", INTEGER2NUM(INADDR_BROADCAST)); +#endif +#if defined(INADDR_LOOPBACK) + /* The loopback address */ + rb_define_const(rb_cSocket, "INADDR_LOOPBACK", INTEGER2NUM(INADDR_LOOPBACK)); + /* The loopback address */ + rb_define_const(rb_mSockConst, "INADDR_LOOPBACK", INTEGER2NUM(INADDR_LOOPBACK)); +#endif +#if defined(INADDR_UNSPEC_GROUP) + /* The reserved multicast group */ + rb_define_const(rb_cSocket, "INADDR_UNSPEC_GROUP", INTEGER2NUM(INADDR_UNSPEC_GROUP)); + /* The reserved multicast group */ + rb_define_const(rb_mSockConst, "INADDR_UNSPEC_GROUP", INTEGER2NUM(INADDR_UNSPEC_GROUP)); +#endif +#if defined(INADDR_ALLHOSTS_GROUP) + /* Multicast group for all systems on this subset */ + rb_define_const(rb_cSocket, "INADDR_ALLHOSTS_GROUP", INTEGER2NUM(INADDR_ALLHOSTS_GROUP)); + /* Multicast group for all systems on this subset */ + rb_define_const(rb_mSockConst, "INADDR_ALLHOSTS_GROUP", INTEGER2NUM(INADDR_ALLHOSTS_GROUP)); +#endif +#if defined(INADDR_MAX_LOCAL_GROUP) + /* The last local network multicast group */ + rb_define_const(rb_cSocket, "INADDR_MAX_LOCAL_GROUP", INTEGER2NUM(INADDR_MAX_LOCAL_GROUP)); + /* The last local network multicast group */ + rb_define_const(rb_mSockConst, "INADDR_MAX_LOCAL_GROUP", INTEGER2NUM(INADDR_MAX_LOCAL_GROUP)); +#endif +#if defined(INADDR_NONE) + /* A bitmask for matching no valid IP address */ + rb_define_const(rb_cSocket, "INADDR_NONE", INTEGER2NUM(INADDR_NONE)); + /* A bitmask for matching no valid IP address */ + rb_define_const(rb_mSockConst, "INADDR_NONE", INTEGER2NUM(INADDR_NONE)); +#endif +#if defined(IP_OPTIONS) + /* IP options to be included in packets */ + rb_define_const(rb_cSocket, "IP_OPTIONS", INTEGER2NUM(IP_OPTIONS)); + /* IP options to be included in packets */ + rb_define_const(rb_mSockConst, "IP_OPTIONS", INTEGER2NUM(IP_OPTIONS)); +#endif +#if defined(IP_HDRINCL) + /* Header is included with data */ + rb_define_const(rb_cSocket, "IP_HDRINCL", INTEGER2NUM(IP_HDRINCL)); + /* Header is included with data */ + rb_define_const(rb_mSockConst, "IP_HDRINCL", INTEGER2NUM(IP_HDRINCL)); +#endif +#if defined(IP_TOS) + /* IP type-of-service */ + rb_define_const(rb_cSocket, "IP_TOS", INTEGER2NUM(IP_TOS)); + /* IP type-of-service */ + rb_define_const(rb_mSockConst, "IP_TOS", INTEGER2NUM(IP_TOS)); +#endif +#if defined(IP_TTL) + /* IP time-to-live */ + rb_define_const(rb_cSocket, "IP_TTL", INTEGER2NUM(IP_TTL)); + /* IP time-to-live */ + rb_define_const(rb_mSockConst, "IP_TTL", INTEGER2NUM(IP_TTL)); +#endif +#if defined(IP_RECVOPTS) + /* Receive all IP options with datagram */ + rb_define_const(rb_cSocket, "IP_RECVOPTS", INTEGER2NUM(IP_RECVOPTS)); + /* Receive all IP options with datagram */ + rb_define_const(rb_mSockConst, "IP_RECVOPTS", INTEGER2NUM(IP_RECVOPTS)); +#endif +#if defined(IP_RECVRETOPTS) + /* Receive all IP options for response */ + rb_define_const(rb_cSocket, "IP_RECVRETOPTS", INTEGER2NUM(IP_RECVRETOPTS)); + /* Receive all IP options for response */ + rb_define_const(rb_mSockConst, "IP_RECVRETOPTS", INTEGER2NUM(IP_RECVRETOPTS)); +#endif +#if defined(IP_RECVDSTADDR) + /* Receive IP destination address with datagram */ + rb_define_const(rb_cSocket, "IP_RECVDSTADDR", INTEGER2NUM(IP_RECVDSTADDR)); + /* Receive IP destination address with datagram */ + rb_define_const(rb_mSockConst, "IP_RECVDSTADDR", INTEGER2NUM(IP_RECVDSTADDR)); +#endif +#if defined(IP_RETOPTS) + /* IP options to be included in datagrams */ + rb_define_const(rb_cSocket, "IP_RETOPTS", INTEGER2NUM(IP_RETOPTS)); + /* IP options to be included in datagrams */ + rb_define_const(rb_mSockConst, "IP_RETOPTS", INTEGER2NUM(IP_RETOPTS)); +#endif +#if defined(IP_MINTTL) + /* Minimum TTL allowed for received packets */ + rb_define_const(rb_cSocket, "IP_MINTTL", INTEGER2NUM(IP_MINTTL)); + /* Minimum TTL allowed for received packets */ + rb_define_const(rb_mSockConst, "IP_MINTTL", INTEGER2NUM(IP_MINTTL)); +#endif +#if defined(IP_DONTFRAG) + /* Don't fragment packets */ + rb_define_const(rb_cSocket, "IP_DONTFRAG", INTEGER2NUM(IP_DONTFRAG)); + /* Don't fragment packets */ + rb_define_const(rb_mSockConst, "IP_DONTFRAG", INTEGER2NUM(IP_DONTFRAG)); +#endif +#if defined(IP_SENDSRCADDR) + /* Source address for outgoing UDP datagrams */ + rb_define_const(rb_cSocket, "IP_SENDSRCADDR", INTEGER2NUM(IP_SENDSRCADDR)); + /* Source address for outgoing UDP datagrams */ + rb_define_const(rb_mSockConst, "IP_SENDSRCADDR", INTEGER2NUM(IP_SENDSRCADDR)); +#endif +#if defined(IP_ONESBCAST) + /* Force outgoing broadcast datagrams to have the undirected broadcast address */ + rb_define_const(rb_cSocket, "IP_ONESBCAST", INTEGER2NUM(IP_ONESBCAST)); + /* Force outgoing broadcast datagrams to have the undirected broadcast address */ + rb_define_const(rb_mSockConst, "IP_ONESBCAST", INTEGER2NUM(IP_ONESBCAST)); +#endif +#if defined(IP_RECVTTL) + /* Receive IP TTL with datagrams */ + rb_define_const(rb_cSocket, "IP_RECVTTL", INTEGER2NUM(IP_RECVTTL)); + /* Receive IP TTL with datagrams */ + rb_define_const(rb_mSockConst, "IP_RECVTTL", INTEGER2NUM(IP_RECVTTL)); +#endif +#if defined(IP_RECVIF) + /* Receive interface information with datagrams */ + rb_define_const(rb_cSocket, "IP_RECVIF", INTEGER2NUM(IP_RECVIF)); + /* Receive interface information with datagrams */ + rb_define_const(rb_mSockConst, "IP_RECVIF", INTEGER2NUM(IP_RECVIF)); +#endif +#if defined(IP_RECVSLLA) + /* Receive link-layer address with datagrams */ + rb_define_const(rb_cSocket, "IP_RECVSLLA", INTEGER2NUM(IP_RECVSLLA)); + /* Receive link-layer address with datagrams */ + rb_define_const(rb_mSockConst, "IP_RECVSLLA", INTEGER2NUM(IP_RECVSLLA)); +#endif +#if defined(IP_PORTRANGE) + /* Set the port range for sockets with unspecified port numbers */ + rb_define_const(rb_cSocket, "IP_PORTRANGE", INTEGER2NUM(IP_PORTRANGE)); + /* Set the port range for sockets with unspecified port numbers */ + rb_define_const(rb_mSockConst, "IP_PORTRANGE", INTEGER2NUM(IP_PORTRANGE)); +#endif +#if defined(IP_MULTICAST_IF) + /* IP multicast interface */ + rb_define_const(rb_cSocket, "IP_MULTICAST_IF", INTEGER2NUM(IP_MULTICAST_IF)); + /* IP multicast interface */ + rb_define_const(rb_mSockConst, "IP_MULTICAST_IF", INTEGER2NUM(IP_MULTICAST_IF)); +#endif +#if defined(IP_MULTICAST_TTL) + /* IP multicast TTL */ + rb_define_const(rb_cSocket, "IP_MULTICAST_TTL", INTEGER2NUM(IP_MULTICAST_TTL)); + /* IP multicast TTL */ + rb_define_const(rb_mSockConst, "IP_MULTICAST_TTL", INTEGER2NUM(IP_MULTICAST_TTL)); +#endif +#if defined(IP_MULTICAST_LOOP) + /* IP multicast loopback */ + rb_define_const(rb_cSocket, "IP_MULTICAST_LOOP", INTEGER2NUM(IP_MULTICAST_LOOP)); + /* IP multicast loopback */ + rb_define_const(rb_mSockConst, "IP_MULTICAST_LOOP", INTEGER2NUM(IP_MULTICAST_LOOP)); +#endif +#if defined(IP_ADD_MEMBERSHIP) + /* Add a multicast group membership */ + rb_define_const(rb_cSocket, "IP_ADD_MEMBERSHIP", INTEGER2NUM(IP_ADD_MEMBERSHIP)); + /* Add a multicast group membership */ + rb_define_const(rb_mSockConst, "IP_ADD_MEMBERSHIP", INTEGER2NUM(IP_ADD_MEMBERSHIP)); +#endif +#if defined(IP_DROP_MEMBERSHIP) + /* Drop a multicast group membership */ + rb_define_const(rb_cSocket, "IP_DROP_MEMBERSHIP", INTEGER2NUM(IP_DROP_MEMBERSHIP)); + /* Drop a multicast group membership */ + rb_define_const(rb_mSockConst, "IP_DROP_MEMBERSHIP", INTEGER2NUM(IP_DROP_MEMBERSHIP)); +#endif +#if defined(IP_DEFAULT_MULTICAST_TTL) + /* Default multicast TTL */ + rb_define_const(rb_cSocket, "IP_DEFAULT_MULTICAST_TTL", INTEGER2NUM(IP_DEFAULT_MULTICAST_TTL)); + /* Default multicast TTL */ + rb_define_const(rb_mSockConst, "IP_DEFAULT_MULTICAST_TTL", INTEGER2NUM(IP_DEFAULT_MULTICAST_TTL)); +#endif +#if defined(IP_DEFAULT_MULTICAST_LOOP) + /* Default multicast loopback */ + rb_define_const(rb_cSocket, "IP_DEFAULT_MULTICAST_LOOP", INTEGER2NUM(IP_DEFAULT_MULTICAST_LOOP)); + /* Default multicast loopback */ + rb_define_const(rb_mSockConst, "IP_DEFAULT_MULTICAST_LOOP", INTEGER2NUM(IP_DEFAULT_MULTICAST_LOOP)); +#endif +#if defined(IP_MAX_MEMBERSHIPS) + /* Maximum number multicast groups a socket can join */ + rb_define_const(rb_cSocket, "IP_MAX_MEMBERSHIPS", INTEGER2NUM(IP_MAX_MEMBERSHIPS)); + /* Maximum number multicast groups a socket can join */ + rb_define_const(rb_mSockConst, "IP_MAX_MEMBERSHIPS", INTEGER2NUM(IP_MAX_MEMBERSHIPS)); +#endif +#if defined(IP_ROUTER_ALERT) + /* Notify transit routers to more closely examine the contents of an IP packet */ + rb_define_const(rb_cSocket, "IP_ROUTER_ALERT", INTEGER2NUM(IP_ROUTER_ALERT)); + /* Notify transit routers to more closely examine the contents of an IP packet */ + rb_define_const(rb_mSockConst, "IP_ROUTER_ALERT", INTEGER2NUM(IP_ROUTER_ALERT)); +#endif +#if defined(IP_PKTINFO) + /* Receive packet information with datagrams */ + rb_define_const(rb_cSocket, "IP_PKTINFO", INTEGER2NUM(IP_PKTINFO)); + /* Receive packet information with datagrams */ + rb_define_const(rb_mSockConst, "IP_PKTINFO", INTEGER2NUM(IP_PKTINFO)); +#endif +#if defined(IP_PKTOPTIONS) + /* Receive packet options with datagrams */ + rb_define_const(rb_cSocket, "IP_PKTOPTIONS", INTEGER2NUM(IP_PKTOPTIONS)); + /* Receive packet options with datagrams */ + rb_define_const(rb_mSockConst, "IP_PKTOPTIONS", INTEGER2NUM(IP_PKTOPTIONS)); +#endif +#if defined(IP_MTU_DISCOVER) + /* Path MTU discovery */ + rb_define_const(rb_cSocket, "IP_MTU_DISCOVER", INTEGER2NUM(IP_MTU_DISCOVER)); + /* Path MTU discovery */ + rb_define_const(rb_mSockConst, "IP_MTU_DISCOVER", INTEGER2NUM(IP_MTU_DISCOVER)); +#endif +#if defined(IP_RECVERR) + /* Enable extended reliable error message passing */ + rb_define_const(rb_cSocket, "IP_RECVERR", INTEGER2NUM(IP_RECVERR)); + /* Enable extended reliable error message passing */ + rb_define_const(rb_mSockConst, "IP_RECVERR", INTEGER2NUM(IP_RECVERR)); +#endif +#if defined(IP_RECVTOS) + /* Receive TOS with incoming packets */ + rb_define_const(rb_cSocket, "IP_RECVTOS", INTEGER2NUM(IP_RECVTOS)); + /* Receive TOS with incoming packets */ + rb_define_const(rb_mSockConst, "IP_RECVTOS", INTEGER2NUM(IP_RECVTOS)); +#endif +#if defined(IP_MTU) + /* The Maximum Transmission Unit of the socket */ + rb_define_const(rb_cSocket, "IP_MTU", INTEGER2NUM(IP_MTU)); + /* The Maximum Transmission Unit of the socket */ + rb_define_const(rb_mSockConst, "IP_MTU", INTEGER2NUM(IP_MTU)); +#endif +#if defined(IP_FREEBIND) + /* Allow binding to nonexistent IP addresses */ + rb_define_const(rb_cSocket, "IP_FREEBIND", INTEGER2NUM(IP_FREEBIND)); + /* Allow binding to nonexistent IP addresses */ + rb_define_const(rb_mSockConst, "IP_FREEBIND", INTEGER2NUM(IP_FREEBIND)); +#endif +#if defined(IP_IPSEC_POLICY) + /* IPsec security policy */ + rb_define_const(rb_cSocket, "IP_IPSEC_POLICY", INTEGER2NUM(IP_IPSEC_POLICY)); + /* IPsec security policy */ + rb_define_const(rb_mSockConst, "IP_IPSEC_POLICY", INTEGER2NUM(IP_IPSEC_POLICY)); +#endif +#if defined(IP_XFRM_POLICY) + /* */ + rb_define_const(rb_cSocket, "IP_XFRM_POLICY", INTEGER2NUM(IP_XFRM_POLICY)); + /* */ + rb_define_const(rb_mSockConst, "IP_XFRM_POLICY", INTEGER2NUM(IP_XFRM_POLICY)); +#endif +#if defined(IP_PASSSEC) + /* Retrieve security context with datagram */ + rb_define_const(rb_cSocket, "IP_PASSSEC", INTEGER2NUM(IP_PASSSEC)); + /* Retrieve security context with datagram */ + rb_define_const(rb_mSockConst, "IP_PASSSEC", INTEGER2NUM(IP_PASSSEC)); +#endif +#if defined(IP_TRANSPARENT) + /* Transparent proxy */ + rb_define_const(rb_cSocket, "IP_TRANSPARENT", INTEGER2NUM(IP_TRANSPARENT)); + /* Transparent proxy */ + rb_define_const(rb_mSockConst, "IP_TRANSPARENT", INTEGER2NUM(IP_TRANSPARENT)); +#endif +#if defined(IP_PMTUDISC_DONT) + /* Never send DF frames */ + rb_define_const(rb_cSocket, "IP_PMTUDISC_DONT", INTEGER2NUM(IP_PMTUDISC_DONT)); + /* Never send DF frames */ + rb_define_const(rb_mSockConst, "IP_PMTUDISC_DONT", INTEGER2NUM(IP_PMTUDISC_DONT)); +#endif +#if defined(IP_PMTUDISC_WANT) + /* Use per-route hints */ + rb_define_const(rb_cSocket, "IP_PMTUDISC_WANT", INTEGER2NUM(IP_PMTUDISC_WANT)); + /* Use per-route hints */ + rb_define_const(rb_mSockConst, "IP_PMTUDISC_WANT", INTEGER2NUM(IP_PMTUDISC_WANT)); +#endif +#if defined(IP_PMTUDISC_DO) + /* Always send DF frames */ + rb_define_const(rb_cSocket, "IP_PMTUDISC_DO", INTEGER2NUM(IP_PMTUDISC_DO)); + /* Always send DF frames */ + rb_define_const(rb_mSockConst, "IP_PMTUDISC_DO", INTEGER2NUM(IP_PMTUDISC_DO)); +#endif +#if defined(IP_UNBLOCK_SOURCE) + /* Unblock IPv4 multicast packets with a give source address */ + rb_define_const(rb_cSocket, "IP_UNBLOCK_SOURCE", INTEGER2NUM(IP_UNBLOCK_SOURCE)); + /* Unblock IPv4 multicast packets with a give source address */ + rb_define_const(rb_mSockConst, "IP_UNBLOCK_SOURCE", INTEGER2NUM(IP_UNBLOCK_SOURCE)); +#endif +#if defined(IP_BLOCK_SOURCE) + /* Block IPv4 multicast packets with a give source address */ + rb_define_const(rb_cSocket, "IP_BLOCK_SOURCE", INTEGER2NUM(IP_BLOCK_SOURCE)); + /* Block IPv4 multicast packets with a give source address */ + rb_define_const(rb_mSockConst, "IP_BLOCK_SOURCE", INTEGER2NUM(IP_BLOCK_SOURCE)); +#endif +#if defined(IP_ADD_SOURCE_MEMBERSHIP) + /* Add a multicast group membership */ + rb_define_const(rb_cSocket, "IP_ADD_SOURCE_MEMBERSHIP", INTEGER2NUM(IP_ADD_SOURCE_MEMBERSHIP)); + /* Add a multicast group membership */ + rb_define_const(rb_mSockConst, "IP_ADD_SOURCE_MEMBERSHIP", INTEGER2NUM(IP_ADD_SOURCE_MEMBERSHIP)); +#endif +#if defined(IP_DROP_SOURCE_MEMBERSHIP) + /* Drop a multicast group membership */ + rb_define_const(rb_cSocket, "IP_DROP_SOURCE_MEMBERSHIP", INTEGER2NUM(IP_DROP_SOURCE_MEMBERSHIP)); + /* Drop a multicast group membership */ + rb_define_const(rb_mSockConst, "IP_DROP_SOURCE_MEMBERSHIP", INTEGER2NUM(IP_DROP_SOURCE_MEMBERSHIP)); +#endif +#if defined(IP_MSFILTER) + /* Multicast source filtering */ + rb_define_const(rb_cSocket, "IP_MSFILTER", INTEGER2NUM(IP_MSFILTER)); + /* Multicast source filtering */ + rb_define_const(rb_mSockConst, "IP_MSFILTER", INTEGER2NUM(IP_MSFILTER)); +#endif +#if defined(MCAST_JOIN_GROUP) + /* Join a multicast group */ + rb_define_const(rb_cSocket, "MCAST_JOIN_GROUP", INTEGER2NUM(MCAST_JOIN_GROUP)); + /* Join a multicast group */ + rb_define_const(rb_mSockConst, "MCAST_JOIN_GROUP", INTEGER2NUM(MCAST_JOIN_GROUP)); +#endif +#if defined(MCAST_BLOCK_SOURCE) + /* Block multicast packets from this source */ + rb_define_const(rb_cSocket, "MCAST_BLOCK_SOURCE", INTEGER2NUM(MCAST_BLOCK_SOURCE)); + /* Block multicast packets from this source */ + rb_define_const(rb_mSockConst, "MCAST_BLOCK_SOURCE", INTEGER2NUM(MCAST_BLOCK_SOURCE)); +#endif +#if defined(MCAST_UNBLOCK_SOURCE) + /* Unblock multicast packets from this source */ + rb_define_const(rb_cSocket, "MCAST_UNBLOCK_SOURCE", INTEGER2NUM(MCAST_UNBLOCK_SOURCE)); + /* Unblock multicast packets from this source */ + rb_define_const(rb_mSockConst, "MCAST_UNBLOCK_SOURCE", INTEGER2NUM(MCAST_UNBLOCK_SOURCE)); +#endif +#if defined(MCAST_LEAVE_GROUP) + /* Leave a multicast group */ + rb_define_const(rb_cSocket, "MCAST_LEAVE_GROUP", INTEGER2NUM(MCAST_LEAVE_GROUP)); + /* Leave a multicast group */ + rb_define_const(rb_mSockConst, "MCAST_LEAVE_GROUP", INTEGER2NUM(MCAST_LEAVE_GROUP)); +#endif +#if defined(MCAST_JOIN_SOURCE_GROUP) + /* Join a multicast source group */ + rb_define_const(rb_cSocket, "MCAST_JOIN_SOURCE_GROUP", INTEGER2NUM(MCAST_JOIN_SOURCE_GROUP)); + /* Join a multicast source group */ + rb_define_const(rb_mSockConst, "MCAST_JOIN_SOURCE_GROUP", INTEGER2NUM(MCAST_JOIN_SOURCE_GROUP)); +#endif +#if defined(MCAST_LEAVE_SOURCE_GROUP) + /* Leave a multicast source group */ + rb_define_const(rb_cSocket, "MCAST_LEAVE_SOURCE_GROUP", INTEGER2NUM(MCAST_LEAVE_SOURCE_GROUP)); + /* Leave a multicast source group */ + rb_define_const(rb_mSockConst, "MCAST_LEAVE_SOURCE_GROUP", INTEGER2NUM(MCAST_LEAVE_SOURCE_GROUP)); +#endif +#if defined(MCAST_MSFILTER) + /* Multicast source filtering */ + rb_define_const(rb_cSocket, "MCAST_MSFILTER", INTEGER2NUM(MCAST_MSFILTER)); + /* Multicast source filtering */ + rb_define_const(rb_mSockConst, "MCAST_MSFILTER", INTEGER2NUM(MCAST_MSFILTER)); +#endif +#if defined(MCAST_EXCLUDE) + /* Exclusive multicast source filter */ + rb_define_const(rb_cSocket, "MCAST_EXCLUDE", INTEGER2NUM(MCAST_EXCLUDE)); + /* Exclusive multicast source filter */ + rb_define_const(rb_mSockConst, "MCAST_EXCLUDE", INTEGER2NUM(MCAST_EXCLUDE)); +#endif +#if defined(MCAST_INCLUDE) + /* Inclusive multicast source filter */ + rb_define_const(rb_cSocket, "MCAST_INCLUDE", INTEGER2NUM(MCAST_INCLUDE)); + /* Inclusive multicast source filter */ + rb_define_const(rb_mSockConst, "MCAST_INCLUDE", INTEGER2NUM(MCAST_INCLUDE)); +#endif +#if defined(SO_DEBUG) + /* Debug info recording */ + rb_define_const(rb_cSocket, "SO_DEBUG", INTEGER2NUM(SO_DEBUG)); + /* Debug info recording */ + rb_define_const(rb_mSockConst, "SO_DEBUG", INTEGER2NUM(SO_DEBUG)); +#endif +#if defined(SO_REUSEADDR) + /* Allow local address reuse */ + rb_define_const(rb_cSocket, "SO_REUSEADDR", INTEGER2NUM(SO_REUSEADDR)); + /* Allow local address reuse */ + rb_define_const(rb_mSockConst, "SO_REUSEADDR", INTEGER2NUM(SO_REUSEADDR)); +#endif +#if defined(SO_REUSEPORT) + /* Allow local address and port reuse */ + rb_define_const(rb_cSocket, "SO_REUSEPORT", INTEGER2NUM(SO_REUSEPORT)); + /* Allow local address and port reuse */ + rb_define_const(rb_mSockConst, "SO_REUSEPORT", INTEGER2NUM(SO_REUSEPORT)); +#endif +#if defined(SO_TYPE) + /* Get the socket type */ + rb_define_const(rb_cSocket, "SO_TYPE", INTEGER2NUM(SO_TYPE)); + /* Get the socket type */ + rb_define_const(rb_mSockConst, "SO_TYPE", INTEGER2NUM(SO_TYPE)); +#endif +#if defined(SO_ERROR) + /* Get and clear the error status */ + rb_define_const(rb_cSocket, "SO_ERROR", INTEGER2NUM(SO_ERROR)); + /* Get and clear the error status */ + rb_define_const(rb_mSockConst, "SO_ERROR", INTEGER2NUM(SO_ERROR)); +#endif +#if defined(SO_DONTROUTE) + /* Use interface addresses */ + rb_define_const(rb_cSocket, "SO_DONTROUTE", INTEGER2NUM(SO_DONTROUTE)); + /* Use interface addresses */ + rb_define_const(rb_mSockConst, "SO_DONTROUTE", INTEGER2NUM(SO_DONTROUTE)); +#endif +#if defined(SO_BROADCAST) + /* Permit sending of broadcast messages */ + rb_define_const(rb_cSocket, "SO_BROADCAST", INTEGER2NUM(SO_BROADCAST)); + /* Permit sending of broadcast messages */ + rb_define_const(rb_mSockConst, "SO_BROADCAST", INTEGER2NUM(SO_BROADCAST)); +#endif +#if defined(SO_SNDBUF) + /* Send buffer size */ + rb_define_const(rb_cSocket, "SO_SNDBUF", INTEGER2NUM(SO_SNDBUF)); + /* Send buffer size */ + rb_define_const(rb_mSockConst, "SO_SNDBUF", INTEGER2NUM(SO_SNDBUF)); +#endif +#if defined(SO_RCVBUF) + /* Receive buffer size */ + rb_define_const(rb_cSocket, "SO_RCVBUF", INTEGER2NUM(SO_RCVBUF)); + /* Receive buffer size */ + rb_define_const(rb_mSockConst, "SO_RCVBUF", INTEGER2NUM(SO_RCVBUF)); +#endif +#if defined(SO_SNDBUFFORCE) + /* Send buffer size without wmem_max limit (Linux 2.6.14) */ + rb_define_const(rb_cSocket, "SO_SNDBUFFORCE", INTEGER2NUM(SO_SNDBUFFORCE)); + /* Send buffer size without wmem_max limit (Linux 2.6.14) */ + rb_define_const(rb_mSockConst, "SO_SNDBUFFORCE", INTEGER2NUM(SO_SNDBUFFORCE)); +#endif +#if defined(SO_RCVBUFFORCE) + /* Receive buffer size without rmem_max limit (Linux 2.6.14) */ + rb_define_const(rb_cSocket, "SO_RCVBUFFORCE", INTEGER2NUM(SO_RCVBUFFORCE)); + /* Receive buffer size without rmem_max limit (Linux 2.6.14) */ + rb_define_const(rb_mSockConst, "SO_RCVBUFFORCE", INTEGER2NUM(SO_RCVBUFFORCE)); +#endif +#if defined(SO_KEEPALIVE) + /* Keep connections alive */ + rb_define_const(rb_cSocket, "SO_KEEPALIVE", INTEGER2NUM(SO_KEEPALIVE)); + /* Keep connections alive */ + rb_define_const(rb_mSockConst, "SO_KEEPALIVE", INTEGER2NUM(SO_KEEPALIVE)); +#endif +#if defined(SO_OOBINLINE) + /* Leave received out-of-band data in-line */ + rb_define_const(rb_cSocket, "SO_OOBINLINE", INTEGER2NUM(SO_OOBINLINE)); + /* Leave received out-of-band data in-line */ + rb_define_const(rb_mSockConst, "SO_OOBINLINE", INTEGER2NUM(SO_OOBINLINE)); +#endif +#if defined(SO_NO_CHECK) + /* Disable checksums */ + rb_define_const(rb_cSocket, "SO_NO_CHECK", INTEGER2NUM(SO_NO_CHECK)); + /* Disable checksums */ + rb_define_const(rb_mSockConst, "SO_NO_CHECK", INTEGER2NUM(SO_NO_CHECK)); +#endif +#if defined(SO_PRIORITY) + /* The protocol-defined priority for all packets on this socket */ + rb_define_const(rb_cSocket, "SO_PRIORITY", INTEGER2NUM(SO_PRIORITY)); + /* The protocol-defined priority for all packets on this socket */ + rb_define_const(rb_mSockConst, "SO_PRIORITY", INTEGER2NUM(SO_PRIORITY)); +#endif +#if defined(SO_LINGER) + /* Linger on close if data is present */ + rb_define_const(rb_cSocket, "SO_LINGER", INTEGER2NUM(SO_LINGER)); + /* Linger on close if data is present */ + rb_define_const(rb_mSockConst, "SO_LINGER", INTEGER2NUM(SO_LINGER)); +#endif +#if defined(SO_PASSCRED) + /* Receive SCM_CREDENTIALS messages */ + rb_define_const(rb_cSocket, "SO_PASSCRED", INTEGER2NUM(SO_PASSCRED)); + /* Receive SCM_CREDENTIALS messages */ + rb_define_const(rb_mSockConst, "SO_PASSCRED", INTEGER2NUM(SO_PASSCRED)); +#endif +#if defined(SO_PEERCRED) + /* The credentials of the foreign process connected to this socket */ + rb_define_const(rb_cSocket, "SO_PEERCRED", INTEGER2NUM(SO_PEERCRED)); + /* The credentials of the foreign process connected to this socket */ + rb_define_const(rb_mSockConst, "SO_PEERCRED", INTEGER2NUM(SO_PEERCRED)); +#endif +#if defined(SO_RCVLOWAT) + /* Receive low-water mark */ + rb_define_const(rb_cSocket, "SO_RCVLOWAT", INTEGER2NUM(SO_RCVLOWAT)); + /* Receive low-water mark */ + rb_define_const(rb_mSockConst, "SO_RCVLOWAT", INTEGER2NUM(SO_RCVLOWAT)); +#endif +#if defined(SO_SNDLOWAT) + /* Send low-water mark */ + rb_define_const(rb_cSocket, "SO_SNDLOWAT", INTEGER2NUM(SO_SNDLOWAT)); + /* Send low-water mark */ + rb_define_const(rb_mSockConst, "SO_SNDLOWAT", INTEGER2NUM(SO_SNDLOWAT)); +#endif +#if defined(SO_RCVTIMEO) + /* Receive timeout */ + rb_define_const(rb_cSocket, "SO_RCVTIMEO", INTEGER2NUM(SO_RCVTIMEO)); + /* Receive timeout */ + rb_define_const(rb_mSockConst, "SO_RCVTIMEO", INTEGER2NUM(SO_RCVTIMEO)); +#endif +#if defined(SO_SNDTIMEO) + /* Send timeout */ + rb_define_const(rb_cSocket, "SO_SNDTIMEO", INTEGER2NUM(SO_SNDTIMEO)); + /* Send timeout */ + rb_define_const(rb_mSockConst, "SO_SNDTIMEO", INTEGER2NUM(SO_SNDTIMEO)); +#endif +#if defined(SO_ACCEPTCONN) + /* Socket has had listen() called on it */ + rb_define_const(rb_cSocket, "SO_ACCEPTCONN", INTEGER2NUM(SO_ACCEPTCONN)); + /* Socket has had listen() called on it */ + rb_define_const(rb_mSockConst, "SO_ACCEPTCONN", INTEGER2NUM(SO_ACCEPTCONN)); +#endif +#if defined(SO_USELOOPBACK) + /* Bypass hardware when possible */ + rb_define_const(rb_cSocket, "SO_USELOOPBACK", INTEGER2NUM(SO_USELOOPBACK)); + /* Bypass hardware when possible */ + rb_define_const(rb_mSockConst, "SO_USELOOPBACK", INTEGER2NUM(SO_USELOOPBACK)); +#endif +#if defined(SO_ACCEPTFILTER) + /* There is an accept filter */ + rb_define_const(rb_cSocket, "SO_ACCEPTFILTER", INTEGER2NUM(SO_ACCEPTFILTER)); + /* There is an accept filter */ + rb_define_const(rb_mSockConst, "SO_ACCEPTFILTER", INTEGER2NUM(SO_ACCEPTFILTER)); +#endif +#if defined(SO_DONTTRUNC) + /* Retain unread data */ + rb_define_const(rb_cSocket, "SO_DONTTRUNC", INTEGER2NUM(SO_DONTTRUNC)); + /* Retain unread data */ + rb_define_const(rb_mSockConst, "SO_DONTTRUNC", INTEGER2NUM(SO_DONTTRUNC)); +#endif +#if defined(SO_WANTMORE) + /* Give a hint when more data is ready */ + rb_define_const(rb_cSocket, "SO_WANTMORE", INTEGER2NUM(SO_WANTMORE)); + /* Give a hint when more data is ready */ + rb_define_const(rb_mSockConst, "SO_WANTMORE", INTEGER2NUM(SO_WANTMORE)); +#endif +#if defined(SO_WANTOOBFLAG) + /* OOB data is wanted in MSG_FLAG on receive */ + rb_define_const(rb_cSocket, "SO_WANTOOBFLAG", INTEGER2NUM(SO_WANTOOBFLAG)); + /* OOB data is wanted in MSG_FLAG on receive */ + rb_define_const(rb_mSockConst, "SO_WANTOOBFLAG", INTEGER2NUM(SO_WANTOOBFLAG)); +#endif +#if defined(SO_NREAD) + /* Get first packet byte count */ + rb_define_const(rb_cSocket, "SO_NREAD", INTEGER2NUM(SO_NREAD)); + /* Get first packet byte count */ + rb_define_const(rb_mSockConst, "SO_NREAD", INTEGER2NUM(SO_NREAD)); +#endif +#if defined(SO_NKE) + /* Install socket-level Network Kernel Extension */ + rb_define_const(rb_cSocket, "SO_NKE", INTEGER2NUM(SO_NKE)); + /* Install socket-level Network Kernel Extension */ + rb_define_const(rb_mSockConst, "SO_NKE", INTEGER2NUM(SO_NKE)); +#endif +#if defined(SO_NOSIGPIPE) + /* Don't SIGPIPE on EPIPE */ + rb_define_const(rb_cSocket, "SO_NOSIGPIPE", INTEGER2NUM(SO_NOSIGPIPE)); + /* Don't SIGPIPE on EPIPE */ + rb_define_const(rb_mSockConst, "SO_NOSIGPIPE", INTEGER2NUM(SO_NOSIGPIPE)); +#endif +#if defined(SO_SECURITY_AUTHENTICATION) + /* */ + rb_define_const(rb_cSocket, "SO_SECURITY_AUTHENTICATION", INTEGER2NUM(SO_SECURITY_AUTHENTICATION)); + /* */ + rb_define_const(rb_mSockConst, "SO_SECURITY_AUTHENTICATION", INTEGER2NUM(SO_SECURITY_AUTHENTICATION)); +#endif +#if defined(SO_SECURITY_ENCRYPTION_TRANSPORT) + /* */ + rb_define_const(rb_cSocket, "SO_SECURITY_ENCRYPTION_TRANSPORT", INTEGER2NUM(SO_SECURITY_ENCRYPTION_TRANSPORT)); + /* */ + rb_define_const(rb_mSockConst, "SO_SECURITY_ENCRYPTION_TRANSPORT", INTEGER2NUM(SO_SECURITY_ENCRYPTION_TRANSPORT)); +#endif +#if defined(SO_SECURITY_ENCRYPTION_NETWORK) + /* */ + rb_define_const(rb_cSocket, "SO_SECURITY_ENCRYPTION_NETWORK", INTEGER2NUM(SO_SECURITY_ENCRYPTION_NETWORK)); + /* */ + rb_define_const(rb_mSockConst, "SO_SECURITY_ENCRYPTION_NETWORK", INTEGER2NUM(SO_SECURITY_ENCRYPTION_NETWORK)); +#endif +#if defined(SO_BINDTODEVICE) + /* Only send packets from the given interface */ + rb_define_const(rb_cSocket, "SO_BINDTODEVICE", INTEGER2NUM(SO_BINDTODEVICE)); + /* Only send packets from the given interface */ + rb_define_const(rb_mSockConst, "SO_BINDTODEVICE", INTEGER2NUM(SO_BINDTODEVICE)); +#endif +#if defined(SO_ATTACH_FILTER) + /* Attach an accept filter */ + rb_define_const(rb_cSocket, "SO_ATTACH_FILTER", INTEGER2NUM(SO_ATTACH_FILTER)); + /* Attach an accept filter */ + rb_define_const(rb_mSockConst, "SO_ATTACH_FILTER", INTEGER2NUM(SO_ATTACH_FILTER)); +#endif +#if defined(SO_DETACH_FILTER) + /* Detach an accept filter */ + rb_define_const(rb_cSocket, "SO_DETACH_FILTER", INTEGER2NUM(SO_DETACH_FILTER)); + /* Detach an accept filter */ + rb_define_const(rb_mSockConst, "SO_DETACH_FILTER", INTEGER2NUM(SO_DETACH_FILTER)); +#endif +#if defined(SO_GET_FILTER) + /* Obtain filter set by SO_ATTACH_FILTER (Linux 3.8) */ + rb_define_const(rb_cSocket, "SO_GET_FILTER", INTEGER2NUM(SO_GET_FILTER)); + /* Obtain filter set by SO_ATTACH_FILTER (Linux 3.8) */ + rb_define_const(rb_mSockConst, "SO_GET_FILTER", INTEGER2NUM(SO_GET_FILTER)); +#endif +#if defined(SO_PEERNAME) + /* Name of the connecting user */ + rb_define_const(rb_cSocket, "SO_PEERNAME", INTEGER2NUM(SO_PEERNAME)); + /* Name of the connecting user */ + rb_define_const(rb_mSockConst, "SO_PEERNAME", INTEGER2NUM(SO_PEERNAME)); +#endif +#if defined(SO_TIMESTAMP) + /* Receive timestamp with datagrams (timeval) */ + rb_define_const(rb_cSocket, "SO_TIMESTAMP", INTEGER2NUM(SO_TIMESTAMP)); + /* Receive timestamp with datagrams (timeval) */ + rb_define_const(rb_mSockConst, "SO_TIMESTAMP", INTEGER2NUM(SO_TIMESTAMP)); +#endif +#if defined(SO_TIMESTAMPNS) + /* Receive nanosecond timestamp with datagrams (timespec) */ + rb_define_const(rb_cSocket, "SO_TIMESTAMPNS", INTEGER2NUM(SO_TIMESTAMPNS)); + /* Receive nanosecond timestamp with datagrams (timespec) */ + rb_define_const(rb_mSockConst, "SO_TIMESTAMPNS", INTEGER2NUM(SO_TIMESTAMPNS)); +#endif +#if defined(SO_BINTIME) + /* Receive timestamp with datagrams (bintime) */ + rb_define_const(rb_cSocket, "SO_BINTIME", INTEGER2NUM(SO_BINTIME)); + /* Receive timestamp with datagrams (bintime) */ + rb_define_const(rb_mSockConst, "SO_BINTIME", INTEGER2NUM(SO_BINTIME)); +#endif +#if defined(SO_RECVUCRED) + /* Receive user credentials with datagram */ + rb_define_const(rb_cSocket, "SO_RECVUCRED", INTEGER2NUM(SO_RECVUCRED)); + /* Receive user credentials with datagram */ + rb_define_const(rb_mSockConst, "SO_RECVUCRED", INTEGER2NUM(SO_RECVUCRED)); +#endif +#if defined(SO_MAC_EXEMPT) + /* Mandatory Access Control exemption for unlabeled peers */ + rb_define_const(rb_cSocket, "SO_MAC_EXEMPT", INTEGER2NUM(SO_MAC_EXEMPT)); + /* Mandatory Access Control exemption for unlabeled peers */ + rb_define_const(rb_mSockConst, "SO_MAC_EXEMPT", INTEGER2NUM(SO_MAC_EXEMPT)); +#endif +#if defined(SO_ALLZONES) + /* Bypass zone boundaries */ + rb_define_const(rb_cSocket, "SO_ALLZONES", INTEGER2NUM(SO_ALLZONES)); + /* Bypass zone boundaries */ + rb_define_const(rb_mSockConst, "SO_ALLZONES", INTEGER2NUM(SO_ALLZONES)); +#endif +#if defined(SO_PEERSEC) + /* Obtain the security credentials (Linux 2.6.2) */ + rb_define_const(rb_cSocket, "SO_PEERSEC", INTEGER2NUM(SO_PEERSEC)); + /* Obtain the security credentials (Linux 2.6.2) */ + rb_define_const(rb_mSockConst, "SO_PEERSEC", INTEGER2NUM(SO_PEERSEC)); +#endif +#if defined(SO_PASSSEC) + /* Toggle security context passing (Linux 2.6.18) */ + rb_define_const(rb_cSocket, "SO_PASSSEC", INTEGER2NUM(SO_PASSSEC)); + /* Toggle security context passing (Linux 2.6.18) */ + rb_define_const(rb_mSockConst, "SO_PASSSEC", INTEGER2NUM(SO_PASSSEC)); +#endif +#if defined(SO_MARK) + /* Set the mark for mark-based routing (Linux 2.6.25) */ + rb_define_const(rb_cSocket, "SO_MARK", INTEGER2NUM(SO_MARK)); + /* Set the mark for mark-based routing (Linux 2.6.25) */ + rb_define_const(rb_mSockConst, "SO_MARK", INTEGER2NUM(SO_MARK)); +#endif +#if defined(SO_TIMESTAMPING) + /* Time stamping of incoming and outgoing packets (Linux 2.6.30) */ + rb_define_const(rb_cSocket, "SO_TIMESTAMPING", INTEGER2NUM(SO_TIMESTAMPING)); + /* Time stamping of incoming and outgoing packets (Linux 2.6.30) */ + rb_define_const(rb_mSockConst, "SO_TIMESTAMPING", INTEGER2NUM(SO_TIMESTAMPING)); +#endif +#if defined(SO_PROTOCOL) + /* Protocol given for socket() (Linux 2.6.32) */ + rb_define_const(rb_cSocket, "SO_PROTOCOL", INTEGER2NUM(SO_PROTOCOL)); + /* Protocol given for socket() (Linux 2.6.32) */ + rb_define_const(rb_mSockConst, "SO_PROTOCOL", INTEGER2NUM(SO_PROTOCOL)); +#endif +#if defined(SO_DOMAIN) + /* Domain given for socket() (Linux 2.6.32) */ + rb_define_const(rb_cSocket, "SO_DOMAIN", INTEGER2NUM(SO_DOMAIN)); + /* Domain given for socket() (Linux 2.6.32) */ + rb_define_const(rb_mSockConst, "SO_DOMAIN", INTEGER2NUM(SO_DOMAIN)); +#endif +#if defined(SO_RXQ_OVFL) + /* Toggle cmsg for number of packets dropped (Linux 2.6.33) */ + rb_define_const(rb_cSocket, "SO_RXQ_OVFL", INTEGER2NUM(SO_RXQ_OVFL)); + /* Toggle cmsg for number of packets dropped (Linux 2.6.33) */ + rb_define_const(rb_mSockConst, "SO_RXQ_OVFL", INTEGER2NUM(SO_RXQ_OVFL)); +#endif +#if defined(SO_WIFI_STATUS) + /* Toggle cmsg for wifi status (Linux 3.3) */ + rb_define_const(rb_cSocket, "SO_WIFI_STATUS", INTEGER2NUM(SO_WIFI_STATUS)); + /* Toggle cmsg for wifi status (Linux 3.3) */ + rb_define_const(rb_mSockConst, "SO_WIFI_STATUS", INTEGER2NUM(SO_WIFI_STATUS)); +#endif +#if defined(SO_PEEK_OFF) + /* Set the peek offset (Linux 3.4) */ + rb_define_const(rb_cSocket, "SO_PEEK_OFF", INTEGER2NUM(SO_PEEK_OFF)); + /* Set the peek offset (Linux 3.4) */ + rb_define_const(rb_mSockConst, "SO_PEEK_OFF", INTEGER2NUM(SO_PEEK_OFF)); +#endif +#if defined(SO_NOFCS) + /* Set netns of a socket (Linux 3.4) */ + rb_define_const(rb_cSocket, "SO_NOFCS", INTEGER2NUM(SO_NOFCS)); + /* Set netns of a socket (Linux 3.4) */ + rb_define_const(rb_mSockConst, "SO_NOFCS", INTEGER2NUM(SO_NOFCS)); +#endif +#if defined(SO_LOCK_FILTER) + /* Lock the filter attached to a socket (Linux 3.9) */ + rb_define_const(rb_cSocket, "SO_LOCK_FILTER", INTEGER2NUM(SO_LOCK_FILTER)); + /* Lock the filter attached to a socket (Linux 3.9) */ + rb_define_const(rb_mSockConst, "SO_LOCK_FILTER", INTEGER2NUM(SO_LOCK_FILTER)); +#endif +#if defined(SO_SELECT_ERR_QUEUE) + /* Make select() detect socket error queue with errorfds (Linux 3.10) */ + rb_define_const(rb_cSocket, "SO_SELECT_ERR_QUEUE", INTEGER2NUM(SO_SELECT_ERR_QUEUE)); + /* Make select() detect socket error queue with errorfds (Linux 3.10) */ + rb_define_const(rb_mSockConst, "SO_SELECT_ERR_QUEUE", INTEGER2NUM(SO_SELECT_ERR_QUEUE)); +#endif +#if defined(SO_BUSY_POLL) + /* Set the threshold in microseconds for low latency polling (Linux 3.11) */ + rb_define_const(rb_cSocket, "SO_BUSY_POLL", INTEGER2NUM(SO_BUSY_POLL)); + /* Set the threshold in microseconds for low latency polling (Linux 3.11) */ + rb_define_const(rb_mSockConst, "SO_BUSY_POLL", INTEGER2NUM(SO_BUSY_POLL)); +#endif +#if defined(SO_MAX_PACING_RATE) + /* Cap the rate computed by transport layer. [bytes per second] (Linux 3.13) */ + rb_define_const(rb_cSocket, "SO_MAX_PACING_RATE", INTEGER2NUM(SO_MAX_PACING_RATE)); + /* Cap the rate computed by transport layer. [bytes per second] (Linux 3.13) */ + rb_define_const(rb_mSockConst, "SO_MAX_PACING_RATE", INTEGER2NUM(SO_MAX_PACING_RATE)); +#endif +#if defined(SO_BPF_EXTENSIONS) + /* Query supported BPF extensions (Linux 3.14) */ + rb_define_const(rb_cSocket, "SO_BPF_EXTENSIONS", INTEGER2NUM(SO_BPF_EXTENSIONS)); + /* Query supported BPF extensions (Linux 3.14) */ + rb_define_const(rb_mSockConst, "SO_BPF_EXTENSIONS", INTEGER2NUM(SO_BPF_EXTENSIONS)); +#endif +#if defined(SOPRI_INTERACTIVE) + /* Interactive socket priority */ + rb_define_const(rb_cSocket, "SOPRI_INTERACTIVE", INTEGER2NUM(SOPRI_INTERACTIVE)); + /* Interactive socket priority */ + rb_define_const(rb_mSockConst, "SOPRI_INTERACTIVE", INTEGER2NUM(SOPRI_INTERACTIVE)); +#endif +#if defined(SOPRI_NORMAL) + /* Normal socket priority */ + rb_define_const(rb_cSocket, "SOPRI_NORMAL", INTEGER2NUM(SOPRI_NORMAL)); + /* Normal socket priority */ + rb_define_const(rb_mSockConst, "SOPRI_NORMAL", INTEGER2NUM(SOPRI_NORMAL)); +#endif +#if defined(SOPRI_BACKGROUND) + /* Background socket priority */ + rb_define_const(rb_cSocket, "SOPRI_BACKGROUND", INTEGER2NUM(SOPRI_BACKGROUND)); + /* Background socket priority */ + rb_define_const(rb_mSockConst, "SOPRI_BACKGROUND", INTEGER2NUM(SOPRI_BACKGROUND)); +#endif +#if defined(IPX_TYPE) + /* */ + rb_define_const(rb_cSocket, "IPX_TYPE", INTEGER2NUM(IPX_TYPE)); + /* */ + rb_define_const(rb_mSockConst, "IPX_TYPE", INTEGER2NUM(IPX_TYPE)); +#endif +#if defined(TCP_NODELAY) + /* Don't delay sending to coalesce packets */ + rb_define_const(rb_cSocket, "TCP_NODELAY", INTEGER2NUM(TCP_NODELAY)); + /* Don't delay sending to coalesce packets */ + rb_define_const(rb_mSockConst, "TCP_NODELAY", INTEGER2NUM(TCP_NODELAY)); +#endif +#if defined(TCP_MAXSEG) + /* Set maximum segment size */ + rb_define_const(rb_cSocket, "TCP_MAXSEG", INTEGER2NUM(TCP_MAXSEG)); + /* Set maximum segment size */ + rb_define_const(rb_mSockConst, "TCP_MAXSEG", INTEGER2NUM(TCP_MAXSEG)); +#endif +#if defined(TCP_CORK) + /* Don't send partial frames (Linux 2.2, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_CORK", INTEGER2NUM(TCP_CORK)); + /* Don't send partial frames (Linux 2.2, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_CORK", INTEGER2NUM(TCP_CORK)); +#endif +#if defined(TCP_DEFER_ACCEPT) + /* Don't notify a listening socket until data is ready (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_DEFER_ACCEPT", INTEGER2NUM(TCP_DEFER_ACCEPT)); + /* Don't notify a listening socket until data is ready (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_DEFER_ACCEPT", INTEGER2NUM(TCP_DEFER_ACCEPT)); +#endif +#if defined(TCP_INFO) + /* Retrieve information about this socket (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_INFO", INTEGER2NUM(TCP_INFO)); + /* Retrieve information about this socket (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_INFO", INTEGER2NUM(TCP_INFO)); +#endif +#if defined(TCP_KEEPCNT) + /* Maximum number of keepalive probes allowed before dropping a connection (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_KEEPCNT", INTEGER2NUM(TCP_KEEPCNT)); + /* Maximum number of keepalive probes allowed before dropping a connection (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_KEEPCNT", INTEGER2NUM(TCP_KEEPCNT)); +#endif +#if defined(TCP_KEEPIDLE) + /* Idle time before keepalive probes are sent (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_KEEPIDLE", INTEGER2NUM(TCP_KEEPIDLE)); + /* Idle time before keepalive probes are sent (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_KEEPIDLE", INTEGER2NUM(TCP_KEEPIDLE)); +#endif +#if defined(TCP_KEEPINTVL) + /* Time between keepalive probes (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_KEEPINTVL", INTEGER2NUM(TCP_KEEPINTVL)); + /* Time between keepalive probes (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_KEEPINTVL", INTEGER2NUM(TCP_KEEPINTVL)); +#endif +#if defined(TCP_LINGER2) + /* Lifetime of orphaned FIN_WAIT2 sockets (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_LINGER2", INTEGER2NUM(TCP_LINGER2)); + /* Lifetime of orphaned FIN_WAIT2 sockets (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_LINGER2", INTEGER2NUM(TCP_LINGER2)); +#endif +#if defined(TCP_MD5SIG) + /* Use MD5 digests (RFC2385, Linux 2.6.20, glibc 2.7) */ + rb_define_const(rb_cSocket, "TCP_MD5SIG", INTEGER2NUM(TCP_MD5SIG)); + /* Use MD5 digests (RFC2385, Linux 2.6.20, glibc 2.7) */ + rb_define_const(rb_mSockConst, "TCP_MD5SIG", INTEGER2NUM(TCP_MD5SIG)); +#endif +#if defined(TCP_NOOPT) + /* Don't use TCP options */ + rb_define_const(rb_cSocket, "TCP_NOOPT", INTEGER2NUM(TCP_NOOPT)); + /* Don't use TCP options */ + rb_define_const(rb_mSockConst, "TCP_NOOPT", INTEGER2NUM(TCP_NOOPT)); +#endif +#if defined(TCP_NOPUSH) + /* Don't push the last block of write */ + rb_define_const(rb_cSocket, "TCP_NOPUSH", INTEGER2NUM(TCP_NOPUSH)); + /* Don't push the last block of write */ + rb_define_const(rb_mSockConst, "TCP_NOPUSH", INTEGER2NUM(TCP_NOPUSH)); +#endif +#if defined(TCP_QUICKACK) + /* Enable quickack mode (Linux 2.4.4, glibc 2.3) */ + rb_define_const(rb_cSocket, "TCP_QUICKACK", INTEGER2NUM(TCP_QUICKACK)); + /* Enable quickack mode (Linux 2.4.4, glibc 2.3) */ + rb_define_const(rb_mSockConst, "TCP_QUICKACK", INTEGER2NUM(TCP_QUICKACK)); +#endif +#if defined(TCP_SYNCNT) + /* Number of SYN retransmits before a connection is dropped (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_SYNCNT", INTEGER2NUM(TCP_SYNCNT)); + /* Number of SYN retransmits before a connection is dropped (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_SYNCNT", INTEGER2NUM(TCP_SYNCNT)); +#endif +#if defined(TCP_WINDOW_CLAMP) + /* Clamp the size of the advertised window (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_cSocket, "TCP_WINDOW_CLAMP", INTEGER2NUM(TCP_WINDOW_CLAMP)); + /* Clamp the size of the advertised window (Linux 2.4, glibc 2.2) */ + rb_define_const(rb_mSockConst, "TCP_WINDOW_CLAMP", INTEGER2NUM(TCP_WINDOW_CLAMP)); +#endif +#if defined(TCP_FASTOPEN) + /* Reduce step of the handshake process (Linux 3.7, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_FASTOPEN", INTEGER2NUM(TCP_FASTOPEN)); + /* Reduce step of the handshake process (Linux 3.7, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_FASTOPEN", INTEGER2NUM(TCP_FASTOPEN)); +#endif +#if defined(TCP_CONGESTION) + /* TCP congestion control algorithm (Linux 2.6.13, glibc 2.6) */ + rb_define_const(rb_cSocket, "TCP_CONGESTION", INTEGER2NUM(TCP_CONGESTION)); + /* TCP congestion control algorithm (Linux 2.6.13, glibc 2.6) */ + rb_define_const(rb_mSockConst, "TCP_CONGESTION", INTEGER2NUM(TCP_CONGESTION)); +#endif +#if defined(TCP_COOKIE_TRANSACTIONS) + /* TCP Cookie Transactions (Linux 2.6.33, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_COOKIE_TRANSACTIONS", INTEGER2NUM(TCP_COOKIE_TRANSACTIONS)); + /* TCP Cookie Transactions (Linux 2.6.33, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_COOKIE_TRANSACTIONS", INTEGER2NUM(TCP_COOKIE_TRANSACTIONS)); +#endif +#if defined(TCP_QUEUE_SEQ) + /* Sequence of a queue for repair mode (Linux 3.5, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_QUEUE_SEQ", INTEGER2NUM(TCP_QUEUE_SEQ)); + /* Sequence of a queue for repair mode (Linux 3.5, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_QUEUE_SEQ", INTEGER2NUM(TCP_QUEUE_SEQ)); +#endif +#if defined(TCP_REPAIR) + /* Repair mode (Linux 3.5, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_REPAIR", INTEGER2NUM(TCP_REPAIR)); + /* Repair mode (Linux 3.5, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_REPAIR", INTEGER2NUM(TCP_REPAIR)); +#endif +#if defined(TCP_REPAIR_OPTIONS) + /* Options for repair mode (Linux 3.5, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_REPAIR_OPTIONS", INTEGER2NUM(TCP_REPAIR_OPTIONS)); + /* Options for repair mode (Linux 3.5, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_REPAIR_OPTIONS", INTEGER2NUM(TCP_REPAIR_OPTIONS)); +#endif +#if defined(TCP_REPAIR_QUEUE) + /* Queue for repair mode (Linux 3.5, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_REPAIR_QUEUE", INTEGER2NUM(TCP_REPAIR_QUEUE)); + /* Queue for repair mode (Linux 3.5, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_REPAIR_QUEUE", INTEGER2NUM(TCP_REPAIR_QUEUE)); +#endif +#if defined(TCP_THIN_DUPACK) + /* Duplicated acknowledgments handling for thin-streams (Linux 2.6.34, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_THIN_DUPACK", INTEGER2NUM(TCP_THIN_DUPACK)); + /* Duplicated acknowledgments handling for thin-streams (Linux 2.6.34, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_THIN_DUPACK", INTEGER2NUM(TCP_THIN_DUPACK)); +#endif +#if defined(TCP_THIN_LINEAR_TIMEOUTS) + /* Linear timeouts for thin-streams (Linux 2.6.34, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_THIN_LINEAR_TIMEOUTS", INTEGER2NUM(TCP_THIN_LINEAR_TIMEOUTS)); + /* Linear timeouts for thin-streams (Linux 2.6.34, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_THIN_LINEAR_TIMEOUTS", INTEGER2NUM(TCP_THIN_LINEAR_TIMEOUTS)); +#endif +#if defined(TCP_TIMESTAMP) + /* TCP timestamp (Linux 3.9, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_TIMESTAMP", INTEGER2NUM(TCP_TIMESTAMP)); + /* TCP timestamp (Linux 3.9, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_TIMESTAMP", INTEGER2NUM(TCP_TIMESTAMP)); +#endif +#if defined(TCP_USER_TIMEOUT) + /* Max timeout before a TCP connection is aborted (Linux 2.6.37, glibc 2.18) */ + rb_define_const(rb_cSocket, "TCP_USER_TIMEOUT", INTEGER2NUM(TCP_USER_TIMEOUT)); + /* Max timeout before a TCP connection is aborted (Linux 2.6.37, glibc 2.18) */ + rb_define_const(rb_mSockConst, "TCP_USER_TIMEOUT", INTEGER2NUM(TCP_USER_TIMEOUT)); +#endif +#if defined(UDP_CORK) + /* Don't send partial frames (Linux 2.5.44, glibc 2.11) */ + rb_define_const(rb_cSocket, "UDP_CORK", INTEGER2NUM(UDP_CORK)); + /* Don't send partial frames (Linux 2.5.44, glibc 2.11) */ + rb_define_const(rb_mSockConst, "UDP_CORK", INTEGER2NUM(UDP_CORK)); +#endif +#if defined(EAI_ADDRFAMILY) + /* Address family for hostname not supported */ + rb_define_const(rb_cSocket, "EAI_ADDRFAMILY", INTEGER2NUM(EAI_ADDRFAMILY)); + /* Address family for hostname not supported */ + rb_define_const(rb_mSockConst, "EAI_ADDRFAMILY", INTEGER2NUM(EAI_ADDRFAMILY)); +#endif +#if defined(EAI_AGAIN) + /* Temporary failure in name resolution */ + rb_define_const(rb_cSocket, "EAI_AGAIN", INTEGER2NUM(EAI_AGAIN)); + /* Temporary failure in name resolution */ + rb_define_const(rb_mSockConst, "EAI_AGAIN", INTEGER2NUM(EAI_AGAIN)); +#endif +#if defined(EAI_BADFLAGS) + /* Invalid flags */ + rb_define_const(rb_cSocket, "EAI_BADFLAGS", INTEGER2NUM(EAI_BADFLAGS)); + /* Invalid flags */ + rb_define_const(rb_mSockConst, "EAI_BADFLAGS", INTEGER2NUM(EAI_BADFLAGS)); +#endif +#if defined(EAI_FAIL) + /* Non-recoverable failure in name resolution */ + rb_define_const(rb_cSocket, "EAI_FAIL", INTEGER2NUM(EAI_FAIL)); + /* Non-recoverable failure in name resolution */ + rb_define_const(rb_mSockConst, "EAI_FAIL", INTEGER2NUM(EAI_FAIL)); +#endif +#if defined(EAI_FAMILY) + /* Address family not supported */ + rb_define_const(rb_cSocket, "EAI_FAMILY", INTEGER2NUM(EAI_FAMILY)); + /* Address family not supported */ + rb_define_const(rb_mSockConst, "EAI_FAMILY", INTEGER2NUM(EAI_FAMILY)); +#endif +#if defined(EAI_MEMORY) + /* Memory allocation failure */ + rb_define_const(rb_cSocket, "EAI_MEMORY", INTEGER2NUM(EAI_MEMORY)); + /* Memory allocation failure */ + rb_define_const(rb_mSockConst, "EAI_MEMORY", INTEGER2NUM(EAI_MEMORY)); +#endif +#if defined(EAI_NODATA) + /* No address associated with hostname */ + rb_define_const(rb_cSocket, "EAI_NODATA", INTEGER2NUM(EAI_NODATA)); + /* No address associated with hostname */ + rb_define_const(rb_mSockConst, "EAI_NODATA", INTEGER2NUM(EAI_NODATA)); +#endif +#if defined(EAI_NONAME) + /* Hostname nor servname, or not known */ + rb_define_const(rb_cSocket, "EAI_NONAME", INTEGER2NUM(EAI_NONAME)); + /* Hostname nor servname, or not known */ + rb_define_const(rb_mSockConst, "EAI_NONAME", INTEGER2NUM(EAI_NONAME)); +#endif +#if defined(EAI_OVERFLOW) + /* Argument buffer overflow */ + rb_define_const(rb_cSocket, "EAI_OVERFLOW", INTEGER2NUM(EAI_OVERFLOW)); + /* Argument buffer overflow */ + rb_define_const(rb_mSockConst, "EAI_OVERFLOW", INTEGER2NUM(EAI_OVERFLOW)); +#endif +#if defined(EAI_SERVICE) + /* Servname not supported for socket type */ + rb_define_const(rb_cSocket, "EAI_SERVICE", INTEGER2NUM(EAI_SERVICE)); + /* Servname not supported for socket type */ + rb_define_const(rb_mSockConst, "EAI_SERVICE", INTEGER2NUM(EAI_SERVICE)); +#endif +#if defined(EAI_SOCKTYPE) + /* Socket type not supported */ + rb_define_const(rb_cSocket, "EAI_SOCKTYPE", INTEGER2NUM(EAI_SOCKTYPE)); + /* Socket type not supported */ + rb_define_const(rb_mSockConst, "EAI_SOCKTYPE", INTEGER2NUM(EAI_SOCKTYPE)); +#endif +#if defined(EAI_SYSTEM) + /* System error returned in errno */ + rb_define_const(rb_cSocket, "EAI_SYSTEM", INTEGER2NUM(EAI_SYSTEM)); + /* System error returned in errno */ + rb_define_const(rb_mSockConst, "EAI_SYSTEM", INTEGER2NUM(EAI_SYSTEM)); +#endif +#if defined(EAI_BADHINTS) + /* Invalid value for hints */ + rb_define_const(rb_cSocket, "EAI_BADHINTS", INTEGER2NUM(EAI_BADHINTS)); + /* Invalid value for hints */ + rb_define_const(rb_mSockConst, "EAI_BADHINTS", INTEGER2NUM(EAI_BADHINTS)); +#endif +#if defined(EAI_PROTOCOL) + /* Resolved protocol is unknown */ + rb_define_const(rb_cSocket, "EAI_PROTOCOL", INTEGER2NUM(EAI_PROTOCOL)); + /* Resolved protocol is unknown */ + rb_define_const(rb_mSockConst, "EAI_PROTOCOL", INTEGER2NUM(EAI_PROTOCOL)); +#endif +#if defined(EAI_MAX) + /* Maximum error code from getaddrinfo */ + rb_define_const(rb_cSocket, "EAI_MAX", INTEGER2NUM(EAI_MAX)); + /* Maximum error code from getaddrinfo */ + rb_define_const(rb_mSockConst, "EAI_MAX", INTEGER2NUM(EAI_MAX)); +#endif +#if defined(AI_PASSIVE) + /* Get address to use with bind() */ + rb_define_const(rb_cSocket, "AI_PASSIVE", INTEGER2NUM(AI_PASSIVE)); + /* Get address to use with bind() */ + rb_define_const(rb_mSockConst, "AI_PASSIVE", INTEGER2NUM(AI_PASSIVE)); +#endif +#if defined(AI_CANONNAME) + /* Fill in the canonical name */ + rb_define_const(rb_cSocket, "AI_CANONNAME", INTEGER2NUM(AI_CANONNAME)); + /* Fill in the canonical name */ + rb_define_const(rb_mSockConst, "AI_CANONNAME", INTEGER2NUM(AI_CANONNAME)); +#endif +#if defined(AI_NUMERICHOST) + /* Prevent host name resolution */ + rb_define_const(rb_cSocket, "AI_NUMERICHOST", INTEGER2NUM(AI_NUMERICHOST)); + /* Prevent host name resolution */ + rb_define_const(rb_mSockConst, "AI_NUMERICHOST", INTEGER2NUM(AI_NUMERICHOST)); +#endif +#if defined(AI_NUMERICSERV) + /* Prevent service name resolution */ + rb_define_const(rb_cSocket, "AI_NUMERICSERV", INTEGER2NUM(AI_NUMERICSERV)); + /* Prevent service name resolution */ + rb_define_const(rb_mSockConst, "AI_NUMERICSERV", INTEGER2NUM(AI_NUMERICSERV)); +#endif +#if defined(AI_MASK) + /* Valid flag mask for getaddrinfo (not for application use) */ + rb_define_const(rb_cSocket, "AI_MASK", INTEGER2NUM(AI_MASK)); + /* Valid flag mask for getaddrinfo (not for application use) */ + rb_define_const(rb_mSockConst, "AI_MASK", INTEGER2NUM(AI_MASK)); +#endif +#if defined(AI_ALL) + /* Allow all addresses */ + rb_define_const(rb_cSocket, "AI_ALL", INTEGER2NUM(AI_ALL)); + /* Allow all addresses */ + rb_define_const(rb_mSockConst, "AI_ALL", INTEGER2NUM(AI_ALL)); +#endif +#if defined(AI_V4MAPPED_CFG) + /* Accept IPv4 mapped addresses if the kernel supports it */ + rb_define_const(rb_cSocket, "AI_V4MAPPED_CFG", INTEGER2NUM(AI_V4MAPPED_CFG)); + /* Accept IPv4 mapped addresses if the kernel supports it */ + rb_define_const(rb_mSockConst, "AI_V4MAPPED_CFG", INTEGER2NUM(AI_V4MAPPED_CFG)); +#endif +#if defined(AI_ADDRCONFIG) + /* Accept only if any address is assigned */ + rb_define_const(rb_cSocket, "AI_ADDRCONFIG", INTEGER2NUM(AI_ADDRCONFIG)); + /* Accept only if any address is assigned */ + rb_define_const(rb_mSockConst, "AI_ADDRCONFIG", INTEGER2NUM(AI_ADDRCONFIG)); +#endif +#if defined(AI_V4MAPPED) + /* Accept IPv4-mapped IPv6 addresses */ + rb_define_const(rb_cSocket, "AI_V4MAPPED", INTEGER2NUM(AI_V4MAPPED)); + /* Accept IPv4-mapped IPv6 addresses */ + rb_define_const(rb_mSockConst, "AI_V4MAPPED", INTEGER2NUM(AI_V4MAPPED)); +#endif +#if defined(AI_DEFAULT) + /* Default flags for getaddrinfo */ + rb_define_const(rb_cSocket, "AI_DEFAULT", INTEGER2NUM(AI_DEFAULT)); + /* Default flags for getaddrinfo */ + rb_define_const(rb_mSockConst, "AI_DEFAULT", INTEGER2NUM(AI_DEFAULT)); +#endif +#if defined(NI_MAXHOST) + /* Maximum length of a hostname */ + rb_define_const(rb_cSocket, "NI_MAXHOST", INTEGER2NUM(NI_MAXHOST)); + /* Maximum length of a hostname */ + rb_define_const(rb_mSockConst, "NI_MAXHOST", INTEGER2NUM(NI_MAXHOST)); +#endif +#if defined(NI_MAXSERV) + /* Maximum length of a service name */ + rb_define_const(rb_cSocket, "NI_MAXSERV", INTEGER2NUM(NI_MAXSERV)); + /* Maximum length of a service name */ + rb_define_const(rb_mSockConst, "NI_MAXSERV", INTEGER2NUM(NI_MAXSERV)); +#endif +#if defined(NI_NOFQDN) + /* An FQDN is not required for local hosts, return only the local part */ + rb_define_const(rb_cSocket, "NI_NOFQDN", INTEGER2NUM(NI_NOFQDN)); + /* An FQDN is not required for local hosts, return only the local part */ + rb_define_const(rb_mSockConst, "NI_NOFQDN", INTEGER2NUM(NI_NOFQDN)); +#endif +#if defined(NI_NUMERICHOST) + /* Return a numeric address */ + rb_define_const(rb_cSocket, "NI_NUMERICHOST", INTEGER2NUM(NI_NUMERICHOST)); + /* Return a numeric address */ + rb_define_const(rb_mSockConst, "NI_NUMERICHOST", INTEGER2NUM(NI_NUMERICHOST)); +#endif +#if defined(NI_NAMEREQD) + /* A name is required */ + rb_define_const(rb_cSocket, "NI_NAMEREQD", INTEGER2NUM(NI_NAMEREQD)); + /* A name is required */ + rb_define_const(rb_mSockConst, "NI_NAMEREQD", INTEGER2NUM(NI_NAMEREQD)); +#endif +#if defined(NI_NUMERICSERV) + /* Return the service name as a digit string */ + rb_define_const(rb_cSocket, "NI_NUMERICSERV", INTEGER2NUM(NI_NUMERICSERV)); + /* Return the service name as a digit string */ + rb_define_const(rb_mSockConst, "NI_NUMERICSERV", INTEGER2NUM(NI_NUMERICSERV)); +#endif +#if defined(NI_DGRAM) + /* The service specified is a datagram service (looks up UDP ports) */ + rb_define_const(rb_cSocket, "NI_DGRAM", INTEGER2NUM(NI_DGRAM)); + /* The service specified is a datagram service (looks up UDP ports) */ + rb_define_const(rb_mSockConst, "NI_DGRAM", INTEGER2NUM(NI_DGRAM)); +#endif +#if defined(SHUT_RD) + /* Shut down the reading side of the socket */ + rb_define_const(rb_cSocket, "SHUT_RD", INTEGER2NUM(SHUT_RD)); + /* Shut down the reading side of the socket */ + rb_define_const(rb_mSockConst, "SHUT_RD", INTEGER2NUM(SHUT_RD)); +#endif +#if defined(SHUT_WR) + /* Shut down the writing side of the socket */ + rb_define_const(rb_cSocket, "SHUT_WR", INTEGER2NUM(SHUT_WR)); + /* Shut down the writing side of the socket */ + rb_define_const(rb_mSockConst, "SHUT_WR", INTEGER2NUM(SHUT_WR)); +#endif +#if defined(SHUT_RDWR) + /* Shut down the both sides of the socket */ + rb_define_const(rb_cSocket, "SHUT_RDWR", INTEGER2NUM(SHUT_RDWR)); + /* Shut down the both sides of the socket */ + rb_define_const(rb_mSockConst, "SHUT_RDWR", INTEGER2NUM(SHUT_RDWR)); +#endif +#if defined(INET6) +#if defined(IPV6_JOIN_GROUP) + /* Join a group membership */ + rb_define_const(rb_cSocket, "IPV6_JOIN_GROUP", INTEGER2NUM(IPV6_JOIN_GROUP)); + /* Join a group membership */ + rb_define_const(rb_mSockConst, "IPV6_JOIN_GROUP", INTEGER2NUM(IPV6_JOIN_GROUP)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_LEAVE_GROUP) + /* Leave a group membership */ + rb_define_const(rb_cSocket, "IPV6_LEAVE_GROUP", INTEGER2NUM(IPV6_LEAVE_GROUP)); + /* Leave a group membership */ + rb_define_const(rb_mSockConst, "IPV6_LEAVE_GROUP", INTEGER2NUM(IPV6_LEAVE_GROUP)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_MULTICAST_HOPS) + /* IP6 multicast hops */ + rb_define_const(rb_cSocket, "IPV6_MULTICAST_HOPS", INTEGER2NUM(IPV6_MULTICAST_HOPS)); + /* IP6 multicast hops */ + rb_define_const(rb_mSockConst, "IPV6_MULTICAST_HOPS", INTEGER2NUM(IPV6_MULTICAST_HOPS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_MULTICAST_IF) + /* IP6 multicast interface */ + rb_define_const(rb_cSocket, "IPV6_MULTICAST_IF", INTEGER2NUM(IPV6_MULTICAST_IF)); + /* IP6 multicast interface */ + rb_define_const(rb_mSockConst, "IPV6_MULTICAST_IF", INTEGER2NUM(IPV6_MULTICAST_IF)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_MULTICAST_LOOP) + /* IP6 multicast loopback */ + rb_define_const(rb_cSocket, "IPV6_MULTICAST_LOOP", INTEGER2NUM(IPV6_MULTICAST_LOOP)); + /* IP6 multicast loopback */ + rb_define_const(rb_mSockConst, "IPV6_MULTICAST_LOOP", INTEGER2NUM(IPV6_MULTICAST_LOOP)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_UNICAST_HOPS) + /* IP6 unicast hops */ + rb_define_const(rb_cSocket, "IPV6_UNICAST_HOPS", INTEGER2NUM(IPV6_UNICAST_HOPS)); + /* IP6 unicast hops */ + rb_define_const(rb_mSockConst, "IPV6_UNICAST_HOPS", INTEGER2NUM(IPV6_UNICAST_HOPS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_V6ONLY) + /* Only bind IPv6 with a wildcard bind */ + rb_define_const(rb_cSocket, "IPV6_V6ONLY", INTEGER2NUM(IPV6_V6ONLY)); + /* Only bind IPv6 with a wildcard bind */ + rb_define_const(rb_mSockConst, "IPV6_V6ONLY", INTEGER2NUM(IPV6_V6ONLY)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_CHECKSUM) + /* Checksum offset for raw sockets */ + rb_define_const(rb_cSocket, "IPV6_CHECKSUM", INTEGER2NUM(IPV6_CHECKSUM)); + /* Checksum offset for raw sockets */ + rb_define_const(rb_mSockConst, "IPV6_CHECKSUM", INTEGER2NUM(IPV6_CHECKSUM)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_DONTFRAG) + /* Don't fragment packets */ + rb_define_const(rb_cSocket, "IPV6_DONTFRAG", INTEGER2NUM(IPV6_DONTFRAG)); + /* Don't fragment packets */ + rb_define_const(rb_mSockConst, "IPV6_DONTFRAG", INTEGER2NUM(IPV6_DONTFRAG)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_DSTOPTS) + /* Destination option */ + rb_define_const(rb_cSocket, "IPV6_DSTOPTS", INTEGER2NUM(IPV6_DSTOPTS)); + /* Destination option */ + rb_define_const(rb_mSockConst, "IPV6_DSTOPTS", INTEGER2NUM(IPV6_DSTOPTS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_HOPLIMIT) + /* Hop limit */ + rb_define_const(rb_cSocket, "IPV6_HOPLIMIT", INTEGER2NUM(IPV6_HOPLIMIT)); + /* Hop limit */ + rb_define_const(rb_mSockConst, "IPV6_HOPLIMIT", INTEGER2NUM(IPV6_HOPLIMIT)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_HOPOPTS) + /* Hop-by-hop option */ + rb_define_const(rb_cSocket, "IPV6_HOPOPTS", INTEGER2NUM(IPV6_HOPOPTS)); + /* Hop-by-hop option */ + rb_define_const(rb_mSockConst, "IPV6_HOPOPTS", INTEGER2NUM(IPV6_HOPOPTS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_NEXTHOP) + /* Next hop address */ + rb_define_const(rb_cSocket, "IPV6_NEXTHOP", INTEGER2NUM(IPV6_NEXTHOP)); + /* Next hop address */ + rb_define_const(rb_mSockConst, "IPV6_NEXTHOP", INTEGER2NUM(IPV6_NEXTHOP)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_PATHMTU) + /* Retrieve current path MTU */ + rb_define_const(rb_cSocket, "IPV6_PATHMTU", INTEGER2NUM(IPV6_PATHMTU)); + /* Retrieve current path MTU */ + rb_define_const(rb_mSockConst, "IPV6_PATHMTU", INTEGER2NUM(IPV6_PATHMTU)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_PKTINFO) + /* Receive packet information with datagram */ + rb_define_const(rb_cSocket, "IPV6_PKTINFO", INTEGER2NUM(IPV6_PKTINFO)); + /* Receive packet information with datagram */ + rb_define_const(rb_mSockConst, "IPV6_PKTINFO", INTEGER2NUM(IPV6_PKTINFO)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RECVDSTOPTS) + /* Receive all IP6 options for response */ + rb_define_const(rb_cSocket, "IPV6_RECVDSTOPTS", INTEGER2NUM(IPV6_RECVDSTOPTS)); + /* Receive all IP6 options for response */ + rb_define_const(rb_mSockConst, "IPV6_RECVDSTOPTS", INTEGER2NUM(IPV6_RECVDSTOPTS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RECVHOPLIMIT) + /* Receive hop limit with datagram */ + rb_define_const(rb_cSocket, "IPV6_RECVHOPLIMIT", INTEGER2NUM(IPV6_RECVHOPLIMIT)); + /* Receive hop limit with datagram */ + rb_define_const(rb_mSockConst, "IPV6_RECVHOPLIMIT", INTEGER2NUM(IPV6_RECVHOPLIMIT)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RECVHOPOPTS) + /* Receive hop-by-hop options */ + rb_define_const(rb_cSocket, "IPV6_RECVHOPOPTS", INTEGER2NUM(IPV6_RECVHOPOPTS)); + /* Receive hop-by-hop options */ + rb_define_const(rb_mSockConst, "IPV6_RECVHOPOPTS", INTEGER2NUM(IPV6_RECVHOPOPTS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RECVPKTINFO) + /* Receive destination IP address and incoming interface */ + rb_define_const(rb_cSocket, "IPV6_RECVPKTINFO", INTEGER2NUM(IPV6_RECVPKTINFO)); + /* Receive destination IP address and incoming interface */ + rb_define_const(rb_mSockConst, "IPV6_RECVPKTINFO", INTEGER2NUM(IPV6_RECVPKTINFO)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RECVRTHDR) + /* Receive routing header */ + rb_define_const(rb_cSocket, "IPV6_RECVRTHDR", INTEGER2NUM(IPV6_RECVRTHDR)); + /* Receive routing header */ + rb_define_const(rb_mSockConst, "IPV6_RECVRTHDR", INTEGER2NUM(IPV6_RECVRTHDR)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RECVTCLASS) + /* Receive traffic class */ + rb_define_const(rb_cSocket, "IPV6_RECVTCLASS", INTEGER2NUM(IPV6_RECVTCLASS)); + /* Receive traffic class */ + rb_define_const(rb_mSockConst, "IPV6_RECVTCLASS", INTEGER2NUM(IPV6_RECVTCLASS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RTHDR) + /* Allows removal of sticky routing headers */ + rb_define_const(rb_cSocket, "IPV6_RTHDR", INTEGER2NUM(IPV6_RTHDR)); + /* Allows removal of sticky routing headers */ + rb_define_const(rb_mSockConst, "IPV6_RTHDR", INTEGER2NUM(IPV6_RTHDR)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RTHDRDSTOPTS) + /* Allows removal of sticky destination options header */ + rb_define_const(rb_cSocket, "IPV6_RTHDRDSTOPTS", INTEGER2NUM(IPV6_RTHDRDSTOPTS)); + /* Allows removal of sticky destination options header */ + rb_define_const(rb_mSockConst, "IPV6_RTHDRDSTOPTS", INTEGER2NUM(IPV6_RTHDRDSTOPTS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RTHDR_TYPE_0) + /* Routing header type 0 */ + rb_define_const(rb_cSocket, "IPV6_RTHDR_TYPE_0", INTEGER2NUM(IPV6_RTHDR_TYPE_0)); + /* Routing header type 0 */ + rb_define_const(rb_mSockConst, "IPV6_RTHDR_TYPE_0", INTEGER2NUM(IPV6_RTHDR_TYPE_0)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_RECVPATHMTU) + /* Receive current path MTU with datagram */ + rb_define_const(rb_cSocket, "IPV6_RECVPATHMTU", INTEGER2NUM(IPV6_RECVPATHMTU)); + /* Receive current path MTU with datagram */ + rb_define_const(rb_mSockConst, "IPV6_RECVPATHMTU", INTEGER2NUM(IPV6_RECVPATHMTU)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_TCLASS) + /* Specify the traffic class */ + rb_define_const(rb_cSocket, "IPV6_TCLASS", INTEGER2NUM(IPV6_TCLASS)); + /* Specify the traffic class */ + rb_define_const(rb_mSockConst, "IPV6_TCLASS", INTEGER2NUM(IPV6_TCLASS)); +#endif +#endif +#if defined(INET6) +#if defined(IPV6_USE_MIN_MTU) + /* Use the minimum MTU size */ + rb_define_const(rb_cSocket, "IPV6_USE_MIN_MTU", INTEGER2NUM(IPV6_USE_MIN_MTU)); + /* Use the minimum MTU size */ + rb_define_const(rb_mSockConst, "IPV6_USE_MIN_MTU", INTEGER2NUM(IPV6_USE_MIN_MTU)); +#endif +#endif +#if defined(INET_ADDRSTRLEN) + /* Maximum length of an IPv4 address string */ + rb_define_const(rb_cSocket, "INET_ADDRSTRLEN", INTEGER2NUM(INET_ADDRSTRLEN)); + /* Maximum length of an IPv4 address string */ + rb_define_const(rb_mSockConst, "INET_ADDRSTRLEN", INTEGER2NUM(INET_ADDRSTRLEN)); +#endif +#if defined(INET6_ADDRSTRLEN) + /* Maximum length of an IPv6 address string */ + rb_define_const(rb_cSocket, "INET6_ADDRSTRLEN", INTEGER2NUM(INET6_ADDRSTRLEN)); + /* Maximum length of an IPv6 address string */ + rb_define_const(rb_mSockConst, "INET6_ADDRSTRLEN", INTEGER2NUM(INET6_ADDRSTRLEN)); +#endif +#if defined(IFNAMSIZ) + /* Maximum interface name size */ + rb_define_const(rb_cSocket, "IFNAMSIZ", INTEGER2NUM(IFNAMSIZ)); + /* Maximum interface name size */ + rb_define_const(rb_mSockConst, "IFNAMSIZ", INTEGER2NUM(IFNAMSIZ)); +#endif +#if defined(IF_NAMESIZE) + /* Maximum interface name size */ + rb_define_const(rb_cSocket, "IF_NAMESIZE", INTEGER2NUM(IF_NAMESIZE)); + /* Maximum interface name size */ + rb_define_const(rb_mSockConst, "IF_NAMESIZE", INTEGER2NUM(IF_NAMESIZE)); +#endif +#if defined(SOMAXCONN) + /* Maximum connection requests that may be queued for a socket */ + rb_define_const(rb_cSocket, "SOMAXCONN", INTEGER2NUM(SOMAXCONN)); + /* Maximum connection requests that may be queued for a socket */ + rb_define_const(rb_mSockConst, "SOMAXCONN", INTEGER2NUM(SOMAXCONN)); +#endif +#if defined(SCM_RIGHTS) + /* Access rights */ + rb_define_const(rb_cSocket, "SCM_RIGHTS", INTEGER2NUM(SCM_RIGHTS)); + /* Access rights */ + rb_define_const(rb_mSockConst, "SCM_RIGHTS", INTEGER2NUM(SCM_RIGHTS)); +#endif +#if defined(SCM_TIMESTAMP) + /* Timestamp (timeval) */ + rb_define_const(rb_cSocket, "SCM_TIMESTAMP", INTEGER2NUM(SCM_TIMESTAMP)); + /* Timestamp (timeval) */ + rb_define_const(rb_mSockConst, "SCM_TIMESTAMP", INTEGER2NUM(SCM_TIMESTAMP)); +#endif +#if defined(SCM_TIMESTAMPNS) + /* Timespec (timespec) */ + rb_define_const(rb_cSocket, "SCM_TIMESTAMPNS", INTEGER2NUM(SCM_TIMESTAMPNS)); + /* Timespec (timespec) */ + rb_define_const(rb_mSockConst, "SCM_TIMESTAMPNS", INTEGER2NUM(SCM_TIMESTAMPNS)); +#endif +#if defined(SCM_TIMESTAMPING) + /* Timestamp (timespec list) (Linux 2.6.30) */ + rb_define_const(rb_cSocket, "SCM_TIMESTAMPING", INTEGER2NUM(SCM_TIMESTAMPING)); + /* Timestamp (timespec list) (Linux 2.6.30) */ + rb_define_const(rb_mSockConst, "SCM_TIMESTAMPING", INTEGER2NUM(SCM_TIMESTAMPING)); +#endif +#if defined(SCM_BINTIME) + /* Timestamp (bintime) */ + rb_define_const(rb_cSocket, "SCM_BINTIME", INTEGER2NUM(SCM_BINTIME)); + /* Timestamp (bintime) */ + rb_define_const(rb_mSockConst, "SCM_BINTIME", INTEGER2NUM(SCM_BINTIME)); +#endif +#if defined(SCM_CREDENTIALS) + /* The sender's credentials */ + rb_define_const(rb_cSocket, "SCM_CREDENTIALS", INTEGER2NUM(SCM_CREDENTIALS)); + /* The sender's credentials */ + rb_define_const(rb_mSockConst, "SCM_CREDENTIALS", INTEGER2NUM(SCM_CREDENTIALS)); +#endif +#if defined(SCM_CREDS) + /* Process credentials */ + rb_define_const(rb_cSocket, "SCM_CREDS", INTEGER2NUM(SCM_CREDS)); + /* Process credentials */ + rb_define_const(rb_mSockConst, "SCM_CREDS", INTEGER2NUM(SCM_CREDS)); +#endif +#if defined(SCM_UCRED) + /* User credentials */ + rb_define_const(rb_cSocket, "SCM_UCRED", INTEGER2NUM(SCM_UCRED)); + /* User credentials */ + rb_define_const(rb_mSockConst, "SCM_UCRED", INTEGER2NUM(SCM_UCRED)); +#endif +#if defined(SCM_WIFI_STATUS) + /* Wifi status (Linux 3.3) */ + rb_define_const(rb_cSocket, "SCM_WIFI_STATUS", INTEGER2NUM(SCM_WIFI_STATUS)); + /* Wifi status (Linux 3.3) */ + rb_define_const(rb_mSockConst, "SCM_WIFI_STATUS", INTEGER2NUM(SCM_WIFI_STATUS)); +#endif +#if defined(LOCAL_PEERCRED) + /* Retrieve peer credentials */ + rb_define_const(rb_cSocket, "LOCAL_PEERCRED", INTEGER2NUM(LOCAL_PEERCRED)); + /* Retrieve peer credentials */ + rb_define_const(rb_mSockConst, "LOCAL_PEERCRED", INTEGER2NUM(LOCAL_PEERCRED)); +#endif +#if defined(LOCAL_CREDS) + /* Pass credentials to receiver */ + rb_define_const(rb_cSocket, "LOCAL_CREDS", INTEGER2NUM(LOCAL_CREDS)); + /* Pass credentials to receiver */ + rb_define_const(rb_mSockConst, "LOCAL_CREDS", INTEGER2NUM(LOCAL_CREDS)); +#endif +#if defined(LOCAL_CONNWAIT) + /* Connect blocks until accepted */ + rb_define_const(rb_cSocket, "LOCAL_CONNWAIT", INTEGER2NUM(LOCAL_CONNWAIT)); + /* Connect blocks until accepted */ + rb_define_const(rb_mSockConst, "LOCAL_CONNWAIT", INTEGER2NUM(LOCAL_CONNWAIT)); +#endif +#if defined(IFF_802_1Q_VLAN) + /* 802.1Q VLAN device */ + rb_define_const(rb_cSocket, "IFF_802_1Q_VLAN", INTEGER2NUM(IFF_802_1Q_VLAN)); + /* 802.1Q VLAN device */ + rb_define_const(rb_mSockConst, "IFF_802_1Q_VLAN", INTEGER2NUM(IFF_802_1Q_VLAN)); +#endif +#if defined(IFF_ALLMULTI) + /* receive all multicast packets */ + rb_define_const(rb_cSocket, "IFF_ALLMULTI", INTEGER2NUM(IFF_ALLMULTI)); + /* receive all multicast packets */ + rb_define_const(rb_mSockConst, "IFF_ALLMULTI", INTEGER2NUM(IFF_ALLMULTI)); +#endif +#if defined(IFF_ALTPHYS) + /* use alternate physical connection */ + rb_define_const(rb_cSocket, "IFF_ALTPHYS", INTEGER2NUM(IFF_ALTPHYS)); + /* use alternate physical connection */ + rb_define_const(rb_mSockConst, "IFF_ALTPHYS", INTEGER2NUM(IFF_ALTPHYS)); +#endif +#if defined(IFF_AUTOMEDIA) + /* auto media select active */ + rb_define_const(rb_cSocket, "IFF_AUTOMEDIA", INTEGER2NUM(IFF_AUTOMEDIA)); + /* auto media select active */ + rb_define_const(rb_mSockConst, "IFF_AUTOMEDIA", INTEGER2NUM(IFF_AUTOMEDIA)); +#endif +#if defined(IFF_BONDING) + /* bonding master or slave */ + rb_define_const(rb_cSocket, "IFF_BONDING", INTEGER2NUM(IFF_BONDING)); + /* bonding master or slave */ + rb_define_const(rb_mSockConst, "IFF_BONDING", INTEGER2NUM(IFF_BONDING)); +#endif +#if defined(IFF_BRIDGE_PORT) + /* device used as bridge port */ + rb_define_const(rb_cSocket, "IFF_BRIDGE_PORT", INTEGER2NUM(IFF_BRIDGE_PORT)); + /* device used as bridge port */ + rb_define_const(rb_mSockConst, "IFF_BRIDGE_PORT", INTEGER2NUM(IFF_BRIDGE_PORT)); +#endif +#if defined(IFF_BROADCAST) + /* broadcast address valid */ + rb_define_const(rb_cSocket, "IFF_BROADCAST", INTEGER2NUM(IFF_BROADCAST)); + /* broadcast address valid */ + rb_define_const(rb_mSockConst, "IFF_BROADCAST", INTEGER2NUM(IFF_BROADCAST)); +#endif +#if defined(IFF_CANTCONFIG) + /* unconfigurable using ioctl(2) */ + rb_define_const(rb_cSocket, "IFF_CANTCONFIG", INTEGER2NUM(IFF_CANTCONFIG)); + /* unconfigurable using ioctl(2) */ + rb_define_const(rb_mSockConst, "IFF_CANTCONFIG", INTEGER2NUM(IFF_CANTCONFIG)); +#endif +#if defined(IFF_DEBUG) + /* turn on debugging */ + rb_define_const(rb_cSocket, "IFF_DEBUG", INTEGER2NUM(IFF_DEBUG)); + /* turn on debugging */ + rb_define_const(rb_mSockConst, "IFF_DEBUG", INTEGER2NUM(IFF_DEBUG)); +#endif +#if defined(IFF_DISABLE_NETPOLL) + /* disable netpoll at run-time */ + rb_define_const(rb_cSocket, "IFF_DISABLE_NETPOLL", INTEGER2NUM(IFF_DISABLE_NETPOLL)); + /* disable netpoll at run-time */ + rb_define_const(rb_mSockConst, "IFF_DISABLE_NETPOLL", INTEGER2NUM(IFF_DISABLE_NETPOLL)); +#endif +#if defined(IFF_DONT_BRIDGE) + /* disallow bridging this ether dev */ + rb_define_const(rb_cSocket, "IFF_DONT_BRIDGE", INTEGER2NUM(IFF_DONT_BRIDGE)); + /* disallow bridging this ether dev */ + rb_define_const(rb_mSockConst, "IFF_DONT_BRIDGE", INTEGER2NUM(IFF_DONT_BRIDGE)); +#endif +#if defined(IFF_DORMANT) + /* driver signals dormant */ + rb_define_const(rb_cSocket, "IFF_DORMANT", INTEGER2NUM(IFF_DORMANT)); + /* driver signals dormant */ + rb_define_const(rb_mSockConst, "IFF_DORMANT", INTEGER2NUM(IFF_DORMANT)); +#endif +#if defined(IFF_DRV_OACTIVE) + /* tx hardware queue is full */ + rb_define_const(rb_cSocket, "IFF_DRV_OACTIVE", INTEGER2NUM(IFF_DRV_OACTIVE)); + /* tx hardware queue is full */ + rb_define_const(rb_mSockConst, "IFF_DRV_OACTIVE", INTEGER2NUM(IFF_DRV_OACTIVE)); +#endif +#if defined(IFF_DRV_RUNNING) + /* resources allocated */ + rb_define_const(rb_cSocket, "IFF_DRV_RUNNING", INTEGER2NUM(IFF_DRV_RUNNING)); + /* resources allocated */ + rb_define_const(rb_mSockConst, "IFF_DRV_RUNNING", INTEGER2NUM(IFF_DRV_RUNNING)); +#endif +#if defined(IFF_DYING) + /* interface is winding down */ + rb_define_const(rb_cSocket, "IFF_DYING", INTEGER2NUM(IFF_DYING)); + /* interface is winding down */ + rb_define_const(rb_mSockConst, "IFF_DYING", INTEGER2NUM(IFF_DYING)); +#endif +#if defined(IFF_DYNAMIC) + /* dialup device with changing addresses */ + rb_define_const(rb_cSocket, "IFF_DYNAMIC", INTEGER2NUM(IFF_DYNAMIC)); + /* dialup device with changing addresses */ + rb_define_const(rb_mSockConst, "IFF_DYNAMIC", INTEGER2NUM(IFF_DYNAMIC)); +#endif +#if defined(IFF_EBRIDGE) + /* ethernet bridging device */ + rb_define_const(rb_cSocket, "IFF_EBRIDGE", INTEGER2NUM(IFF_EBRIDGE)); + /* ethernet bridging device */ + rb_define_const(rb_mSockConst, "IFF_EBRIDGE", INTEGER2NUM(IFF_EBRIDGE)); +#endif +#if defined(IFF_ECHO) + /* echo sent packets */ + rb_define_const(rb_cSocket, "IFF_ECHO", INTEGER2NUM(IFF_ECHO)); + /* echo sent packets */ + rb_define_const(rb_mSockConst, "IFF_ECHO", INTEGER2NUM(IFF_ECHO)); +#endif +#if defined(IFF_ISATAP) + /* ISATAP interface (RFC4214) */ + rb_define_const(rb_cSocket, "IFF_ISATAP", INTEGER2NUM(IFF_ISATAP)); + /* ISATAP interface (RFC4214) */ + rb_define_const(rb_mSockConst, "IFF_ISATAP", INTEGER2NUM(IFF_ISATAP)); +#endif +#if defined(IFF_LINK0) + /* per link layer defined bit 0 */ + rb_define_const(rb_cSocket, "IFF_LINK0", INTEGER2NUM(IFF_LINK0)); + /* per link layer defined bit 0 */ + rb_define_const(rb_mSockConst, "IFF_LINK0", INTEGER2NUM(IFF_LINK0)); +#endif +#if defined(IFF_LINK1) + /* per link layer defined bit 1 */ + rb_define_const(rb_cSocket, "IFF_LINK1", INTEGER2NUM(IFF_LINK1)); + /* per link layer defined bit 1 */ + rb_define_const(rb_mSockConst, "IFF_LINK1", INTEGER2NUM(IFF_LINK1)); +#endif +#if defined(IFF_LINK2) + /* per link layer defined bit 2 */ + rb_define_const(rb_cSocket, "IFF_LINK2", INTEGER2NUM(IFF_LINK2)); + /* per link layer defined bit 2 */ + rb_define_const(rb_mSockConst, "IFF_LINK2", INTEGER2NUM(IFF_LINK2)); +#endif +#if defined(IFF_LIVE_ADDR_CHANGE) + /* hardware address change when it's running */ + rb_define_const(rb_cSocket, "IFF_LIVE_ADDR_CHANGE", INTEGER2NUM(IFF_LIVE_ADDR_CHANGE)); + /* hardware address change when it's running */ + rb_define_const(rb_mSockConst, "IFF_LIVE_ADDR_CHANGE", INTEGER2NUM(IFF_LIVE_ADDR_CHANGE)); +#endif +#if defined(IFF_LOOPBACK) + /* loopback net */ + rb_define_const(rb_cSocket, "IFF_LOOPBACK", INTEGER2NUM(IFF_LOOPBACK)); + /* loopback net */ + rb_define_const(rb_mSockConst, "IFF_LOOPBACK", INTEGER2NUM(IFF_LOOPBACK)); +#endif +#if defined(IFF_LOWER_UP) + /* driver signals L1 up */ + rb_define_const(rb_cSocket, "IFF_LOWER_UP", INTEGER2NUM(IFF_LOWER_UP)); + /* driver signals L1 up */ + rb_define_const(rb_mSockConst, "IFF_LOWER_UP", INTEGER2NUM(IFF_LOWER_UP)); +#endif +#if defined(IFF_MACVLAN_PORT) + /* device used as macvlan port */ + rb_define_const(rb_cSocket, "IFF_MACVLAN_PORT", INTEGER2NUM(IFF_MACVLAN_PORT)); + /* device used as macvlan port */ + rb_define_const(rb_mSockConst, "IFF_MACVLAN_PORT", INTEGER2NUM(IFF_MACVLAN_PORT)); +#endif +#if defined(IFF_MASTER) + /* master of a load balancer */ + rb_define_const(rb_cSocket, "IFF_MASTER", INTEGER2NUM(IFF_MASTER)); + /* master of a load balancer */ + rb_define_const(rb_mSockConst, "IFF_MASTER", INTEGER2NUM(IFF_MASTER)); +#endif +#if defined(IFF_MASTER_8023AD) + /* bonding master, 802.3ad. */ + rb_define_const(rb_cSocket, "IFF_MASTER_8023AD", INTEGER2NUM(IFF_MASTER_8023AD)); + /* bonding master, 802.3ad. */ + rb_define_const(rb_mSockConst, "IFF_MASTER_8023AD", INTEGER2NUM(IFF_MASTER_8023AD)); +#endif +#if defined(IFF_MASTER_ALB) + /* bonding master, balance-alb. */ + rb_define_const(rb_cSocket, "IFF_MASTER_ALB", INTEGER2NUM(IFF_MASTER_ALB)); + /* bonding master, balance-alb. */ + rb_define_const(rb_mSockConst, "IFF_MASTER_ALB", INTEGER2NUM(IFF_MASTER_ALB)); +#endif +#if defined(IFF_MASTER_ARPMON) + /* bonding master, ARP mon in use */ + rb_define_const(rb_cSocket, "IFF_MASTER_ARPMON", INTEGER2NUM(IFF_MASTER_ARPMON)); + /* bonding master, ARP mon in use */ + rb_define_const(rb_mSockConst, "IFF_MASTER_ARPMON", INTEGER2NUM(IFF_MASTER_ARPMON)); +#endif +#if defined(IFF_MONITOR) + /* user-requested monitor mode */ + rb_define_const(rb_cSocket, "IFF_MONITOR", INTEGER2NUM(IFF_MONITOR)); + /* user-requested monitor mode */ + rb_define_const(rb_mSockConst, "IFF_MONITOR", INTEGER2NUM(IFF_MONITOR)); +#endif +#if defined(IFF_MULTICAST) + /* supports multicast */ + rb_define_const(rb_cSocket, "IFF_MULTICAST", INTEGER2NUM(IFF_MULTICAST)); + /* supports multicast */ + rb_define_const(rb_mSockConst, "IFF_MULTICAST", INTEGER2NUM(IFF_MULTICAST)); +#endif +#if defined(IFF_NOARP) + /* no address resolution protocol */ + rb_define_const(rb_cSocket, "IFF_NOARP", INTEGER2NUM(IFF_NOARP)); + /* no address resolution protocol */ + rb_define_const(rb_mSockConst, "IFF_NOARP", INTEGER2NUM(IFF_NOARP)); +#endif +#if defined(IFF_NOTRAILERS) + /* avoid use of trailers */ + rb_define_const(rb_cSocket, "IFF_NOTRAILERS", INTEGER2NUM(IFF_NOTRAILERS)); + /* avoid use of trailers */ + rb_define_const(rb_mSockConst, "IFF_NOTRAILERS", INTEGER2NUM(IFF_NOTRAILERS)); +#endif +#if defined(IFF_OACTIVE) + /* transmission in progress */ + rb_define_const(rb_cSocket, "IFF_OACTIVE", INTEGER2NUM(IFF_OACTIVE)); + /* transmission in progress */ + rb_define_const(rb_mSockConst, "IFF_OACTIVE", INTEGER2NUM(IFF_OACTIVE)); +#endif +#if defined(IFF_OVS_DATAPATH) + /* device used as Open vSwitch datapath port */ + rb_define_const(rb_cSocket, "IFF_OVS_DATAPATH", INTEGER2NUM(IFF_OVS_DATAPATH)); + /* device used as Open vSwitch datapath port */ + rb_define_const(rb_mSockConst, "IFF_OVS_DATAPATH", INTEGER2NUM(IFF_OVS_DATAPATH)); +#endif +#if defined(IFF_POINTOPOINT) + /* point-to-point link */ + rb_define_const(rb_cSocket, "IFF_POINTOPOINT", INTEGER2NUM(IFF_POINTOPOINT)); + /* point-to-point link */ + rb_define_const(rb_mSockConst, "IFF_POINTOPOINT", INTEGER2NUM(IFF_POINTOPOINT)); +#endif +#if defined(IFF_PORTSEL) + /* can set media type */ + rb_define_const(rb_cSocket, "IFF_PORTSEL", INTEGER2NUM(IFF_PORTSEL)); + /* can set media type */ + rb_define_const(rb_mSockConst, "IFF_PORTSEL", INTEGER2NUM(IFF_PORTSEL)); +#endif +#if defined(IFF_PPROMISC) + /* user-requested promisc mode */ + rb_define_const(rb_cSocket, "IFF_PPROMISC", INTEGER2NUM(IFF_PPROMISC)); + /* user-requested promisc mode */ + rb_define_const(rb_mSockConst, "IFF_PPROMISC", INTEGER2NUM(IFF_PPROMISC)); +#endif +#if defined(IFF_PROMISC) + /* receive all packets */ + rb_define_const(rb_cSocket, "IFF_PROMISC", INTEGER2NUM(IFF_PROMISC)); + /* receive all packets */ + rb_define_const(rb_mSockConst, "IFF_PROMISC", INTEGER2NUM(IFF_PROMISC)); +#endif +#if defined(IFF_RENAMING) + /* interface is being renamed */ + rb_define_const(rb_cSocket, "IFF_RENAMING", INTEGER2NUM(IFF_RENAMING)); + /* interface is being renamed */ + rb_define_const(rb_mSockConst, "IFF_RENAMING", INTEGER2NUM(IFF_RENAMING)); +#endif +#if defined(IFF_ROUTE) + /* routing entry installed */ + rb_define_const(rb_cSocket, "IFF_ROUTE", INTEGER2NUM(IFF_ROUTE)); + /* routing entry installed */ + rb_define_const(rb_mSockConst, "IFF_ROUTE", INTEGER2NUM(IFF_ROUTE)); +#endif +#if defined(IFF_RUNNING) + /* resources allocated */ + rb_define_const(rb_cSocket, "IFF_RUNNING", INTEGER2NUM(IFF_RUNNING)); + /* resources allocated */ + rb_define_const(rb_mSockConst, "IFF_RUNNING", INTEGER2NUM(IFF_RUNNING)); +#endif +#if defined(IFF_SIMPLEX) + /* can't hear own transmissions */ + rb_define_const(rb_cSocket, "IFF_SIMPLEX", INTEGER2NUM(IFF_SIMPLEX)); + /* can't hear own transmissions */ + rb_define_const(rb_mSockConst, "IFF_SIMPLEX", INTEGER2NUM(IFF_SIMPLEX)); +#endif +#if defined(IFF_SLAVE) + /* slave of a load balancer */ + rb_define_const(rb_cSocket, "IFF_SLAVE", INTEGER2NUM(IFF_SLAVE)); + /* slave of a load balancer */ + rb_define_const(rb_mSockConst, "IFF_SLAVE", INTEGER2NUM(IFF_SLAVE)); +#endif +#if defined(IFF_SLAVE_INACTIVE) + /* bonding slave not the curr. active */ + rb_define_const(rb_cSocket, "IFF_SLAVE_INACTIVE", INTEGER2NUM(IFF_SLAVE_INACTIVE)); + /* bonding slave not the curr. active */ + rb_define_const(rb_mSockConst, "IFF_SLAVE_INACTIVE", INTEGER2NUM(IFF_SLAVE_INACTIVE)); +#endif +#if defined(IFF_SLAVE_NEEDARP) + /* need ARPs for validation */ + rb_define_const(rb_cSocket, "IFF_SLAVE_NEEDARP", INTEGER2NUM(IFF_SLAVE_NEEDARP)); + /* need ARPs for validation */ + rb_define_const(rb_mSockConst, "IFF_SLAVE_NEEDARP", INTEGER2NUM(IFF_SLAVE_NEEDARP)); +#endif +#if defined(IFF_SMART) + /* interface manages own routes */ + rb_define_const(rb_cSocket, "IFF_SMART", INTEGER2NUM(IFF_SMART)); + /* interface manages own routes */ + rb_define_const(rb_mSockConst, "IFF_SMART", INTEGER2NUM(IFF_SMART)); +#endif +#if defined(IFF_STATICARP) + /* static ARP */ + rb_define_const(rb_cSocket, "IFF_STATICARP", INTEGER2NUM(IFF_STATICARP)); + /* static ARP */ + rb_define_const(rb_mSockConst, "IFF_STATICARP", INTEGER2NUM(IFF_STATICARP)); +#endif +#if defined(IFF_SUPP_NOFCS) + /* sending custom FCS */ + rb_define_const(rb_cSocket, "IFF_SUPP_NOFCS", INTEGER2NUM(IFF_SUPP_NOFCS)); + /* sending custom FCS */ + rb_define_const(rb_mSockConst, "IFF_SUPP_NOFCS", INTEGER2NUM(IFF_SUPP_NOFCS)); +#endif +#if defined(IFF_TEAM_PORT) + /* used as team port */ + rb_define_const(rb_cSocket, "IFF_TEAM_PORT", INTEGER2NUM(IFF_TEAM_PORT)); + /* used as team port */ + rb_define_const(rb_mSockConst, "IFF_TEAM_PORT", INTEGER2NUM(IFF_TEAM_PORT)); +#endif +#if defined(IFF_TX_SKB_SHARING) + /* sharing skbs on transmit */ + rb_define_const(rb_cSocket, "IFF_TX_SKB_SHARING", INTEGER2NUM(IFF_TX_SKB_SHARING)); + /* sharing skbs on transmit */ + rb_define_const(rb_mSockConst, "IFF_TX_SKB_SHARING", INTEGER2NUM(IFF_TX_SKB_SHARING)); +#endif +#if defined(IFF_UNICAST_FLT) + /* unicast filtering */ + rb_define_const(rb_cSocket, "IFF_UNICAST_FLT", INTEGER2NUM(IFF_UNICAST_FLT)); + /* unicast filtering */ + rb_define_const(rb_mSockConst, "IFF_UNICAST_FLT", INTEGER2NUM(IFF_UNICAST_FLT)); +#endif +#if defined(IFF_UP) + /* interface is up */ + rb_define_const(rb_cSocket, "IFF_UP", INTEGER2NUM(IFF_UP)); + /* interface is up */ + rb_define_const(rb_mSockConst, "IFF_UP", INTEGER2NUM(IFF_UP)); +#endif +#if defined(IFF_WAN_HDLC) + /* WAN HDLC device */ + rb_define_const(rb_cSocket, "IFF_WAN_HDLC", INTEGER2NUM(IFF_WAN_HDLC)); + /* WAN HDLC device */ + rb_define_const(rb_mSockConst, "IFF_WAN_HDLC", INTEGER2NUM(IFF_WAN_HDLC)); +#endif +#if defined(IFF_XMIT_DST_RELEASE) + /* dev_hard_start_xmit() is allowed to release skb->dst */ + rb_define_const(rb_cSocket, "IFF_XMIT_DST_RELEASE", INTEGER2NUM(IFF_XMIT_DST_RELEASE)); + /* dev_hard_start_xmit() is allowed to release skb->dst */ + rb_define_const(rb_mSockConst, "IFF_XMIT_DST_RELEASE", INTEGER2NUM(IFF_XMIT_DST_RELEASE)); +#endif +#if defined(IFF_VOLATILE) + /* volatile flags */ + rb_define_const(rb_cSocket, "IFF_VOLATILE", INTEGER2NUM(IFF_VOLATILE)); + /* volatile flags */ + rb_define_const(rb_mSockConst, "IFF_VOLATILE", INTEGER2NUM(IFF_VOLATILE)); +#endif +#if defined(IFF_CANTCHANGE) + /* flags not changeable */ + rb_define_const(rb_cSocket, "IFF_CANTCHANGE", INTEGER2NUM(IFF_CANTCHANGE)); + /* flags not changeable */ + rb_define_const(rb_mSockConst, "IFF_CANTCHANGE", INTEGER2NUM(IFF_CANTCHANGE)); +#endif + + rsock_intern_family_hash = st_init_numtable(); +#ifdef AF_E164 + st_insert(rsock_intern_family_hash, (st_data_t)AF_E164, (st_data_t)rb_intern2("AF_E164", 7)); +#endif +#ifdef AF_PACKET + st_insert(rsock_intern_family_hash, (st_data_t)AF_PACKET, (st_data_t)rb_intern2("AF_PACKET", 9)); +#endif +#ifdef AF_MAX + st_insert(rsock_intern_family_hash, (st_data_t)AF_MAX, (st_data_t)rb_intern2("AF_MAX", 6)); +#endif +#ifdef AF_NETGRAPH + st_insert(rsock_intern_family_hash, (st_data_t)AF_NETGRAPH, (st_data_t)rb_intern2("AF_NETGRAPH", 11)); +#endif +#ifdef AF_ATM + st_insert(rsock_intern_family_hash, (st_data_t)AF_ATM, (st_data_t)rb_intern2("AF_ATM", 6)); +#endif +#ifdef AF_PPP + st_insert(rsock_intern_family_hash, (st_data_t)AF_PPP, (st_data_t)rb_intern2("AF_PPP", 6)); +#endif +#ifdef AF_NETBIOS + st_insert(rsock_intern_family_hash, (st_data_t)AF_NETBIOS, (st_data_t)rb_intern2("AF_NETBIOS", 10)); +#endif +#ifdef AF_SYSTEM + st_insert(rsock_intern_family_hash, (st_data_t)AF_SYSTEM, (st_data_t)rb_intern2("AF_SYSTEM", 9)); +#endif +#ifdef AF_NATM + st_insert(rsock_intern_family_hash, (st_data_t)AF_NATM, (st_data_t)rb_intern2("AF_NATM", 7)); +#endif +#ifdef AF_ISDN + st_insert(rsock_intern_family_hash, (st_data_t)AF_ISDN, (st_data_t)rb_intern2("AF_ISDN", 7)); +#endif +#ifdef AF_NDRV + st_insert(rsock_intern_family_hash, (st_data_t)AF_NDRV, (st_data_t)rb_intern2("AF_NDRV", 7)); +#endif +#ifdef AF_SIP + st_insert(rsock_intern_family_hash, (st_data_t)AF_SIP, (st_data_t)rb_intern2("AF_SIP", 6)); +#endif +#ifdef AF_CNT + st_insert(rsock_intern_family_hash, (st_data_t)AF_CNT, (st_data_t)rb_intern2("AF_CNT", 6)); +#endif +#ifdef AF_COIP + st_insert(rsock_intern_family_hash, (st_data_t)AF_COIP, (st_data_t)rb_intern2("AF_COIP", 7)); +#endif +#ifdef AF_LINK + st_insert(rsock_intern_family_hash, (st_data_t)AF_LINK, (st_data_t)rb_intern2("AF_LINK", 7)); +#endif +#ifdef AF_ROUTE + st_insert(rsock_intern_family_hash, (st_data_t)AF_ROUTE, (st_data_t)rb_intern2("AF_ROUTE", 8)); +#endif +#ifdef AF_HYLINK + st_insert(rsock_intern_family_hash, (st_data_t)AF_HYLINK, (st_data_t)rb_intern2("AF_HYLINK", 9)); +#endif +#ifdef AF_LAT + st_insert(rsock_intern_family_hash, (st_data_t)AF_LAT, (st_data_t)rb_intern2("AF_LAT", 6)); +#endif +#ifdef AF_DLI + st_insert(rsock_intern_family_hash, (st_data_t)AF_DLI, (st_data_t)rb_intern2("AF_DLI", 6)); +#endif +#ifdef AF_DEC + st_insert(rsock_intern_family_hash, (st_data_t)AF_DEC, (st_data_t)rb_intern2("AF_DEC", 6)); +#endif +#ifdef AF_SNA + st_insert(rsock_intern_family_hash, (st_data_t)AF_SNA, (st_data_t)rb_intern2("AF_SNA", 6)); +#endif +#ifdef AF_CCITT + st_insert(rsock_intern_family_hash, (st_data_t)AF_CCITT, (st_data_t)rb_intern2("AF_CCITT", 8)); +#endif +#ifdef AF_DATAKIT + st_insert(rsock_intern_family_hash, (st_data_t)AF_DATAKIT, (st_data_t)rb_intern2("AF_DATAKIT", 10)); +#endif +#ifdef AF_ECMA + st_insert(rsock_intern_family_hash, (st_data_t)AF_ECMA, (st_data_t)rb_intern2("AF_ECMA", 7)); +#endif +#ifdef AF_OSI + st_insert(rsock_intern_family_hash, (st_data_t)AF_OSI, (st_data_t)rb_intern2("AF_OSI", 6)); +#endif +#ifdef AF_ISO + st_insert(rsock_intern_family_hash, (st_data_t)AF_ISO, (st_data_t)rb_intern2("AF_ISO", 6)); +#endif +#ifdef AF_NS + st_insert(rsock_intern_family_hash, (st_data_t)AF_NS, (st_data_t)rb_intern2("AF_NS", 5)); +#endif +#ifdef AF_CHAOS + st_insert(rsock_intern_family_hash, (st_data_t)AF_CHAOS, (st_data_t)rb_intern2("AF_CHAOS", 8)); +#endif +#ifdef AF_PUP + st_insert(rsock_intern_family_hash, (st_data_t)AF_PUP, (st_data_t)rb_intern2("AF_PUP", 6)); +#endif +#ifdef AF_IMPLINK + st_insert(rsock_intern_family_hash, (st_data_t)AF_IMPLINK, (st_data_t)rb_intern2("AF_IMPLINK", 10)); +#endif +#ifdef AF_LOCAL + st_insert(rsock_intern_family_hash, (st_data_t)AF_LOCAL, (st_data_t)rb_intern2("AF_LOCAL", 8)); +#endif +#ifdef AF_APPLETALK + st_insert(rsock_intern_family_hash, (st_data_t)AF_APPLETALK, (st_data_t)rb_intern2("AF_APPLETALK", 12)); +#endif +#ifdef AF_IPX + st_insert(rsock_intern_family_hash, (st_data_t)AF_IPX, (st_data_t)rb_intern2("AF_IPX", 6)); +#endif +#ifdef AF_AX25 + st_insert(rsock_intern_family_hash, (st_data_t)AF_AX25, (st_data_t)rb_intern2("AF_AX25", 7)); +#endif +#ifdef AF_UNIX + st_insert(rsock_intern_family_hash, (st_data_t)AF_UNIX, (st_data_t)rb_intern2("AF_UNIX", 7)); +#endif +#ifdef AF_INET6 + st_insert(rsock_intern_family_hash, (st_data_t)AF_INET6, (st_data_t)rb_intern2("AF_INET6", 8)); +#endif +#ifdef AF_INET + st_insert(rsock_intern_family_hash, (st_data_t)AF_INET, (st_data_t)rb_intern2("AF_INET", 7)); +#endif +#ifdef AF_UNSPEC + st_insert(rsock_intern_family_hash, (st_data_t)AF_UNSPEC, (st_data_t)rb_intern2("AF_UNSPEC", 9)); +#endif + + rsock_intern_family_noprefix_hash = st_init_numtable(); +#ifdef AF_E164 + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_E164, (st_data_t)rb_intern2("AF_E164", 7)); +#endif +#ifdef AF_PACKET + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PACKET, (st_data_t)rb_intern2("AF_PACKET", 9)); +#endif +#ifdef AF_MAX + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_MAX, (st_data_t)rb_intern2("AF_MAX", 6)); +#endif +#ifdef AF_NETGRAPH + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETGRAPH, (st_data_t)rb_intern2("AF_NETGRAPH", 11)); +#endif +#ifdef AF_ATM + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ATM, (st_data_t)rb_intern2("AF_ATM", 6)); +#endif +#ifdef AF_PPP + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PPP, (st_data_t)rb_intern2("AF_PPP", 6)); +#endif +#ifdef AF_NETBIOS + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETBIOS, (st_data_t)rb_intern2("AF_NETBIOS", 10)); +#endif +#ifdef AF_SYSTEM + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SYSTEM, (st_data_t)rb_intern2("AF_SYSTEM", 9)); +#endif +#ifdef AF_NATM + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NATM, (st_data_t)rb_intern2("AF_NATM", 7)); +#endif +#ifdef AF_ISDN + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ISDN, (st_data_t)rb_intern2("AF_ISDN", 7)); +#endif +#ifdef AF_NDRV + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NDRV, (st_data_t)rb_intern2("AF_NDRV", 7)); +#endif +#ifdef AF_SIP + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SIP, (st_data_t)rb_intern2("AF_SIP", 6)); +#endif +#ifdef AF_CNT + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CNT, (st_data_t)rb_intern2("AF_CNT", 6)); +#endif +#ifdef AF_COIP + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_COIP, (st_data_t)rb_intern2("AF_COIP", 7)); +#endif +#ifdef AF_LINK + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LINK, (st_data_t)rb_intern2("AF_LINK", 7)); +#endif +#ifdef AF_ROUTE + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ROUTE, (st_data_t)rb_intern2("AF_ROUTE", 8)); +#endif +#ifdef AF_HYLINK + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_HYLINK, (st_data_t)rb_intern2("AF_HYLINK", 9)); +#endif +#ifdef AF_LAT + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LAT, (st_data_t)rb_intern2("AF_LAT", 6)); +#endif +#ifdef AF_DLI + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DLI, (st_data_t)rb_intern2("AF_DLI", 6)); +#endif +#ifdef AF_DEC + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DEC, (st_data_t)rb_intern2("AF_DEC", 6)); +#endif +#ifdef AF_SNA + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SNA, (st_data_t)rb_intern2("AF_SNA", 6)); +#endif +#ifdef AF_CCITT + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CCITT, (st_data_t)rb_intern2("AF_CCITT", 8)); +#endif +#ifdef AF_DATAKIT + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DATAKIT, (st_data_t)rb_intern2("AF_DATAKIT", 10)); +#endif +#ifdef AF_ECMA + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ECMA, (st_data_t)rb_intern2("AF_ECMA", 7)); +#endif +#ifdef AF_OSI + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_OSI, (st_data_t)rb_intern2("AF_OSI", 6)); +#endif +#ifdef AF_ISO + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ISO, (st_data_t)rb_intern2("AF_ISO", 6)); +#endif +#ifdef AF_NS + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NS, (st_data_t)rb_intern2("AF_NS", 5)); +#endif +#ifdef AF_CHAOS + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CHAOS, (st_data_t)rb_intern2("AF_CHAOS", 8)); +#endif +#ifdef AF_PUP + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PUP, (st_data_t)rb_intern2("AF_PUP", 6)); +#endif +#ifdef AF_IMPLINK + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IMPLINK, (st_data_t)rb_intern2("AF_IMPLINK", 10)); +#endif +#ifdef AF_LOCAL + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LOCAL, (st_data_t)rb_intern2("AF_LOCAL", 8)); +#endif +#ifdef AF_APPLETALK + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_APPLETALK, (st_data_t)rb_intern2("AF_APPLETALK", 12)); +#endif +#ifdef AF_IPX + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IPX, (st_data_t)rb_intern2("AF_IPX", 6)); +#endif +#ifdef AF_AX25 + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_AX25, (st_data_t)rb_intern2("AF_AX25", 7)); +#endif +#ifdef AF_UNIX + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_UNIX, (st_data_t)rb_intern2("AF_UNIX", 7)); +#endif +#ifdef AF_INET6 + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_INET6, (st_data_t)rb_intern2("AF_INET6", 8)); +#endif +#ifdef AF_INET + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_INET, (st_data_t)rb_intern2("AF_INET", 7)); +#endif +#ifdef AF_UNSPEC + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_UNSPEC, (st_data_t)rb_intern2("AF_UNSPEC", 9)); +#endif +#ifdef AF_E164 + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_E164, (st_data_t)rb_intern2("E164", 4)); +#endif +#ifdef AF_PACKET + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PACKET, (st_data_t)rb_intern2("PACKET", 6)); +#endif +#ifdef AF_MAX + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_MAX, (st_data_t)rb_intern2("MAX", 3)); +#endif +#ifdef AF_NETGRAPH + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETGRAPH, (st_data_t)rb_intern2("NETGRAPH", 8)); +#endif +#ifdef AF_ATM + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ATM, (st_data_t)rb_intern2("ATM", 3)); +#endif +#ifdef AF_PPP + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PPP, (st_data_t)rb_intern2("PPP", 3)); +#endif +#ifdef AF_NETBIOS + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETBIOS, (st_data_t)rb_intern2("NETBIOS", 7)); +#endif +#ifdef AF_SYSTEM + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SYSTEM, (st_data_t)rb_intern2("SYSTEM", 6)); +#endif +#ifdef AF_NATM + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NATM, (st_data_t)rb_intern2("NATM", 4)); +#endif +#ifdef AF_ISDN + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ISDN, (st_data_t)rb_intern2("ISDN", 4)); +#endif +#ifdef AF_NDRV + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NDRV, (st_data_t)rb_intern2("NDRV", 4)); +#endif +#ifdef AF_SIP + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SIP, (st_data_t)rb_intern2("SIP", 3)); +#endif +#ifdef AF_CNT + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CNT, (st_data_t)rb_intern2("CNT", 3)); +#endif +#ifdef AF_COIP + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_COIP, (st_data_t)rb_intern2("COIP", 4)); +#endif +#ifdef AF_LINK + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LINK, (st_data_t)rb_intern2("LINK", 4)); +#endif +#ifdef AF_ROUTE + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ROUTE, (st_data_t)rb_intern2("ROUTE", 5)); +#endif +#ifdef AF_HYLINK + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_HYLINK, (st_data_t)rb_intern2("HYLINK", 6)); +#endif +#ifdef AF_LAT + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LAT, (st_data_t)rb_intern2("LAT", 3)); +#endif +#ifdef AF_DLI + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DLI, (st_data_t)rb_intern2("DLI", 3)); +#endif +#ifdef AF_DEC + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DEC, (st_data_t)rb_intern2("DEC", 3)); +#endif +#ifdef AF_SNA + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SNA, (st_data_t)rb_intern2("SNA", 3)); +#endif +#ifdef AF_CCITT + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CCITT, (st_data_t)rb_intern2("CCITT", 5)); +#endif +#ifdef AF_DATAKIT + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DATAKIT, (st_data_t)rb_intern2("DATAKIT", 7)); +#endif +#ifdef AF_ECMA + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ECMA, (st_data_t)rb_intern2("ECMA", 4)); +#endif +#ifdef AF_OSI + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_OSI, (st_data_t)rb_intern2("OSI", 3)); +#endif +#ifdef AF_ISO + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ISO, (st_data_t)rb_intern2("ISO", 3)); +#endif +#ifdef AF_NS + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NS, (st_data_t)rb_intern2("NS", 2)); +#endif +#ifdef AF_CHAOS + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CHAOS, (st_data_t)rb_intern2("CHAOS", 5)); +#endif +#ifdef AF_PUP + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PUP, (st_data_t)rb_intern2("PUP", 3)); +#endif +#ifdef AF_IMPLINK + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IMPLINK, (st_data_t)rb_intern2("IMPLINK", 7)); +#endif +#ifdef AF_LOCAL + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LOCAL, (st_data_t)rb_intern2("LOCAL", 5)); +#endif +#ifdef AF_APPLETALK + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_APPLETALK, (st_data_t)rb_intern2("APPLETALK", 9)); +#endif +#ifdef AF_IPX + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IPX, (st_data_t)rb_intern2("IPX", 3)); +#endif +#ifdef AF_AX25 + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_AX25, (st_data_t)rb_intern2("AX25", 4)); +#endif +#ifdef AF_UNIX + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_UNIX, (st_data_t)rb_intern2("UNIX", 4)); +#endif +#ifdef AF_INET6 + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_INET6, (st_data_t)rb_intern2("INET6", 5)); +#endif +#ifdef AF_INET + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_INET, (st_data_t)rb_intern2("INET", 4)); +#endif +#ifdef AF_UNSPEC + st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_UNSPEC, (st_data_t)rb_intern2("UNSPEC", 6)); +#endif + + rsock_intern_protocol_family_hash = st_init_numtable(); +#ifdef PF_KEY + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_KEY, (st_data_t)rb_intern2("PF_KEY", 6)); +#endif +#ifdef PF_PIP + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PIP, (st_data_t)rb_intern2("PF_PIP", 6)); +#endif +#ifdef PF_RTIP + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_RTIP, (st_data_t)rb_intern2("PF_RTIP", 7)); +#endif +#ifdef PF_XTP + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_XTP, (st_data_t)rb_intern2("PF_XTP", 6)); +#endif +#ifdef PF_PACKET + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PACKET, (st_data_t)rb_intern2("PF_PACKET", 9)); +#endif +#ifdef PF_MAX + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_MAX, (st_data_t)rb_intern2("PF_MAX", 6)); +#endif +#ifdef PF_NETGRAPH + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NETGRAPH, (st_data_t)rb_intern2("PF_NETGRAPH", 11)); +#endif +#ifdef PF_ATM + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ATM, (st_data_t)rb_intern2("PF_ATM", 6)); +#endif +#ifdef PF_PPP + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PPP, (st_data_t)rb_intern2("PF_PPP", 6)); +#endif +#ifdef PF_NETBIOS + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NETBIOS, (st_data_t)rb_intern2("PF_NETBIOS", 10)); +#endif +#ifdef PF_SYSTEM + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_SYSTEM, (st_data_t)rb_intern2("PF_SYSTEM", 9)); +#endif +#ifdef PF_NATM + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NATM, (st_data_t)rb_intern2("PF_NATM", 7)); +#endif +#ifdef PF_ISDN + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ISDN, (st_data_t)rb_intern2("PF_ISDN", 7)); +#endif +#ifdef PF_NDRV + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NDRV, (st_data_t)rb_intern2("PF_NDRV", 7)); +#endif +#ifdef PF_SIP + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_SIP, (st_data_t)rb_intern2("PF_SIP", 6)); +#endif +#ifdef PF_CNT + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_CNT, (st_data_t)rb_intern2("PF_CNT", 6)); +#endif +#ifdef PF_COIP + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_COIP, (st_data_t)rb_intern2("PF_COIP", 7)); +#endif +#ifdef PF_LINK + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_LINK, (st_data_t)rb_intern2("PF_LINK", 7)); +#endif +#ifdef PF_ROUTE + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ROUTE, (st_data_t)rb_intern2("PF_ROUTE", 8)); +#endif +#ifdef PF_HYLINK + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_HYLINK, (st_data_t)rb_intern2("PF_HYLINK", 9)); +#endif +#ifdef PF_LAT + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_LAT, (st_data_t)rb_intern2("PF_LAT", 6)); +#endif +#ifdef PF_DLI + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_DLI, (st_data_t)rb_intern2("PF_DLI", 6)); +#endif +#ifdef PF_DEC + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_DEC, (st_data_t)rb_intern2("PF_DEC", 6)); +#endif +#ifdef PF_SNA + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_SNA, (st_data_t)rb_intern2("PF_SNA", 6)); +#endif +#ifdef PF_CCITT + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_CCITT, (st_data_t)rb_intern2("PF_CCITT", 8)); +#endif +#ifdef PF_DATAKIT + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_DATAKIT, (st_data_t)rb_intern2("PF_DATAKIT", 10)); +#endif +#ifdef PF_ECMA + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ECMA, (st_data_t)rb_intern2("PF_ECMA", 7)); +#endif +#ifdef PF_OSI + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_OSI, (st_data_t)rb_intern2("PF_OSI", 6)); +#endif +#ifdef PF_ISO + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ISO, (st_data_t)rb_intern2("PF_ISO", 6)); +#endif +#ifdef PF_NS + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NS, (st_data_t)rb_intern2("PF_NS", 5)); +#endif +#ifdef PF_CHAOS + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_CHAOS, (st_data_t)rb_intern2("PF_CHAOS", 8)); +#endif +#ifdef PF_PUP + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PUP, (st_data_t)rb_intern2("PF_PUP", 6)); +#endif +#ifdef PF_IMPLINK + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_IMPLINK, (st_data_t)rb_intern2("PF_IMPLINK", 10)); +#endif +#ifdef PF_LOCAL + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_LOCAL, (st_data_t)rb_intern2("PF_LOCAL", 8)); +#endif +#ifdef PF_APPLETALK + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_APPLETALK, (st_data_t)rb_intern2("PF_APPLETALK", 12)); +#endif +#ifdef PF_IPX + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_IPX, (st_data_t)rb_intern2("PF_IPX", 6)); +#endif +#ifdef PF_AX25 + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_AX25, (st_data_t)rb_intern2("PF_AX25", 7)); +#endif +#ifdef PF_UNIX + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_UNIX, (st_data_t)rb_intern2("PF_UNIX", 7)); +#endif +#ifdef PF_INET6 + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_INET6, (st_data_t)rb_intern2("PF_INET6", 8)); +#endif +#ifdef PF_INET + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_INET, (st_data_t)rb_intern2("PF_INET", 7)); +#endif +#ifdef PF_UNSPEC + st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_UNSPEC, (st_data_t)rb_intern2("PF_UNSPEC", 9)); +#endif + + rsock_intern_socktype_hash = st_init_numtable(); +#ifdef SOCK_PACKET + st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_PACKET, (st_data_t)rb_intern2("SOCK_PACKET", 11)); +#endif +#ifdef SOCK_SEQPACKET + st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_SEQPACKET, (st_data_t)rb_intern2("SOCK_SEQPACKET", 14)); +#endif +#ifdef SOCK_RDM + st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_RDM, (st_data_t)rb_intern2("SOCK_RDM", 8)); +#endif +#ifdef SOCK_RAW + st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_RAW, (st_data_t)rb_intern2("SOCK_RAW", 8)); +#endif +#ifdef SOCK_DGRAM + st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_DGRAM, (st_data_t)rb_intern2("SOCK_DGRAM", 10)); +#endif +#ifdef SOCK_STREAM + st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_STREAM, (st_data_t)rb_intern2("SOCK_STREAM", 11)); +#endif + + rsock_intern_ipproto_hash = st_init_numtable(); +#ifdef IPPROTO_MAX + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_MAX, (st_data_t)rb_intern2("IPPROTO_MAX", 11)); +#endif +#ifdef IPPROTO_RAW + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_RAW, (st_data_t)rb_intern2("IPPROTO_RAW", 11)); +#endif +#ifdef IPPROTO_ROUTING + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ROUTING, (st_data_t)rb_intern2("IPPROTO_ROUTING", 15)); +#endif +#ifdef IPPROTO_NONE + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_NONE, (st_data_t)rb_intern2("IPPROTO_NONE", 12)); +#endif +#ifdef IPPROTO_IPV6 + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_IPV6, (st_data_t)rb_intern2("IPPROTO_IPV6", 12)); +#endif +#ifdef IPPROTO_ICMPV6 + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ICMPV6, (st_data_t)rb_intern2("IPPROTO_ICMPV6", 14)); +#endif +#ifdef IPPROTO_HOPOPTS + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_HOPOPTS, (st_data_t)rb_intern2("IPPROTO_HOPOPTS", 15)); +#endif +#ifdef IPPROTO_FRAGMENT + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_FRAGMENT, (st_data_t)rb_intern2("IPPROTO_FRAGMENT", 16)); +#endif +#ifdef IPPROTO_ESP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ESP, (st_data_t)rb_intern2("IPPROTO_ESP", 11)); +#endif +#ifdef IPPROTO_DSTOPTS + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_DSTOPTS, (st_data_t)rb_intern2("IPPROTO_DSTOPTS", 15)); +#endif +#ifdef IPPROTO_AH + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_AH, (st_data_t)rb_intern2("IPPROTO_AH", 10)); +#endif +#ifdef IPPROTO_BIP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_BIP, (st_data_t)rb_intern2("IPPROTO_BIP", 11)); +#endif +#ifdef IPPROTO_EON + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_EON, (st_data_t)rb_intern2("IPPROTO_EON", 11)); +#endif +#ifdef IPPROTO_XTP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_XTP, (st_data_t)rb_intern2("IPPROTO_XTP", 11)); +#endif +#ifdef IPPROTO_TP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_TP, (st_data_t)rb_intern2("IPPROTO_TP", 10)); +#endif +#ifdef IPPROTO_ND + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ND, (st_data_t)rb_intern2("IPPROTO_ND", 10)); +#endif +#ifdef IPPROTO_HELLO + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_HELLO, (st_data_t)rb_intern2("IPPROTO_HELLO", 13)); +#endif +#ifdef IPPROTO_IDP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_IDP, (st_data_t)rb_intern2("IPPROTO_IDP", 11)); +#endif +#ifdef IPPROTO_UDP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_UDP, (st_data_t)rb_intern2("IPPROTO_UDP", 11)); +#endif +#ifdef IPPROTO_PUP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_PUP, (st_data_t)rb_intern2("IPPROTO_PUP", 11)); +#endif +#ifdef IPPROTO_EGP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_EGP, (st_data_t)rb_intern2("IPPROTO_EGP", 11)); +#endif +#ifdef IPPROTO_TCP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_TCP, (st_data_t)rb_intern2("IPPROTO_TCP", 11)); +#endif +#ifdef IPPROTO_GGP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_GGP, (st_data_t)rb_intern2("IPPROTO_GGP", 11)); +#endif +#ifdef IPPROTO_IGMP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_IGMP, (st_data_t)rb_intern2("IPPROTO_IGMP", 12)); +#endif +#ifdef IPPROTO_ICMP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ICMP, (st_data_t)rb_intern2("IPPROTO_ICMP", 12)); +#endif +#ifdef IPPROTO_IP + st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_IP, (st_data_t)rb_intern2("IPPROTO_IP", 10)); +#endif + + rsock_intern_iplevel_hash = st_init_numtable(); +#ifdef IPPROTO_MAX + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_MAX, (st_data_t)rb_intern2("IPPROTO_MAX", 11)); +#endif +#ifdef IPPROTO_RAW + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_RAW, (st_data_t)rb_intern2("IPPROTO_RAW", 11)); +#endif +#ifdef IPPROTO_ROUTING + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ROUTING, (st_data_t)rb_intern2("IPPROTO_ROUTING", 15)); +#endif +#ifdef IPPROTO_NONE + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_NONE, (st_data_t)rb_intern2("IPPROTO_NONE", 12)); +#endif +#ifdef IPPROTO_IPV6 + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IPV6, (st_data_t)rb_intern2("IPPROTO_IPV6", 12)); +#endif +#ifdef IPPROTO_ICMPV6 + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ICMPV6, (st_data_t)rb_intern2("IPPROTO_ICMPV6", 14)); +#endif +#ifdef IPPROTO_HOPOPTS + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_HOPOPTS, (st_data_t)rb_intern2("IPPROTO_HOPOPTS", 15)); +#endif +#ifdef IPPROTO_FRAGMENT + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_FRAGMENT, (st_data_t)rb_intern2("IPPROTO_FRAGMENT", 16)); +#endif +#ifdef IPPROTO_ESP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ESP, (st_data_t)rb_intern2("IPPROTO_ESP", 11)); +#endif +#ifdef IPPROTO_DSTOPTS + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_DSTOPTS, (st_data_t)rb_intern2("IPPROTO_DSTOPTS", 15)); +#endif +#ifdef IPPROTO_AH + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_AH, (st_data_t)rb_intern2("IPPROTO_AH", 10)); +#endif +#ifdef IPPROTO_BIP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_BIP, (st_data_t)rb_intern2("IPPROTO_BIP", 11)); +#endif +#ifdef IPPROTO_EON + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_EON, (st_data_t)rb_intern2("IPPROTO_EON", 11)); +#endif +#ifdef IPPROTO_XTP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_XTP, (st_data_t)rb_intern2("IPPROTO_XTP", 11)); +#endif +#ifdef IPPROTO_TP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_TP, (st_data_t)rb_intern2("IPPROTO_TP", 10)); +#endif +#ifdef IPPROTO_ND + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ND, (st_data_t)rb_intern2("IPPROTO_ND", 10)); +#endif +#ifdef IPPROTO_HELLO + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_HELLO, (st_data_t)rb_intern2("IPPROTO_HELLO", 13)); +#endif +#ifdef IPPROTO_IDP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IDP, (st_data_t)rb_intern2("IPPROTO_IDP", 11)); +#endif +#ifdef IPPROTO_UDP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_UDP, (st_data_t)rb_intern2("IPPROTO_UDP", 11)); +#endif +#ifdef IPPROTO_PUP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_PUP, (st_data_t)rb_intern2("IPPROTO_PUP", 11)); +#endif +#ifdef IPPROTO_EGP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_EGP, (st_data_t)rb_intern2("IPPROTO_EGP", 11)); +#endif +#ifdef IPPROTO_TCP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_TCP, (st_data_t)rb_intern2("IPPROTO_TCP", 11)); +#endif +#ifdef IPPROTO_GGP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_GGP, (st_data_t)rb_intern2("IPPROTO_GGP", 11)); +#endif +#ifdef IPPROTO_IGMP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IGMP, (st_data_t)rb_intern2("IPPROTO_IGMP", 12)); +#endif +#ifdef IPPROTO_ICMP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ICMP, (st_data_t)rb_intern2("IPPROTO_ICMP", 12)); +#endif +#ifdef IPPROTO_IP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IP, (st_data_t)rb_intern2("IPPROTO_IP", 10)); +#endif +#ifdef SOL_SOCKET + st_insert(rsock_intern_iplevel_hash, (st_data_t)SOL_SOCKET, (st_data_t)rb_intern2("SOL_SOCKET", 10)); +#endif +#ifdef IPPROTO_MAX + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_MAX, (st_data_t)rb_intern2("MAX", 3)); +#endif +#ifdef IPPROTO_RAW + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_RAW, (st_data_t)rb_intern2("RAW", 3)); +#endif +#ifdef IPPROTO_ROUTING + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ROUTING, (st_data_t)rb_intern2("ROUTING", 7)); +#endif +#ifdef IPPROTO_NONE + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_NONE, (st_data_t)rb_intern2("NONE", 4)); +#endif +#ifdef IPPROTO_IPV6 + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IPV6, (st_data_t)rb_intern2("IPV6", 4)); +#endif +#ifdef IPPROTO_ICMPV6 + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ICMPV6, (st_data_t)rb_intern2("ICMPV6", 6)); +#endif +#ifdef IPPROTO_HOPOPTS + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_HOPOPTS, (st_data_t)rb_intern2("HOPOPTS", 7)); +#endif +#ifdef IPPROTO_FRAGMENT + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_FRAGMENT, (st_data_t)rb_intern2("FRAGMENT", 8)); +#endif +#ifdef IPPROTO_ESP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ESP, (st_data_t)rb_intern2("ESP", 3)); +#endif +#ifdef IPPROTO_DSTOPTS + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_DSTOPTS, (st_data_t)rb_intern2("DSTOPTS", 7)); +#endif +#ifdef IPPROTO_AH + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_AH, (st_data_t)rb_intern2("AH", 2)); +#endif +#ifdef IPPROTO_BIP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_BIP, (st_data_t)rb_intern2("BIP", 3)); +#endif +#ifdef IPPROTO_EON + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_EON, (st_data_t)rb_intern2("EON", 3)); +#endif +#ifdef IPPROTO_XTP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_XTP, (st_data_t)rb_intern2("XTP", 3)); +#endif +#ifdef IPPROTO_TP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_TP, (st_data_t)rb_intern2("TP", 2)); +#endif +#ifdef IPPROTO_ND + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ND, (st_data_t)rb_intern2("ND", 2)); +#endif +#ifdef IPPROTO_HELLO + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_HELLO, (st_data_t)rb_intern2("HELLO", 5)); +#endif +#ifdef IPPROTO_IDP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IDP, (st_data_t)rb_intern2("IDP", 3)); +#endif +#ifdef IPPROTO_UDP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_UDP, (st_data_t)rb_intern2("UDP", 3)); +#endif +#ifdef IPPROTO_PUP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_PUP, (st_data_t)rb_intern2("PUP", 3)); +#endif +#ifdef IPPROTO_EGP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_EGP, (st_data_t)rb_intern2("EGP", 3)); +#endif +#ifdef IPPROTO_TCP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_TCP, (st_data_t)rb_intern2("TCP", 3)); +#endif +#ifdef IPPROTO_GGP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_GGP, (st_data_t)rb_intern2("GGP", 3)); +#endif +#ifdef IPPROTO_IGMP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IGMP, (st_data_t)rb_intern2("IGMP", 4)); +#endif +#ifdef IPPROTO_ICMP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ICMP, (st_data_t)rb_intern2("ICMP", 4)); +#endif +#ifdef IPPROTO_IP + st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IP, (st_data_t)rb_intern2("IP", 2)); +#endif +#ifdef SOL_SOCKET + st_insert(rsock_intern_iplevel_hash, (st_data_t)SOL_SOCKET, (st_data_t)rb_intern2("SOCKET", 6)); +#endif + + rsock_intern_so_optname_hash = st_init_numtable(); +#ifdef SO_BPF_EXTENSIONS + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BPF_EXTENSIONS, (st_data_t)rb_intern2("SO_BPF_EXTENSIONS", 17)); +#endif +#ifdef SO_MAX_PACING_RATE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MAX_PACING_RATE, (st_data_t)rb_intern2("SO_MAX_PACING_RATE", 18)); +#endif +#ifdef SO_BUSY_POLL + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BUSY_POLL, (st_data_t)rb_intern2("SO_BUSY_POLL", 12)); +#endif +#ifdef SO_SELECT_ERR_QUEUE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SELECT_ERR_QUEUE, (st_data_t)rb_intern2("SO_SELECT_ERR_QUEUE", 19)); +#endif +#ifdef SO_LOCK_FILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_LOCK_FILTER, (st_data_t)rb_intern2("SO_LOCK_FILTER", 14)); +#endif +#ifdef SO_NOFCS + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NOFCS, (st_data_t)rb_intern2("SO_NOFCS", 8)); +#endif +#ifdef SO_PEEK_OFF + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEEK_OFF, (st_data_t)rb_intern2("SO_PEEK_OFF", 11)); +#endif +#ifdef SO_WIFI_STATUS + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WIFI_STATUS, (st_data_t)rb_intern2("SO_WIFI_STATUS", 14)); +#endif +#ifdef SO_RXQ_OVFL + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RXQ_OVFL, (st_data_t)rb_intern2("SO_RXQ_OVFL", 11)); +#endif +#ifdef SO_DOMAIN + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DOMAIN, (st_data_t)rb_intern2("SO_DOMAIN", 9)); +#endif +#ifdef SO_PROTOCOL + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PROTOCOL, (st_data_t)rb_intern2("SO_PROTOCOL", 11)); +#endif +#ifdef SO_TIMESTAMPING + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMPING, (st_data_t)rb_intern2("SO_TIMESTAMPING", 15)); +#endif +#ifdef SO_MARK + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MARK, (st_data_t)rb_intern2("SO_MARK", 7)); +#endif +#ifdef SO_PASSSEC + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PASSSEC, (st_data_t)rb_intern2("SO_PASSSEC", 10)); +#endif +#ifdef SO_PEERSEC + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERSEC, (st_data_t)rb_intern2("SO_PEERSEC", 10)); +#endif +#ifdef SO_ALLZONES + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ALLZONES, (st_data_t)rb_intern2("SO_ALLZONES", 11)); +#endif +#ifdef SO_MAC_EXEMPT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MAC_EXEMPT, (st_data_t)rb_intern2("SO_MAC_EXEMPT", 13)); +#endif +#ifdef SO_RECVUCRED + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RECVUCRED, (st_data_t)rb_intern2("SO_RECVUCRED", 12)); +#endif +#ifdef SO_BINTIME + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BINTIME, (st_data_t)rb_intern2("SO_BINTIME", 10)); +#endif +#ifdef SO_TIMESTAMPNS + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMPNS, (st_data_t)rb_intern2("SO_TIMESTAMPNS", 14)); +#endif +#ifdef SO_TIMESTAMP + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMP, (st_data_t)rb_intern2("SO_TIMESTAMP", 12)); +#endif +#ifdef SO_PEERNAME + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERNAME, (st_data_t)rb_intern2("SO_PEERNAME", 11)); +#endif +#ifdef SO_GET_FILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_GET_FILTER, (st_data_t)rb_intern2("SO_GET_FILTER", 13)); +#endif +#ifdef SO_DETACH_FILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DETACH_FILTER, (st_data_t)rb_intern2("SO_DETACH_FILTER", 16)); +#endif +#ifdef SO_ATTACH_FILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ATTACH_FILTER, (st_data_t)rb_intern2("SO_ATTACH_FILTER", 16)); +#endif +#ifdef SO_BINDTODEVICE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BINDTODEVICE, (st_data_t)rb_intern2("SO_BINDTODEVICE", 15)); +#endif +#ifdef SO_SECURITY_ENCRYPTION_NETWORK + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_ENCRYPTION_NETWORK, (st_data_t)rb_intern2("SO_SECURITY_ENCRYPTION_NETWORK", 30)); +#endif +#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_ENCRYPTION_TRANSPORT, (st_data_t)rb_intern2("SO_SECURITY_ENCRYPTION_TRANSPORT", 32)); +#endif +#ifdef SO_SECURITY_AUTHENTICATION + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_AUTHENTICATION, (st_data_t)rb_intern2("SO_SECURITY_AUTHENTICATION", 26)); +#endif +#ifdef SO_NOSIGPIPE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NOSIGPIPE, (st_data_t)rb_intern2("SO_NOSIGPIPE", 12)); +#endif +#ifdef SO_NKE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NKE, (st_data_t)rb_intern2("SO_NKE", 6)); +#endif +#ifdef SO_NREAD + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NREAD, (st_data_t)rb_intern2("SO_NREAD", 8)); +#endif +#ifdef SO_WANTOOBFLAG + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WANTOOBFLAG, (st_data_t)rb_intern2("SO_WANTOOBFLAG", 14)); +#endif +#ifdef SO_WANTMORE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WANTMORE, (st_data_t)rb_intern2("SO_WANTMORE", 11)); +#endif +#ifdef SO_DONTTRUNC + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DONTTRUNC, (st_data_t)rb_intern2("SO_DONTTRUNC", 12)); +#endif +#ifdef SO_ACCEPTFILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ACCEPTFILTER, (st_data_t)rb_intern2("SO_ACCEPTFILTER", 15)); +#endif +#ifdef SO_USELOOPBACK + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_USELOOPBACK, (st_data_t)rb_intern2("SO_USELOOPBACK", 14)); +#endif +#ifdef SO_ACCEPTCONN + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ACCEPTCONN, (st_data_t)rb_intern2("SO_ACCEPTCONN", 13)); +#endif +#ifdef SO_SNDTIMEO + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDTIMEO, (st_data_t)rb_intern2("SO_SNDTIMEO", 11)); +#endif +#ifdef SO_RCVTIMEO + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVTIMEO, (st_data_t)rb_intern2("SO_RCVTIMEO", 11)); +#endif +#ifdef SO_SNDLOWAT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDLOWAT, (st_data_t)rb_intern2("SO_SNDLOWAT", 11)); +#endif +#ifdef SO_RCVLOWAT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVLOWAT, (st_data_t)rb_intern2("SO_RCVLOWAT", 11)); +#endif +#ifdef SO_PEERCRED + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERCRED, (st_data_t)rb_intern2("SO_PEERCRED", 11)); +#endif +#ifdef SO_PASSCRED + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PASSCRED, (st_data_t)rb_intern2("SO_PASSCRED", 11)); +#endif +#ifdef SO_LINGER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_LINGER, (st_data_t)rb_intern2("SO_LINGER", 9)); +#endif +#ifdef SO_PRIORITY + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PRIORITY, (st_data_t)rb_intern2("SO_PRIORITY", 11)); +#endif +#ifdef SO_NO_CHECK + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NO_CHECK, (st_data_t)rb_intern2("SO_NO_CHECK", 11)); +#endif +#ifdef SO_OOBINLINE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_OOBINLINE, (st_data_t)rb_intern2("SO_OOBINLINE", 12)); +#endif +#ifdef SO_KEEPALIVE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_KEEPALIVE, (st_data_t)rb_intern2("SO_KEEPALIVE", 12)); +#endif +#ifdef SO_RCVBUFFORCE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVBUFFORCE, (st_data_t)rb_intern2("SO_RCVBUFFORCE", 14)); +#endif +#ifdef SO_SNDBUFFORCE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDBUFFORCE, (st_data_t)rb_intern2("SO_SNDBUFFORCE", 14)); +#endif +#ifdef SO_RCVBUF + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVBUF, (st_data_t)rb_intern2("SO_RCVBUF", 9)); +#endif +#ifdef SO_SNDBUF + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDBUF, (st_data_t)rb_intern2("SO_SNDBUF", 9)); +#endif +#ifdef SO_BROADCAST + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BROADCAST, (st_data_t)rb_intern2("SO_BROADCAST", 12)); +#endif +#ifdef SO_DONTROUTE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DONTROUTE, (st_data_t)rb_intern2("SO_DONTROUTE", 12)); +#endif +#ifdef SO_ERROR + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ERROR, (st_data_t)rb_intern2("SO_ERROR", 8)); +#endif +#ifdef SO_TYPE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TYPE, (st_data_t)rb_intern2("SO_TYPE", 7)); +#endif +#ifdef SO_REUSEPORT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_REUSEPORT, (st_data_t)rb_intern2("SO_REUSEPORT", 12)); +#endif +#ifdef SO_REUSEADDR + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_REUSEADDR, (st_data_t)rb_intern2("SO_REUSEADDR", 12)); +#endif +#ifdef SO_DEBUG + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DEBUG, (st_data_t)rb_intern2("SO_DEBUG", 8)); +#endif +#ifdef SO_BPF_EXTENSIONS + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BPF_EXTENSIONS, (st_data_t)rb_intern2("BPF_EXTENSIONS", 14)); +#endif +#ifdef SO_MAX_PACING_RATE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MAX_PACING_RATE, (st_data_t)rb_intern2("MAX_PACING_RATE", 15)); +#endif +#ifdef SO_BUSY_POLL + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BUSY_POLL, (st_data_t)rb_intern2("BUSY_POLL", 9)); +#endif +#ifdef SO_SELECT_ERR_QUEUE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SELECT_ERR_QUEUE, (st_data_t)rb_intern2("SELECT_ERR_QUEUE", 16)); +#endif +#ifdef SO_LOCK_FILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_LOCK_FILTER, (st_data_t)rb_intern2("LOCK_FILTER", 11)); +#endif +#ifdef SO_NOFCS + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NOFCS, (st_data_t)rb_intern2("NOFCS", 5)); +#endif +#ifdef SO_PEEK_OFF + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEEK_OFF, (st_data_t)rb_intern2("PEEK_OFF", 8)); +#endif +#ifdef SO_WIFI_STATUS + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WIFI_STATUS, (st_data_t)rb_intern2("WIFI_STATUS", 11)); +#endif +#ifdef SO_RXQ_OVFL + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RXQ_OVFL, (st_data_t)rb_intern2("RXQ_OVFL", 8)); +#endif +#ifdef SO_DOMAIN + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DOMAIN, (st_data_t)rb_intern2("DOMAIN", 6)); +#endif +#ifdef SO_PROTOCOL + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PROTOCOL, (st_data_t)rb_intern2("PROTOCOL", 8)); +#endif +#ifdef SO_TIMESTAMPING + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMPING, (st_data_t)rb_intern2("TIMESTAMPING", 12)); +#endif +#ifdef SO_MARK + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MARK, (st_data_t)rb_intern2("MARK", 4)); +#endif +#ifdef SO_PASSSEC + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PASSSEC, (st_data_t)rb_intern2("PASSSEC", 7)); +#endif +#ifdef SO_PEERSEC + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERSEC, (st_data_t)rb_intern2("PEERSEC", 7)); +#endif +#ifdef SO_ALLZONES + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ALLZONES, (st_data_t)rb_intern2("ALLZONES", 8)); +#endif +#ifdef SO_MAC_EXEMPT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MAC_EXEMPT, (st_data_t)rb_intern2("MAC_EXEMPT", 10)); +#endif +#ifdef SO_RECVUCRED + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RECVUCRED, (st_data_t)rb_intern2("RECVUCRED", 9)); +#endif +#ifdef SO_BINTIME + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BINTIME, (st_data_t)rb_intern2("BINTIME", 7)); +#endif +#ifdef SO_TIMESTAMPNS + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMPNS, (st_data_t)rb_intern2("TIMESTAMPNS", 11)); +#endif +#ifdef SO_TIMESTAMP + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMP, (st_data_t)rb_intern2("TIMESTAMP", 9)); +#endif +#ifdef SO_PEERNAME + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERNAME, (st_data_t)rb_intern2("PEERNAME", 8)); +#endif +#ifdef SO_GET_FILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_GET_FILTER, (st_data_t)rb_intern2("GET_FILTER", 10)); +#endif +#ifdef SO_DETACH_FILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DETACH_FILTER, (st_data_t)rb_intern2("DETACH_FILTER", 13)); +#endif +#ifdef SO_ATTACH_FILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ATTACH_FILTER, (st_data_t)rb_intern2("ATTACH_FILTER", 13)); +#endif +#ifdef SO_BINDTODEVICE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BINDTODEVICE, (st_data_t)rb_intern2("BINDTODEVICE", 12)); +#endif +#ifdef SO_SECURITY_ENCRYPTION_NETWORK + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_ENCRYPTION_NETWORK, (st_data_t)rb_intern2("SECURITY_ENCRYPTION_NETWORK", 27)); +#endif +#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_ENCRYPTION_TRANSPORT, (st_data_t)rb_intern2("SECURITY_ENCRYPTION_TRANSPORT", 29)); +#endif +#ifdef SO_SECURITY_AUTHENTICATION + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_AUTHENTICATION, (st_data_t)rb_intern2("SECURITY_AUTHENTICATION", 23)); +#endif +#ifdef SO_NOSIGPIPE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NOSIGPIPE, (st_data_t)rb_intern2("NOSIGPIPE", 9)); +#endif +#ifdef SO_NKE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NKE, (st_data_t)rb_intern2("NKE", 3)); +#endif +#ifdef SO_NREAD + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NREAD, (st_data_t)rb_intern2("NREAD", 5)); +#endif +#ifdef SO_WANTOOBFLAG + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WANTOOBFLAG, (st_data_t)rb_intern2("WANTOOBFLAG", 11)); +#endif +#ifdef SO_WANTMORE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WANTMORE, (st_data_t)rb_intern2("WANTMORE", 8)); +#endif +#ifdef SO_DONTTRUNC + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DONTTRUNC, (st_data_t)rb_intern2("DONTTRUNC", 9)); +#endif +#ifdef SO_ACCEPTFILTER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ACCEPTFILTER, (st_data_t)rb_intern2("ACCEPTFILTER", 12)); +#endif +#ifdef SO_USELOOPBACK + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_USELOOPBACK, (st_data_t)rb_intern2("USELOOPBACK", 11)); +#endif +#ifdef SO_ACCEPTCONN + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ACCEPTCONN, (st_data_t)rb_intern2("ACCEPTCONN", 10)); +#endif +#ifdef SO_SNDTIMEO + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDTIMEO, (st_data_t)rb_intern2("SNDTIMEO", 8)); +#endif +#ifdef SO_RCVTIMEO + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVTIMEO, (st_data_t)rb_intern2("RCVTIMEO", 8)); +#endif +#ifdef SO_SNDLOWAT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDLOWAT, (st_data_t)rb_intern2("SNDLOWAT", 8)); +#endif +#ifdef SO_RCVLOWAT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVLOWAT, (st_data_t)rb_intern2("RCVLOWAT", 8)); +#endif +#ifdef SO_PEERCRED + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERCRED, (st_data_t)rb_intern2("PEERCRED", 8)); +#endif +#ifdef SO_PASSCRED + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PASSCRED, (st_data_t)rb_intern2("PASSCRED", 8)); +#endif +#ifdef SO_LINGER + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_LINGER, (st_data_t)rb_intern2("LINGER", 6)); +#endif +#ifdef SO_PRIORITY + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PRIORITY, (st_data_t)rb_intern2("PRIORITY", 8)); +#endif +#ifdef SO_NO_CHECK + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NO_CHECK, (st_data_t)rb_intern2("NO_CHECK", 8)); +#endif +#ifdef SO_OOBINLINE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_OOBINLINE, (st_data_t)rb_intern2("OOBINLINE", 9)); +#endif +#ifdef SO_KEEPALIVE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_KEEPALIVE, (st_data_t)rb_intern2("KEEPALIVE", 9)); +#endif +#ifdef SO_RCVBUFFORCE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVBUFFORCE, (st_data_t)rb_intern2("RCVBUFFORCE", 11)); +#endif +#ifdef SO_SNDBUFFORCE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDBUFFORCE, (st_data_t)rb_intern2("SNDBUFFORCE", 11)); +#endif +#ifdef SO_RCVBUF + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVBUF, (st_data_t)rb_intern2("RCVBUF", 6)); +#endif +#ifdef SO_SNDBUF + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDBUF, (st_data_t)rb_intern2("SNDBUF", 6)); +#endif +#ifdef SO_BROADCAST + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BROADCAST, (st_data_t)rb_intern2("BROADCAST", 9)); +#endif +#ifdef SO_DONTROUTE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DONTROUTE, (st_data_t)rb_intern2("DONTROUTE", 9)); +#endif +#ifdef SO_ERROR + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ERROR, (st_data_t)rb_intern2("ERROR", 5)); +#endif +#ifdef SO_TYPE + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TYPE, (st_data_t)rb_intern2("TYPE", 4)); +#endif +#ifdef SO_REUSEPORT + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_REUSEPORT, (st_data_t)rb_intern2("REUSEPORT", 9)); +#endif +#ifdef SO_REUSEADDR + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_REUSEADDR, (st_data_t)rb_intern2("REUSEADDR", 9)); +#endif +#ifdef SO_DEBUG + st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DEBUG, (st_data_t)rb_intern2("DEBUG", 5)); +#endif + + rsock_intern_ip_optname_hash = st_init_numtable(); +#ifdef IP_MSFILTER + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MSFILTER, (st_data_t)rb_intern2("IP_MSFILTER", 11)); +#endif +#ifdef IP_DROP_SOURCE_MEMBERSHIP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DROP_SOURCE_MEMBERSHIP, (st_data_t)rb_intern2("IP_DROP_SOURCE_MEMBERSHIP", 25)); +#endif +#ifdef IP_ADD_SOURCE_MEMBERSHIP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ADD_SOURCE_MEMBERSHIP, (st_data_t)rb_intern2("IP_ADD_SOURCE_MEMBERSHIP", 24)); +#endif +#ifdef IP_BLOCK_SOURCE + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_BLOCK_SOURCE, (st_data_t)rb_intern2("IP_BLOCK_SOURCE", 15)); +#endif +#ifdef IP_UNBLOCK_SOURCE + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_UNBLOCK_SOURCE, (st_data_t)rb_intern2("IP_UNBLOCK_SOURCE", 17)); +#endif +#ifdef IP_PMTUDISC_DO + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_DO, (st_data_t)rb_intern2("IP_PMTUDISC_DO", 14)); +#endif +#ifdef IP_PMTUDISC_WANT + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_WANT, (st_data_t)rb_intern2("IP_PMTUDISC_WANT", 16)); +#endif +#ifdef IP_PMTUDISC_DONT + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_DONT, (st_data_t)rb_intern2("IP_PMTUDISC_DONT", 16)); +#endif +#ifdef IP_TRANSPARENT + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TRANSPARENT, (st_data_t)rb_intern2("IP_TRANSPARENT", 14)); +#endif +#ifdef IP_PASSSEC + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PASSSEC, (st_data_t)rb_intern2("IP_PASSSEC", 10)); +#endif +#ifdef IP_XFRM_POLICY + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_XFRM_POLICY, (st_data_t)rb_intern2("IP_XFRM_POLICY", 14)); +#endif +#ifdef IP_IPSEC_POLICY + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_IPSEC_POLICY, (st_data_t)rb_intern2("IP_IPSEC_POLICY", 15)); +#endif +#ifdef IP_FREEBIND + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_FREEBIND, (st_data_t)rb_intern2("IP_FREEBIND", 11)); +#endif +#ifdef IP_MTU + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MTU, (st_data_t)rb_intern2("IP_MTU", 6)); +#endif +#ifdef IP_RECVTOS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVTOS, (st_data_t)rb_intern2("IP_RECVTOS", 10)); +#endif +#ifdef IP_RECVERR + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVERR, (st_data_t)rb_intern2("IP_RECVERR", 10)); +#endif +#ifdef IP_MTU_DISCOVER + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MTU_DISCOVER, (st_data_t)rb_intern2("IP_MTU_DISCOVER", 15)); +#endif +#ifdef IP_PKTOPTIONS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PKTOPTIONS, (st_data_t)rb_intern2("IP_PKTOPTIONS", 13)); +#endif +#ifdef IP_PKTINFO + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PKTINFO, (st_data_t)rb_intern2("IP_PKTINFO", 10)); +#endif +#ifdef IP_ROUTER_ALERT + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ROUTER_ALERT, (st_data_t)rb_intern2("IP_ROUTER_ALERT", 15)); +#endif +#ifdef IP_MAX_MEMBERSHIPS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MAX_MEMBERSHIPS, (st_data_t)rb_intern2("IP_MAX_MEMBERSHIPS", 18)); +#endif +#ifdef IP_DEFAULT_MULTICAST_LOOP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DEFAULT_MULTICAST_LOOP, (st_data_t)rb_intern2("IP_DEFAULT_MULTICAST_LOOP", 25)); +#endif +#ifdef IP_DEFAULT_MULTICAST_TTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DEFAULT_MULTICAST_TTL, (st_data_t)rb_intern2("IP_DEFAULT_MULTICAST_TTL", 24)); +#endif +#ifdef IP_DROP_MEMBERSHIP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DROP_MEMBERSHIP, (st_data_t)rb_intern2("IP_DROP_MEMBERSHIP", 18)); +#endif +#ifdef IP_ADD_MEMBERSHIP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ADD_MEMBERSHIP, (st_data_t)rb_intern2("IP_ADD_MEMBERSHIP", 17)); +#endif +#ifdef IP_MULTICAST_LOOP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_LOOP, (st_data_t)rb_intern2("IP_MULTICAST_LOOP", 17)); +#endif +#ifdef IP_MULTICAST_TTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_TTL, (st_data_t)rb_intern2("IP_MULTICAST_TTL", 16)); +#endif +#ifdef IP_MULTICAST_IF + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_IF, (st_data_t)rb_intern2("IP_MULTICAST_IF", 15)); +#endif +#ifdef IP_PORTRANGE + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PORTRANGE, (st_data_t)rb_intern2("IP_PORTRANGE", 12)); +#endif +#ifdef IP_RECVSLLA + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVSLLA, (st_data_t)rb_intern2("IP_RECVSLLA", 11)); +#endif +#ifdef IP_RECVIF + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVIF, (st_data_t)rb_intern2("IP_RECVIF", 9)); +#endif +#ifdef IP_RECVTTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVTTL, (st_data_t)rb_intern2("IP_RECVTTL", 10)); +#endif +#ifdef IP_ONESBCAST + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ONESBCAST, (st_data_t)rb_intern2("IP_ONESBCAST", 12)); +#endif +#ifdef IP_SENDSRCADDR + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_SENDSRCADDR, (st_data_t)rb_intern2("IP_SENDSRCADDR", 14)); +#endif +#ifdef IP_DONTFRAG + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DONTFRAG, (st_data_t)rb_intern2("IP_DONTFRAG", 11)); +#endif +#ifdef IP_MINTTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MINTTL, (st_data_t)rb_intern2("IP_MINTTL", 9)); +#endif +#ifdef IP_RETOPTS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RETOPTS, (st_data_t)rb_intern2("IP_RETOPTS", 10)); +#endif +#ifdef IP_RECVDSTADDR + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVDSTADDR, (st_data_t)rb_intern2("IP_RECVDSTADDR", 14)); +#endif +#ifdef IP_RECVRETOPTS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVRETOPTS, (st_data_t)rb_intern2("IP_RECVRETOPTS", 14)); +#endif +#ifdef IP_RECVOPTS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVOPTS, (st_data_t)rb_intern2("IP_RECVOPTS", 11)); +#endif +#ifdef IP_TTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TTL, (st_data_t)rb_intern2("IP_TTL", 6)); +#endif +#ifdef IP_TOS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TOS, (st_data_t)rb_intern2("IP_TOS", 6)); +#endif +#ifdef IP_HDRINCL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_HDRINCL, (st_data_t)rb_intern2("IP_HDRINCL", 10)); +#endif +#ifdef IP_OPTIONS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_OPTIONS, (st_data_t)rb_intern2("IP_OPTIONS", 10)); +#endif +#ifdef IP_MSFILTER + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MSFILTER, (st_data_t)rb_intern2("MSFILTER", 8)); +#endif +#ifdef IP_DROP_SOURCE_MEMBERSHIP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DROP_SOURCE_MEMBERSHIP, (st_data_t)rb_intern2("DROP_SOURCE_MEMBERSHIP", 22)); +#endif +#ifdef IP_ADD_SOURCE_MEMBERSHIP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ADD_SOURCE_MEMBERSHIP, (st_data_t)rb_intern2("ADD_SOURCE_MEMBERSHIP", 21)); +#endif +#ifdef IP_BLOCK_SOURCE + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_BLOCK_SOURCE, (st_data_t)rb_intern2("BLOCK_SOURCE", 12)); +#endif +#ifdef IP_UNBLOCK_SOURCE + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_UNBLOCK_SOURCE, (st_data_t)rb_intern2("UNBLOCK_SOURCE", 14)); +#endif +#ifdef IP_PMTUDISC_DO + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_DO, (st_data_t)rb_intern2("PMTUDISC_DO", 11)); +#endif +#ifdef IP_PMTUDISC_WANT + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_WANT, (st_data_t)rb_intern2("PMTUDISC_WANT", 13)); +#endif +#ifdef IP_PMTUDISC_DONT + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_DONT, (st_data_t)rb_intern2("PMTUDISC_DONT", 13)); +#endif +#ifdef IP_TRANSPARENT + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TRANSPARENT, (st_data_t)rb_intern2("TRANSPARENT", 11)); +#endif +#ifdef IP_PASSSEC + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PASSSEC, (st_data_t)rb_intern2("PASSSEC", 7)); +#endif +#ifdef IP_XFRM_POLICY + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_XFRM_POLICY, (st_data_t)rb_intern2("XFRM_POLICY", 11)); +#endif +#ifdef IP_IPSEC_POLICY + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_IPSEC_POLICY, (st_data_t)rb_intern2("IPSEC_POLICY", 12)); +#endif +#ifdef IP_FREEBIND + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_FREEBIND, (st_data_t)rb_intern2("FREEBIND", 8)); +#endif +#ifdef IP_MTU + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MTU, (st_data_t)rb_intern2("MTU", 3)); +#endif +#ifdef IP_RECVTOS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVTOS, (st_data_t)rb_intern2("RECVTOS", 7)); +#endif +#ifdef IP_RECVERR + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVERR, (st_data_t)rb_intern2("RECVERR", 7)); +#endif +#ifdef IP_MTU_DISCOVER + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MTU_DISCOVER, (st_data_t)rb_intern2("MTU_DISCOVER", 12)); +#endif +#ifdef IP_PKTOPTIONS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PKTOPTIONS, (st_data_t)rb_intern2("PKTOPTIONS", 10)); +#endif +#ifdef IP_PKTINFO + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PKTINFO, (st_data_t)rb_intern2("PKTINFO", 7)); +#endif +#ifdef IP_ROUTER_ALERT + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ROUTER_ALERT, (st_data_t)rb_intern2("ROUTER_ALERT", 12)); +#endif +#ifdef IP_MAX_MEMBERSHIPS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MAX_MEMBERSHIPS, (st_data_t)rb_intern2("MAX_MEMBERSHIPS", 15)); +#endif +#ifdef IP_DEFAULT_MULTICAST_LOOP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DEFAULT_MULTICAST_LOOP, (st_data_t)rb_intern2("DEFAULT_MULTICAST_LOOP", 22)); +#endif +#ifdef IP_DEFAULT_MULTICAST_TTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DEFAULT_MULTICAST_TTL, (st_data_t)rb_intern2("DEFAULT_MULTICAST_TTL", 21)); +#endif +#ifdef IP_DROP_MEMBERSHIP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DROP_MEMBERSHIP, (st_data_t)rb_intern2("DROP_MEMBERSHIP", 15)); +#endif +#ifdef IP_ADD_MEMBERSHIP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ADD_MEMBERSHIP, (st_data_t)rb_intern2("ADD_MEMBERSHIP", 14)); +#endif +#ifdef IP_MULTICAST_LOOP + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_LOOP, (st_data_t)rb_intern2("MULTICAST_LOOP", 14)); +#endif +#ifdef IP_MULTICAST_TTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_TTL, (st_data_t)rb_intern2("MULTICAST_TTL", 13)); +#endif +#ifdef IP_MULTICAST_IF + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_IF, (st_data_t)rb_intern2("MULTICAST_IF", 12)); +#endif +#ifdef IP_PORTRANGE + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PORTRANGE, (st_data_t)rb_intern2("PORTRANGE", 9)); +#endif +#ifdef IP_RECVSLLA + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVSLLA, (st_data_t)rb_intern2("RECVSLLA", 8)); +#endif +#ifdef IP_RECVIF + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVIF, (st_data_t)rb_intern2("RECVIF", 6)); +#endif +#ifdef IP_RECVTTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVTTL, (st_data_t)rb_intern2("RECVTTL", 7)); +#endif +#ifdef IP_ONESBCAST + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ONESBCAST, (st_data_t)rb_intern2("ONESBCAST", 9)); +#endif +#ifdef IP_SENDSRCADDR + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_SENDSRCADDR, (st_data_t)rb_intern2("SENDSRCADDR", 11)); +#endif +#ifdef IP_DONTFRAG + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DONTFRAG, (st_data_t)rb_intern2("DONTFRAG", 8)); +#endif +#ifdef IP_MINTTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MINTTL, (st_data_t)rb_intern2("MINTTL", 6)); +#endif +#ifdef IP_RETOPTS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RETOPTS, (st_data_t)rb_intern2("RETOPTS", 7)); +#endif +#ifdef IP_RECVDSTADDR + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVDSTADDR, (st_data_t)rb_intern2("RECVDSTADDR", 11)); +#endif +#ifdef IP_RECVRETOPTS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVRETOPTS, (st_data_t)rb_intern2("RECVRETOPTS", 11)); +#endif +#ifdef IP_RECVOPTS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVOPTS, (st_data_t)rb_intern2("RECVOPTS", 8)); +#endif +#ifdef IP_TTL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TTL, (st_data_t)rb_intern2("TTL", 3)); +#endif +#ifdef IP_TOS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TOS, (st_data_t)rb_intern2("TOS", 3)); +#endif +#ifdef IP_HDRINCL + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_HDRINCL, (st_data_t)rb_intern2("HDRINCL", 7)); +#endif +#ifdef IP_OPTIONS + st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_OPTIONS, (st_data_t)rb_intern2("OPTIONS", 7)); +#endif + + rsock_intern_ipv6_optname_hash = st_init_numtable(); +#ifdef IPV6_USE_MIN_MTU + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_USE_MIN_MTU, (st_data_t)rb_intern2("IPV6_USE_MIN_MTU", 16)); +#endif +#ifdef IPV6_TCLASS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_TCLASS, (st_data_t)rb_intern2("IPV6_TCLASS", 11)); +#endif +#ifdef IPV6_RECVPATHMTU + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVPATHMTU, (st_data_t)rb_intern2("IPV6_RECVPATHMTU", 16)); +#endif +#ifdef IPV6_RTHDR_TYPE_0 + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDR_TYPE_0, (st_data_t)rb_intern2("IPV6_RTHDR_TYPE_0", 17)); +#endif +#ifdef IPV6_RTHDRDSTOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDRDSTOPTS, (st_data_t)rb_intern2("IPV6_RTHDRDSTOPTS", 17)); +#endif +#ifdef IPV6_RTHDR + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDR, (st_data_t)rb_intern2("IPV6_RTHDR", 10)); +#endif +#ifdef IPV6_RECVTCLASS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVTCLASS, (st_data_t)rb_intern2("IPV6_RECVTCLASS", 15)); +#endif +#ifdef IPV6_RECVRTHDR + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVRTHDR, (st_data_t)rb_intern2("IPV6_RECVRTHDR", 14)); +#endif +#ifdef IPV6_RECVPKTINFO + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVPKTINFO, (st_data_t)rb_intern2("IPV6_RECVPKTINFO", 16)); +#endif +#ifdef IPV6_RECVHOPOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVHOPOPTS, (st_data_t)rb_intern2("IPV6_RECVHOPOPTS", 16)); +#endif +#ifdef IPV6_RECVHOPLIMIT + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVHOPLIMIT, (st_data_t)rb_intern2("IPV6_RECVHOPLIMIT", 17)); +#endif +#ifdef IPV6_RECVDSTOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVDSTOPTS, (st_data_t)rb_intern2("IPV6_RECVDSTOPTS", 16)); +#endif +#ifdef IPV6_PKTINFO + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_PKTINFO, (st_data_t)rb_intern2("IPV6_PKTINFO", 12)); +#endif +#ifdef IPV6_PATHMTU + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_PATHMTU, (st_data_t)rb_intern2("IPV6_PATHMTU", 12)); +#endif +#ifdef IPV6_NEXTHOP + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_NEXTHOP, (st_data_t)rb_intern2("IPV6_NEXTHOP", 12)); +#endif +#ifdef IPV6_HOPOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_HOPOPTS, (st_data_t)rb_intern2("IPV6_HOPOPTS", 12)); +#endif +#ifdef IPV6_HOPLIMIT + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_HOPLIMIT, (st_data_t)rb_intern2("IPV6_HOPLIMIT", 13)); +#endif +#ifdef IPV6_DSTOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_DSTOPTS, (st_data_t)rb_intern2("IPV6_DSTOPTS", 12)); +#endif +#ifdef IPV6_DONTFRAG + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_DONTFRAG, (st_data_t)rb_intern2("IPV6_DONTFRAG", 13)); +#endif +#ifdef IPV6_CHECKSUM + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_CHECKSUM, (st_data_t)rb_intern2("IPV6_CHECKSUM", 13)); +#endif +#ifdef IPV6_V6ONLY + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_V6ONLY, (st_data_t)rb_intern2("IPV6_V6ONLY", 11)); +#endif +#ifdef IPV6_UNICAST_HOPS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_UNICAST_HOPS, (st_data_t)rb_intern2("IPV6_UNICAST_HOPS", 17)); +#endif +#ifdef IPV6_MULTICAST_LOOP + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_LOOP, (st_data_t)rb_intern2("IPV6_MULTICAST_LOOP", 19)); +#endif +#ifdef IPV6_MULTICAST_IF + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_IF, (st_data_t)rb_intern2("IPV6_MULTICAST_IF", 17)); +#endif +#ifdef IPV6_MULTICAST_HOPS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_HOPS, (st_data_t)rb_intern2("IPV6_MULTICAST_HOPS", 19)); +#endif +#ifdef IPV6_LEAVE_GROUP + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_LEAVE_GROUP, (st_data_t)rb_intern2("IPV6_LEAVE_GROUP", 16)); +#endif +#ifdef IPV6_JOIN_GROUP + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_JOIN_GROUP, (st_data_t)rb_intern2("IPV6_JOIN_GROUP", 15)); +#endif +#ifdef IPV6_USE_MIN_MTU + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_USE_MIN_MTU, (st_data_t)rb_intern2("USE_MIN_MTU", 11)); +#endif +#ifdef IPV6_TCLASS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_TCLASS, (st_data_t)rb_intern2("TCLASS", 6)); +#endif +#ifdef IPV6_RECVPATHMTU + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVPATHMTU, (st_data_t)rb_intern2("RECVPATHMTU", 11)); +#endif +#ifdef IPV6_RTHDR_TYPE_0 + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDR_TYPE_0, (st_data_t)rb_intern2("RTHDR_TYPE_0", 12)); +#endif +#ifdef IPV6_RTHDRDSTOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDRDSTOPTS, (st_data_t)rb_intern2("RTHDRDSTOPTS", 12)); +#endif +#ifdef IPV6_RTHDR + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDR, (st_data_t)rb_intern2("RTHDR", 5)); +#endif +#ifdef IPV6_RECVTCLASS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVTCLASS, (st_data_t)rb_intern2("RECVTCLASS", 10)); +#endif +#ifdef IPV6_RECVRTHDR + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVRTHDR, (st_data_t)rb_intern2("RECVRTHDR", 9)); +#endif +#ifdef IPV6_RECVPKTINFO + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVPKTINFO, (st_data_t)rb_intern2("RECVPKTINFO", 11)); +#endif +#ifdef IPV6_RECVHOPOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVHOPOPTS, (st_data_t)rb_intern2("RECVHOPOPTS", 11)); +#endif +#ifdef IPV6_RECVHOPLIMIT + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVHOPLIMIT, (st_data_t)rb_intern2("RECVHOPLIMIT", 12)); +#endif +#ifdef IPV6_RECVDSTOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVDSTOPTS, (st_data_t)rb_intern2("RECVDSTOPTS", 11)); +#endif +#ifdef IPV6_PKTINFO + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_PKTINFO, (st_data_t)rb_intern2("PKTINFO", 7)); +#endif +#ifdef IPV6_PATHMTU + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_PATHMTU, (st_data_t)rb_intern2("PATHMTU", 7)); +#endif +#ifdef IPV6_NEXTHOP + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_NEXTHOP, (st_data_t)rb_intern2("NEXTHOP", 7)); +#endif +#ifdef IPV6_HOPOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_HOPOPTS, (st_data_t)rb_intern2("HOPOPTS", 7)); +#endif +#ifdef IPV6_HOPLIMIT + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_HOPLIMIT, (st_data_t)rb_intern2("HOPLIMIT", 8)); +#endif +#ifdef IPV6_DSTOPTS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_DSTOPTS, (st_data_t)rb_intern2("DSTOPTS", 7)); +#endif +#ifdef IPV6_DONTFRAG + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_DONTFRAG, (st_data_t)rb_intern2("DONTFRAG", 8)); +#endif +#ifdef IPV6_CHECKSUM + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_CHECKSUM, (st_data_t)rb_intern2("CHECKSUM", 8)); +#endif +#ifdef IPV6_V6ONLY + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_V6ONLY, (st_data_t)rb_intern2("V6ONLY", 6)); +#endif +#ifdef IPV6_UNICAST_HOPS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_UNICAST_HOPS, (st_data_t)rb_intern2("UNICAST_HOPS", 12)); +#endif +#ifdef IPV6_MULTICAST_LOOP + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_LOOP, (st_data_t)rb_intern2("MULTICAST_LOOP", 14)); +#endif +#ifdef IPV6_MULTICAST_IF + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_IF, (st_data_t)rb_intern2("MULTICAST_IF", 12)); +#endif +#ifdef IPV6_MULTICAST_HOPS + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_HOPS, (st_data_t)rb_intern2("MULTICAST_HOPS", 14)); +#endif +#ifdef IPV6_LEAVE_GROUP + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_LEAVE_GROUP, (st_data_t)rb_intern2("LEAVE_GROUP", 11)); +#endif +#ifdef IPV6_JOIN_GROUP + st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_JOIN_GROUP, (st_data_t)rb_intern2("JOIN_GROUP", 10)); +#endif + + rsock_intern_tcp_optname_hash = st_init_numtable(); +#ifdef TCP_USER_TIMEOUT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_USER_TIMEOUT, (st_data_t)rb_intern2("TCP_USER_TIMEOUT", 16)); +#endif +#ifdef TCP_TIMESTAMP + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_TIMESTAMP, (st_data_t)rb_intern2("TCP_TIMESTAMP", 13)); +#endif +#ifdef TCP_THIN_LINEAR_TIMEOUTS + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_THIN_LINEAR_TIMEOUTS, (st_data_t)rb_intern2("TCP_THIN_LINEAR_TIMEOUTS", 24)); +#endif +#ifdef TCP_THIN_DUPACK + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_THIN_DUPACK, (st_data_t)rb_intern2("TCP_THIN_DUPACK", 15)); +#endif +#ifdef TCP_REPAIR_QUEUE + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR_QUEUE, (st_data_t)rb_intern2("TCP_REPAIR_QUEUE", 16)); +#endif +#ifdef TCP_REPAIR_OPTIONS + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR_OPTIONS, (st_data_t)rb_intern2("TCP_REPAIR_OPTIONS", 18)); +#endif +#ifdef TCP_REPAIR + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR, (st_data_t)rb_intern2("TCP_REPAIR", 10)); +#endif +#ifdef TCP_QUEUE_SEQ + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_QUEUE_SEQ, (st_data_t)rb_intern2("TCP_QUEUE_SEQ", 13)); +#endif +#ifdef TCP_COOKIE_TRANSACTIONS + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_COOKIE_TRANSACTIONS, (st_data_t)rb_intern2("TCP_COOKIE_TRANSACTIONS", 23)); +#endif +#ifdef TCP_CONGESTION + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_CONGESTION, (st_data_t)rb_intern2("TCP_CONGESTION", 14)); +#endif +#ifdef TCP_FASTOPEN + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_FASTOPEN, (st_data_t)rb_intern2("TCP_FASTOPEN", 12)); +#endif +#ifdef TCP_WINDOW_CLAMP + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_WINDOW_CLAMP, (st_data_t)rb_intern2("TCP_WINDOW_CLAMP", 16)); +#endif +#ifdef TCP_SYNCNT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_SYNCNT, (st_data_t)rb_intern2("TCP_SYNCNT", 10)); +#endif +#ifdef TCP_QUICKACK + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_QUICKACK, (st_data_t)rb_intern2("TCP_QUICKACK", 12)); +#endif +#ifdef TCP_NOPUSH + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NOPUSH, (st_data_t)rb_intern2("TCP_NOPUSH", 10)); +#endif +#ifdef TCP_NOOPT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NOOPT, (st_data_t)rb_intern2("TCP_NOOPT", 9)); +#endif +#ifdef TCP_MD5SIG + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_MD5SIG, (st_data_t)rb_intern2("TCP_MD5SIG", 10)); +#endif +#ifdef TCP_LINGER2 + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_LINGER2, (st_data_t)rb_intern2("TCP_LINGER2", 11)); +#endif +#ifdef TCP_KEEPINTVL + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPINTVL, (st_data_t)rb_intern2("TCP_KEEPINTVL", 13)); +#endif +#ifdef TCP_KEEPIDLE + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPIDLE, (st_data_t)rb_intern2("TCP_KEEPIDLE", 12)); +#endif +#ifdef TCP_KEEPCNT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPCNT, (st_data_t)rb_intern2("TCP_KEEPCNT", 11)); +#endif +#ifdef TCP_INFO + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_INFO, (st_data_t)rb_intern2("TCP_INFO", 8)); +#endif +#ifdef TCP_DEFER_ACCEPT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_DEFER_ACCEPT, (st_data_t)rb_intern2("TCP_DEFER_ACCEPT", 16)); +#endif +#ifdef TCP_CORK + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_CORK, (st_data_t)rb_intern2("TCP_CORK", 8)); +#endif +#ifdef TCP_MAXSEG + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_MAXSEG, (st_data_t)rb_intern2("TCP_MAXSEG", 10)); +#endif +#ifdef TCP_NODELAY + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NODELAY, (st_data_t)rb_intern2("TCP_NODELAY", 11)); +#endif +#ifdef TCP_USER_TIMEOUT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_USER_TIMEOUT, (st_data_t)rb_intern2("USER_TIMEOUT", 12)); +#endif +#ifdef TCP_TIMESTAMP + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_TIMESTAMP, (st_data_t)rb_intern2("TIMESTAMP", 9)); +#endif +#ifdef TCP_THIN_LINEAR_TIMEOUTS + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_THIN_LINEAR_TIMEOUTS, (st_data_t)rb_intern2("THIN_LINEAR_TIMEOUTS", 20)); +#endif +#ifdef TCP_THIN_DUPACK + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_THIN_DUPACK, (st_data_t)rb_intern2("THIN_DUPACK", 11)); +#endif +#ifdef TCP_REPAIR_QUEUE + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR_QUEUE, (st_data_t)rb_intern2("REPAIR_QUEUE", 12)); +#endif +#ifdef TCP_REPAIR_OPTIONS + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR_OPTIONS, (st_data_t)rb_intern2("REPAIR_OPTIONS", 14)); +#endif +#ifdef TCP_REPAIR + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR, (st_data_t)rb_intern2("REPAIR", 6)); +#endif +#ifdef TCP_QUEUE_SEQ + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_QUEUE_SEQ, (st_data_t)rb_intern2("QUEUE_SEQ", 9)); +#endif +#ifdef TCP_COOKIE_TRANSACTIONS + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_COOKIE_TRANSACTIONS, (st_data_t)rb_intern2("COOKIE_TRANSACTIONS", 19)); +#endif +#ifdef TCP_CONGESTION + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_CONGESTION, (st_data_t)rb_intern2("CONGESTION", 10)); +#endif +#ifdef TCP_FASTOPEN + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_FASTOPEN, (st_data_t)rb_intern2("FASTOPEN", 8)); +#endif +#ifdef TCP_WINDOW_CLAMP + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_WINDOW_CLAMP, (st_data_t)rb_intern2("WINDOW_CLAMP", 12)); +#endif +#ifdef TCP_SYNCNT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_SYNCNT, (st_data_t)rb_intern2("SYNCNT", 6)); +#endif +#ifdef TCP_QUICKACK + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_QUICKACK, (st_data_t)rb_intern2("QUICKACK", 8)); +#endif +#ifdef TCP_NOPUSH + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NOPUSH, (st_data_t)rb_intern2("NOPUSH", 6)); +#endif +#ifdef TCP_NOOPT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NOOPT, (st_data_t)rb_intern2("NOOPT", 5)); +#endif +#ifdef TCP_MD5SIG + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_MD5SIG, (st_data_t)rb_intern2("MD5SIG", 6)); +#endif +#ifdef TCP_LINGER2 + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_LINGER2, (st_data_t)rb_intern2("LINGER2", 7)); +#endif +#ifdef TCP_KEEPINTVL + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPINTVL, (st_data_t)rb_intern2("KEEPINTVL", 9)); +#endif +#ifdef TCP_KEEPIDLE + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPIDLE, (st_data_t)rb_intern2("KEEPIDLE", 8)); +#endif +#ifdef TCP_KEEPCNT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPCNT, (st_data_t)rb_intern2("KEEPCNT", 7)); +#endif +#ifdef TCP_INFO + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_INFO, (st_data_t)rb_intern2("INFO", 4)); +#endif +#ifdef TCP_DEFER_ACCEPT + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_DEFER_ACCEPT, (st_data_t)rb_intern2("DEFER_ACCEPT", 12)); +#endif +#ifdef TCP_CORK + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_CORK, (st_data_t)rb_intern2("CORK", 4)); +#endif +#ifdef TCP_MAXSEG + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_MAXSEG, (st_data_t)rb_intern2("MAXSEG", 6)); +#endif +#ifdef TCP_NODELAY + st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NODELAY, (st_data_t)rb_intern2("NODELAY", 7)); +#endif + + rsock_intern_udp_optname_hash = st_init_numtable(); +#ifdef UDP_CORK + st_insert(rsock_intern_udp_optname_hash, (st_data_t)UDP_CORK, (st_data_t)rb_intern2("UDP_CORK", 8)); +#endif +#ifdef UDP_CORK + st_insert(rsock_intern_udp_optname_hash, (st_data_t)UDP_CORK, (st_data_t)rb_intern2("CORK", 4)); +#endif + + rsock_intern_scm_optname_hash = st_init_numtable(); +#ifdef SCM_WIFI_STATUS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_WIFI_STATUS, (st_data_t)rb_intern2("SCM_WIFI_STATUS", 15)); +#endif +#ifdef SCM_UCRED + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_UCRED, (st_data_t)rb_intern2("SCM_UCRED", 9)); +#endif +#ifdef SCM_CREDS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_CREDS, (st_data_t)rb_intern2("SCM_CREDS", 9)); +#endif +#ifdef SCM_CREDENTIALS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_CREDENTIALS, (st_data_t)rb_intern2("SCM_CREDENTIALS", 15)); +#endif +#ifdef SCM_BINTIME + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_BINTIME, (st_data_t)rb_intern2("SCM_BINTIME", 11)); +#endif +#ifdef SCM_TIMESTAMPING + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMPING, (st_data_t)rb_intern2("SCM_TIMESTAMPING", 16)); +#endif +#ifdef SCM_TIMESTAMPNS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMPNS, (st_data_t)rb_intern2("SCM_TIMESTAMPNS", 15)); +#endif +#ifdef SCM_TIMESTAMP + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMP, (st_data_t)rb_intern2("SCM_TIMESTAMP", 13)); +#endif +#ifdef SCM_RIGHTS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_RIGHTS, (st_data_t)rb_intern2("SCM_RIGHTS", 10)); +#endif +#ifdef SCM_WIFI_STATUS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_WIFI_STATUS, (st_data_t)rb_intern2("WIFI_STATUS", 11)); +#endif +#ifdef SCM_UCRED + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_UCRED, (st_data_t)rb_intern2("UCRED", 5)); +#endif +#ifdef SCM_CREDS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_CREDS, (st_data_t)rb_intern2("CREDS", 5)); +#endif +#ifdef SCM_CREDENTIALS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_CREDENTIALS, (st_data_t)rb_intern2("CREDENTIALS", 11)); +#endif +#ifdef SCM_BINTIME + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_BINTIME, (st_data_t)rb_intern2("BINTIME", 7)); +#endif +#ifdef SCM_TIMESTAMPING + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMPING, (st_data_t)rb_intern2("TIMESTAMPING", 12)); +#endif +#ifdef SCM_TIMESTAMPNS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMPNS, (st_data_t)rb_intern2("TIMESTAMPNS", 11)); +#endif +#ifdef SCM_TIMESTAMP + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMP, (st_data_t)rb_intern2("TIMESTAMP", 9)); +#endif +#ifdef SCM_RIGHTS + st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_RIGHTS, (st_data_t)rb_intern2("RIGHTS", 6)); +#endif + + rsock_intern_local_optname_hash = st_init_numtable(); +#ifdef LOCAL_CONNWAIT + st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_CONNWAIT, (st_data_t)rb_intern2("LOCAL_CONNWAIT", 14)); +#endif +#ifdef LOCAL_CREDS + st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_CREDS, (st_data_t)rb_intern2("LOCAL_CREDS", 11)); +#endif +#ifdef LOCAL_PEERCRED + st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_PEERCRED, (st_data_t)rb_intern2("LOCAL_PEERCRED", 14)); +#endif +#ifdef LOCAL_CONNWAIT + st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_CONNWAIT, (st_data_t)rb_intern2("CONNWAIT", 8)); +#endif +#ifdef LOCAL_CREDS + st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_CREDS, (st_data_t)rb_intern2("CREDS", 5)); +#endif +#ifdef LOCAL_PEERCRED + st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_PEERCRED, (st_data_t)rb_intern2("PEERCRED", 8)); +#endif + +} + +int +rsock_family_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 2: +#ifdef AF_NS + if (memcmp(str, "NS", 2) == 0) { *valp = AF_NS; return 0; } +#endif + return -1; + + case 3: +#ifdef AF_IPX + if (memcmp(str, "IPX", 3) == 0) { *valp = AF_IPX; return 0; } +#endif +#ifdef AF_PUP + if (memcmp(str, "PUP", 3) == 0) { *valp = AF_PUP; return 0; } +#endif +#ifdef AF_ISO + if (memcmp(str, "ISO", 3) == 0) { *valp = AF_ISO; return 0; } +#endif +#ifdef AF_OSI + if (memcmp(str, "OSI", 3) == 0) { *valp = AF_OSI; return 0; } +#endif +#ifdef AF_SNA + if (memcmp(str, "SNA", 3) == 0) { *valp = AF_SNA; return 0; } +#endif +#ifdef AF_DEC + if (memcmp(str, "DEC", 3) == 0) { *valp = AF_DEC; return 0; } +#endif +#ifdef AF_DLI + if (memcmp(str, "DLI", 3) == 0) { *valp = AF_DLI; return 0; } +#endif +#ifdef AF_LAT + if (memcmp(str, "LAT", 3) == 0) { *valp = AF_LAT; return 0; } +#endif +#ifdef AF_CNT + if (memcmp(str, "CNT", 3) == 0) { *valp = AF_CNT; return 0; } +#endif +#ifdef AF_SIP + if (memcmp(str, "SIP", 3) == 0) { *valp = AF_SIP; return 0; } +#endif +#ifdef AF_PPP + if (memcmp(str, "PPP", 3) == 0) { *valp = AF_PPP; return 0; } +#endif +#ifdef AF_ATM + if (memcmp(str, "ATM", 3) == 0) { *valp = AF_ATM; return 0; } +#endif +#ifdef AF_MAX + if (memcmp(str, "MAX", 3) == 0) { *valp = AF_MAX; return 0; } +#endif + return -1; + + case 4: +#ifdef AF_INET + if (memcmp(str, "INET", 4) == 0) { *valp = AF_INET; return 0; } +#endif +#ifdef AF_UNIX + if (memcmp(str, "UNIX", 4) == 0) { *valp = AF_UNIX; return 0; } +#endif +#ifdef AF_AX25 + if (memcmp(str, "AX25", 4) == 0) { *valp = AF_AX25; return 0; } +#endif +#ifdef AF_ECMA + if (memcmp(str, "ECMA", 4) == 0) { *valp = AF_ECMA; return 0; } +#endif +#ifdef AF_LINK + if (memcmp(str, "LINK", 4) == 0) { *valp = AF_LINK; return 0; } +#endif +#ifdef AF_COIP + if (memcmp(str, "COIP", 4) == 0) { *valp = AF_COIP; return 0; } +#endif +#ifdef AF_NDRV + if (memcmp(str, "NDRV", 4) == 0) { *valp = AF_NDRV; return 0; } +#endif +#ifdef AF_ISDN + if (memcmp(str, "ISDN", 4) == 0) { *valp = AF_ISDN; return 0; } +#endif +#ifdef AF_NATM + if (memcmp(str, "NATM", 4) == 0) { *valp = AF_NATM; return 0; } +#endif +#ifdef AF_E164 + if (memcmp(str, "E164", 4) == 0) { *valp = AF_E164; return 0; } +#endif + return -1; + + case 5: +#ifdef AF_NS + if (memcmp(str, "AF_NS", 5) == 0) { *valp = AF_NS; return 0; } +#endif +#ifdef PF_NS + if (memcmp(str, "PF_NS", 5) == 0) { *valp = PF_NS; return 0; } +#endif +#ifdef AF_INET6 + if (memcmp(str, "INET6", 5) == 0) { *valp = AF_INET6; return 0; } +#endif +#ifdef AF_LOCAL + if (memcmp(str, "LOCAL", 5) == 0) { *valp = AF_LOCAL; return 0; } +#endif +#ifdef AF_CHAOS + if (memcmp(str, "CHAOS", 5) == 0) { *valp = AF_CHAOS; return 0; } +#endif +#ifdef AF_CCITT + if (memcmp(str, "CCITT", 5) == 0) { *valp = AF_CCITT; return 0; } +#endif +#ifdef AF_ROUTE + if (memcmp(str, "ROUTE", 5) == 0) { *valp = AF_ROUTE; return 0; } +#endif + return -1; + + case 6: +#ifdef AF_IPX + if (memcmp(str, "AF_IPX", 6) == 0) { *valp = AF_IPX; return 0; } +#endif +#ifdef PF_IPX + if (memcmp(str, "PF_IPX", 6) == 0) { *valp = PF_IPX; return 0; } +#endif +#ifdef AF_PUP + if (memcmp(str, "AF_PUP", 6) == 0) { *valp = AF_PUP; return 0; } +#endif +#ifdef PF_PUP + if (memcmp(str, "PF_PUP", 6) == 0) { *valp = PF_PUP; return 0; } +#endif +#ifdef AF_ISO + if (memcmp(str, "AF_ISO", 6) == 0) { *valp = AF_ISO; return 0; } +#endif +#ifdef PF_ISO + if (memcmp(str, "PF_ISO", 6) == 0) { *valp = PF_ISO; return 0; } +#endif +#ifdef AF_OSI + if (memcmp(str, "AF_OSI", 6) == 0) { *valp = AF_OSI; return 0; } +#endif +#ifdef PF_OSI + if (memcmp(str, "PF_OSI", 6) == 0) { *valp = PF_OSI; return 0; } +#endif +#ifdef AF_SNA + if (memcmp(str, "AF_SNA", 6) == 0) { *valp = AF_SNA; return 0; } +#endif +#ifdef PF_SNA + if (memcmp(str, "PF_SNA", 6) == 0) { *valp = PF_SNA; return 0; } +#endif +#ifdef AF_DEC + if (memcmp(str, "AF_DEC", 6) == 0) { *valp = AF_DEC; return 0; } +#endif +#ifdef PF_DEC + if (memcmp(str, "PF_DEC", 6) == 0) { *valp = PF_DEC; return 0; } +#endif +#ifdef AF_DLI + if (memcmp(str, "AF_DLI", 6) == 0) { *valp = AF_DLI; return 0; } +#endif +#ifdef PF_DLI + if (memcmp(str, "PF_DLI", 6) == 0) { *valp = PF_DLI; return 0; } +#endif +#ifdef AF_LAT + if (memcmp(str, "AF_LAT", 6) == 0) { *valp = AF_LAT; return 0; } +#endif +#ifdef PF_LAT + if (memcmp(str, "PF_LAT", 6) == 0) { *valp = PF_LAT; return 0; } +#endif +#ifdef AF_CNT + if (memcmp(str, "AF_CNT", 6) == 0) { *valp = AF_CNT; return 0; } +#endif +#ifdef PF_CNT + if (memcmp(str, "PF_CNT", 6) == 0) { *valp = PF_CNT; return 0; } +#endif +#ifdef AF_SIP + if (memcmp(str, "AF_SIP", 6) == 0) { *valp = AF_SIP; return 0; } +#endif +#ifdef PF_SIP + if (memcmp(str, "PF_SIP", 6) == 0) { *valp = PF_SIP; return 0; } +#endif +#ifdef AF_PPP + if (memcmp(str, "AF_PPP", 6) == 0) { *valp = AF_PPP; return 0; } +#endif +#ifdef PF_PPP + if (memcmp(str, "PF_PPP", 6) == 0) { *valp = PF_PPP; return 0; } +#endif +#ifdef AF_ATM + if (memcmp(str, "AF_ATM", 6) == 0) { *valp = AF_ATM; return 0; } +#endif +#ifdef PF_ATM + if (memcmp(str, "PF_ATM", 6) == 0) { *valp = PF_ATM; return 0; } +#endif +#ifdef AF_MAX + if (memcmp(str, "AF_MAX", 6) == 0) { *valp = AF_MAX; return 0; } +#endif +#ifdef PF_MAX + if (memcmp(str, "PF_MAX", 6) == 0) { *valp = PF_MAX; return 0; } +#endif +#ifdef PF_XTP + if (memcmp(str, "PF_XTP", 6) == 0) { *valp = PF_XTP; return 0; } +#endif +#ifdef PF_PIP + if (memcmp(str, "PF_PIP", 6) == 0) { *valp = PF_PIP; return 0; } +#endif +#ifdef PF_KEY + if (memcmp(str, "PF_KEY", 6) == 0) { *valp = PF_KEY; return 0; } +#endif +#ifdef AF_UNSPEC + if (memcmp(str, "UNSPEC", 6) == 0) { *valp = AF_UNSPEC; return 0; } +#endif +#ifdef AF_HYLINK + if (memcmp(str, "HYLINK", 6) == 0) { *valp = AF_HYLINK; return 0; } +#endif +#ifdef AF_SYSTEM + if (memcmp(str, "SYSTEM", 6) == 0) { *valp = AF_SYSTEM; return 0; } +#endif +#ifdef AF_PACKET + if (memcmp(str, "PACKET", 6) == 0) { *valp = AF_PACKET; return 0; } +#endif + return -1; + + case 7: +#ifdef AF_INET + if (memcmp(str, "AF_INET", 7) == 0) { *valp = AF_INET; return 0; } +#endif +#ifdef PF_INET + if (memcmp(str, "PF_INET", 7) == 0) { *valp = PF_INET; return 0; } +#endif +#ifdef AF_UNIX + if (memcmp(str, "AF_UNIX", 7) == 0) { *valp = AF_UNIX; return 0; } +#endif +#ifdef PF_UNIX + if (memcmp(str, "PF_UNIX", 7) == 0) { *valp = PF_UNIX; return 0; } +#endif +#ifdef AF_AX25 + if (memcmp(str, "AF_AX25", 7) == 0) { *valp = AF_AX25; return 0; } +#endif +#ifdef PF_AX25 + if (memcmp(str, "PF_AX25", 7) == 0) { *valp = PF_AX25; return 0; } +#endif +#ifdef AF_ECMA + if (memcmp(str, "AF_ECMA", 7) == 0) { *valp = AF_ECMA; return 0; } +#endif +#ifdef PF_ECMA + if (memcmp(str, "PF_ECMA", 7) == 0) { *valp = PF_ECMA; return 0; } +#endif +#ifdef AF_LINK + if (memcmp(str, "AF_LINK", 7) == 0) { *valp = AF_LINK; return 0; } +#endif +#ifdef PF_LINK + if (memcmp(str, "PF_LINK", 7) == 0) { *valp = PF_LINK; return 0; } +#endif +#ifdef AF_COIP + if (memcmp(str, "AF_COIP", 7) == 0) { *valp = AF_COIP; return 0; } +#endif +#ifdef PF_COIP + if (memcmp(str, "PF_COIP", 7) == 0) { *valp = PF_COIP; return 0; } +#endif +#ifdef AF_NDRV + if (memcmp(str, "AF_NDRV", 7) == 0) { *valp = AF_NDRV; return 0; } +#endif +#ifdef PF_NDRV + if (memcmp(str, "PF_NDRV", 7) == 0) { *valp = PF_NDRV; return 0; } +#endif +#ifdef AF_ISDN + if (memcmp(str, "AF_ISDN", 7) == 0) { *valp = AF_ISDN; return 0; } +#endif +#ifdef PF_ISDN + if (memcmp(str, "PF_ISDN", 7) == 0) { *valp = PF_ISDN; return 0; } +#endif +#ifdef AF_NATM + if (memcmp(str, "AF_NATM", 7) == 0) { *valp = AF_NATM; return 0; } +#endif +#ifdef PF_NATM + if (memcmp(str, "PF_NATM", 7) == 0) { *valp = PF_NATM; return 0; } +#endif +#ifdef AF_E164 + if (memcmp(str, "AF_E164", 7) == 0) { *valp = AF_E164; return 0; } +#endif +#ifdef PF_RTIP + if (memcmp(str, "PF_RTIP", 7) == 0) { *valp = PF_RTIP; return 0; } +#endif +#ifdef AF_IMPLINK + if (memcmp(str, "IMPLINK", 7) == 0) { *valp = AF_IMPLINK; return 0; } +#endif +#ifdef AF_DATAKIT + if (memcmp(str, "DATAKIT", 7) == 0) { *valp = AF_DATAKIT; return 0; } +#endif +#ifdef AF_NETBIOS + if (memcmp(str, "NETBIOS", 7) == 0) { *valp = AF_NETBIOS; return 0; } +#endif + return -1; + + case 8: +#ifdef AF_INET6 + if (memcmp(str, "AF_INET6", 8) == 0) { *valp = AF_INET6; return 0; } +#endif +#ifdef PF_INET6 + if (memcmp(str, "PF_INET6", 8) == 0) { *valp = PF_INET6; return 0; } +#endif +#ifdef AF_LOCAL + if (memcmp(str, "AF_LOCAL", 8) == 0) { *valp = AF_LOCAL; return 0; } +#endif +#ifdef PF_LOCAL + if (memcmp(str, "PF_LOCAL", 8) == 0) { *valp = PF_LOCAL; return 0; } +#endif +#ifdef AF_CHAOS + if (memcmp(str, "AF_CHAOS", 8) == 0) { *valp = AF_CHAOS; return 0; } +#endif +#ifdef PF_CHAOS + if (memcmp(str, "PF_CHAOS", 8) == 0) { *valp = PF_CHAOS; return 0; } +#endif +#ifdef AF_CCITT + if (memcmp(str, "AF_CCITT", 8) == 0) { *valp = AF_CCITT; return 0; } +#endif +#ifdef PF_CCITT + if (memcmp(str, "PF_CCITT", 8) == 0) { *valp = PF_CCITT; return 0; } +#endif +#ifdef AF_ROUTE + if (memcmp(str, "AF_ROUTE", 8) == 0) { *valp = AF_ROUTE; return 0; } +#endif +#ifdef PF_ROUTE + if (memcmp(str, "PF_ROUTE", 8) == 0) { *valp = PF_ROUTE; return 0; } +#endif +#ifdef AF_NETGRAPH + if (memcmp(str, "NETGRAPH", 8) == 0) { *valp = AF_NETGRAPH; return 0; } +#endif + return -1; + + case 9: +#ifdef AF_UNSPEC + if (memcmp(str, "AF_UNSPEC", 9) == 0) { *valp = AF_UNSPEC; return 0; } +#endif +#ifdef PF_UNSPEC + if (memcmp(str, "PF_UNSPEC", 9) == 0) { *valp = PF_UNSPEC; return 0; } +#endif +#ifdef AF_HYLINK + if (memcmp(str, "AF_HYLINK", 9) == 0) { *valp = AF_HYLINK; return 0; } +#endif +#ifdef PF_HYLINK + if (memcmp(str, "PF_HYLINK", 9) == 0) { *valp = PF_HYLINK; return 0; } +#endif +#ifdef AF_SYSTEM + if (memcmp(str, "AF_SYSTEM", 9) == 0) { *valp = AF_SYSTEM; return 0; } +#endif +#ifdef PF_SYSTEM + if (memcmp(str, "PF_SYSTEM", 9) == 0) { *valp = PF_SYSTEM; return 0; } +#endif +#ifdef AF_PACKET + if (memcmp(str, "AF_PACKET", 9) == 0) { *valp = AF_PACKET; return 0; } +#endif +#ifdef PF_PACKET + if (memcmp(str, "PF_PACKET", 9) == 0) { *valp = PF_PACKET; return 0; } +#endif +#ifdef AF_APPLETALK + if (memcmp(str, "APPLETALK", 9) == 0) { *valp = AF_APPLETALK; return 0; } +#endif + return -1; + + case 10: +#ifdef AF_IMPLINK + if (memcmp(str, "AF_IMPLINK", 10) == 0) { *valp = AF_IMPLINK; return 0; } +#endif +#ifdef PF_IMPLINK + if (memcmp(str, "PF_IMPLINK", 10) == 0) { *valp = PF_IMPLINK; return 0; } +#endif +#ifdef AF_DATAKIT + if (memcmp(str, "AF_DATAKIT", 10) == 0) { *valp = AF_DATAKIT; return 0; } +#endif +#ifdef PF_DATAKIT + if (memcmp(str, "PF_DATAKIT", 10) == 0) { *valp = PF_DATAKIT; return 0; } +#endif +#ifdef AF_NETBIOS + if (memcmp(str, "AF_NETBIOS", 10) == 0) { *valp = AF_NETBIOS; return 0; } +#endif +#ifdef PF_NETBIOS + if (memcmp(str, "PF_NETBIOS", 10) == 0) { *valp = PF_NETBIOS; return 0; } +#endif + return -1; + + case 11: +#ifdef AF_NETGRAPH + if (memcmp(str, "AF_NETGRAPH", 11) == 0) { *valp = AF_NETGRAPH; return 0; } +#endif +#ifdef PF_NETGRAPH + if (memcmp(str, "PF_NETGRAPH", 11) == 0) { *valp = PF_NETGRAPH; return 0; } +#endif + return -1; + + case 12: +#ifdef AF_APPLETALK + if (memcmp(str, "AF_APPLETALK", 12) == 0) { *valp = AF_APPLETALK; return 0; } +#endif +#ifdef PF_APPLETALK + if (memcmp(str, "PF_APPLETALK", 12) == 0) { *valp = PF_APPLETALK; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_socktype_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 3: +#ifdef SOCK_RAW + if (memcmp(str, "RAW", 3) == 0) { *valp = SOCK_RAW; return 0; } +#endif +#ifdef SOCK_RDM + if (memcmp(str, "RDM", 3) == 0) { *valp = SOCK_RDM; return 0; } +#endif + return -1; + + case 5: +#ifdef SOCK_DGRAM + if (memcmp(str, "DGRAM", 5) == 0) { *valp = SOCK_DGRAM; return 0; } +#endif + return -1; + + case 6: +#ifdef SOCK_STREAM + if (memcmp(str, "STREAM", 6) == 0) { *valp = SOCK_STREAM; return 0; } +#endif +#ifdef SOCK_PACKET + if (memcmp(str, "PACKET", 6) == 0) { *valp = SOCK_PACKET; return 0; } +#endif + return -1; + + case 8: +#ifdef SOCK_RAW + if (memcmp(str, "SOCK_RAW", 8) == 0) { *valp = SOCK_RAW; return 0; } +#endif +#ifdef SOCK_RDM + if (memcmp(str, "SOCK_RDM", 8) == 0) { *valp = SOCK_RDM; return 0; } +#endif + return -1; + + case 9: +#ifdef SOCK_SEQPACKET + if (memcmp(str, "SEQPACKET", 9) == 0) { *valp = SOCK_SEQPACKET; return 0; } +#endif + return -1; + + case 10: +#ifdef SOCK_DGRAM + if (memcmp(str, "SOCK_DGRAM", 10) == 0) { *valp = SOCK_DGRAM; return 0; } +#endif + return -1; + + case 11: +#ifdef SOCK_STREAM + if (memcmp(str, "SOCK_STREAM", 11) == 0) { *valp = SOCK_STREAM; return 0; } +#endif +#ifdef SOCK_PACKET + if (memcmp(str, "SOCK_PACKET", 11) == 0) { *valp = SOCK_PACKET; return 0; } +#endif + return -1; + + case 14: +#ifdef SOCK_SEQPACKET + if (memcmp(str, "SOCK_SEQPACKET", 14) == 0) { *valp = SOCK_SEQPACKET; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_ipproto_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 2: +#ifdef IPPROTO_IP + if (memcmp(str, "IP", 2) == 0) { *valp = IPPROTO_IP; return 0; } +#endif +#ifdef IPPROTO_ND + if (memcmp(str, "ND", 2) == 0) { *valp = IPPROTO_ND; return 0; } +#endif +#ifdef IPPROTO_TP + if (memcmp(str, "TP", 2) == 0) { *valp = IPPROTO_TP; return 0; } +#endif +#ifdef IPPROTO_AH + if (memcmp(str, "AH", 2) == 0) { *valp = IPPROTO_AH; return 0; } +#endif + return -1; + + case 3: +#ifdef IPPROTO_GGP + if (memcmp(str, "GGP", 3) == 0) { *valp = IPPROTO_GGP; return 0; } +#endif +#ifdef IPPROTO_TCP + if (memcmp(str, "TCP", 3) == 0) { *valp = IPPROTO_TCP; return 0; } +#endif +#ifdef IPPROTO_EGP + if (memcmp(str, "EGP", 3) == 0) { *valp = IPPROTO_EGP; return 0; } +#endif +#ifdef IPPROTO_PUP + if (memcmp(str, "PUP", 3) == 0) { *valp = IPPROTO_PUP; return 0; } +#endif +#ifdef IPPROTO_UDP + if (memcmp(str, "UDP", 3) == 0) { *valp = IPPROTO_UDP; return 0; } +#endif +#ifdef IPPROTO_IDP + if (memcmp(str, "IDP", 3) == 0) { *valp = IPPROTO_IDP; return 0; } +#endif +#ifdef IPPROTO_XTP + if (memcmp(str, "XTP", 3) == 0) { *valp = IPPROTO_XTP; return 0; } +#endif +#ifdef IPPROTO_EON + if (memcmp(str, "EON", 3) == 0) { *valp = IPPROTO_EON; return 0; } +#endif +#ifdef IPPROTO_BIP + if (memcmp(str, "BIP", 3) == 0) { *valp = IPPROTO_BIP; return 0; } +#endif +#ifdef IPPROTO_ESP + if (memcmp(str, "ESP", 3) == 0) { *valp = IPPROTO_ESP; return 0; } +#endif +#ifdef IPPROTO_RAW + if (memcmp(str, "RAW", 3) == 0) { *valp = IPPROTO_RAW; return 0; } +#endif +#ifdef IPPROTO_MAX + if (memcmp(str, "MAX", 3) == 0) { *valp = IPPROTO_MAX; return 0; } +#endif + return -1; + + case 4: +#ifdef IPPROTO_ICMP + if (memcmp(str, "ICMP", 4) == 0) { *valp = IPPROTO_ICMP; return 0; } +#endif +#ifdef IPPROTO_IGMP + if (memcmp(str, "IGMP", 4) == 0) { *valp = IPPROTO_IGMP; return 0; } +#endif +#ifdef IPPROTO_IPV6 + if (memcmp(str, "IPV6", 4) == 0) { *valp = IPPROTO_IPV6; return 0; } +#endif +#ifdef IPPROTO_NONE + if (memcmp(str, "NONE", 4) == 0) { *valp = IPPROTO_NONE; return 0; } +#endif + return -1; + + case 5: +#ifdef IPPROTO_HELLO + if (memcmp(str, "HELLO", 5) == 0) { *valp = IPPROTO_HELLO; return 0; } +#endif + return -1; + + case 6: +#ifdef IPPROTO_ICMPV6 + if (memcmp(str, "ICMPV6", 6) == 0) { *valp = IPPROTO_ICMPV6; return 0; } +#endif + return -1; + + case 7: +#ifdef IPPROTO_DSTOPTS + if (memcmp(str, "DSTOPTS", 7) == 0) { *valp = IPPROTO_DSTOPTS; return 0; } +#endif +#ifdef IPPROTO_HOPOPTS + if (memcmp(str, "HOPOPTS", 7) == 0) { *valp = IPPROTO_HOPOPTS; return 0; } +#endif +#ifdef IPPROTO_ROUTING + if (memcmp(str, "ROUTING", 7) == 0) { *valp = IPPROTO_ROUTING; return 0; } +#endif + return -1; + + case 8: +#ifdef IPPROTO_FRAGMENT + if (memcmp(str, "FRAGMENT", 8) == 0) { *valp = IPPROTO_FRAGMENT; return 0; } +#endif + return -1; + + case 10: +#ifdef IPPROTO_IP + if (memcmp(str, "IPPROTO_IP", 10) == 0) { *valp = IPPROTO_IP; return 0; } +#endif +#ifdef IPPROTO_ND + if (memcmp(str, "IPPROTO_ND", 10) == 0) { *valp = IPPROTO_ND; return 0; } +#endif +#ifdef IPPROTO_TP + if (memcmp(str, "IPPROTO_TP", 10) == 0) { *valp = IPPROTO_TP; return 0; } +#endif +#ifdef IPPROTO_AH + if (memcmp(str, "IPPROTO_AH", 10) == 0) { *valp = IPPROTO_AH; return 0; } +#endif + return -1; + + case 11: +#ifdef IPPROTO_GGP + if (memcmp(str, "IPPROTO_GGP", 11) == 0) { *valp = IPPROTO_GGP; return 0; } +#endif +#ifdef IPPROTO_TCP + if (memcmp(str, "IPPROTO_TCP", 11) == 0) { *valp = IPPROTO_TCP; return 0; } +#endif +#ifdef IPPROTO_EGP + if (memcmp(str, "IPPROTO_EGP", 11) == 0) { *valp = IPPROTO_EGP; return 0; } +#endif +#ifdef IPPROTO_PUP + if (memcmp(str, "IPPROTO_PUP", 11) == 0) { *valp = IPPROTO_PUP; return 0; } +#endif +#ifdef IPPROTO_UDP + if (memcmp(str, "IPPROTO_UDP", 11) == 0) { *valp = IPPROTO_UDP; return 0; } +#endif +#ifdef IPPROTO_IDP + if (memcmp(str, "IPPROTO_IDP", 11) == 0) { *valp = IPPROTO_IDP; return 0; } +#endif +#ifdef IPPROTO_XTP + if (memcmp(str, "IPPROTO_XTP", 11) == 0) { *valp = IPPROTO_XTP; return 0; } +#endif +#ifdef IPPROTO_EON + if (memcmp(str, "IPPROTO_EON", 11) == 0) { *valp = IPPROTO_EON; return 0; } +#endif +#ifdef IPPROTO_BIP + if (memcmp(str, "IPPROTO_BIP", 11) == 0) { *valp = IPPROTO_BIP; return 0; } +#endif +#ifdef IPPROTO_ESP + if (memcmp(str, "IPPROTO_ESP", 11) == 0) { *valp = IPPROTO_ESP; return 0; } +#endif +#ifdef IPPROTO_RAW + if (memcmp(str, "IPPROTO_RAW", 11) == 0) { *valp = IPPROTO_RAW; return 0; } +#endif +#ifdef IPPROTO_MAX + if (memcmp(str, "IPPROTO_MAX", 11) == 0) { *valp = IPPROTO_MAX; return 0; } +#endif + return -1; + + case 12: +#ifdef IPPROTO_ICMP + if (memcmp(str, "IPPROTO_ICMP", 12) == 0) { *valp = IPPROTO_ICMP; return 0; } +#endif +#ifdef IPPROTO_IGMP + if (memcmp(str, "IPPROTO_IGMP", 12) == 0) { *valp = IPPROTO_IGMP; return 0; } +#endif +#ifdef IPPROTO_IPV6 + if (memcmp(str, "IPPROTO_IPV6", 12) == 0) { *valp = IPPROTO_IPV6; return 0; } +#endif +#ifdef IPPROTO_NONE + if (memcmp(str, "IPPROTO_NONE", 12) == 0) { *valp = IPPROTO_NONE; return 0; } +#endif + return -1; + + case 13: +#ifdef IPPROTO_HELLO + if (memcmp(str, "IPPROTO_HELLO", 13) == 0) { *valp = IPPROTO_HELLO; return 0; } +#endif + return -1; + + case 14: +#ifdef IPPROTO_ICMPV6 + if (memcmp(str, "IPPROTO_ICMPV6", 14) == 0) { *valp = IPPROTO_ICMPV6; return 0; } +#endif + return -1; + + case 15: +#ifdef IPPROTO_DSTOPTS + if (memcmp(str, "IPPROTO_DSTOPTS", 15) == 0) { *valp = IPPROTO_DSTOPTS; return 0; } +#endif +#ifdef IPPROTO_HOPOPTS + if (memcmp(str, "IPPROTO_HOPOPTS", 15) == 0) { *valp = IPPROTO_HOPOPTS; return 0; } +#endif +#ifdef IPPROTO_ROUTING + if (memcmp(str, "IPPROTO_ROUTING", 15) == 0) { *valp = IPPROTO_ROUTING; return 0; } +#endif + return -1; + + case 16: +#ifdef IPPROTO_FRAGMENT + if (memcmp(str, "IPPROTO_FRAGMENT", 16) == 0) { *valp = IPPROTO_FRAGMENT; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_unknown_level_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 6: +#ifdef SOL_SOCKET + if (memcmp(str, "SOCKET", 6) == 0) { *valp = SOL_SOCKET; return 0; } +#endif + return -1; + + case 10: +#ifdef SOL_SOCKET + if (memcmp(str, "SOL_SOCKET", 10) == 0) { *valp = SOL_SOCKET; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_ip_level_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 2: +#ifdef IPPROTO_IP + if (memcmp(str, "IP", 2) == 0) { *valp = IPPROTO_IP; return 0; } +#endif +#ifdef IPPROTO_ND + if (memcmp(str, "ND", 2) == 0) { *valp = IPPROTO_ND; return 0; } +#endif +#ifdef IPPROTO_TP + if (memcmp(str, "TP", 2) == 0) { *valp = IPPROTO_TP; return 0; } +#endif +#ifdef IPPROTO_AH + if (memcmp(str, "AH", 2) == 0) { *valp = IPPROTO_AH; return 0; } +#endif + return -1; + + case 3: +#ifdef IPPROTO_GGP + if (memcmp(str, "GGP", 3) == 0) { *valp = IPPROTO_GGP; return 0; } +#endif +#ifdef IPPROTO_TCP + if (memcmp(str, "TCP", 3) == 0) { *valp = IPPROTO_TCP; return 0; } +#endif +#ifdef IPPROTO_EGP + if (memcmp(str, "EGP", 3) == 0) { *valp = IPPROTO_EGP; return 0; } +#endif +#ifdef IPPROTO_PUP + if (memcmp(str, "PUP", 3) == 0) { *valp = IPPROTO_PUP; return 0; } +#endif +#ifdef IPPROTO_UDP + if (memcmp(str, "UDP", 3) == 0) { *valp = IPPROTO_UDP; return 0; } +#endif +#ifdef IPPROTO_IDP + if (memcmp(str, "IDP", 3) == 0) { *valp = IPPROTO_IDP; return 0; } +#endif +#ifdef IPPROTO_XTP + if (memcmp(str, "XTP", 3) == 0) { *valp = IPPROTO_XTP; return 0; } +#endif +#ifdef IPPROTO_EON + if (memcmp(str, "EON", 3) == 0) { *valp = IPPROTO_EON; return 0; } +#endif +#ifdef IPPROTO_BIP + if (memcmp(str, "BIP", 3) == 0) { *valp = IPPROTO_BIP; return 0; } +#endif +#ifdef IPPROTO_ESP + if (memcmp(str, "ESP", 3) == 0) { *valp = IPPROTO_ESP; return 0; } +#endif +#ifdef IPPROTO_RAW + if (memcmp(str, "RAW", 3) == 0) { *valp = IPPROTO_RAW; return 0; } +#endif +#ifdef IPPROTO_MAX + if (memcmp(str, "MAX", 3) == 0) { *valp = IPPROTO_MAX; return 0; } +#endif + return -1; + + case 4: +#ifdef IPPROTO_ICMP + if (memcmp(str, "ICMP", 4) == 0) { *valp = IPPROTO_ICMP; return 0; } +#endif +#ifdef IPPROTO_IGMP + if (memcmp(str, "IGMP", 4) == 0) { *valp = IPPROTO_IGMP; return 0; } +#endif +#ifdef IPPROTO_IPV6 + if (memcmp(str, "IPV6", 4) == 0) { *valp = IPPROTO_IPV6; return 0; } +#endif +#ifdef IPPROTO_NONE + if (memcmp(str, "NONE", 4) == 0) { *valp = IPPROTO_NONE; return 0; } +#endif + return -1; + + case 5: +#ifdef IPPROTO_HELLO + if (memcmp(str, "HELLO", 5) == 0) { *valp = IPPROTO_HELLO; return 0; } +#endif + return -1; + + case 6: +#ifdef SOL_SOCKET + if (memcmp(str, "SOCKET", 6) == 0) { *valp = SOL_SOCKET; return 0; } +#endif +#ifdef IPPROTO_ICMPV6 + if (memcmp(str, "ICMPV6", 6) == 0) { *valp = IPPROTO_ICMPV6; return 0; } +#endif + return -1; + + case 7: +#ifdef IPPROTO_DSTOPTS + if (memcmp(str, "DSTOPTS", 7) == 0) { *valp = IPPROTO_DSTOPTS; return 0; } +#endif +#ifdef IPPROTO_HOPOPTS + if (memcmp(str, "HOPOPTS", 7) == 0) { *valp = IPPROTO_HOPOPTS; return 0; } +#endif +#ifdef IPPROTO_ROUTING + if (memcmp(str, "ROUTING", 7) == 0) { *valp = IPPROTO_ROUTING; return 0; } +#endif + return -1; + + case 8: +#ifdef IPPROTO_FRAGMENT + if (memcmp(str, "FRAGMENT", 8) == 0) { *valp = IPPROTO_FRAGMENT; return 0; } +#endif + return -1; + + case 10: +#ifdef SOL_SOCKET + if (memcmp(str, "SOL_SOCKET", 10) == 0) { *valp = SOL_SOCKET; return 0; } +#endif +#ifdef IPPROTO_IP + if (memcmp(str, "IPPROTO_IP", 10) == 0) { *valp = IPPROTO_IP; return 0; } +#endif +#ifdef IPPROTO_ND + if (memcmp(str, "IPPROTO_ND", 10) == 0) { *valp = IPPROTO_ND; return 0; } +#endif +#ifdef IPPROTO_TP + if (memcmp(str, "IPPROTO_TP", 10) == 0) { *valp = IPPROTO_TP; return 0; } +#endif +#ifdef IPPROTO_AH + if (memcmp(str, "IPPROTO_AH", 10) == 0) { *valp = IPPROTO_AH; return 0; } +#endif + return -1; + + case 11: +#ifdef IPPROTO_GGP + if (memcmp(str, "IPPROTO_GGP", 11) == 0) { *valp = IPPROTO_GGP; return 0; } +#endif +#ifdef IPPROTO_TCP + if (memcmp(str, "IPPROTO_TCP", 11) == 0) { *valp = IPPROTO_TCP; return 0; } +#endif +#ifdef IPPROTO_EGP + if (memcmp(str, "IPPROTO_EGP", 11) == 0) { *valp = IPPROTO_EGP; return 0; } +#endif +#ifdef IPPROTO_PUP + if (memcmp(str, "IPPROTO_PUP", 11) == 0) { *valp = IPPROTO_PUP; return 0; } +#endif +#ifdef IPPROTO_UDP + if (memcmp(str, "IPPROTO_UDP", 11) == 0) { *valp = IPPROTO_UDP; return 0; } +#endif +#ifdef IPPROTO_IDP + if (memcmp(str, "IPPROTO_IDP", 11) == 0) { *valp = IPPROTO_IDP; return 0; } +#endif +#ifdef IPPROTO_XTP + if (memcmp(str, "IPPROTO_XTP", 11) == 0) { *valp = IPPROTO_XTP; return 0; } +#endif +#ifdef IPPROTO_EON + if (memcmp(str, "IPPROTO_EON", 11) == 0) { *valp = IPPROTO_EON; return 0; } +#endif +#ifdef IPPROTO_BIP + if (memcmp(str, "IPPROTO_BIP", 11) == 0) { *valp = IPPROTO_BIP; return 0; } +#endif +#ifdef IPPROTO_ESP + if (memcmp(str, "IPPROTO_ESP", 11) == 0) { *valp = IPPROTO_ESP; return 0; } +#endif +#ifdef IPPROTO_RAW + if (memcmp(str, "IPPROTO_RAW", 11) == 0) { *valp = IPPROTO_RAW; return 0; } +#endif +#ifdef IPPROTO_MAX + if (memcmp(str, "IPPROTO_MAX", 11) == 0) { *valp = IPPROTO_MAX; return 0; } +#endif + return -1; + + case 12: +#ifdef IPPROTO_ICMP + if (memcmp(str, "IPPROTO_ICMP", 12) == 0) { *valp = IPPROTO_ICMP; return 0; } +#endif +#ifdef IPPROTO_IGMP + if (memcmp(str, "IPPROTO_IGMP", 12) == 0) { *valp = IPPROTO_IGMP; return 0; } +#endif +#ifdef IPPROTO_IPV6 + if (memcmp(str, "IPPROTO_IPV6", 12) == 0) { *valp = IPPROTO_IPV6; return 0; } +#endif +#ifdef IPPROTO_NONE + if (memcmp(str, "IPPROTO_NONE", 12) == 0) { *valp = IPPROTO_NONE; return 0; } +#endif + return -1; + + case 13: +#ifdef IPPROTO_HELLO + if (memcmp(str, "IPPROTO_HELLO", 13) == 0) { *valp = IPPROTO_HELLO; return 0; } +#endif + return -1; + + case 14: +#ifdef IPPROTO_ICMPV6 + if (memcmp(str, "IPPROTO_ICMPV6", 14) == 0) { *valp = IPPROTO_ICMPV6; return 0; } +#endif + return -1; + + case 15: +#ifdef IPPROTO_DSTOPTS + if (memcmp(str, "IPPROTO_DSTOPTS", 15) == 0) { *valp = IPPROTO_DSTOPTS; return 0; } +#endif +#ifdef IPPROTO_HOPOPTS + if (memcmp(str, "IPPROTO_HOPOPTS", 15) == 0) { *valp = IPPROTO_HOPOPTS; return 0; } +#endif +#ifdef IPPROTO_ROUTING + if (memcmp(str, "IPPROTO_ROUTING", 15) == 0) { *valp = IPPROTO_ROUTING; return 0; } +#endif + return -1; + + case 16: +#ifdef IPPROTO_FRAGMENT + if (memcmp(str, "IPPROTO_FRAGMENT", 16) == 0) { *valp = IPPROTO_FRAGMENT; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_so_optname_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 3: +#ifdef SO_NKE + if (memcmp(str, "NKE", 3) == 0) { *valp = SO_NKE; return 0; } +#endif + return -1; + + case 4: +#ifdef SO_TYPE + if (memcmp(str, "TYPE", 4) == 0) { *valp = SO_TYPE; return 0; } +#endif +#ifdef SO_MARK + if (memcmp(str, "MARK", 4) == 0) { *valp = SO_MARK; return 0; } +#endif + return -1; + + case 5: +#ifdef SO_DEBUG + if (memcmp(str, "DEBUG", 5) == 0) { *valp = SO_DEBUG; return 0; } +#endif +#ifdef SO_ERROR + if (memcmp(str, "ERROR", 5) == 0) { *valp = SO_ERROR; return 0; } +#endif +#ifdef SO_NREAD + if (memcmp(str, "NREAD", 5) == 0) { *valp = SO_NREAD; return 0; } +#endif +#ifdef SO_NOFCS + if (memcmp(str, "NOFCS", 5) == 0) { *valp = SO_NOFCS; return 0; } +#endif + return -1; + + case 6: +#ifdef SO_NKE + if (memcmp(str, "SO_NKE", 6) == 0) { *valp = SO_NKE; return 0; } +#endif +#ifdef SO_SNDBUF + if (memcmp(str, "SNDBUF", 6) == 0) { *valp = SO_SNDBUF; return 0; } +#endif +#ifdef SO_RCVBUF + if (memcmp(str, "RCVBUF", 6) == 0) { *valp = SO_RCVBUF; return 0; } +#endif +#ifdef SO_LINGER + if (memcmp(str, "LINGER", 6) == 0) { *valp = SO_LINGER; return 0; } +#endif +#ifdef SO_DOMAIN + if (memcmp(str, "DOMAIN", 6) == 0) { *valp = SO_DOMAIN; return 0; } +#endif + return -1; + + case 7: +#ifdef SO_TYPE + if (memcmp(str, "SO_TYPE", 7) == 0) { *valp = SO_TYPE; return 0; } +#endif +#ifdef SO_MARK + if (memcmp(str, "SO_MARK", 7) == 0) { *valp = SO_MARK; return 0; } +#endif +#ifdef SO_BINTIME + if (memcmp(str, "BINTIME", 7) == 0) { *valp = SO_BINTIME; return 0; } +#endif +#ifdef SO_PEERSEC + if (memcmp(str, "PEERSEC", 7) == 0) { *valp = SO_PEERSEC; return 0; } +#endif +#ifdef SO_PASSSEC + if (memcmp(str, "PASSSEC", 7) == 0) { *valp = SO_PASSSEC; return 0; } +#endif + return -1; + + case 8: +#ifdef SO_DEBUG + if (memcmp(str, "SO_DEBUG", 8) == 0) { *valp = SO_DEBUG; return 0; } +#endif +#ifdef SO_ERROR + if (memcmp(str, "SO_ERROR", 8) == 0) { *valp = SO_ERROR; return 0; } +#endif +#ifdef SO_NREAD + if (memcmp(str, "SO_NREAD", 8) == 0) { *valp = SO_NREAD; return 0; } +#endif +#ifdef SO_NOFCS + if (memcmp(str, "SO_NOFCS", 8) == 0) { *valp = SO_NOFCS; return 0; } +#endif +#ifdef SO_NO_CHECK + if (memcmp(str, "NO_CHECK", 8) == 0) { *valp = SO_NO_CHECK; return 0; } +#endif +#ifdef SO_PRIORITY + if (memcmp(str, "PRIORITY", 8) == 0) { *valp = SO_PRIORITY; return 0; } +#endif +#ifdef SO_PASSCRED + if (memcmp(str, "PASSCRED", 8) == 0) { *valp = SO_PASSCRED; return 0; } +#endif +#ifdef SO_PEERCRED + if (memcmp(str, "PEERCRED", 8) == 0) { *valp = SO_PEERCRED; return 0; } +#endif +#ifdef SO_RCVLOWAT + if (memcmp(str, "RCVLOWAT", 8) == 0) { *valp = SO_RCVLOWAT; return 0; } +#endif +#ifdef SO_SNDLOWAT + if (memcmp(str, "SNDLOWAT", 8) == 0) { *valp = SO_SNDLOWAT; return 0; } +#endif +#ifdef SO_RCVTIMEO + if (memcmp(str, "RCVTIMEO", 8) == 0) { *valp = SO_RCVTIMEO; return 0; } +#endif +#ifdef SO_SNDTIMEO + if (memcmp(str, "SNDTIMEO", 8) == 0) { *valp = SO_SNDTIMEO; return 0; } +#endif +#ifdef SO_WANTMORE + if (memcmp(str, "WANTMORE", 8) == 0) { *valp = SO_WANTMORE; return 0; } +#endif +#ifdef SO_PEERNAME + if (memcmp(str, "PEERNAME", 8) == 0) { *valp = SO_PEERNAME; return 0; } +#endif +#ifdef SO_ALLZONES + if (memcmp(str, "ALLZONES", 8) == 0) { *valp = SO_ALLZONES; return 0; } +#endif +#ifdef SO_PROTOCOL + if (memcmp(str, "PROTOCOL", 8) == 0) { *valp = SO_PROTOCOL; return 0; } +#endif +#ifdef SO_RXQ_OVFL + if (memcmp(str, "RXQ_OVFL", 8) == 0) { *valp = SO_RXQ_OVFL; return 0; } +#endif +#ifdef SO_PEEK_OFF + if (memcmp(str, "PEEK_OFF", 8) == 0) { *valp = SO_PEEK_OFF; return 0; } +#endif + return -1; + + case 9: +#ifdef SO_SNDBUF + if (memcmp(str, "SO_SNDBUF", 9) == 0) { *valp = SO_SNDBUF; return 0; } +#endif +#ifdef SO_RCVBUF + if (memcmp(str, "SO_RCVBUF", 9) == 0) { *valp = SO_RCVBUF; return 0; } +#endif +#ifdef SO_LINGER + if (memcmp(str, "SO_LINGER", 9) == 0) { *valp = SO_LINGER; return 0; } +#endif +#ifdef SO_DOMAIN + if (memcmp(str, "SO_DOMAIN", 9) == 0) { *valp = SO_DOMAIN; return 0; } +#endif +#ifdef SO_REUSEADDR + if (memcmp(str, "REUSEADDR", 9) == 0) { *valp = SO_REUSEADDR; return 0; } +#endif +#ifdef SO_REUSEPORT + if (memcmp(str, "REUSEPORT", 9) == 0) { *valp = SO_REUSEPORT; return 0; } +#endif +#ifdef SO_DONTROUTE + if (memcmp(str, "DONTROUTE", 9) == 0) { *valp = SO_DONTROUTE; return 0; } +#endif +#ifdef SO_BROADCAST + if (memcmp(str, "BROADCAST", 9) == 0) { *valp = SO_BROADCAST; return 0; } +#endif +#ifdef SO_KEEPALIVE + if (memcmp(str, "KEEPALIVE", 9) == 0) { *valp = SO_KEEPALIVE; return 0; } +#endif +#ifdef SO_OOBINLINE + if (memcmp(str, "OOBINLINE", 9) == 0) { *valp = SO_OOBINLINE; return 0; } +#endif +#ifdef SO_DONTTRUNC + if (memcmp(str, "DONTTRUNC", 9) == 0) { *valp = SO_DONTTRUNC; return 0; } +#endif +#ifdef SO_NOSIGPIPE + if (memcmp(str, "NOSIGPIPE", 9) == 0) { *valp = SO_NOSIGPIPE; return 0; } +#endif +#ifdef SO_TIMESTAMP + if (memcmp(str, "TIMESTAMP", 9) == 0) { *valp = SO_TIMESTAMP; return 0; } +#endif +#ifdef SO_RECVUCRED + if (memcmp(str, "RECVUCRED", 9) == 0) { *valp = SO_RECVUCRED; return 0; } +#endif +#ifdef SO_BUSY_POLL + if (memcmp(str, "BUSY_POLL", 9) == 0) { *valp = SO_BUSY_POLL; return 0; } +#endif + return -1; + + case 10: +#ifdef SO_BINTIME + if (memcmp(str, "SO_BINTIME", 10) == 0) { *valp = SO_BINTIME; return 0; } +#endif +#ifdef SO_PEERSEC + if (memcmp(str, "SO_PEERSEC", 10) == 0) { *valp = SO_PEERSEC; return 0; } +#endif +#ifdef SO_PASSSEC + if (memcmp(str, "SO_PASSSEC", 10) == 0) { *valp = SO_PASSSEC; return 0; } +#endif +#ifdef SO_ACCEPTCONN + if (memcmp(str, "ACCEPTCONN", 10) == 0) { *valp = SO_ACCEPTCONN; return 0; } +#endif +#ifdef SO_GET_FILTER + if (memcmp(str, "GET_FILTER", 10) == 0) { *valp = SO_GET_FILTER; return 0; } +#endif +#ifdef SO_MAC_EXEMPT + if (memcmp(str, "MAC_EXEMPT", 10) == 0) { *valp = SO_MAC_EXEMPT; return 0; } +#endif + return -1; + + case 11: +#ifdef SO_NO_CHECK + if (memcmp(str, "SO_NO_CHECK", 11) == 0) { *valp = SO_NO_CHECK; return 0; } +#endif +#ifdef SO_PRIORITY + if (memcmp(str, "SO_PRIORITY", 11) == 0) { *valp = SO_PRIORITY; return 0; } +#endif +#ifdef SO_PASSCRED + if (memcmp(str, "SO_PASSCRED", 11) == 0) { *valp = SO_PASSCRED; return 0; } +#endif +#ifdef SO_PEERCRED + if (memcmp(str, "SO_PEERCRED", 11) == 0) { *valp = SO_PEERCRED; return 0; } +#endif +#ifdef SO_RCVLOWAT + if (memcmp(str, "SO_RCVLOWAT", 11) == 0) { *valp = SO_RCVLOWAT; return 0; } +#endif +#ifdef SO_SNDLOWAT + if (memcmp(str, "SO_SNDLOWAT", 11) == 0) { *valp = SO_SNDLOWAT; return 0; } +#endif +#ifdef SO_RCVTIMEO + if (memcmp(str, "SO_RCVTIMEO", 11) == 0) { *valp = SO_RCVTIMEO; return 0; } +#endif +#ifdef SO_SNDTIMEO + if (memcmp(str, "SO_SNDTIMEO", 11) == 0) { *valp = SO_SNDTIMEO; return 0; } +#endif +#ifdef SO_WANTMORE + if (memcmp(str, "SO_WANTMORE", 11) == 0) { *valp = SO_WANTMORE; return 0; } +#endif +#ifdef SO_PEERNAME + if (memcmp(str, "SO_PEERNAME", 11) == 0) { *valp = SO_PEERNAME; return 0; } +#endif +#ifdef SO_ALLZONES + if (memcmp(str, "SO_ALLZONES", 11) == 0) { *valp = SO_ALLZONES; return 0; } +#endif +#ifdef SO_PROTOCOL + if (memcmp(str, "SO_PROTOCOL", 11) == 0) { *valp = SO_PROTOCOL; return 0; } +#endif +#ifdef SO_RXQ_OVFL + if (memcmp(str, "SO_RXQ_OVFL", 11) == 0) { *valp = SO_RXQ_OVFL; return 0; } +#endif +#ifdef SO_PEEK_OFF + if (memcmp(str, "SO_PEEK_OFF", 11) == 0) { *valp = SO_PEEK_OFF; return 0; } +#endif +#ifdef SO_SNDBUFFORCE + if (memcmp(str, "SNDBUFFORCE", 11) == 0) { *valp = SO_SNDBUFFORCE; return 0; } +#endif +#ifdef SO_RCVBUFFORCE + if (memcmp(str, "RCVBUFFORCE", 11) == 0) { *valp = SO_RCVBUFFORCE; return 0; } +#endif +#ifdef SO_USELOOPBACK + if (memcmp(str, "USELOOPBACK", 11) == 0) { *valp = SO_USELOOPBACK; return 0; } +#endif +#ifdef SO_WANTOOBFLAG + if (memcmp(str, "WANTOOBFLAG", 11) == 0) { *valp = SO_WANTOOBFLAG; return 0; } +#endif +#ifdef SO_TIMESTAMPNS + if (memcmp(str, "TIMESTAMPNS", 11) == 0) { *valp = SO_TIMESTAMPNS; return 0; } +#endif +#ifdef SO_WIFI_STATUS + if (memcmp(str, "WIFI_STATUS", 11) == 0) { *valp = SO_WIFI_STATUS; return 0; } +#endif +#ifdef SO_LOCK_FILTER + if (memcmp(str, "LOCK_FILTER", 11) == 0) { *valp = SO_LOCK_FILTER; return 0; } +#endif + return -1; + + case 12: +#ifdef SO_REUSEADDR + if (memcmp(str, "SO_REUSEADDR", 12) == 0) { *valp = SO_REUSEADDR; return 0; } +#endif +#ifdef SO_REUSEPORT + if (memcmp(str, "SO_REUSEPORT", 12) == 0) { *valp = SO_REUSEPORT; return 0; } +#endif +#ifdef SO_DONTROUTE + if (memcmp(str, "SO_DONTROUTE", 12) == 0) { *valp = SO_DONTROUTE; return 0; } +#endif +#ifdef SO_BROADCAST + if (memcmp(str, "SO_BROADCAST", 12) == 0) { *valp = SO_BROADCAST; return 0; } +#endif +#ifdef SO_KEEPALIVE + if (memcmp(str, "SO_KEEPALIVE", 12) == 0) { *valp = SO_KEEPALIVE; return 0; } +#endif +#ifdef SO_OOBINLINE + if (memcmp(str, "SO_OOBINLINE", 12) == 0) { *valp = SO_OOBINLINE; return 0; } +#endif +#ifdef SO_DONTTRUNC + if (memcmp(str, "SO_DONTTRUNC", 12) == 0) { *valp = SO_DONTTRUNC; return 0; } +#endif +#ifdef SO_NOSIGPIPE + if (memcmp(str, "SO_NOSIGPIPE", 12) == 0) { *valp = SO_NOSIGPIPE; return 0; } +#endif +#ifdef SO_TIMESTAMP + if (memcmp(str, "SO_TIMESTAMP", 12) == 0) { *valp = SO_TIMESTAMP; return 0; } +#endif +#ifdef SO_RECVUCRED + if (memcmp(str, "SO_RECVUCRED", 12) == 0) { *valp = SO_RECVUCRED; return 0; } +#endif +#ifdef SO_BUSY_POLL + if (memcmp(str, "SO_BUSY_POLL", 12) == 0) { *valp = SO_BUSY_POLL; return 0; } +#endif +#ifdef SO_ACCEPTFILTER + if (memcmp(str, "ACCEPTFILTER", 12) == 0) { *valp = SO_ACCEPTFILTER; return 0; } +#endif +#ifdef SO_BINDTODEVICE + if (memcmp(str, "BINDTODEVICE", 12) == 0) { *valp = SO_BINDTODEVICE; return 0; } +#endif +#ifdef SO_TIMESTAMPING + if (memcmp(str, "TIMESTAMPING", 12) == 0) { *valp = SO_TIMESTAMPING; return 0; } +#endif + return -1; + + case 13: +#ifdef SO_ACCEPTCONN + if (memcmp(str, "SO_ACCEPTCONN", 13) == 0) { *valp = SO_ACCEPTCONN; return 0; } +#endif +#ifdef SO_GET_FILTER + if (memcmp(str, "SO_GET_FILTER", 13) == 0) { *valp = SO_GET_FILTER; return 0; } +#endif +#ifdef SO_MAC_EXEMPT + if (memcmp(str, "SO_MAC_EXEMPT", 13) == 0) { *valp = SO_MAC_EXEMPT; return 0; } +#endif +#ifdef SO_ATTACH_FILTER + if (memcmp(str, "ATTACH_FILTER", 13) == 0) { *valp = SO_ATTACH_FILTER; return 0; } +#endif +#ifdef SO_DETACH_FILTER + if (memcmp(str, "DETACH_FILTER", 13) == 0) { *valp = SO_DETACH_FILTER; return 0; } +#endif + return -1; + + case 14: +#ifdef SO_SNDBUFFORCE + if (memcmp(str, "SO_SNDBUFFORCE", 14) == 0) { *valp = SO_SNDBUFFORCE; return 0; } +#endif +#ifdef SO_RCVBUFFORCE + if (memcmp(str, "SO_RCVBUFFORCE", 14) == 0) { *valp = SO_RCVBUFFORCE; return 0; } +#endif +#ifdef SO_USELOOPBACK + if (memcmp(str, "SO_USELOOPBACK", 14) == 0) { *valp = SO_USELOOPBACK; return 0; } +#endif +#ifdef SO_WANTOOBFLAG + if (memcmp(str, "SO_WANTOOBFLAG", 14) == 0) { *valp = SO_WANTOOBFLAG; return 0; } +#endif +#ifdef SO_TIMESTAMPNS + if (memcmp(str, "SO_TIMESTAMPNS", 14) == 0) { *valp = SO_TIMESTAMPNS; return 0; } +#endif +#ifdef SO_WIFI_STATUS + if (memcmp(str, "SO_WIFI_STATUS", 14) == 0) { *valp = SO_WIFI_STATUS; return 0; } +#endif +#ifdef SO_LOCK_FILTER + if (memcmp(str, "SO_LOCK_FILTER", 14) == 0) { *valp = SO_LOCK_FILTER; return 0; } +#endif +#ifdef SO_BPF_EXTENSIONS + if (memcmp(str, "BPF_EXTENSIONS", 14) == 0) { *valp = SO_BPF_EXTENSIONS; return 0; } +#endif + return -1; + + case 15: +#ifdef SO_ACCEPTFILTER + if (memcmp(str, "SO_ACCEPTFILTER", 15) == 0) { *valp = SO_ACCEPTFILTER; return 0; } +#endif +#ifdef SO_BINDTODEVICE + if (memcmp(str, "SO_BINDTODEVICE", 15) == 0) { *valp = SO_BINDTODEVICE; return 0; } +#endif +#ifdef SO_TIMESTAMPING + if (memcmp(str, "SO_TIMESTAMPING", 15) == 0) { *valp = SO_TIMESTAMPING; return 0; } +#endif +#ifdef SO_MAX_PACING_RATE + if (memcmp(str, "MAX_PACING_RATE", 15) == 0) { *valp = SO_MAX_PACING_RATE; return 0; } +#endif + return -1; + + case 16: +#ifdef SO_ATTACH_FILTER + if (memcmp(str, "SO_ATTACH_FILTER", 16) == 0) { *valp = SO_ATTACH_FILTER; return 0; } +#endif +#ifdef SO_DETACH_FILTER + if (memcmp(str, "SO_DETACH_FILTER", 16) == 0) { *valp = SO_DETACH_FILTER; return 0; } +#endif +#ifdef SO_SELECT_ERR_QUEUE + if (memcmp(str, "SELECT_ERR_QUEUE", 16) == 0) { *valp = SO_SELECT_ERR_QUEUE; return 0; } +#endif + return -1; + + case 17: +#ifdef SO_BPF_EXTENSIONS + if (memcmp(str, "SO_BPF_EXTENSIONS", 17) == 0) { *valp = SO_BPF_EXTENSIONS; return 0; } +#endif + return -1; + + case 18: +#ifdef SO_MAX_PACING_RATE + if (memcmp(str, "SO_MAX_PACING_RATE", 18) == 0) { *valp = SO_MAX_PACING_RATE; return 0; } +#endif + return -1; + + case 19: +#ifdef SO_SELECT_ERR_QUEUE + if (memcmp(str, "SO_SELECT_ERR_QUEUE", 19) == 0) { *valp = SO_SELECT_ERR_QUEUE; return 0; } +#endif + return -1; + + case 23: +#ifdef SO_SECURITY_AUTHENTICATION + if (memcmp(str, "SECURITY_AUTHENTICATION", 23) == 0) { *valp = SO_SECURITY_AUTHENTICATION; return 0; } +#endif + return -1; + + case 26: +#ifdef SO_SECURITY_AUTHENTICATION + if (memcmp(str, "SO_SECURITY_AUTHENTICATION", 26) == 0) { *valp = SO_SECURITY_AUTHENTICATION; return 0; } +#endif + return -1; + + case 27: +#ifdef SO_SECURITY_ENCRYPTION_NETWORK + if (memcmp(str, "SECURITY_ENCRYPTION_NETWORK", 27) == 0) { *valp = SO_SECURITY_ENCRYPTION_NETWORK; return 0; } +#endif + return -1; + + case 29: +#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT + if (memcmp(str, "SECURITY_ENCRYPTION_TRANSPORT", 29) == 0) { *valp = SO_SECURITY_ENCRYPTION_TRANSPORT; return 0; } +#endif + return -1; + + case 30: +#ifdef SO_SECURITY_ENCRYPTION_NETWORK + if (memcmp(str, "SO_SECURITY_ENCRYPTION_NETWORK", 30) == 0) { *valp = SO_SECURITY_ENCRYPTION_NETWORK; return 0; } +#endif + return -1; + + case 32: +#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT + if (memcmp(str, "SO_SECURITY_ENCRYPTION_TRANSPORT", 32) == 0) { *valp = SO_SECURITY_ENCRYPTION_TRANSPORT; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_ip_optname_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 3: +#ifdef IP_TOS + if (memcmp(str, "TOS", 3) == 0) { *valp = IP_TOS; return 0; } +#endif +#ifdef IP_TTL + if (memcmp(str, "TTL", 3) == 0) { *valp = IP_TTL; return 0; } +#endif +#ifdef IP_MTU + if (memcmp(str, "MTU", 3) == 0) { *valp = IP_MTU; return 0; } +#endif + return -1; + + case 6: +#ifdef IP_TOS + if (memcmp(str, "IP_TOS", 6) == 0) { *valp = IP_TOS; return 0; } +#endif +#ifdef IP_TTL + if (memcmp(str, "IP_TTL", 6) == 0) { *valp = IP_TTL; return 0; } +#endif +#ifdef IP_MTU + if (memcmp(str, "IP_MTU", 6) == 0) { *valp = IP_MTU; return 0; } +#endif +#ifdef IP_MINTTL + if (memcmp(str, "MINTTL", 6) == 0) { *valp = IP_MINTTL; return 0; } +#endif +#ifdef IP_RECVIF + if (memcmp(str, "RECVIF", 6) == 0) { *valp = IP_RECVIF; return 0; } +#endif + return -1; + + case 7: +#ifdef IP_OPTIONS + if (memcmp(str, "OPTIONS", 7) == 0) { *valp = IP_OPTIONS; return 0; } +#endif +#ifdef IP_HDRINCL + if (memcmp(str, "HDRINCL", 7) == 0) { *valp = IP_HDRINCL; return 0; } +#endif +#ifdef IP_RETOPTS + if (memcmp(str, "RETOPTS", 7) == 0) { *valp = IP_RETOPTS; return 0; } +#endif +#ifdef IP_RECVTTL + if (memcmp(str, "RECVTTL", 7) == 0) { *valp = IP_RECVTTL; return 0; } +#endif +#ifdef IP_PKTINFO + if (memcmp(str, "PKTINFO", 7) == 0) { *valp = IP_PKTINFO; return 0; } +#endif +#ifdef IP_RECVERR + if (memcmp(str, "RECVERR", 7) == 0) { *valp = IP_RECVERR; return 0; } +#endif +#ifdef IP_RECVTOS + if (memcmp(str, "RECVTOS", 7) == 0) { *valp = IP_RECVTOS; return 0; } +#endif +#ifdef IP_PASSSEC + if (memcmp(str, "PASSSEC", 7) == 0) { *valp = IP_PASSSEC; return 0; } +#endif + return -1; + + case 8: +#ifdef IP_RECVOPTS + if (memcmp(str, "RECVOPTS", 8) == 0) { *valp = IP_RECVOPTS; return 0; } +#endif +#ifdef IP_DONTFRAG + if (memcmp(str, "DONTFRAG", 8) == 0) { *valp = IP_DONTFRAG; return 0; } +#endif +#ifdef IP_RECVSLLA + if (memcmp(str, "RECVSLLA", 8) == 0) { *valp = IP_RECVSLLA; return 0; } +#endif +#ifdef IP_FREEBIND + if (memcmp(str, "FREEBIND", 8) == 0) { *valp = IP_FREEBIND; return 0; } +#endif +#ifdef IP_MSFILTER + if (memcmp(str, "MSFILTER", 8) == 0) { *valp = IP_MSFILTER; return 0; } +#endif + return -1; + + case 9: +#ifdef IP_MINTTL + if (memcmp(str, "IP_MINTTL", 9) == 0) { *valp = IP_MINTTL; return 0; } +#endif +#ifdef IP_RECVIF + if (memcmp(str, "IP_RECVIF", 9) == 0) { *valp = IP_RECVIF; return 0; } +#endif +#ifdef IP_ONESBCAST + if (memcmp(str, "ONESBCAST", 9) == 0) { *valp = IP_ONESBCAST; return 0; } +#endif +#ifdef IP_PORTRANGE + if (memcmp(str, "PORTRANGE", 9) == 0) { *valp = IP_PORTRANGE; return 0; } +#endif + return -1; + + case 10: +#ifdef IP_OPTIONS + if (memcmp(str, "IP_OPTIONS", 10) == 0) { *valp = IP_OPTIONS; return 0; } +#endif +#ifdef IP_HDRINCL + if (memcmp(str, "IP_HDRINCL", 10) == 0) { *valp = IP_HDRINCL; return 0; } +#endif +#ifdef IP_RETOPTS + if (memcmp(str, "IP_RETOPTS", 10) == 0) { *valp = IP_RETOPTS; return 0; } +#endif +#ifdef IP_RECVTTL + if (memcmp(str, "IP_RECVTTL", 10) == 0) { *valp = IP_RECVTTL; return 0; } +#endif +#ifdef IP_PKTINFO + if (memcmp(str, "IP_PKTINFO", 10) == 0) { *valp = IP_PKTINFO; return 0; } +#endif +#ifdef IP_RECVERR + if (memcmp(str, "IP_RECVERR", 10) == 0) { *valp = IP_RECVERR; return 0; } +#endif +#ifdef IP_RECVTOS + if (memcmp(str, "IP_RECVTOS", 10) == 0) { *valp = IP_RECVTOS; return 0; } +#endif +#ifdef IP_PASSSEC + if (memcmp(str, "IP_PASSSEC", 10) == 0) { *valp = IP_PASSSEC; return 0; } +#endif +#ifdef IP_PKTOPTIONS + if (memcmp(str, "PKTOPTIONS", 10) == 0) { *valp = IP_PKTOPTIONS; return 0; } +#endif + return -1; + + case 11: +#ifdef IP_RECVOPTS + if (memcmp(str, "IP_RECVOPTS", 11) == 0) { *valp = IP_RECVOPTS; return 0; } +#endif +#ifdef IP_DONTFRAG + if (memcmp(str, "IP_DONTFRAG", 11) == 0) { *valp = IP_DONTFRAG; return 0; } +#endif +#ifdef IP_RECVSLLA + if (memcmp(str, "IP_RECVSLLA", 11) == 0) { *valp = IP_RECVSLLA; return 0; } +#endif +#ifdef IP_FREEBIND + if (memcmp(str, "IP_FREEBIND", 11) == 0) { *valp = IP_FREEBIND; return 0; } +#endif +#ifdef IP_MSFILTER + if (memcmp(str, "IP_MSFILTER", 11) == 0) { *valp = IP_MSFILTER; return 0; } +#endif +#ifdef IP_RECVRETOPTS + if (memcmp(str, "RECVRETOPTS", 11) == 0) { *valp = IP_RECVRETOPTS; return 0; } +#endif +#ifdef IP_RECVDSTADDR + if (memcmp(str, "RECVDSTADDR", 11) == 0) { *valp = IP_RECVDSTADDR; return 0; } +#endif +#ifdef IP_SENDSRCADDR + if (memcmp(str, "SENDSRCADDR", 11) == 0) { *valp = IP_SENDSRCADDR; return 0; } +#endif +#ifdef IP_XFRM_POLICY + if (memcmp(str, "XFRM_POLICY", 11) == 0) { *valp = IP_XFRM_POLICY; return 0; } +#endif +#ifdef IP_TRANSPARENT + if (memcmp(str, "TRANSPARENT", 11) == 0) { *valp = IP_TRANSPARENT; return 0; } +#endif +#ifdef IP_PMTUDISC_DO + if (memcmp(str, "PMTUDISC_DO", 11) == 0) { *valp = IP_PMTUDISC_DO; return 0; } +#endif + return -1; + + case 12: +#ifdef IP_ONESBCAST + if (memcmp(str, "IP_ONESBCAST", 12) == 0) { *valp = IP_ONESBCAST; return 0; } +#endif +#ifdef IP_PORTRANGE + if (memcmp(str, "IP_PORTRANGE", 12) == 0) { *valp = IP_PORTRANGE; return 0; } +#endif +#ifdef IP_MULTICAST_IF + if (memcmp(str, "MULTICAST_IF", 12) == 0) { *valp = IP_MULTICAST_IF; return 0; } +#endif +#ifdef IP_ROUTER_ALERT + if (memcmp(str, "ROUTER_ALERT", 12) == 0) { *valp = IP_ROUTER_ALERT; return 0; } +#endif +#ifdef IP_MTU_DISCOVER + if (memcmp(str, "MTU_DISCOVER", 12) == 0) { *valp = IP_MTU_DISCOVER; return 0; } +#endif +#ifdef IP_IPSEC_POLICY + if (memcmp(str, "IPSEC_POLICY", 12) == 0) { *valp = IP_IPSEC_POLICY; return 0; } +#endif +#ifdef IP_BLOCK_SOURCE + if (memcmp(str, "BLOCK_SOURCE", 12) == 0) { *valp = IP_BLOCK_SOURCE; return 0; } +#endif + return -1; + + case 13: +#ifdef IP_PKTOPTIONS + if (memcmp(str, "IP_PKTOPTIONS", 13) == 0) { *valp = IP_PKTOPTIONS; return 0; } +#endif +#ifdef IP_MULTICAST_TTL + if (memcmp(str, "MULTICAST_TTL", 13) == 0) { *valp = IP_MULTICAST_TTL; return 0; } +#endif +#ifdef IP_PMTUDISC_DONT + if (memcmp(str, "PMTUDISC_DONT", 13) == 0) { *valp = IP_PMTUDISC_DONT; return 0; } +#endif +#ifdef IP_PMTUDISC_WANT + if (memcmp(str, "PMTUDISC_WANT", 13) == 0) { *valp = IP_PMTUDISC_WANT; return 0; } +#endif + return -1; + + case 14: +#ifdef IP_RECVRETOPTS + if (memcmp(str, "IP_RECVRETOPTS", 14) == 0) { *valp = IP_RECVRETOPTS; return 0; } +#endif +#ifdef IP_RECVDSTADDR + if (memcmp(str, "IP_RECVDSTADDR", 14) == 0) { *valp = IP_RECVDSTADDR; return 0; } +#endif +#ifdef IP_SENDSRCADDR + if (memcmp(str, "IP_SENDSRCADDR", 14) == 0) { *valp = IP_SENDSRCADDR; return 0; } +#endif +#ifdef IP_XFRM_POLICY + if (memcmp(str, "IP_XFRM_POLICY", 14) == 0) { *valp = IP_XFRM_POLICY; return 0; } +#endif +#ifdef IP_TRANSPARENT + if (memcmp(str, "IP_TRANSPARENT", 14) == 0) { *valp = IP_TRANSPARENT; return 0; } +#endif +#ifdef IP_PMTUDISC_DO + if (memcmp(str, "IP_PMTUDISC_DO", 14) == 0) { *valp = IP_PMTUDISC_DO; return 0; } +#endif +#ifdef IP_MULTICAST_LOOP + if (memcmp(str, "MULTICAST_LOOP", 14) == 0) { *valp = IP_MULTICAST_LOOP; return 0; } +#endif +#ifdef IP_ADD_MEMBERSHIP + if (memcmp(str, "ADD_MEMBERSHIP", 14) == 0) { *valp = IP_ADD_MEMBERSHIP; return 0; } +#endif +#ifdef IP_UNBLOCK_SOURCE + if (memcmp(str, "UNBLOCK_SOURCE", 14) == 0) { *valp = IP_UNBLOCK_SOURCE; return 0; } +#endif + return -1; + + case 15: +#ifdef IP_MULTICAST_IF + if (memcmp(str, "IP_MULTICAST_IF", 15) == 0) { *valp = IP_MULTICAST_IF; return 0; } +#endif +#ifdef IP_ROUTER_ALERT + if (memcmp(str, "IP_ROUTER_ALERT", 15) == 0) { *valp = IP_ROUTER_ALERT; return 0; } +#endif +#ifdef IP_MTU_DISCOVER + if (memcmp(str, "IP_MTU_DISCOVER", 15) == 0) { *valp = IP_MTU_DISCOVER; return 0; } +#endif +#ifdef IP_IPSEC_POLICY + if (memcmp(str, "IP_IPSEC_POLICY", 15) == 0) { *valp = IP_IPSEC_POLICY; return 0; } +#endif +#ifdef IP_BLOCK_SOURCE + if (memcmp(str, "IP_BLOCK_SOURCE", 15) == 0) { *valp = IP_BLOCK_SOURCE; return 0; } +#endif +#ifdef IP_DROP_MEMBERSHIP + if (memcmp(str, "DROP_MEMBERSHIP", 15) == 0) { *valp = IP_DROP_MEMBERSHIP; return 0; } +#endif +#ifdef IP_MAX_MEMBERSHIPS + if (memcmp(str, "MAX_MEMBERSHIPS", 15) == 0) { *valp = IP_MAX_MEMBERSHIPS; return 0; } +#endif + return -1; + + case 16: +#ifdef IP_MULTICAST_TTL + if (memcmp(str, "IP_MULTICAST_TTL", 16) == 0) { *valp = IP_MULTICAST_TTL; return 0; } +#endif +#ifdef IP_PMTUDISC_DONT + if (memcmp(str, "IP_PMTUDISC_DONT", 16) == 0) { *valp = IP_PMTUDISC_DONT; return 0; } +#endif +#ifdef IP_PMTUDISC_WANT + if (memcmp(str, "IP_PMTUDISC_WANT", 16) == 0) { *valp = IP_PMTUDISC_WANT; return 0; } +#endif + return -1; + + case 17: +#ifdef IP_MULTICAST_LOOP + if (memcmp(str, "IP_MULTICAST_LOOP", 17) == 0) { *valp = IP_MULTICAST_LOOP; return 0; } +#endif +#ifdef IP_ADD_MEMBERSHIP + if (memcmp(str, "IP_ADD_MEMBERSHIP", 17) == 0) { *valp = IP_ADD_MEMBERSHIP; return 0; } +#endif +#ifdef IP_UNBLOCK_SOURCE + if (memcmp(str, "IP_UNBLOCK_SOURCE", 17) == 0) { *valp = IP_UNBLOCK_SOURCE; return 0; } +#endif + return -1; + + case 18: +#ifdef IP_DROP_MEMBERSHIP + if (memcmp(str, "IP_DROP_MEMBERSHIP", 18) == 0) { *valp = IP_DROP_MEMBERSHIP; return 0; } +#endif +#ifdef IP_MAX_MEMBERSHIPS + if (memcmp(str, "IP_MAX_MEMBERSHIPS", 18) == 0) { *valp = IP_MAX_MEMBERSHIPS; return 0; } +#endif + return -1; + + case 21: +#ifdef IP_DEFAULT_MULTICAST_TTL + if (memcmp(str, "DEFAULT_MULTICAST_TTL", 21) == 0) { *valp = IP_DEFAULT_MULTICAST_TTL; return 0; } +#endif +#ifdef IP_ADD_SOURCE_MEMBERSHIP + if (memcmp(str, "ADD_SOURCE_MEMBERSHIP", 21) == 0) { *valp = IP_ADD_SOURCE_MEMBERSHIP; return 0; } +#endif + return -1; + + case 22: +#ifdef IP_DEFAULT_MULTICAST_LOOP + if (memcmp(str, "DEFAULT_MULTICAST_LOOP", 22) == 0) { *valp = IP_DEFAULT_MULTICAST_LOOP; return 0; } +#endif +#ifdef IP_DROP_SOURCE_MEMBERSHIP + if (memcmp(str, "DROP_SOURCE_MEMBERSHIP", 22) == 0) { *valp = IP_DROP_SOURCE_MEMBERSHIP; return 0; } +#endif + return -1; + + case 24: +#ifdef IP_DEFAULT_MULTICAST_TTL + if (memcmp(str, "IP_DEFAULT_MULTICAST_TTL", 24) == 0) { *valp = IP_DEFAULT_MULTICAST_TTL; return 0; } +#endif +#ifdef IP_ADD_SOURCE_MEMBERSHIP + if (memcmp(str, "IP_ADD_SOURCE_MEMBERSHIP", 24) == 0) { *valp = IP_ADD_SOURCE_MEMBERSHIP; return 0; } +#endif + return -1; + + case 25: +#ifdef IP_DEFAULT_MULTICAST_LOOP + if (memcmp(str, "IP_DEFAULT_MULTICAST_LOOP", 25) == 0) { *valp = IP_DEFAULT_MULTICAST_LOOP; return 0; } +#endif +#ifdef IP_DROP_SOURCE_MEMBERSHIP + if (memcmp(str, "IP_DROP_SOURCE_MEMBERSHIP", 25) == 0) { *valp = IP_DROP_SOURCE_MEMBERSHIP; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +#ifdef IPPROTO_IPV6 +int +rsock_ipv6_optname_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 5: +#ifdef IPV6_RTHDR + if (memcmp(str, "RTHDR", 5) == 0) { *valp = IPV6_RTHDR; return 0; } +#endif + return -1; + + case 6: +#ifdef IPV6_V6ONLY + if (memcmp(str, "V6ONLY", 6) == 0) { *valp = IPV6_V6ONLY; return 0; } +#endif +#ifdef IPV6_TCLASS + if (memcmp(str, "TCLASS", 6) == 0) { *valp = IPV6_TCLASS; return 0; } +#endif + return -1; + + case 7: +#ifdef IPV6_DSTOPTS + if (memcmp(str, "DSTOPTS", 7) == 0) { *valp = IPV6_DSTOPTS; return 0; } +#endif +#ifdef IPV6_HOPOPTS + if (memcmp(str, "HOPOPTS", 7) == 0) { *valp = IPV6_HOPOPTS; return 0; } +#endif +#ifdef IPV6_NEXTHOP + if (memcmp(str, "NEXTHOP", 7) == 0) { *valp = IPV6_NEXTHOP; return 0; } +#endif +#ifdef IPV6_PATHMTU + if (memcmp(str, "PATHMTU", 7) == 0) { *valp = IPV6_PATHMTU; return 0; } +#endif +#ifdef IPV6_PKTINFO + if (memcmp(str, "PKTINFO", 7) == 0) { *valp = IPV6_PKTINFO; return 0; } +#endif + return -1; + + case 8: +#ifdef IPV6_CHECKSUM + if (memcmp(str, "CHECKSUM", 8) == 0) { *valp = IPV6_CHECKSUM; return 0; } +#endif +#ifdef IPV6_DONTFRAG + if (memcmp(str, "DONTFRAG", 8) == 0) { *valp = IPV6_DONTFRAG; return 0; } +#endif +#ifdef IPV6_HOPLIMIT + if (memcmp(str, "HOPLIMIT", 8) == 0) { *valp = IPV6_HOPLIMIT; return 0; } +#endif + return -1; + + case 9: +#ifdef IPV6_RECVRTHDR + if (memcmp(str, "RECVRTHDR", 9) == 0) { *valp = IPV6_RECVRTHDR; return 0; } +#endif + return -1; + + case 10: +#ifdef IPV6_RTHDR + if (memcmp(str, "IPV6_RTHDR", 10) == 0) { *valp = IPV6_RTHDR; return 0; } +#endif +#ifdef IPV6_JOIN_GROUP + if (memcmp(str, "JOIN_GROUP", 10) == 0) { *valp = IPV6_JOIN_GROUP; return 0; } +#endif +#ifdef IPV6_RECVTCLASS + if (memcmp(str, "RECVTCLASS", 10) == 0) { *valp = IPV6_RECVTCLASS; return 0; } +#endif + return -1; + + case 11: +#ifdef IPV6_V6ONLY + if (memcmp(str, "IPV6_V6ONLY", 11) == 0) { *valp = IPV6_V6ONLY; return 0; } +#endif +#ifdef IPV6_TCLASS + if (memcmp(str, "IPV6_TCLASS", 11) == 0) { *valp = IPV6_TCLASS; return 0; } +#endif +#ifdef IPV6_LEAVE_GROUP + if (memcmp(str, "LEAVE_GROUP", 11) == 0) { *valp = IPV6_LEAVE_GROUP; return 0; } +#endif +#ifdef IPV6_RECVDSTOPTS + if (memcmp(str, "RECVDSTOPTS", 11) == 0) { *valp = IPV6_RECVDSTOPTS; return 0; } +#endif +#ifdef IPV6_RECVHOPOPTS + if (memcmp(str, "RECVHOPOPTS", 11) == 0) { *valp = IPV6_RECVHOPOPTS; return 0; } +#endif +#ifdef IPV6_RECVPKTINFO + if (memcmp(str, "RECVPKTINFO", 11) == 0) { *valp = IPV6_RECVPKTINFO; return 0; } +#endif +#ifdef IPV6_RECVPATHMTU + if (memcmp(str, "RECVPATHMTU", 11) == 0) { *valp = IPV6_RECVPATHMTU; return 0; } +#endif +#ifdef IPV6_USE_MIN_MTU + if (memcmp(str, "USE_MIN_MTU", 11) == 0) { *valp = IPV6_USE_MIN_MTU; return 0; } +#endif + return -1; + + case 12: +#ifdef IPV6_DSTOPTS + if (memcmp(str, "IPV6_DSTOPTS", 12) == 0) { *valp = IPV6_DSTOPTS; return 0; } +#endif +#ifdef IPV6_HOPOPTS + if (memcmp(str, "IPV6_HOPOPTS", 12) == 0) { *valp = IPV6_HOPOPTS; return 0; } +#endif +#ifdef IPV6_NEXTHOP + if (memcmp(str, "IPV6_NEXTHOP", 12) == 0) { *valp = IPV6_NEXTHOP; return 0; } +#endif +#ifdef IPV6_PATHMTU + if (memcmp(str, "IPV6_PATHMTU", 12) == 0) { *valp = IPV6_PATHMTU; return 0; } +#endif +#ifdef IPV6_PKTINFO + if (memcmp(str, "IPV6_PKTINFO", 12) == 0) { *valp = IPV6_PKTINFO; return 0; } +#endif +#ifdef IPV6_MULTICAST_IF + if (memcmp(str, "MULTICAST_IF", 12) == 0) { *valp = IPV6_MULTICAST_IF; return 0; } +#endif +#ifdef IPV6_UNICAST_HOPS + if (memcmp(str, "UNICAST_HOPS", 12) == 0) { *valp = IPV6_UNICAST_HOPS; return 0; } +#endif +#ifdef IPV6_RECVHOPLIMIT + if (memcmp(str, "RECVHOPLIMIT", 12) == 0) { *valp = IPV6_RECVHOPLIMIT; return 0; } +#endif +#ifdef IPV6_RTHDRDSTOPTS + if (memcmp(str, "RTHDRDSTOPTS", 12) == 0) { *valp = IPV6_RTHDRDSTOPTS; return 0; } +#endif +#ifdef IPV6_RTHDR_TYPE_0 + if (memcmp(str, "RTHDR_TYPE_0", 12) == 0) { *valp = IPV6_RTHDR_TYPE_0; return 0; } +#endif + return -1; + + case 13: +#ifdef IPV6_CHECKSUM + if (memcmp(str, "IPV6_CHECKSUM", 13) == 0) { *valp = IPV6_CHECKSUM; return 0; } +#endif +#ifdef IPV6_DONTFRAG + if (memcmp(str, "IPV6_DONTFRAG", 13) == 0) { *valp = IPV6_DONTFRAG; return 0; } +#endif +#ifdef IPV6_HOPLIMIT + if (memcmp(str, "IPV6_HOPLIMIT", 13) == 0) { *valp = IPV6_HOPLIMIT; return 0; } +#endif + return -1; + + case 14: +#ifdef IPV6_RECVRTHDR + if (memcmp(str, "IPV6_RECVRTHDR", 14) == 0) { *valp = IPV6_RECVRTHDR; return 0; } +#endif +#ifdef IPV6_MULTICAST_HOPS + if (memcmp(str, "MULTICAST_HOPS", 14) == 0) { *valp = IPV6_MULTICAST_HOPS; return 0; } +#endif +#ifdef IPV6_MULTICAST_LOOP + if (memcmp(str, "MULTICAST_LOOP", 14) == 0) { *valp = IPV6_MULTICAST_LOOP; return 0; } +#endif + return -1; + + case 15: +#ifdef IPV6_JOIN_GROUP + if (memcmp(str, "IPV6_JOIN_GROUP", 15) == 0) { *valp = IPV6_JOIN_GROUP; return 0; } +#endif +#ifdef IPV6_RECVTCLASS + if (memcmp(str, "IPV6_RECVTCLASS", 15) == 0) { *valp = IPV6_RECVTCLASS; return 0; } +#endif + return -1; + + case 16: +#ifdef IPV6_LEAVE_GROUP + if (memcmp(str, "IPV6_LEAVE_GROUP", 16) == 0) { *valp = IPV6_LEAVE_GROUP; return 0; } +#endif +#ifdef IPV6_RECVDSTOPTS + if (memcmp(str, "IPV6_RECVDSTOPTS", 16) == 0) { *valp = IPV6_RECVDSTOPTS; return 0; } +#endif +#ifdef IPV6_RECVHOPOPTS + if (memcmp(str, "IPV6_RECVHOPOPTS", 16) == 0) { *valp = IPV6_RECVHOPOPTS; return 0; } +#endif +#ifdef IPV6_RECVPKTINFO + if (memcmp(str, "IPV6_RECVPKTINFO", 16) == 0) { *valp = IPV6_RECVPKTINFO; return 0; } +#endif +#ifdef IPV6_RECVPATHMTU + if (memcmp(str, "IPV6_RECVPATHMTU", 16) == 0) { *valp = IPV6_RECVPATHMTU; return 0; } +#endif +#ifdef IPV6_USE_MIN_MTU + if (memcmp(str, "IPV6_USE_MIN_MTU", 16) == 0) { *valp = IPV6_USE_MIN_MTU; return 0; } +#endif + return -1; + + case 17: +#ifdef IPV6_MULTICAST_IF + if (memcmp(str, "IPV6_MULTICAST_IF", 17) == 0) { *valp = IPV6_MULTICAST_IF; return 0; } +#endif +#ifdef IPV6_UNICAST_HOPS + if (memcmp(str, "IPV6_UNICAST_HOPS", 17) == 0) { *valp = IPV6_UNICAST_HOPS; return 0; } +#endif +#ifdef IPV6_RECVHOPLIMIT + if (memcmp(str, "IPV6_RECVHOPLIMIT", 17) == 0) { *valp = IPV6_RECVHOPLIMIT; return 0; } +#endif +#ifdef IPV6_RTHDRDSTOPTS + if (memcmp(str, "IPV6_RTHDRDSTOPTS", 17) == 0) { *valp = IPV6_RTHDRDSTOPTS; return 0; } +#endif +#ifdef IPV6_RTHDR_TYPE_0 + if (memcmp(str, "IPV6_RTHDR_TYPE_0", 17) == 0) { *valp = IPV6_RTHDR_TYPE_0; return 0; } +#endif + return -1; + + case 19: +#ifdef IPV6_MULTICAST_HOPS + if (memcmp(str, "IPV6_MULTICAST_HOPS", 19) == 0) { *valp = IPV6_MULTICAST_HOPS; return 0; } +#endif +#ifdef IPV6_MULTICAST_LOOP + if (memcmp(str, "IPV6_MULTICAST_LOOP", 19) == 0) { *valp = IPV6_MULTICAST_LOOP; return 0; } +#endif + return -1; + + default: + return -1; + } +} + +#endif + +int +rsock_tcp_optname_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 4: +#ifdef TCP_CORK + if (memcmp(str, "CORK", 4) == 0) { *valp = TCP_CORK; return 0; } +#endif +#ifdef TCP_INFO + if (memcmp(str, "INFO", 4) == 0) { *valp = TCP_INFO; return 0; } +#endif + return -1; + + case 5: +#ifdef TCP_NOOPT + if (memcmp(str, "NOOPT", 5) == 0) { *valp = TCP_NOOPT; return 0; } +#endif + return -1; + + case 6: +#ifdef TCP_MAXSEG + if (memcmp(str, "MAXSEG", 6) == 0) { *valp = TCP_MAXSEG; return 0; } +#endif +#ifdef TCP_MD5SIG + if (memcmp(str, "MD5SIG", 6) == 0) { *valp = TCP_MD5SIG; return 0; } +#endif +#ifdef TCP_NOPUSH + if (memcmp(str, "NOPUSH", 6) == 0) { *valp = TCP_NOPUSH; return 0; } +#endif +#ifdef TCP_SYNCNT + if (memcmp(str, "SYNCNT", 6) == 0) { *valp = TCP_SYNCNT; return 0; } +#endif +#ifdef TCP_REPAIR + if (memcmp(str, "REPAIR", 6) == 0) { *valp = TCP_REPAIR; return 0; } +#endif + return -1; + + case 7: +#ifdef TCP_NODELAY + if (memcmp(str, "NODELAY", 7) == 0) { *valp = TCP_NODELAY; return 0; } +#endif +#ifdef TCP_KEEPCNT + if (memcmp(str, "KEEPCNT", 7) == 0) { *valp = TCP_KEEPCNT; return 0; } +#endif +#ifdef TCP_LINGER2 + if (memcmp(str, "LINGER2", 7) == 0) { *valp = TCP_LINGER2; return 0; } +#endif + return -1; + + case 8: +#ifdef TCP_CORK + if (memcmp(str, "TCP_CORK", 8) == 0) { *valp = TCP_CORK; return 0; } +#endif +#ifdef TCP_INFO + if (memcmp(str, "TCP_INFO", 8) == 0) { *valp = TCP_INFO; return 0; } +#endif +#ifdef TCP_KEEPIDLE + if (memcmp(str, "KEEPIDLE", 8) == 0) { *valp = TCP_KEEPIDLE; return 0; } +#endif +#ifdef TCP_QUICKACK + if (memcmp(str, "QUICKACK", 8) == 0) { *valp = TCP_QUICKACK; return 0; } +#endif +#ifdef TCP_FASTOPEN + if (memcmp(str, "FASTOPEN", 8) == 0) { *valp = TCP_FASTOPEN; return 0; } +#endif + return -1; + + case 9: +#ifdef TCP_NOOPT + if (memcmp(str, "TCP_NOOPT", 9) == 0) { *valp = TCP_NOOPT; return 0; } +#endif +#ifdef TCP_KEEPINTVL + if (memcmp(str, "KEEPINTVL", 9) == 0) { *valp = TCP_KEEPINTVL; return 0; } +#endif +#ifdef TCP_QUEUE_SEQ + if (memcmp(str, "QUEUE_SEQ", 9) == 0) { *valp = TCP_QUEUE_SEQ; return 0; } +#endif +#ifdef TCP_TIMESTAMP + if (memcmp(str, "TIMESTAMP", 9) == 0) { *valp = TCP_TIMESTAMP; return 0; } +#endif + return -1; + + case 10: +#ifdef TCP_MAXSEG + if (memcmp(str, "TCP_MAXSEG", 10) == 0) { *valp = TCP_MAXSEG; return 0; } +#endif +#ifdef TCP_MD5SIG + if (memcmp(str, "TCP_MD5SIG", 10) == 0) { *valp = TCP_MD5SIG; return 0; } +#endif +#ifdef TCP_NOPUSH + if (memcmp(str, "TCP_NOPUSH", 10) == 0) { *valp = TCP_NOPUSH; return 0; } +#endif +#ifdef TCP_SYNCNT + if (memcmp(str, "TCP_SYNCNT", 10) == 0) { *valp = TCP_SYNCNT; return 0; } +#endif +#ifdef TCP_REPAIR + if (memcmp(str, "TCP_REPAIR", 10) == 0) { *valp = TCP_REPAIR; return 0; } +#endif +#ifdef TCP_CONGESTION + if (memcmp(str, "CONGESTION", 10) == 0) { *valp = TCP_CONGESTION; return 0; } +#endif + return -1; + + case 11: +#ifdef TCP_NODELAY + if (memcmp(str, "TCP_NODELAY", 11) == 0) { *valp = TCP_NODELAY; return 0; } +#endif +#ifdef TCP_KEEPCNT + if (memcmp(str, "TCP_KEEPCNT", 11) == 0) { *valp = TCP_KEEPCNT; return 0; } +#endif +#ifdef TCP_LINGER2 + if (memcmp(str, "TCP_LINGER2", 11) == 0) { *valp = TCP_LINGER2; return 0; } +#endif +#ifdef TCP_THIN_DUPACK + if (memcmp(str, "THIN_DUPACK", 11) == 0) { *valp = TCP_THIN_DUPACK; return 0; } +#endif + return -1; + + case 12: +#ifdef TCP_KEEPIDLE + if (memcmp(str, "TCP_KEEPIDLE", 12) == 0) { *valp = TCP_KEEPIDLE; return 0; } +#endif +#ifdef TCP_QUICKACK + if (memcmp(str, "TCP_QUICKACK", 12) == 0) { *valp = TCP_QUICKACK; return 0; } +#endif +#ifdef TCP_FASTOPEN + if (memcmp(str, "TCP_FASTOPEN", 12) == 0) { *valp = TCP_FASTOPEN; return 0; } +#endif +#ifdef TCP_DEFER_ACCEPT + if (memcmp(str, "DEFER_ACCEPT", 12) == 0) { *valp = TCP_DEFER_ACCEPT; return 0; } +#endif +#ifdef TCP_WINDOW_CLAMP + if (memcmp(str, "WINDOW_CLAMP", 12) == 0) { *valp = TCP_WINDOW_CLAMP; return 0; } +#endif +#ifdef TCP_REPAIR_QUEUE + if (memcmp(str, "REPAIR_QUEUE", 12) == 0) { *valp = TCP_REPAIR_QUEUE; return 0; } +#endif +#ifdef TCP_USER_TIMEOUT + if (memcmp(str, "USER_TIMEOUT", 12) == 0) { *valp = TCP_USER_TIMEOUT; return 0; } +#endif + return -1; + + case 13: +#ifdef TCP_KEEPINTVL + if (memcmp(str, "TCP_KEEPINTVL", 13) == 0) { *valp = TCP_KEEPINTVL; return 0; } +#endif +#ifdef TCP_QUEUE_SEQ + if (memcmp(str, "TCP_QUEUE_SEQ", 13) == 0) { *valp = TCP_QUEUE_SEQ; return 0; } +#endif +#ifdef TCP_TIMESTAMP + if (memcmp(str, "TCP_TIMESTAMP", 13) == 0) { *valp = TCP_TIMESTAMP; return 0; } +#endif + return -1; + + case 14: +#ifdef TCP_CONGESTION + if (memcmp(str, "TCP_CONGESTION", 14) == 0) { *valp = TCP_CONGESTION; return 0; } +#endif +#ifdef TCP_REPAIR_OPTIONS + if (memcmp(str, "REPAIR_OPTIONS", 14) == 0) { *valp = TCP_REPAIR_OPTIONS; return 0; } +#endif + return -1; + + case 15: +#ifdef TCP_THIN_DUPACK + if (memcmp(str, "TCP_THIN_DUPACK", 15) == 0) { *valp = TCP_THIN_DUPACK; return 0; } +#endif + return -1; + + case 16: +#ifdef TCP_DEFER_ACCEPT + if (memcmp(str, "TCP_DEFER_ACCEPT", 16) == 0) { *valp = TCP_DEFER_ACCEPT; return 0; } +#endif +#ifdef TCP_WINDOW_CLAMP + if (memcmp(str, "TCP_WINDOW_CLAMP", 16) == 0) { *valp = TCP_WINDOW_CLAMP; return 0; } +#endif +#ifdef TCP_REPAIR_QUEUE + if (memcmp(str, "TCP_REPAIR_QUEUE", 16) == 0) { *valp = TCP_REPAIR_QUEUE; return 0; } +#endif +#ifdef TCP_USER_TIMEOUT + if (memcmp(str, "TCP_USER_TIMEOUT", 16) == 0) { *valp = TCP_USER_TIMEOUT; return 0; } +#endif + return -1; + + case 18: +#ifdef TCP_REPAIR_OPTIONS + if (memcmp(str, "TCP_REPAIR_OPTIONS", 18) == 0) { *valp = TCP_REPAIR_OPTIONS; return 0; } +#endif + return -1; + + case 19: +#ifdef TCP_COOKIE_TRANSACTIONS + if (memcmp(str, "COOKIE_TRANSACTIONS", 19) == 0) { *valp = TCP_COOKIE_TRANSACTIONS; return 0; } +#endif + return -1; + + case 20: +#ifdef TCP_THIN_LINEAR_TIMEOUTS + if (memcmp(str, "THIN_LINEAR_TIMEOUTS", 20) == 0) { *valp = TCP_THIN_LINEAR_TIMEOUTS; return 0; } +#endif + return -1; + + case 23: +#ifdef TCP_COOKIE_TRANSACTIONS + if (memcmp(str, "TCP_COOKIE_TRANSACTIONS", 23) == 0) { *valp = TCP_COOKIE_TRANSACTIONS; return 0; } +#endif + return -1; + + case 24: +#ifdef TCP_THIN_LINEAR_TIMEOUTS + if (memcmp(str, "TCP_THIN_LINEAR_TIMEOUTS", 24) == 0) { *valp = TCP_THIN_LINEAR_TIMEOUTS; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_udp_optname_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 4: +#ifdef UDP_CORK + if (memcmp(str, "CORK", 4) == 0) { *valp = UDP_CORK; return 0; } +#endif + return -1; + + case 8: +#ifdef UDP_CORK + if (memcmp(str, "UDP_CORK", 8) == 0) { *valp = UDP_CORK; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_shutdown_how_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 2: +#ifdef SHUT_RD + if (memcmp(str, "RD", 2) == 0) { *valp = SHUT_RD; return 0; } +#endif +#ifdef SHUT_WR + if (memcmp(str, "WR", 2) == 0) { *valp = SHUT_WR; return 0; } +#endif + return -1; + + case 4: +#ifdef SHUT_RDWR + if (memcmp(str, "RDWR", 4) == 0) { *valp = SHUT_RDWR; return 0; } +#endif + return -1; + + case 7: +#ifdef SHUT_RD + if (memcmp(str, "SHUT_RD", 7) == 0) { *valp = SHUT_RD; return 0; } +#endif +#ifdef SHUT_WR + if (memcmp(str, "SHUT_WR", 7) == 0) { *valp = SHUT_WR; return 0; } +#endif + return -1; + + case 9: +#ifdef SHUT_RDWR + if (memcmp(str, "SHUT_RDWR", 9) == 0) { *valp = SHUT_RDWR; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + +int +rsock_scm_optname_to_int(const char *str, long len, int *valp) +{ + switch (len) { + case 5: +#ifdef SCM_CREDS + if (memcmp(str, "CREDS", 5) == 0) { *valp = SCM_CREDS; return 0; } +#endif +#ifdef SCM_UCRED + if (memcmp(str, "UCRED", 5) == 0) { *valp = SCM_UCRED; return 0; } +#endif + return -1; + + case 6: +#ifdef SCM_RIGHTS + if (memcmp(str, "RIGHTS", 6) == 0) { *valp = SCM_RIGHTS; return 0; } +#endif + return -1; + + case 7: +#ifdef SCM_BINTIME + if (memcmp(str, "BINTIME", 7) == 0) { *valp = SCM_BINTIME; return 0; } +#endif + return -1; + + case 9: +#ifdef SCM_CREDS + if (memcmp(str, "SCM_CREDS", 9) == 0) { *valp = SCM_CREDS; return 0; } +#endif +#ifdef SCM_UCRED + if (memcmp(str, "SCM_UCRED", 9) == 0) { *valp = SCM_UCRED; return 0; } +#endif +#ifdef SCM_TIMESTAMP + if (memcmp(str, "TIMESTAMP", 9) == 0) { *valp = SCM_TIMESTAMP; return 0; } +#endif + return -1; + + case 10: +#ifdef SCM_RIGHTS + if (memcmp(str, "SCM_RIGHTS", 10) == 0) { *valp = SCM_RIGHTS; return 0; } +#endif + return -1; + + case 11: +#ifdef SCM_BINTIME + if (memcmp(str, "SCM_BINTIME", 11) == 0) { *valp = SCM_BINTIME; return 0; } +#endif +#ifdef SCM_TIMESTAMPNS + if (memcmp(str, "TIMESTAMPNS", 11) == 0) { *valp = SCM_TIMESTAMPNS; return 0; } +#endif +#ifdef SCM_CREDENTIALS + if (memcmp(str, "CREDENTIALS", 11) == 0) { *valp = SCM_CREDENTIALS; return 0; } +#endif +#ifdef SCM_WIFI_STATUS + if (memcmp(str, "WIFI_STATUS", 11) == 0) { *valp = SCM_WIFI_STATUS; return 0; } +#endif + return -1; + + case 12: +#ifdef SCM_TIMESTAMPING + if (memcmp(str, "TIMESTAMPING", 12) == 0) { *valp = SCM_TIMESTAMPING; return 0; } +#endif + return -1; + + case 13: +#ifdef SCM_TIMESTAMP + if (memcmp(str, "SCM_TIMESTAMP", 13) == 0) { *valp = SCM_TIMESTAMP; return 0; } +#endif + return -1; + + case 15: +#ifdef SCM_TIMESTAMPNS + if (memcmp(str, "SCM_TIMESTAMPNS", 15) == 0) { *valp = SCM_TIMESTAMPNS; return 0; } +#endif +#ifdef SCM_CREDENTIALS + if (memcmp(str, "SCM_CREDENTIALS", 15) == 0) { *valp = SCM_CREDENTIALS; return 0; } +#endif +#ifdef SCM_WIFI_STATUS + if (memcmp(str, "SCM_WIFI_STATUS", 15) == 0) { *valp = SCM_WIFI_STATUS; return 0; } +#endif + return -1; + + case 16: +#ifdef SCM_TIMESTAMPING + if (memcmp(str, "SCM_TIMESTAMPING", 16) == 0) { *valp = SCM_TIMESTAMPING; return 0; } +#endif + return -1; + + default: + return -1; + } +} + + + +ID +rsock_intern_family(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_family_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_family_noprefix(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_family_noprefix_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_protocol_family(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_protocol_family_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_socktype(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_socktype_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_ipproto(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_ipproto_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_iplevel(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_iplevel_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_so_optname(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_so_optname_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_ip_optname(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_ip_optname_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_ipv6_optname(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_ipv6_optname_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_tcp_optname(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_tcp_optname_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_udp_optname(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_udp_optname_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_scm_optname(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_scm_optname_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + +ID +rsock_intern_local_optname(int val) +{ + st_data_t name; + if (st_lookup(rsock_intern_local_optname_hash, (st_data_t)val, &name)) + return (ID)name; + return 0; +} + + -- cgit v1.2.3