summaryrefslogtreecommitdiff
path: root/jni/ruby/ext/socket/constdefs.c
diff options
context:
space:
mode:
Diffstat (limited to 'jni/ruby/ext/socket/constdefs.c')
-rw-r--r--jni/ruby/ext/socket/constdefs.c6852
1 files changed, 6852 insertions, 0 deletions
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;
+}
+
+