Ruby 3.1.4p223 (2023-03-30 revision HEAD)
constdefs.c
1/* autogenerated file */
2
3static st_table *rsock_intern_family_hash;
4static st_table *rsock_intern_family_noprefix_hash;
5static st_table *rsock_intern_protocol_family_hash;
6static st_table *rsock_intern_socktype_hash;
7static st_table *rsock_intern_ipproto_hash;
8static st_table *rsock_intern_iplevel_hash;
9static st_table *rsock_intern_so_optname_hash;
10static st_table *rsock_intern_ip_optname_hash;
11static st_table *rsock_intern_ipv6_optname_hash;
12static st_table *rsock_intern_tcp_optname_hash;
13static st_table *rsock_intern_udp_optname_hash;
14static st_table *rsock_intern_scm_optname_hash;
15static st_table *rsock_intern_local_optname_hash;
16
17#ifdef HAVE_LONG_LONG
18#define INTEGER2NUM(n) \
19 (FIXNUM_MAX < (n) ? ULL2NUM(n) : \
20 FIXNUM_MIN > (LONG_LONG)(n) ? LL2NUM(n) : \
21 LONG2FIX(n))
22#else
23#define INTEGER2NUM(n) \
24 (FIXNUM_MAX < (n) ? ULONG2NUM(n) : \
25 FIXNUM_MIN > (long)(n) ? LONG2NUM(n) : \
26 LONG2FIX(n))
27#endif
28
29static void
30init_constants(void)
31{
32 /*
33 * Document-module: Socket::Constants
34 *
35 * Socket::Constants provides socket-related constants. All possible
36 * socket constants are listed in the documentation but they may not all
37 * be present on your platform.
38 *
39 * If the underlying platform doesn't define a constant the corresponding
40 * Ruby constant is not defined.
41 *
42 */
43 rb_mSockConst = rb_define_module_under(rb_cSocket, "Constants");
44
45#if defined(SOCK_STREAM)
46 /* A stream socket provides a sequenced, reliable two-way connection for a byte stream */
47 rb_define_const(rb_cSocket, "SOCK_STREAM", INTEGER2NUM(SOCK_STREAM));
48 /* A stream socket provides a sequenced, reliable two-way connection for a byte stream */
49 rb_define_const(rb_mSockConst, "SOCK_STREAM", INTEGER2NUM(SOCK_STREAM));
50#endif
51#if defined(SOCK_DGRAM)
52 /* A datagram socket provides connectionless, unreliable messaging */
53 rb_define_const(rb_cSocket, "SOCK_DGRAM", INTEGER2NUM(SOCK_DGRAM));
54 /* A datagram socket provides connectionless, unreliable messaging */
55 rb_define_const(rb_mSockConst, "SOCK_DGRAM", INTEGER2NUM(SOCK_DGRAM));
56#endif
57#if defined(SOCK_RAW)
58 /* A raw socket provides low-level access for direct access or implementing network protocols */
59 rb_define_const(rb_cSocket, "SOCK_RAW", INTEGER2NUM(SOCK_RAW));
60 /* A raw socket provides low-level access for direct access or implementing network protocols */
61 rb_define_const(rb_mSockConst, "SOCK_RAW", INTEGER2NUM(SOCK_RAW));
62#endif
63#if defined(SOCK_RDM)
64 /* A reliable datagram socket provides reliable delivery of messages */
65 rb_define_const(rb_cSocket, "SOCK_RDM", INTEGER2NUM(SOCK_RDM));
66 /* A reliable datagram socket provides reliable delivery of messages */
67 rb_define_const(rb_mSockConst, "SOCK_RDM", INTEGER2NUM(SOCK_RDM));
68#endif
69#if defined(SOCK_SEQPACKET)
70 /* A sequential packet socket provides sequenced, reliable two-way connection for datagrams */
71 rb_define_const(rb_cSocket, "SOCK_SEQPACKET", INTEGER2NUM(SOCK_SEQPACKET));
72 /* A sequential packet socket provides sequenced, reliable two-way connection for datagrams */
73 rb_define_const(rb_mSockConst, "SOCK_SEQPACKET", INTEGER2NUM(SOCK_SEQPACKET));
74#endif
75#if defined(SOCK_PACKET)
76 /* Device-level packet access */
77 rb_define_const(rb_cSocket, "SOCK_PACKET", INTEGER2NUM(SOCK_PACKET));
78 /* Device-level packet access */
79 rb_define_const(rb_mSockConst, "SOCK_PACKET", INTEGER2NUM(SOCK_PACKET));
80#endif
81#if defined(SOCK_NONBLOCK)
82 /* Set the O_NONBLOCK file status flag on the open file description (see open(2)) referred to by the new file descriptor. */
83 rb_define_const(rb_cSocket, "SOCK_NONBLOCK", INTEGER2NUM(SOCK_NONBLOCK));
84 /* Set the O_NONBLOCK file status flag on the open file description (see open(2)) referred to by the new file descriptor. */
85 rb_define_const(rb_mSockConst, "SOCK_NONBLOCK", INTEGER2NUM(SOCK_NONBLOCK));
86#endif
87#if defined(SOCK_CLOEXEC)
88 /* Set the close-on-exec (FD_CLOEXEC) flag on the new file descriptor. */
89 rb_define_const(rb_cSocket, "SOCK_CLOEXEC", INTEGER2NUM(SOCK_CLOEXEC));
90 /* Set the close-on-exec (FD_CLOEXEC) flag on the new file descriptor. */
91 rb_define_const(rb_mSockConst, "SOCK_CLOEXEC", INTEGER2NUM(SOCK_CLOEXEC));
92#endif
93#if defined(AF_UNSPEC)
94 /* Unspecified protocol, any supported address family */
95 rb_define_const(rb_cSocket, "AF_UNSPEC", INTEGER2NUM(AF_UNSPEC));
96 /* Unspecified protocol, any supported address family */
97 rb_define_const(rb_mSockConst, "AF_UNSPEC", INTEGER2NUM(AF_UNSPEC));
98#endif
99#if defined(PF_UNSPEC)
100 /* Unspecified protocol, any supported address family */
101 rb_define_const(rb_cSocket, "PF_UNSPEC", INTEGER2NUM(PF_UNSPEC));
102 /* Unspecified protocol, any supported address family */
103 rb_define_const(rb_mSockConst, "PF_UNSPEC", INTEGER2NUM(PF_UNSPEC));
104#endif
105#if defined(AF_INET)
106 /* IPv4 protocol */
107 rb_define_const(rb_cSocket, "AF_INET", INTEGER2NUM(AF_INET));
108 /* IPv4 protocol */
109 rb_define_const(rb_mSockConst, "AF_INET", INTEGER2NUM(AF_INET));
110#endif
111#if defined(PF_INET)
112 /* IPv4 protocol */
113 rb_define_const(rb_cSocket, "PF_INET", INTEGER2NUM(PF_INET));
114 /* IPv4 protocol */
115 rb_define_const(rb_mSockConst, "PF_INET", INTEGER2NUM(PF_INET));
116#endif
117#if defined(INET6)
118#if defined(AF_INET6)
119 /* IPv6 protocol */
120 rb_define_const(rb_cSocket, "AF_INET6", INTEGER2NUM(AF_INET6));
121 /* IPv6 protocol */
122 rb_define_const(rb_mSockConst, "AF_INET6", INTEGER2NUM(AF_INET6));
123#endif
124#endif
125#if defined(INET6)
126#if defined(PF_INET6)
127 /* IPv6 protocol */
128 rb_define_const(rb_cSocket, "PF_INET6", INTEGER2NUM(PF_INET6));
129 /* IPv6 protocol */
130 rb_define_const(rb_mSockConst, "PF_INET6", INTEGER2NUM(PF_INET6));
131#endif
132#endif
133#if defined(AF_UNIX)
134 /* UNIX sockets */
135 rb_define_const(rb_cSocket, "AF_UNIX", INTEGER2NUM(AF_UNIX));
136 /* UNIX sockets */
137 rb_define_const(rb_mSockConst, "AF_UNIX", INTEGER2NUM(AF_UNIX));
138#endif
139#if defined(PF_UNIX)
140 /* UNIX sockets */
141 rb_define_const(rb_cSocket, "PF_UNIX", INTEGER2NUM(PF_UNIX));
142 /* UNIX sockets */
143 rb_define_const(rb_mSockConst, "PF_UNIX", INTEGER2NUM(PF_UNIX));
144#endif
145#if defined(AF_AX25)
146 /* AX.25 protocol */
147 rb_define_const(rb_cSocket, "AF_AX25", INTEGER2NUM(AF_AX25));
148 /* AX.25 protocol */
149 rb_define_const(rb_mSockConst, "AF_AX25", INTEGER2NUM(AF_AX25));
150#endif
151#if defined(PF_AX25)
152 /* AX.25 protocol */
153 rb_define_const(rb_cSocket, "PF_AX25", INTEGER2NUM(PF_AX25));
154 /* AX.25 protocol */
155 rb_define_const(rb_mSockConst, "PF_AX25", INTEGER2NUM(PF_AX25));
156#endif
157#if defined(AF_IPX)
158 /* IPX protocol */
159 rb_define_const(rb_cSocket, "AF_IPX", INTEGER2NUM(AF_IPX));
160 /* IPX protocol */
161 rb_define_const(rb_mSockConst, "AF_IPX", INTEGER2NUM(AF_IPX));
162#endif
163#if defined(PF_IPX)
164 /* IPX protocol */
165 rb_define_const(rb_cSocket, "PF_IPX", INTEGER2NUM(PF_IPX));
166 /* IPX protocol */
167 rb_define_const(rb_mSockConst, "PF_IPX", INTEGER2NUM(PF_IPX));
168#endif
169#if defined(AF_APPLETALK)
170 /* AppleTalk protocol */
171 rb_define_const(rb_cSocket, "AF_APPLETALK", INTEGER2NUM(AF_APPLETALK));
172 /* AppleTalk protocol */
173 rb_define_const(rb_mSockConst, "AF_APPLETALK", INTEGER2NUM(AF_APPLETALK));
174#endif
175#if defined(PF_APPLETALK)
176 /* AppleTalk protocol */
177 rb_define_const(rb_cSocket, "PF_APPLETALK", INTEGER2NUM(PF_APPLETALK));
178 /* AppleTalk protocol */
179 rb_define_const(rb_mSockConst, "PF_APPLETALK", INTEGER2NUM(PF_APPLETALK));
180#endif
181#if defined(AF_LOCAL)
182 /* Host-internal protocols */
183 rb_define_const(rb_cSocket, "AF_LOCAL", INTEGER2NUM(AF_LOCAL));
184 /* Host-internal protocols */
185 rb_define_const(rb_mSockConst, "AF_LOCAL", INTEGER2NUM(AF_LOCAL));
186#endif
187#if defined(PF_LOCAL)
188 /* Host-internal protocols */
189 rb_define_const(rb_cSocket, "PF_LOCAL", INTEGER2NUM(PF_LOCAL));
190 /* Host-internal protocols */
191 rb_define_const(rb_mSockConst, "PF_LOCAL", INTEGER2NUM(PF_LOCAL));
192#endif
193#if defined(AF_IMPLINK)
194 /* ARPANET IMP protocol */
195 rb_define_const(rb_cSocket, "AF_IMPLINK", INTEGER2NUM(AF_IMPLINK));
196 /* ARPANET IMP protocol */
197 rb_define_const(rb_mSockConst, "AF_IMPLINK", INTEGER2NUM(AF_IMPLINK));
198#endif
199#if defined(PF_IMPLINK)
200 /* ARPANET IMP protocol */
201 rb_define_const(rb_cSocket, "PF_IMPLINK", INTEGER2NUM(PF_IMPLINK));
202 /* ARPANET IMP protocol */
203 rb_define_const(rb_mSockConst, "PF_IMPLINK", INTEGER2NUM(PF_IMPLINK));
204#endif
205#if defined(AF_PUP)
206 /* PARC Universal Packet protocol */
207 rb_define_const(rb_cSocket, "AF_PUP", INTEGER2NUM(AF_PUP));
208 /* PARC Universal Packet protocol */
209 rb_define_const(rb_mSockConst, "AF_PUP", INTEGER2NUM(AF_PUP));
210#endif
211#if defined(PF_PUP)
212 /* PARC Universal Packet protocol */
213 rb_define_const(rb_cSocket, "PF_PUP", INTEGER2NUM(PF_PUP));
214 /* PARC Universal Packet protocol */
215 rb_define_const(rb_mSockConst, "PF_PUP", INTEGER2NUM(PF_PUP));
216#endif
217#if defined(AF_CHAOS)
218 /* MIT CHAOS protocols */
219 rb_define_const(rb_cSocket, "AF_CHAOS", INTEGER2NUM(AF_CHAOS));
220 /* MIT CHAOS protocols */
221 rb_define_const(rb_mSockConst, "AF_CHAOS", INTEGER2NUM(AF_CHAOS));
222#endif
223#if defined(PF_CHAOS)
224 /* MIT CHAOS protocols */
225 rb_define_const(rb_cSocket, "PF_CHAOS", INTEGER2NUM(PF_CHAOS));
226 /* MIT CHAOS protocols */
227 rb_define_const(rb_mSockConst, "PF_CHAOS", INTEGER2NUM(PF_CHAOS));
228#endif
229#if defined(AF_NS)
230 /* XEROX NS protocols */
231 rb_define_const(rb_cSocket, "AF_NS", INTEGER2NUM(AF_NS));
232 /* XEROX NS protocols */
233 rb_define_const(rb_mSockConst, "AF_NS", INTEGER2NUM(AF_NS));
234#endif
235#if defined(PF_NS)
236 /* XEROX NS protocols */
237 rb_define_const(rb_cSocket, "PF_NS", INTEGER2NUM(PF_NS));
238 /* XEROX NS protocols */
239 rb_define_const(rb_mSockConst, "PF_NS", INTEGER2NUM(PF_NS));
240#endif
241#if defined(AF_ISO)
242 /* ISO Open Systems Interconnection protocols */
243 rb_define_const(rb_cSocket, "AF_ISO", INTEGER2NUM(AF_ISO));
244 /* ISO Open Systems Interconnection protocols */
245 rb_define_const(rb_mSockConst, "AF_ISO", INTEGER2NUM(AF_ISO));
246#endif
247#if defined(PF_ISO)
248 /* ISO Open Systems Interconnection protocols */
249 rb_define_const(rb_cSocket, "PF_ISO", INTEGER2NUM(PF_ISO));
250 /* ISO Open Systems Interconnection protocols */
251 rb_define_const(rb_mSockConst, "PF_ISO", INTEGER2NUM(PF_ISO));
252#endif
253#if defined(AF_OSI)
254 /* ISO Open Systems Interconnection protocols */
255 rb_define_const(rb_cSocket, "AF_OSI", INTEGER2NUM(AF_OSI));
256 /* ISO Open Systems Interconnection protocols */
257 rb_define_const(rb_mSockConst, "AF_OSI", INTEGER2NUM(AF_OSI));
258#endif
259#if defined(PF_OSI)
260 /* ISO Open Systems Interconnection protocols */
261 rb_define_const(rb_cSocket, "PF_OSI", INTEGER2NUM(PF_OSI));
262 /* ISO Open Systems Interconnection protocols */
263 rb_define_const(rb_mSockConst, "PF_OSI", INTEGER2NUM(PF_OSI));
264#endif
265#if defined(AF_ECMA)
266 /* European Computer Manufacturers protocols */
267 rb_define_const(rb_cSocket, "AF_ECMA", INTEGER2NUM(AF_ECMA));
268 /* European Computer Manufacturers protocols */
269 rb_define_const(rb_mSockConst, "AF_ECMA", INTEGER2NUM(AF_ECMA));
270#endif
271#if defined(PF_ECMA)
272 /* European Computer Manufacturers protocols */
273 rb_define_const(rb_cSocket, "PF_ECMA", INTEGER2NUM(PF_ECMA));
274 /* European Computer Manufacturers protocols */
275 rb_define_const(rb_mSockConst, "PF_ECMA", INTEGER2NUM(PF_ECMA));
276#endif
277#if defined(AF_DATAKIT)
278 /* Datakit protocol */
279 rb_define_const(rb_cSocket, "AF_DATAKIT", INTEGER2NUM(AF_DATAKIT));
280 /* Datakit protocol */
281 rb_define_const(rb_mSockConst, "AF_DATAKIT", INTEGER2NUM(AF_DATAKIT));
282#endif
283#if defined(PF_DATAKIT)
284 /* Datakit protocol */
285 rb_define_const(rb_cSocket, "PF_DATAKIT", INTEGER2NUM(PF_DATAKIT));
286 /* Datakit protocol */
287 rb_define_const(rb_mSockConst, "PF_DATAKIT", INTEGER2NUM(PF_DATAKIT));
288#endif
289#if defined(AF_CCITT)
290 /* CCITT (now ITU-T) protocols */
291 rb_define_const(rb_cSocket, "AF_CCITT", INTEGER2NUM(AF_CCITT));
292 /* CCITT (now ITU-T) protocols */
293 rb_define_const(rb_mSockConst, "AF_CCITT", INTEGER2NUM(AF_CCITT));
294#endif
295#if defined(PF_CCITT)
296 /* CCITT (now ITU-T) protocols */
297 rb_define_const(rb_cSocket, "PF_CCITT", INTEGER2NUM(PF_CCITT));
298 /* CCITT (now ITU-T) protocols */
299 rb_define_const(rb_mSockConst, "PF_CCITT", INTEGER2NUM(PF_CCITT));
300#endif
301#if defined(AF_SNA)
302 /* IBM SNA protocol */
303 rb_define_const(rb_cSocket, "AF_SNA", INTEGER2NUM(AF_SNA));
304 /* IBM SNA protocol */
305 rb_define_const(rb_mSockConst, "AF_SNA", INTEGER2NUM(AF_SNA));
306#endif
307#if defined(PF_SNA)
308 /* IBM SNA protocol */
309 rb_define_const(rb_cSocket, "PF_SNA", INTEGER2NUM(PF_SNA));
310 /* IBM SNA protocol */
311 rb_define_const(rb_mSockConst, "PF_SNA", INTEGER2NUM(PF_SNA));
312#endif
313#if defined(AF_DEC)
314 /* DECnet protocol */
315 rb_define_const(rb_cSocket, "AF_DEC", INTEGER2NUM(AF_DEC));
316 /* DECnet protocol */
317 rb_define_const(rb_mSockConst, "AF_DEC", INTEGER2NUM(AF_DEC));
318#endif
319#if defined(PF_DEC)
320 /* DECnet protocol */
321 rb_define_const(rb_cSocket, "PF_DEC", INTEGER2NUM(PF_DEC));
322 /* DECnet protocol */
323 rb_define_const(rb_mSockConst, "PF_DEC", INTEGER2NUM(PF_DEC));
324#endif
325#if defined(AF_DECnet)
326 /* DECnet protocol */
327 rb_define_const(rb_cSocket, "AF_DECnet", INTEGER2NUM(AF_DECnet));
328 /* DECnet protocol */
329 rb_define_const(rb_mSockConst, "AF_DECnet", INTEGER2NUM(AF_DECnet));
330#endif
331#if defined(PF_DECnet)
332 /* DECnet protocol */
333 rb_define_const(rb_cSocket, "PF_DECnet", INTEGER2NUM(PF_DECnet));
334 /* DECnet protocol */
335 rb_define_const(rb_mSockConst, "PF_DECnet", INTEGER2NUM(PF_DECnet));
336#endif
337#if defined(AF_DLI)
338 /* DEC Direct Data Link Interface protocol */
339 rb_define_const(rb_cSocket, "AF_DLI", INTEGER2NUM(AF_DLI));
340 /* DEC Direct Data Link Interface protocol */
341 rb_define_const(rb_mSockConst, "AF_DLI", INTEGER2NUM(AF_DLI));
342#endif
343#if defined(PF_DLI)
344 /* DEC Direct Data Link Interface protocol */
345 rb_define_const(rb_cSocket, "PF_DLI", INTEGER2NUM(PF_DLI));
346 /* DEC Direct Data Link Interface protocol */
347 rb_define_const(rb_mSockConst, "PF_DLI", INTEGER2NUM(PF_DLI));
348#endif
349#if defined(AF_LAT)
350 /* Local Area Transport protocol */
351 rb_define_const(rb_cSocket, "AF_LAT", INTEGER2NUM(AF_LAT));
352 /* Local Area Transport protocol */
353 rb_define_const(rb_mSockConst, "AF_LAT", INTEGER2NUM(AF_LAT));
354#endif
355#if defined(PF_LAT)
356 /* Local Area Transport protocol */
357 rb_define_const(rb_cSocket, "PF_LAT", INTEGER2NUM(PF_LAT));
358 /* Local Area Transport protocol */
359 rb_define_const(rb_mSockConst, "PF_LAT", INTEGER2NUM(PF_LAT));
360#endif
361#if defined(AF_HYLINK)
362 /* NSC Hyperchannel protocol */
363 rb_define_const(rb_cSocket, "AF_HYLINK", INTEGER2NUM(AF_HYLINK));
364 /* NSC Hyperchannel protocol */
365 rb_define_const(rb_mSockConst, "AF_HYLINK", INTEGER2NUM(AF_HYLINK));
366#endif
367#if defined(PF_HYLINK)
368 /* NSC Hyperchannel protocol */
369 rb_define_const(rb_cSocket, "PF_HYLINK", INTEGER2NUM(PF_HYLINK));
370 /* NSC Hyperchannel protocol */
371 rb_define_const(rb_mSockConst, "PF_HYLINK", INTEGER2NUM(PF_HYLINK));
372#endif
373#if defined(AF_ROUTE)
374 /* Internal routing protocol */
375 rb_define_const(rb_cSocket, "AF_ROUTE", INTEGER2NUM(AF_ROUTE));
376 /* Internal routing protocol */
377 rb_define_const(rb_mSockConst, "AF_ROUTE", INTEGER2NUM(AF_ROUTE));
378#endif
379#if defined(PF_ROUTE)
380 /* Internal routing protocol */
381 rb_define_const(rb_cSocket, "PF_ROUTE", INTEGER2NUM(PF_ROUTE));
382 /* Internal routing protocol */
383 rb_define_const(rb_mSockConst, "PF_ROUTE", INTEGER2NUM(PF_ROUTE));
384#endif
385#if defined(AF_LINK)
386 /* Link layer interface */
387 rb_define_const(rb_cSocket, "AF_LINK", INTEGER2NUM(AF_LINK));
388 /* Link layer interface */
389 rb_define_const(rb_mSockConst, "AF_LINK", INTEGER2NUM(AF_LINK));
390#endif
391#if defined(PF_LINK)
392 /* Link layer interface */
393 rb_define_const(rb_cSocket, "PF_LINK", INTEGER2NUM(PF_LINK));
394 /* Link layer interface */
395 rb_define_const(rb_mSockConst, "PF_LINK", INTEGER2NUM(PF_LINK));
396#endif
397#if defined(AF_COIP)
398 /* Connection-oriented IP */
399 rb_define_const(rb_cSocket, "AF_COIP", INTEGER2NUM(AF_COIP));
400 /* Connection-oriented IP */
401 rb_define_const(rb_mSockConst, "AF_COIP", INTEGER2NUM(AF_COIP));
402#endif
403#if defined(PF_COIP)
404 /* Connection-oriented IP */
405 rb_define_const(rb_cSocket, "PF_COIP", INTEGER2NUM(PF_COIP));
406 /* Connection-oriented IP */
407 rb_define_const(rb_mSockConst, "PF_COIP", INTEGER2NUM(PF_COIP));
408#endif
409#if defined(AF_CNT)
410 /* Computer Network Technology */
411 rb_define_const(rb_cSocket, "AF_CNT", INTEGER2NUM(AF_CNT));
412 /* Computer Network Technology */
413 rb_define_const(rb_mSockConst, "AF_CNT", INTEGER2NUM(AF_CNT));
414#endif
415#if defined(PF_CNT)
416 /* Computer Network Technology */
417 rb_define_const(rb_cSocket, "PF_CNT", INTEGER2NUM(PF_CNT));
418 /* Computer Network Technology */
419 rb_define_const(rb_mSockConst, "PF_CNT", INTEGER2NUM(PF_CNT));
420#endif
421#if defined(AF_SIP)
422 /* Simple Internet Protocol */
423 rb_define_const(rb_cSocket, "AF_SIP", INTEGER2NUM(AF_SIP));
424 /* Simple Internet Protocol */
425 rb_define_const(rb_mSockConst, "AF_SIP", INTEGER2NUM(AF_SIP));
426#endif
427#if defined(PF_SIP)
428 /* Simple Internet Protocol */
429 rb_define_const(rb_cSocket, "PF_SIP", INTEGER2NUM(PF_SIP));
430 /* Simple Internet Protocol */
431 rb_define_const(rb_mSockConst, "PF_SIP", INTEGER2NUM(PF_SIP));
432#endif
433#if defined(AF_NDRV)
434 /* Network driver raw access */
435 rb_define_const(rb_cSocket, "AF_NDRV", INTEGER2NUM(AF_NDRV));
436 /* Network driver raw access */
437 rb_define_const(rb_mSockConst, "AF_NDRV", INTEGER2NUM(AF_NDRV));
438#endif
439#if defined(PF_NDRV)
440 /* Network driver raw access */
441 rb_define_const(rb_cSocket, "PF_NDRV", INTEGER2NUM(PF_NDRV));
442 /* Network driver raw access */
443 rb_define_const(rb_mSockConst, "PF_NDRV", INTEGER2NUM(PF_NDRV));
444#endif
445#if defined(AF_ISDN)
446 /* Integrated Services Digital Network */
447 rb_define_const(rb_cSocket, "AF_ISDN", INTEGER2NUM(AF_ISDN));
448 /* Integrated Services Digital Network */
449 rb_define_const(rb_mSockConst, "AF_ISDN", INTEGER2NUM(AF_ISDN));
450#endif
451#if defined(PF_ISDN)
452 /* Integrated Services Digital Network */
453 rb_define_const(rb_cSocket, "PF_ISDN", INTEGER2NUM(PF_ISDN));
454 /* Integrated Services Digital Network */
455 rb_define_const(rb_mSockConst, "PF_ISDN", INTEGER2NUM(PF_ISDN));
456#endif
457#if defined(AF_NATM)
458 /* Native ATM access */
459 rb_define_const(rb_cSocket, "AF_NATM", INTEGER2NUM(AF_NATM));
460 /* Native ATM access */
461 rb_define_const(rb_mSockConst, "AF_NATM", INTEGER2NUM(AF_NATM));
462#endif
463#if defined(PF_NATM)
464 /* Native ATM access */
465 rb_define_const(rb_cSocket, "PF_NATM", INTEGER2NUM(PF_NATM));
466 /* Native ATM access */
467 rb_define_const(rb_mSockConst, "PF_NATM", INTEGER2NUM(PF_NATM));
468#endif
469#if defined(AF_SYSTEM)
470 /* */
471 rb_define_const(rb_cSocket, "AF_SYSTEM", INTEGER2NUM(AF_SYSTEM));
472 /* */
473 rb_define_const(rb_mSockConst, "AF_SYSTEM", INTEGER2NUM(AF_SYSTEM));
474#endif
475#if defined(PF_SYSTEM)
476 /* */
477 rb_define_const(rb_cSocket, "PF_SYSTEM", INTEGER2NUM(PF_SYSTEM));
478 /* */
479 rb_define_const(rb_mSockConst, "PF_SYSTEM", INTEGER2NUM(PF_SYSTEM));
480#endif
481#if defined(AF_NETBIOS)
482 /* NetBIOS */
483 rb_define_const(rb_cSocket, "AF_NETBIOS", INTEGER2NUM(AF_NETBIOS));
484 /* NetBIOS */
485 rb_define_const(rb_mSockConst, "AF_NETBIOS", INTEGER2NUM(AF_NETBIOS));
486#endif
487#if defined(PF_NETBIOS)
488 /* NetBIOS */
489 rb_define_const(rb_cSocket, "PF_NETBIOS", INTEGER2NUM(PF_NETBIOS));
490 /* NetBIOS */
491 rb_define_const(rb_mSockConst, "PF_NETBIOS", INTEGER2NUM(PF_NETBIOS));
492#endif
493#if defined(AF_PPP)
494 /* Point-to-Point Protocol */
495 rb_define_const(rb_cSocket, "AF_PPP", INTEGER2NUM(AF_PPP));
496 /* Point-to-Point Protocol */
497 rb_define_const(rb_mSockConst, "AF_PPP", INTEGER2NUM(AF_PPP));
498#endif
499#if defined(PF_PPP)
500 /* Point-to-Point Protocol */
501 rb_define_const(rb_cSocket, "PF_PPP", INTEGER2NUM(PF_PPP));
502 /* Point-to-Point Protocol */
503 rb_define_const(rb_mSockConst, "PF_PPP", INTEGER2NUM(PF_PPP));
504#endif
505#if defined(AF_ATM)
506 /* Asynchronous Transfer Mode */
507 rb_define_const(rb_cSocket, "AF_ATM", INTEGER2NUM(AF_ATM));
508 /* Asynchronous Transfer Mode */
509 rb_define_const(rb_mSockConst, "AF_ATM", INTEGER2NUM(AF_ATM));
510#endif
511#if defined(PF_ATM)
512 /* Asynchronous Transfer Mode */
513 rb_define_const(rb_cSocket, "PF_ATM", INTEGER2NUM(PF_ATM));
514 /* Asynchronous Transfer Mode */
515 rb_define_const(rb_mSockConst, "PF_ATM", INTEGER2NUM(PF_ATM));
516#endif
517#if defined(AF_NETGRAPH)
518 /* Netgraph sockets */
519 rb_define_const(rb_cSocket, "AF_NETGRAPH", INTEGER2NUM(AF_NETGRAPH));
520 /* Netgraph sockets */
521 rb_define_const(rb_mSockConst, "AF_NETGRAPH", INTEGER2NUM(AF_NETGRAPH));
522#endif
523#if defined(PF_NETGRAPH)
524 /* Netgraph sockets */
525 rb_define_const(rb_cSocket, "PF_NETGRAPH", INTEGER2NUM(PF_NETGRAPH));
526 /* Netgraph sockets */
527 rb_define_const(rb_mSockConst, "PF_NETGRAPH", INTEGER2NUM(PF_NETGRAPH));
528#endif
529#if defined(AF_MAX)
530 /* Maximum address family for this platform */
531 rb_define_const(rb_cSocket, "AF_MAX", INTEGER2NUM(AF_MAX));
532 /* Maximum address family for this platform */
533 rb_define_const(rb_mSockConst, "AF_MAX", INTEGER2NUM(AF_MAX));
534#endif
535#if defined(PF_MAX)
536 /* Maximum address family for this platform */
537 rb_define_const(rb_cSocket, "PF_MAX", INTEGER2NUM(PF_MAX));
538 /* Maximum address family for this platform */
539 rb_define_const(rb_mSockConst, "PF_MAX", INTEGER2NUM(PF_MAX));
540#endif
541#if defined(AF_PACKET)
542 /* Direct link-layer access */
543 rb_define_const(rb_cSocket, "AF_PACKET", INTEGER2NUM(AF_PACKET));
544 /* Direct link-layer access */
545 rb_define_const(rb_mSockConst, "AF_PACKET", INTEGER2NUM(AF_PACKET));
546#endif
547#if defined(PF_PACKET)
548 /* Direct link-layer access */
549 rb_define_const(rb_cSocket, "PF_PACKET", INTEGER2NUM(PF_PACKET));
550 /* Direct link-layer access */
551 rb_define_const(rb_mSockConst, "PF_PACKET", INTEGER2NUM(PF_PACKET));
552#endif
553#if defined(AF_E164)
554 /* CCITT (ITU-T) E.164 recommendation */
555 rb_define_const(rb_cSocket, "AF_E164", INTEGER2NUM(AF_E164));
556 /* CCITT (ITU-T) E.164 recommendation */
557 rb_define_const(rb_mSockConst, "AF_E164", INTEGER2NUM(AF_E164));
558#endif
559#if defined(PF_XTP)
560 /* eXpress Transfer Protocol */
561 rb_define_const(rb_cSocket, "PF_XTP", INTEGER2NUM(PF_XTP));
562 /* eXpress Transfer Protocol */
563 rb_define_const(rb_mSockConst, "PF_XTP", INTEGER2NUM(PF_XTP));
564#endif
565#if defined(PF_RTIP)
566 /* */
567 rb_define_const(rb_cSocket, "PF_RTIP", INTEGER2NUM(PF_RTIP));
568 /* */
569 rb_define_const(rb_mSockConst, "PF_RTIP", INTEGER2NUM(PF_RTIP));
570#endif
571#if defined(PF_PIP)
572 /* */
573 rb_define_const(rb_cSocket, "PF_PIP", INTEGER2NUM(PF_PIP));
574 /* */
575 rb_define_const(rb_mSockConst, "PF_PIP", INTEGER2NUM(PF_PIP));
576#endif
577#if defined(AF_KEY)
578 /* Key management protocol, originally developed for usage with IPsec */
579 rb_define_const(rb_cSocket, "AF_KEY", INTEGER2NUM(AF_KEY));
580 /* Key management protocol, originally developed for usage with IPsec */
581 rb_define_const(rb_mSockConst, "AF_KEY", INTEGER2NUM(AF_KEY));
582#endif
583#if defined(PF_KEY)
584 /* Key management protocol, originally developed for usage with IPsec */
585 rb_define_const(rb_cSocket, "PF_KEY", INTEGER2NUM(PF_KEY));
586 /* Key management protocol, originally developed for usage with IPsec */
587 rb_define_const(rb_mSockConst, "PF_KEY", INTEGER2NUM(PF_KEY));
588#endif
589#if defined(AF_NETLINK)
590 /* Kernel user interface device */
591 rb_define_const(rb_cSocket, "AF_NETLINK", INTEGER2NUM(AF_NETLINK));
592 /* Kernel user interface device */
593 rb_define_const(rb_mSockConst, "AF_NETLINK", INTEGER2NUM(AF_NETLINK));
594#endif
595#if defined(PF_NETLINK)
596 /* Kernel user interface device */
597 rb_define_const(rb_cSocket, "PF_NETLINK", INTEGER2NUM(PF_NETLINK));
598 /* Kernel user interface device */
599 rb_define_const(rb_mSockConst, "PF_NETLINK", INTEGER2NUM(PF_NETLINK));
600#endif
601#if defined(AF_RDS)
602 /* Reliable Datagram Sockets (RDS) protocol */
603 rb_define_const(rb_cSocket, "AF_RDS", INTEGER2NUM(AF_RDS));
604 /* Reliable Datagram Sockets (RDS) protocol */
605 rb_define_const(rb_mSockConst, "AF_RDS", INTEGER2NUM(AF_RDS));
606#endif
607#if defined(PF_RDS)
608 /* Reliable Datagram Sockets (RDS) protocol */
609 rb_define_const(rb_cSocket, "PF_RDS", INTEGER2NUM(PF_RDS));
610 /* Reliable Datagram Sockets (RDS) protocol */
611 rb_define_const(rb_mSockConst, "PF_RDS", INTEGER2NUM(PF_RDS));
612#endif
613#if defined(AF_PPPOX)
614 /* Generic PPP transport layer, for setting up L2 tunnels (L2TP and PPPoE) */
615 rb_define_const(rb_cSocket, "AF_PPPOX", INTEGER2NUM(AF_PPPOX));
616 /* Generic PPP transport layer, for setting up L2 tunnels (L2TP and PPPoE) */
617 rb_define_const(rb_mSockConst, "AF_PPPOX", INTEGER2NUM(AF_PPPOX));
618#endif
619#if defined(PF_PPPOX)
620 /* Generic PPP transport layer, for setting up L2 tunnels (L2TP and PPPoE) */
621 rb_define_const(rb_cSocket, "PF_PPPOX", INTEGER2NUM(PF_PPPOX));
622 /* Generic PPP transport layer, for setting up L2 tunnels (L2TP and PPPoE) */
623 rb_define_const(rb_mSockConst, "PF_PPPOX", INTEGER2NUM(PF_PPPOX));
624#endif
625#if defined(AF_LLC)
626 /* Logical link control (IEEE 802.2 LLC) protocol */
627 rb_define_const(rb_cSocket, "AF_LLC", INTEGER2NUM(AF_LLC));
628 /* Logical link control (IEEE 802.2 LLC) protocol */
629 rb_define_const(rb_mSockConst, "AF_LLC", INTEGER2NUM(AF_LLC));
630#endif
631#if defined(PF_LLC)
632 /* Logical link control (IEEE 802.2 LLC) protocol */
633 rb_define_const(rb_cSocket, "PF_LLC", INTEGER2NUM(PF_LLC));
634 /* Logical link control (IEEE 802.2 LLC) protocol */
635 rb_define_const(rb_mSockConst, "PF_LLC", INTEGER2NUM(PF_LLC));
636#endif
637#if defined(AF_IB)
638 /* InfiniBand native addressing */
639 rb_define_const(rb_cSocket, "AF_IB", INTEGER2NUM(AF_IB));
640 /* InfiniBand native addressing */
641 rb_define_const(rb_mSockConst, "AF_IB", INTEGER2NUM(AF_IB));
642#endif
643#if defined(PF_IB)
644 /* InfiniBand native addressing */
645 rb_define_const(rb_cSocket, "PF_IB", INTEGER2NUM(PF_IB));
646 /* InfiniBand native addressing */
647 rb_define_const(rb_mSockConst, "PF_IB", INTEGER2NUM(PF_IB));
648#endif
649#if defined(AF_MPLS)
650 /* Multiprotocol Label Switching */
651 rb_define_const(rb_cSocket, "AF_MPLS", INTEGER2NUM(AF_MPLS));
652 /* Multiprotocol Label Switching */
653 rb_define_const(rb_mSockConst, "AF_MPLS", INTEGER2NUM(AF_MPLS));
654#endif
655#if defined(PF_MPLS)
656 /* Multiprotocol Label Switching */
657 rb_define_const(rb_cSocket, "PF_MPLS", INTEGER2NUM(PF_MPLS));
658 /* Multiprotocol Label Switching */
659 rb_define_const(rb_mSockConst, "PF_MPLS", INTEGER2NUM(PF_MPLS));
660#endif
661#if defined(AF_CAN)
662 /* Controller Area Network automotive bus protocol */
663 rb_define_const(rb_cSocket, "AF_CAN", INTEGER2NUM(AF_CAN));
664 /* Controller Area Network automotive bus protocol */
665 rb_define_const(rb_mSockConst, "AF_CAN", INTEGER2NUM(AF_CAN));
666#endif
667#if defined(PF_CAN)
668 /* Controller Area Network automotive bus protocol */
669 rb_define_const(rb_cSocket, "PF_CAN", INTEGER2NUM(PF_CAN));
670 /* Controller Area Network automotive bus protocol */
671 rb_define_const(rb_mSockConst, "PF_CAN", INTEGER2NUM(PF_CAN));
672#endif
673#if defined(AF_TIPC)
674 /* TIPC, "cluster domain sockets" protocol */
675 rb_define_const(rb_cSocket, "AF_TIPC", INTEGER2NUM(AF_TIPC));
676 /* TIPC, "cluster domain sockets" protocol */
677 rb_define_const(rb_mSockConst, "AF_TIPC", INTEGER2NUM(AF_TIPC));
678#endif
679#if defined(PF_TIPC)
680 /* TIPC, "cluster domain sockets" protocol */
681 rb_define_const(rb_cSocket, "PF_TIPC", INTEGER2NUM(PF_TIPC));
682 /* TIPC, "cluster domain sockets" protocol */
683 rb_define_const(rb_mSockConst, "PF_TIPC", INTEGER2NUM(PF_TIPC));
684#endif
685#if defined(AF_BLUETOOTH)
686 /* Bluetooth low-level socket protocol */
687 rb_define_const(rb_cSocket, "AF_BLUETOOTH", INTEGER2NUM(AF_BLUETOOTH));
688 /* Bluetooth low-level socket protocol */
689 rb_define_const(rb_mSockConst, "AF_BLUETOOTH", INTEGER2NUM(AF_BLUETOOTH));
690#endif
691#if defined(PF_BLUETOOTH)
692 /* Bluetooth low-level socket protocol */
693 rb_define_const(rb_cSocket, "PF_BLUETOOTH", INTEGER2NUM(PF_BLUETOOTH));
694 /* Bluetooth low-level socket protocol */
695 rb_define_const(rb_mSockConst, "PF_BLUETOOTH", INTEGER2NUM(PF_BLUETOOTH));
696#endif
697#if defined(AF_ALG)
698 /* Interface to kernel crypto API */
699 rb_define_const(rb_cSocket, "AF_ALG", INTEGER2NUM(AF_ALG));
700 /* Interface to kernel crypto API */
701 rb_define_const(rb_mSockConst, "AF_ALG", INTEGER2NUM(AF_ALG));
702#endif
703#if defined(PF_ALG)
704 /* Interface to kernel crypto API */
705 rb_define_const(rb_cSocket, "PF_ALG", INTEGER2NUM(PF_ALG));
706 /* Interface to kernel crypto API */
707 rb_define_const(rb_mSockConst, "PF_ALG", INTEGER2NUM(PF_ALG));
708#endif
709#if defined(AF_VSOCK)
710 /* VSOCK (originally "VMWare VSockets") protocol for hypervisor-guest communication */
711 rb_define_const(rb_cSocket, "AF_VSOCK", INTEGER2NUM(AF_VSOCK));
712 /* VSOCK (originally "VMWare VSockets") protocol for hypervisor-guest communication */
713 rb_define_const(rb_mSockConst, "AF_VSOCK", INTEGER2NUM(AF_VSOCK));
714#endif
715#if defined(PF_VSOCK)
716 /* VSOCK (originally "VMWare VSockets") protocol for hypervisor-guest communication */
717 rb_define_const(rb_cSocket, "PF_VSOCK", INTEGER2NUM(PF_VSOCK));
718 /* VSOCK (originally "VMWare VSockets") protocol for hypervisor-guest communication */
719 rb_define_const(rb_mSockConst, "PF_VSOCK", INTEGER2NUM(PF_VSOCK));
720#endif
721#if defined(AF_KCM)
722 /* KCM (kernel connection multiplexor) interface */
723 rb_define_const(rb_cSocket, "AF_KCM", INTEGER2NUM(AF_KCM));
724 /* KCM (kernel connection multiplexor) interface */
725 rb_define_const(rb_mSockConst, "AF_KCM", INTEGER2NUM(AF_KCM));
726#endif
727#if defined(PF_KCM)
728 /* KCM (kernel connection multiplexor) interface */
729 rb_define_const(rb_cSocket, "PF_KCM", INTEGER2NUM(PF_KCM));
730 /* KCM (kernel connection multiplexor) interface */
731 rb_define_const(rb_mSockConst, "PF_KCM", INTEGER2NUM(PF_KCM));
732#endif
733#if defined(AF_XDP)
734 /* XDP (express data path) interface */
735 rb_define_const(rb_cSocket, "AF_XDP", INTEGER2NUM(AF_XDP));
736 /* XDP (express data path) interface */
737 rb_define_const(rb_mSockConst, "AF_XDP", INTEGER2NUM(AF_XDP));
738#endif
739#if defined(PF_XDP)
740 /* XDP (express data path) interface */
741 rb_define_const(rb_cSocket, "PF_XDP", INTEGER2NUM(PF_XDP));
742 /* XDP (express data path) interface */
743 rb_define_const(rb_mSockConst, "PF_XDP", INTEGER2NUM(PF_XDP));
744#endif
745#if defined(MSG_OOB)
746 /* Process out-of-band data */
747 rb_define_const(rb_cSocket, "MSG_OOB", INTEGER2NUM(MSG_OOB));
748 /* Process out-of-band data */
749 rb_define_const(rb_mSockConst, "MSG_OOB", INTEGER2NUM(MSG_OOB));
750#endif
751#if defined(MSG_PEEK)
752 /* Peek at incoming message */
753 rb_define_const(rb_cSocket, "MSG_PEEK", INTEGER2NUM(MSG_PEEK));
754 /* Peek at incoming message */
755 rb_define_const(rb_mSockConst, "MSG_PEEK", INTEGER2NUM(MSG_PEEK));
756#endif
757#if defined(MSG_DONTROUTE)
758 /* Send without using the routing tables */
759 rb_define_const(rb_cSocket, "MSG_DONTROUTE", INTEGER2NUM(MSG_DONTROUTE));
760 /* Send without using the routing tables */
761 rb_define_const(rb_mSockConst, "MSG_DONTROUTE", INTEGER2NUM(MSG_DONTROUTE));
762#endif
763#if defined(MSG_EOR)
764 /* Data completes record */
765 rb_define_const(rb_cSocket, "MSG_EOR", INTEGER2NUM(MSG_EOR));
766 /* Data completes record */
767 rb_define_const(rb_mSockConst, "MSG_EOR", INTEGER2NUM(MSG_EOR));
768#endif
769#if defined(MSG_TRUNC)
770 /* Data discarded before delivery */
771 rb_define_const(rb_cSocket, "MSG_TRUNC", INTEGER2NUM(MSG_TRUNC));
772 /* Data discarded before delivery */
773 rb_define_const(rb_mSockConst, "MSG_TRUNC", INTEGER2NUM(MSG_TRUNC));
774#endif
775#if defined(MSG_CTRUNC)
776 /* Control data lost before delivery */
777 rb_define_const(rb_cSocket, "MSG_CTRUNC", INTEGER2NUM(MSG_CTRUNC));
778 /* Control data lost before delivery */
779 rb_define_const(rb_mSockConst, "MSG_CTRUNC", INTEGER2NUM(MSG_CTRUNC));
780#endif
781#if defined(MSG_WAITALL)
782 /* Wait for full request or error */
783 rb_define_const(rb_cSocket, "MSG_WAITALL", INTEGER2NUM(MSG_WAITALL));
784 /* Wait for full request or error */
785 rb_define_const(rb_mSockConst, "MSG_WAITALL", INTEGER2NUM(MSG_WAITALL));
786#endif
787#if defined(MSG_DONTWAIT)
788 /* This message should be non-blocking */
789 rb_define_const(rb_cSocket, "MSG_DONTWAIT", INTEGER2NUM(MSG_DONTWAIT));
790 /* This message should be non-blocking */
791 rb_define_const(rb_mSockConst, "MSG_DONTWAIT", INTEGER2NUM(MSG_DONTWAIT));
792#endif
793#if defined(MSG_EOF)
794 /* Data completes connection */
795 rb_define_const(rb_cSocket, "MSG_EOF", INTEGER2NUM(MSG_EOF));
796 /* Data completes connection */
797 rb_define_const(rb_mSockConst, "MSG_EOF", INTEGER2NUM(MSG_EOF));
798#endif
799#if defined(MSG_FLUSH)
800 /* Start of a hold sequence. Dumps to so_temp */
801 rb_define_const(rb_cSocket, "MSG_FLUSH", INTEGER2NUM(MSG_FLUSH));
802 /* Start of a hold sequence. Dumps to so_temp */
803 rb_define_const(rb_mSockConst, "MSG_FLUSH", INTEGER2NUM(MSG_FLUSH));
804#endif
805#if defined(MSG_HOLD)
806 /* Hold fragment in so_temp */
807 rb_define_const(rb_cSocket, "MSG_HOLD", INTEGER2NUM(MSG_HOLD));
808 /* Hold fragment in so_temp */
809 rb_define_const(rb_mSockConst, "MSG_HOLD", INTEGER2NUM(MSG_HOLD));
810#endif
811#if defined(MSG_SEND)
812 /* Send the packet in so_temp */
813 rb_define_const(rb_cSocket, "MSG_SEND", INTEGER2NUM(MSG_SEND));
814 /* Send the packet in so_temp */
815 rb_define_const(rb_mSockConst, "MSG_SEND", INTEGER2NUM(MSG_SEND));
816#endif
817#if defined(MSG_HAVEMORE)
818 /* Data ready to be read */
819 rb_define_const(rb_cSocket, "MSG_HAVEMORE", INTEGER2NUM(MSG_HAVEMORE));
820 /* Data ready to be read */
821 rb_define_const(rb_mSockConst, "MSG_HAVEMORE", INTEGER2NUM(MSG_HAVEMORE));
822#endif
823#if defined(MSG_RCVMORE)
824 /* Data remains in the current packet */
825 rb_define_const(rb_cSocket, "MSG_RCVMORE", INTEGER2NUM(MSG_RCVMORE));
826 /* Data remains in the current packet */
827 rb_define_const(rb_mSockConst, "MSG_RCVMORE", INTEGER2NUM(MSG_RCVMORE));
828#endif
829#if defined(MSG_COMPAT)
830 /* End of record */
831 rb_define_const(rb_cSocket, "MSG_COMPAT", INTEGER2NUM(MSG_COMPAT));
832 /* End of record */
833 rb_define_const(rb_mSockConst, "MSG_COMPAT", INTEGER2NUM(MSG_COMPAT));
834#endif
835#if defined(MSG_PROXY)
836 /* Wait for full request */
837 rb_define_const(rb_cSocket, "MSG_PROXY", INTEGER2NUM(MSG_PROXY));
838 /* Wait for full request */
839 rb_define_const(rb_mSockConst, "MSG_PROXY", INTEGER2NUM(MSG_PROXY));
840#endif
841#if defined(MSG_FIN)
842 /* */
843 rb_define_const(rb_cSocket, "MSG_FIN", INTEGER2NUM(MSG_FIN));
844 /* */
845 rb_define_const(rb_mSockConst, "MSG_FIN", INTEGER2NUM(MSG_FIN));
846#endif
847#if defined(MSG_SYN)
848 /* */
849 rb_define_const(rb_cSocket, "MSG_SYN", INTEGER2NUM(MSG_SYN));
850 /* */
851 rb_define_const(rb_mSockConst, "MSG_SYN", INTEGER2NUM(MSG_SYN));
852#endif
853#if defined(MSG_CONFIRM)
854 /* Confirm path validity */
855 rb_define_const(rb_cSocket, "MSG_CONFIRM", INTEGER2NUM(MSG_CONFIRM));
856 /* Confirm path validity */
857 rb_define_const(rb_mSockConst, "MSG_CONFIRM", INTEGER2NUM(MSG_CONFIRM));
858#endif
859#if defined(MSG_RST)
860 /* */
861 rb_define_const(rb_cSocket, "MSG_RST", INTEGER2NUM(MSG_RST));
862 /* */
863 rb_define_const(rb_mSockConst, "MSG_RST", INTEGER2NUM(MSG_RST));
864#endif
865#if defined(MSG_ERRQUEUE)
866 /* Fetch message from error queue */
867 rb_define_const(rb_cSocket, "MSG_ERRQUEUE", INTEGER2NUM(MSG_ERRQUEUE));
868 /* Fetch message from error queue */
869 rb_define_const(rb_mSockConst, "MSG_ERRQUEUE", INTEGER2NUM(MSG_ERRQUEUE));
870#endif
871#if defined(MSG_NOSIGNAL)
872 /* Do not generate SIGPIPE */
873 rb_define_const(rb_cSocket, "MSG_NOSIGNAL", INTEGER2NUM(MSG_NOSIGNAL));
874 /* Do not generate SIGPIPE */
875 rb_define_const(rb_mSockConst, "MSG_NOSIGNAL", INTEGER2NUM(MSG_NOSIGNAL));
876#endif
877#if defined(MSG_MORE)
878 /* Sender will send more */
879 rb_define_const(rb_cSocket, "MSG_MORE", INTEGER2NUM(MSG_MORE));
880 /* Sender will send more */
881 rb_define_const(rb_mSockConst, "MSG_MORE", INTEGER2NUM(MSG_MORE));
882#endif
883#if defined(MSG_FASTOPEN)
884 /* Reduce step of the handshake process */
885 rb_define_const(rb_cSocket, "MSG_FASTOPEN", INTEGER2NUM(MSG_FASTOPEN));
886 /* Reduce step of the handshake process */
887 rb_define_const(rb_mSockConst, "MSG_FASTOPEN", INTEGER2NUM(MSG_FASTOPEN));
888#endif
889#if defined(SOL_SOCKET)
890 /* Socket-level options */
891 rb_define_const(rb_cSocket, "SOL_SOCKET", INTEGER2NUM(SOL_SOCKET));
892 /* Socket-level options */
893 rb_define_const(rb_mSockConst, "SOL_SOCKET", INTEGER2NUM(SOL_SOCKET));
894#endif
895#if defined(SOL_IP)
896 /* IP socket options */
897 rb_define_const(rb_cSocket, "SOL_IP", INTEGER2NUM(SOL_IP));
898 /* IP socket options */
899 rb_define_const(rb_mSockConst, "SOL_IP", INTEGER2NUM(SOL_IP));
900#endif
901#if defined(SOL_IPX)
902 /* IPX socket options */
903 rb_define_const(rb_cSocket, "SOL_IPX", INTEGER2NUM(SOL_IPX));
904 /* IPX socket options */
905 rb_define_const(rb_mSockConst, "SOL_IPX", INTEGER2NUM(SOL_IPX));
906#endif
907#if defined(SOL_AX25)
908 /* AX.25 socket options */
909 rb_define_const(rb_cSocket, "SOL_AX25", INTEGER2NUM(SOL_AX25));
910 /* AX.25 socket options */
911 rb_define_const(rb_mSockConst, "SOL_AX25", INTEGER2NUM(SOL_AX25));
912#endif
913#if defined(SOL_ATALK)
914 /* AppleTalk socket options */
915 rb_define_const(rb_cSocket, "SOL_ATALK", INTEGER2NUM(SOL_ATALK));
916 /* AppleTalk socket options */
917 rb_define_const(rb_mSockConst, "SOL_ATALK", INTEGER2NUM(SOL_ATALK));
918#endif
919#if defined(SOL_TCP)
920 /* TCP socket options */
921 rb_define_const(rb_cSocket, "SOL_TCP", INTEGER2NUM(SOL_TCP));
922 /* TCP socket options */
923 rb_define_const(rb_mSockConst, "SOL_TCP", INTEGER2NUM(SOL_TCP));
924#endif
925#if defined(SOL_UDP)
926 /* UDP socket options */
927 rb_define_const(rb_cSocket, "SOL_UDP", INTEGER2NUM(SOL_UDP));
928 /* UDP socket options */
929 rb_define_const(rb_mSockConst, "SOL_UDP", INTEGER2NUM(SOL_UDP));
930#endif
931#if defined(IPPROTO_IP)
932 /* Dummy protocol for IP */
933 rb_define_const(rb_cSocket, "IPPROTO_IP", INTEGER2NUM(IPPROTO_IP));
934 /* Dummy protocol for IP */
935 rb_define_const(rb_mSockConst, "IPPROTO_IP", INTEGER2NUM(IPPROTO_IP));
936#endif
937#if defined(IPPROTO_ICMP)
938 /* Control message protocol */
939 rb_define_const(rb_cSocket, "IPPROTO_ICMP", INTEGER2NUM(IPPROTO_ICMP));
940 /* Control message protocol */
941 rb_define_const(rb_mSockConst, "IPPROTO_ICMP", INTEGER2NUM(IPPROTO_ICMP));
942#endif
943#if defined(IPPROTO_IGMP)
944 /* Group Management Protocol */
945 rb_define_const(rb_cSocket, "IPPROTO_IGMP", INTEGER2NUM(IPPROTO_IGMP));
946 /* Group Management Protocol */
947 rb_define_const(rb_mSockConst, "IPPROTO_IGMP", INTEGER2NUM(IPPROTO_IGMP));
948#endif
949#if defined(IPPROTO_GGP)
950 /* Gateway to Gateway Protocol */
951 rb_define_const(rb_cSocket, "IPPROTO_GGP", INTEGER2NUM(IPPROTO_GGP));
952 /* Gateway to Gateway Protocol */
953 rb_define_const(rb_mSockConst, "IPPROTO_GGP", INTEGER2NUM(IPPROTO_GGP));
954#endif
955#if defined(IPPROTO_TCP)
956 /* TCP */
957 rb_define_const(rb_cSocket, "IPPROTO_TCP", INTEGER2NUM(IPPROTO_TCP));
958 /* TCP */
959 rb_define_const(rb_mSockConst, "IPPROTO_TCP", INTEGER2NUM(IPPROTO_TCP));
960#endif
961#if defined(IPPROTO_EGP)
962 /* Exterior Gateway Protocol */
963 rb_define_const(rb_cSocket, "IPPROTO_EGP", INTEGER2NUM(IPPROTO_EGP));
964 /* Exterior Gateway Protocol */
965 rb_define_const(rb_mSockConst, "IPPROTO_EGP", INTEGER2NUM(IPPROTO_EGP));
966#endif
967#if defined(IPPROTO_PUP)
968 /* PARC Universal Packet protocol */
969 rb_define_const(rb_cSocket, "IPPROTO_PUP", INTEGER2NUM(IPPROTO_PUP));
970 /* PARC Universal Packet protocol */
971 rb_define_const(rb_mSockConst, "IPPROTO_PUP", INTEGER2NUM(IPPROTO_PUP));
972#endif
973#if defined(IPPROTO_UDP)
974 /* UDP */
975 rb_define_const(rb_cSocket, "IPPROTO_UDP", INTEGER2NUM(IPPROTO_UDP));
976 /* UDP */
977 rb_define_const(rb_mSockConst, "IPPROTO_UDP", INTEGER2NUM(IPPROTO_UDP));
978#endif
979#if defined(IPPROTO_IDP)
980 /* XNS IDP */
981 rb_define_const(rb_cSocket, "IPPROTO_IDP", INTEGER2NUM(IPPROTO_IDP));
982 /* XNS IDP */
983 rb_define_const(rb_mSockConst, "IPPROTO_IDP", INTEGER2NUM(IPPROTO_IDP));
984#endif
985#if defined(IPPROTO_HELLO)
986 /* "hello" routing protocol */
987 rb_define_const(rb_cSocket, "IPPROTO_HELLO", INTEGER2NUM(IPPROTO_HELLO));
988 /* "hello" routing protocol */
989 rb_define_const(rb_mSockConst, "IPPROTO_HELLO", INTEGER2NUM(IPPROTO_HELLO));
990#endif
991#if defined(IPPROTO_ND)
992 /* Sun net disk protocol */
993 rb_define_const(rb_cSocket, "IPPROTO_ND", INTEGER2NUM(IPPROTO_ND));
994 /* Sun net disk protocol */
995 rb_define_const(rb_mSockConst, "IPPROTO_ND", INTEGER2NUM(IPPROTO_ND));
996#endif
997#if defined(IPPROTO_TP)
998 /* ISO transport protocol class 4 */
999 rb_define_const(rb_cSocket, "IPPROTO_TP", INTEGER2NUM(IPPROTO_TP));
1000 /* ISO transport protocol class 4 */
1001 rb_define_const(rb_mSockConst, "IPPROTO_TP", INTEGER2NUM(IPPROTO_TP));
1002#endif
1003#if defined(IPPROTO_XTP)
1004 /* Xpress Transport Protocol */
1005 rb_define_const(rb_cSocket, "IPPROTO_XTP", INTEGER2NUM(IPPROTO_XTP));
1006 /* Xpress Transport Protocol */
1007 rb_define_const(rb_mSockConst, "IPPROTO_XTP", INTEGER2NUM(IPPROTO_XTP));
1008#endif
1009#if defined(IPPROTO_EON)
1010 /* ISO cnlp */
1011 rb_define_const(rb_cSocket, "IPPROTO_EON", INTEGER2NUM(IPPROTO_EON));
1012 /* ISO cnlp */
1013 rb_define_const(rb_mSockConst, "IPPROTO_EON", INTEGER2NUM(IPPROTO_EON));
1014#endif
1015#if defined(IPPROTO_BIP)
1016 /* */
1017 rb_define_const(rb_cSocket, "IPPROTO_BIP", INTEGER2NUM(IPPROTO_BIP));
1018 /* */
1019 rb_define_const(rb_mSockConst, "IPPROTO_BIP", INTEGER2NUM(IPPROTO_BIP));
1020#endif
1021#if defined(IPPROTO_AH)
1022 /* IP6 auth header */
1023 rb_define_const(rb_cSocket, "IPPROTO_AH", INTEGER2NUM(IPPROTO_AH));
1024 /* IP6 auth header */
1025 rb_define_const(rb_mSockConst, "IPPROTO_AH", INTEGER2NUM(IPPROTO_AH));
1026#endif
1027#if defined(IPPROTO_DSTOPTS)
1028 /* IP6 destination option */
1029 rb_define_const(rb_cSocket, "IPPROTO_DSTOPTS", INTEGER2NUM(IPPROTO_DSTOPTS));
1030 /* IP6 destination option */
1031 rb_define_const(rb_mSockConst, "IPPROTO_DSTOPTS", INTEGER2NUM(IPPROTO_DSTOPTS));
1032#endif
1033#if defined(IPPROTO_ESP)
1034 /* IP6 Encapsulated Security Payload */
1035 rb_define_const(rb_cSocket, "IPPROTO_ESP", INTEGER2NUM(IPPROTO_ESP));
1036 /* IP6 Encapsulated Security Payload */
1037 rb_define_const(rb_mSockConst, "IPPROTO_ESP", INTEGER2NUM(IPPROTO_ESP));
1038#endif
1039#if defined(IPPROTO_FRAGMENT)
1040 /* IP6 fragmentation header */
1041 rb_define_const(rb_cSocket, "IPPROTO_FRAGMENT", INTEGER2NUM(IPPROTO_FRAGMENT));
1042 /* IP6 fragmentation header */
1043 rb_define_const(rb_mSockConst, "IPPROTO_FRAGMENT", INTEGER2NUM(IPPROTO_FRAGMENT));
1044#endif
1045#if defined(IPPROTO_HOPOPTS)
1046 /* IP6 hop-by-hop options */
1047 rb_define_const(rb_cSocket, "IPPROTO_HOPOPTS", INTEGER2NUM(IPPROTO_HOPOPTS));
1048 /* IP6 hop-by-hop options */
1049 rb_define_const(rb_mSockConst, "IPPROTO_HOPOPTS", INTEGER2NUM(IPPROTO_HOPOPTS));
1050#endif
1051#if defined(IPPROTO_ICMPV6)
1052 /* ICMP6 */
1053 rb_define_const(rb_cSocket, "IPPROTO_ICMPV6", INTEGER2NUM(IPPROTO_ICMPV6));
1054 /* ICMP6 */
1055 rb_define_const(rb_mSockConst, "IPPROTO_ICMPV6", INTEGER2NUM(IPPROTO_ICMPV6));
1056#endif
1057#if defined(IPPROTO_IPV6)
1058 /* IP6 header */
1059 rb_define_const(rb_cSocket, "IPPROTO_IPV6", INTEGER2NUM(IPPROTO_IPV6));
1060 /* IP6 header */
1061 rb_define_const(rb_mSockConst, "IPPROTO_IPV6", INTEGER2NUM(IPPROTO_IPV6));
1062#endif
1063#if defined(IPPROTO_NONE)
1064 /* IP6 no next header */
1065 rb_define_const(rb_cSocket, "IPPROTO_NONE", INTEGER2NUM(IPPROTO_NONE));
1066 /* IP6 no next header */
1067 rb_define_const(rb_mSockConst, "IPPROTO_NONE", INTEGER2NUM(IPPROTO_NONE));
1068#endif
1069#if defined(IPPROTO_ROUTING)
1070 /* IP6 routing header */
1071 rb_define_const(rb_cSocket, "IPPROTO_ROUTING", INTEGER2NUM(IPPROTO_ROUTING));
1072 /* IP6 routing header */
1073 rb_define_const(rb_mSockConst, "IPPROTO_ROUTING", INTEGER2NUM(IPPROTO_ROUTING));
1074#endif
1075#if defined(IPPROTO_RAW)
1076 /* Raw IP packet */
1077 rb_define_const(rb_cSocket, "IPPROTO_RAW", INTEGER2NUM(IPPROTO_RAW));
1078 /* Raw IP packet */
1079 rb_define_const(rb_mSockConst, "IPPROTO_RAW", INTEGER2NUM(IPPROTO_RAW));
1080#endif
1081#if defined(IPPROTO_MAX)
1082 /* Maximum IPPROTO constant */
1083 rb_define_const(rb_cSocket, "IPPROTO_MAX", INTEGER2NUM(IPPROTO_MAX));
1084 /* Maximum IPPROTO constant */
1085 rb_define_const(rb_mSockConst, "IPPROTO_MAX", INTEGER2NUM(IPPROTO_MAX));
1086#endif
1087#if defined(IPPORT_RESERVED)
1088 /* Default minimum address for bind or connect */
1089 rb_define_const(rb_cSocket, "IPPORT_RESERVED", INTEGER2NUM(IPPORT_RESERVED));
1090 /* Default minimum address for bind or connect */
1091 rb_define_const(rb_mSockConst, "IPPORT_RESERVED", INTEGER2NUM(IPPORT_RESERVED));
1092#endif
1093#if defined(IPPORT_USERRESERVED)
1094 /* Default maximum address for bind or connect */
1095 rb_define_const(rb_cSocket, "IPPORT_USERRESERVED", INTEGER2NUM(IPPORT_USERRESERVED));
1096 /* Default maximum address for bind or connect */
1097 rb_define_const(rb_mSockConst, "IPPORT_USERRESERVED", INTEGER2NUM(IPPORT_USERRESERVED));
1098#endif
1099#if defined(INADDR_ANY)
1100 /* A socket bound to INADDR_ANY receives packets from all interfaces and sends from the default IP address */
1101 rb_define_const(rb_cSocket, "INADDR_ANY", INTEGER2NUM(INADDR_ANY));
1102 /* A socket bound to INADDR_ANY receives packets from all interfaces and sends from the default IP address */
1103 rb_define_const(rb_mSockConst, "INADDR_ANY", INTEGER2NUM(INADDR_ANY));
1104#endif
1105#if defined(INADDR_BROADCAST)
1106 /* The network broadcast address */
1107 rb_define_const(rb_cSocket, "INADDR_BROADCAST", INTEGER2NUM(INADDR_BROADCAST));
1108 /* The network broadcast address */
1109 rb_define_const(rb_mSockConst, "INADDR_BROADCAST", INTEGER2NUM(INADDR_BROADCAST));
1110#endif
1111#if defined(INADDR_LOOPBACK)
1112 /* The loopback address */
1113 rb_define_const(rb_cSocket, "INADDR_LOOPBACK", INTEGER2NUM(INADDR_LOOPBACK));
1114 /* The loopback address */
1115 rb_define_const(rb_mSockConst, "INADDR_LOOPBACK", INTEGER2NUM(INADDR_LOOPBACK));
1116#endif
1117#if defined(INADDR_UNSPEC_GROUP)
1118 /* The reserved multicast group */
1119 rb_define_const(rb_cSocket, "INADDR_UNSPEC_GROUP", INTEGER2NUM(INADDR_UNSPEC_GROUP));
1120 /* The reserved multicast group */
1121 rb_define_const(rb_mSockConst, "INADDR_UNSPEC_GROUP", INTEGER2NUM(INADDR_UNSPEC_GROUP));
1122#endif
1123#if defined(INADDR_ALLHOSTS_GROUP)
1124 /* Multicast group for all systems on this subset */
1125 rb_define_const(rb_cSocket, "INADDR_ALLHOSTS_GROUP", INTEGER2NUM(INADDR_ALLHOSTS_GROUP));
1126 /* Multicast group for all systems on this subset */
1127 rb_define_const(rb_mSockConst, "INADDR_ALLHOSTS_GROUP", INTEGER2NUM(INADDR_ALLHOSTS_GROUP));
1128#endif
1129#if defined(INADDR_MAX_LOCAL_GROUP)
1130 /* The last local network multicast group */
1131 rb_define_const(rb_cSocket, "INADDR_MAX_LOCAL_GROUP", INTEGER2NUM(INADDR_MAX_LOCAL_GROUP));
1132 /* The last local network multicast group */
1133 rb_define_const(rb_mSockConst, "INADDR_MAX_LOCAL_GROUP", INTEGER2NUM(INADDR_MAX_LOCAL_GROUP));
1134#endif
1135#if defined(INADDR_NONE)
1136 /* A bitmask for matching no valid IP address */
1137 rb_define_const(rb_cSocket, "INADDR_NONE", INTEGER2NUM(INADDR_NONE));
1138 /* A bitmask for matching no valid IP address */
1139 rb_define_const(rb_mSockConst, "INADDR_NONE", INTEGER2NUM(INADDR_NONE));
1140#endif
1141#if defined(IP_OPTIONS)
1142 /* IP options to be included in packets */
1143 rb_define_const(rb_cSocket, "IP_OPTIONS", INTEGER2NUM(IP_OPTIONS));
1144 /* IP options to be included in packets */
1145 rb_define_const(rb_mSockConst, "IP_OPTIONS", INTEGER2NUM(IP_OPTIONS));
1146#endif
1147#if defined(IP_HDRINCL)
1148 /* Header is included with data */
1149 rb_define_const(rb_cSocket, "IP_HDRINCL", INTEGER2NUM(IP_HDRINCL));
1150 /* Header is included with data */
1151 rb_define_const(rb_mSockConst, "IP_HDRINCL", INTEGER2NUM(IP_HDRINCL));
1152#endif
1153#if defined(IP_TOS)
1154 /* IP type-of-service */
1155 rb_define_const(rb_cSocket, "IP_TOS", INTEGER2NUM(IP_TOS));
1156 /* IP type-of-service */
1157 rb_define_const(rb_mSockConst, "IP_TOS", INTEGER2NUM(IP_TOS));
1158#endif
1159#if defined(IP_TTL)
1160 /* IP time-to-live */
1161 rb_define_const(rb_cSocket, "IP_TTL", INTEGER2NUM(IP_TTL));
1162 /* IP time-to-live */
1163 rb_define_const(rb_mSockConst, "IP_TTL", INTEGER2NUM(IP_TTL));
1164#endif
1165#if defined(IP_RECVOPTS)
1166 /* Receive all IP options with datagram */
1167 rb_define_const(rb_cSocket, "IP_RECVOPTS", INTEGER2NUM(IP_RECVOPTS));
1168 /* Receive all IP options with datagram */
1169 rb_define_const(rb_mSockConst, "IP_RECVOPTS", INTEGER2NUM(IP_RECVOPTS));
1170#endif
1171#if defined(IP_RECVRETOPTS)
1172 /* Receive all IP options for response */
1173 rb_define_const(rb_cSocket, "IP_RECVRETOPTS", INTEGER2NUM(IP_RECVRETOPTS));
1174 /* Receive all IP options for response */
1175 rb_define_const(rb_mSockConst, "IP_RECVRETOPTS", INTEGER2NUM(IP_RECVRETOPTS));
1176#endif
1177#if defined(IP_RECVDSTADDR)
1178 /* Receive IP destination address with datagram */
1179 rb_define_const(rb_cSocket, "IP_RECVDSTADDR", INTEGER2NUM(IP_RECVDSTADDR));
1180 /* Receive IP destination address with datagram */
1181 rb_define_const(rb_mSockConst, "IP_RECVDSTADDR", INTEGER2NUM(IP_RECVDSTADDR));
1182#endif
1183#if defined(IP_RETOPTS)
1184 /* IP options to be included in datagrams */
1185 rb_define_const(rb_cSocket, "IP_RETOPTS", INTEGER2NUM(IP_RETOPTS));
1186 /* IP options to be included in datagrams */
1187 rb_define_const(rb_mSockConst, "IP_RETOPTS", INTEGER2NUM(IP_RETOPTS));
1188#endif
1189#if defined(IP_MINTTL)
1190 /* Minimum TTL allowed for received packets */
1191 rb_define_const(rb_cSocket, "IP_MINTTL", INTEGER2NUM(IP_MINTTL));
1192 /* Minimum TTL allowed for received packets */
1193 rb_define_const(rb_mSockConst, "IP_MINTTL", INTEGER2NUM(IP_MINTTL));
1194#endif
1195#if defined(IP_DONTFRAG)
1196 /* Don't fragment packets */
1197 rb_define_const(rb_cSocket, "IP_DONTFRAG", INTEGER2NUM(IP_DONTFRAG));
1198 /* Don't fragment packets */
1199 rb_define_const(rb_mSockConst, "IP_DONTFRAG", INTEGER2NUM(IP_DONTFRAG));
1200#endif
1201#if defined(IP_SENDSRCADDR)
1202 /* Source address for outgoing UDP datagrams */
1203 rb_define_const(rb_cSocket, "IP_SENDSRCADDR", INTEGER2NUM(IP_SENDSRCADDR));
1204 /* Source address for outgoing UDP datagrams */
1205 rb_define_const(rb_mSockConst, "IP_SENDSRCADDR", INTEGER2NUM(IP_SENDSRCADDR));
1206#endif
1207#if defined(IP_ONESBCAST)
1208 /* Force outgoing broadcast datagrams to have the undirected broadcast address */
1209 rb_define_const(rb_cSocket, "IP_ONESBCAST", INTEGER2NUM(IP_ONESBCAST));
1210 /* Force outgoing broadcast datagrams to have the undirected broadcast address */
1211 rb_define_const(rb_mSockConst, "IP_ONESBCAST", INTEGER2NUM(IP_ONESBCAST));
1212#endif
1213#if defined(IP_RECVTTL)
1214 /* Receive IP TTL with datagrams */
1215 rb_define_const(rb_cSocket, "IP_RECVTTL", INTEGER2NUM(IP_RECVTTL));
1216 /* Receive IP TTL with datagrams */
1217 rb_define_const(rb_mSockConst, "IP_RECVTTL", INTEGER2NUM(IP_RECVTTL));
1218#endif
1219#if defined(IP_RECVIF)
1220 /* Receive interface information with datagrams */
1221 rb_define_const(rb_cSocket, "IP_RECVIF", INTEGER2NUM(IP_RECVIF));
1222 /* Receive interface information with datagrams */
1223 rb_define_const(rb_mSockConst, "IP_RECVIF", INTEGER2NUM(IP_RECVIF));
1224#endif
1225#if defined(IP_RECVSLLA)
1226 /* Receive link-layer address with datagrams */
1227 rb_define_const(rb_cSocket, "IP_RECVSLLA", INTEGER2NUM(IP_RECVSLLA));
1228 /* Receive link-layer address with datagrams */
1229 rb_define_const(rb_mSockConst, "IP_RECVSLLA", INTEGER2NUM(IP_RECVSLLA));
1230#endif
1231#if defined(IP_PORTRANGE)
1232 /* Set the port range for sockets with unspecified port numbers */
1233 rb_define_const(rb_cSocket, "IP_PORTRANGE", INTEGER2NUM(IP_PORTRANGE));
1234 /* Set the port range for sockets with unspecified port numbers */
1235 rb_define_const(rb_mSockConst, "IP_PORTRANGE", INTEGER2NUM(IP_PORTRANGE));
1236#endif
1237#if defined(IP_MULTICAST_IF)
1238 /* IP multicast interface */
1239 rb_define_const(rb_cSocket, "IP_MULTICAST_IF", INTEGER2NUM(IP_MULTICAST_IF));
1240 /* IP multicast interface */
1241 rb_define_const(rb_mSockConst, "IP_MULTICAST_IF", INTEGER2NUM(IP_MULTICAST_IF));
1242#endif
1243#if defined(IP_MULTICAST_TTL)
1244 /* IP multicast TTL */
1245 rb_define_const(rb_cSocket, "IP_MULTICAST_TTL", INTEGER2NUM(IP_MULTICAST_TTL));
1246 /* IP multicast TTL */
1247 rb_define_const(rb_mSockConst, "IP_MULTICAST_TTL", INTEGER2NUM(IP_MULTICAST_TTL));
1248#endif
1249#if defined(IP_MULTICAST_LOOP)
1250 /* IP multicast loopback */
1251 rb_define_const(rb_cSocket, "IP_MULTICAST_LOOP", INTEGER2NUM(IP_MULTICAST_LOOP));
1252 /* IP multicast loopback */
1253 rb_define_const(rb_mSockConst, "IP_MULTICAST_LOOP", INTEGER2NUM(IP_MULTICAST_LOOP));
1254#endif
1255#if defined(IP_ADD_MEMBERSHIP)
1256 /* Add a multicast group membership */
1257 rb_define_const(rb_cSocket, "IP_ADD_MEMBERSHIP", INTEGER2NUM(IP_ADD_MEMBERSHIP));
1258 /* Add a multicast group membership */
1259 rb_define_const(rb_mSockConst, "IP_ADD_MEMBERSHIP", INTEGER2NUM(IP_ADD_MEMBERSHIP));
1260#endif
1261#if defined(IP_DROP_MEMBERSHIP)
1262 /* Drop a multicast group membership */
1263 rb_define_const(rb_cSocket, "IP_DROP_MEMBERSHIP", INTEGER2NUM(IP_DROP_MEMBERSHIP));
1264 /* Drop a multicast group membership */
1265 rb_define_const(rb_mSockConst, "IP_DROP_MEMBERSHIP", INTEGER2NUM(IP_DROP_MEMBERSHIP));
1266#endif
1267#if defined(IP_DEFAULT_MULTICAST_TTL)
1268 /* Default multicast TTL */
1269 rb_define_const(rb_cSocket, "IP_DEFAULT_MULTICAST_TTL", INTEGER2NUM(IP_DEFAULT_MULTICAST_TTL));
1270 /* Default multicast TTL */
1271 rb_define_const(rb_mSockConst, "IP_DEFAULT_MULTICAST_TTL", INTEGER2NUM(IP_DEFAULT_MULTICAST_TTL));
1272#endif
1273#if defined(IP_DEFAULT_MULTICAST_LOOP)
1274 /* Default multicast loopback */
1275 rb_define_const(rb_cSocket, "IP_DEFAULT_MULTICAST_LOOP", INTEGER2NUM(IP_DEFAULT_MULTICAST_LOOP));
1276 /* Default multicast loopback */
1277 rb_define_const(rb_mSockConst, "IP_DEFAULT_MULTICAST_LOOP", INTEGER2NUM(IP_DEFAULT_MULTICAST_LOOP));
1278#endif
1279#if defined(IP_MAX_MEMBERSHIPS)
1280 /* Maximum number multicast groups a socket can join */
1281 rb_define_const(rb_cSocket, "IP_MAX_MEMBERSHIPS", INTEGER2NUM(IP_MAX_MEMBERSHIPS));
1282 /* Maximum number multicast groups a socket can join */
1283 rb_define_const(rb_mSockConst, "IP_MAX_MEMBERSHIPS", INTEGER2NUM(IP_MAX_MEMBERSHIPS));
1284#endif
1285#if defined(IP_ROUTER_ALERT)
1286 /* Notify transit routers to more closely examine the contents of an IP packet */
1287 rb_define_const(rb_cSocket, "IP_ROUTER_ALERT", INTEGER2NUM(IP_ROUTER_ALERT));
1288 /* Notify transit routers to more closely examine the contents of an IP packet */
1289 rb_define_const(rb_mSockConst, "IP_ROUTER_ALERT", INTEGER2NUM(IP_ROUTER_ALERT));
1290#endif
1291#if defined(IP_PKTINFO)
1292 /* Receive packet information with datagrams */
1293 rb_define_const(rb_cSocket, "IP_PKTINFO", INTEGER2NUM(IP_PKTINFO));
1294 /* Receive packet information with datagrams */
1295 rb_define_const(rb_mSockConst, "IP_PKTINFO", INTEGER2NUM(IP_PKTINFO));
1296#endif
1297#if defined(IP_PKTOPTIONS)
1298 /* Receive packet options with datagrams */
1299 rb_define_const(rb_cSocket, "IP_PKTOPTIONS", INTEGER2NUM(IP_PKTOPTIONS));
1300 /* Receive packet options with datagrams */
1301 rb_define_const(rb_mSockConst, "IP_PKTOPTIONS", INTEGER2NUM(IP_PKTOPTIONS));
1302#endif
1303#if defined(IP_MTU_DISCOVER)
1304 /* Path MTU discovery */
1305 rb_define_const(rb_cSocket, "IP_MTU_DISCOVER", INTEGER2NUM(IP_MTU_DISCOVER));
1306 /* Path MTU discovery */
1307 rb_define_const(rb_mSockConst, "IP_MTU_DISCOVER", INTEGER2NUM(IP_MTU_DISCOVER));
1308#endif
1309#if defined(IP_RECVERR)
1310 /* Enable extended reliable error message passing */
1311 rb_define_const(rb_cSocket, "IP_RECVERR", INTEGER2NUM(IP_RECVERR));
1312 /* Enable extended reliable error message passing */
1313 rb_define_const(rb_mSockConst, "IP_RECVERR", INTEGER2NUM(IP_RECVERR));
1314#endif
1315#if defined(IP_RECVTOS)
1316 /* Receive TOS with incoming packets */
1317 rb_define_const(rb_cSocket, "IP_RECVTOS", INTEGER2NUM(IP_RECVTOS));
1318 /* Receive TOS with incoming packets */
1319 rb_define_const(rb_mSockConst, "IP_RECVTOS", INTEGER2NUM(IP_RECVTOS));
1320#endif
1321#if defined(IP_MTU)
1322 /* The Maximum Transmission Unit of the socket */
1323 rb_define_const(rb_cSocket, "IP_MTU", INTEGER2NUM(IP_MTU));
1324 /* The Maximum Transmission Unit of the socket */
1325 rb_define_const(rb_mSockConst, "IP_MTU", INTEGER2NUM(IP_MTU));
1326#endif
1327#if defined(IP_FREEBIND)
1328 /* Allow binding to nonexistent IP addresses */
1329 rb_define_const(rb_cSocket, "IP_FREEBIND", INTEGER2NUM(IP_FREEBIND));
1330 /* Allow binding to nonexistent IP addresses */
1331 rb_define_const(rb_mSockConst, "IP_FREEBIND", INTEGER2NUM(IP_FREEBIND));
1332#endif
1333#if defined(IP_IPSEC_POLICY)
1334 /* IPsec security policy */
1335 rb_define_const(rb_cSocket, "IP_IPSEC_POLICY", INTEGER2NUM(IP_IPSEC_POLICY));
1336 /* IPsec security policy */
1337 rb_define_const(rb_mSockConst, "IP_IPSEC_POLICY", INTEGER2NUM(IP_IPSEC_POLICY));
1338#endif
1339#if defined(IP_XFRM_POLICY)
1340 /* */
1341 rb_define_const(rb_cSocket, "IP_XFRM_POLICY", INTEGER2NUM(IP_XFRM_POLICY));
1342 /* */
1343 rb_define_const(rb_mSockConst, "IP_XFRM_POLICY", INTEGER2NUM(IP_XFRM_POLICY));
1344#endif
1345#if defined(IP_PASSSEC)
1346 /* Retrieve security context with datagram */
1347 rb_define_const(rb_cSocket, "IP_PASSSEC", INTEGER2NUM(IP_PASSSEC));
1348 /* Retrieve security context with datagram */
1349 rb_define_const(rb_mSockConst, "IP_PASSSEC", INTEGER2NUM(IP_PASSSEC));
1350#endif
1351#if defined(IP_TRANSPARENT)
1352 /* Transparent proxy */
1353 rb_define_const(rb_cSocket, "IP_TRANSPARENT", INTEGER2NUM(IP_TRANSPARENT));
1354 /* Transparent proxy */
1355 rb_define_const(rb_mSockConst, "IP_TRANSPARENT", INTEGER2NUM(IP_TRANSPARENT));
1356#endif
1357#if defined(IP_PMTUDISC_DONT)
1358 /* Never send DF frames */
1359 rb_define_const(rb_cSocket, "IP_PMTUDISC_DONT", INTEGER2NUM(IP_PMTUDISC_DONT));
1360 /* Never send DF frames */
1361 rb_define_const(rb_mSockConst, "IP_PMTUDISC_DONT", INTEGER2NUM(IP_PMTUDISC_DONT));
1362#endif
1363#if defined(IP_PMTUDISC_WANT)
1364 /* Use per-route hints */
1365 rb_define_const(rb_cSocket, "IP_PMTUDISC_WANT", INTEGER2NUM(IP_PMTUDISC_WANT));
1366 /* Use per-route hints */
1367 rb_define_const(rb_mSockConst, "IP_PMTUDISC_WANT", INTEGER2NUM(IP_PMTUDISC_WANT));
1368#endif
1369#if defined(IP_PMTUDISC_DO)
1370 /* Always send DF frames */
1371 rb_define_const(rb_cSocket, "IP_PMTUDISC_DO", INTEGER2NUM(IP_PMTUDISC_DO));
1372 /* Always send DF frames */
1373 rb_define_const(rb_mSockConst, "IP_PMTUDISC_DO", INTEGER2NUM(IP_PMTUDISC_DO));
1374#endif
1375#if defined(IP_UNBLOCK_SOURCE)
1376 /* Unblock IPv4 multicast packets with a give source address */
1377 rb_define_const(rb_cSocket, "IP_UNBLOCK_SOURCE", INTEGER2NUM(IP_UNBLOCK_SOURCE));
1378 /* Unblock IPv4 multicast packets with a give source address */
1379 rb_define_const(rb_mSockConst, "IP_UNBLOCK_SOURCE", INTEGER2NUM(IP_UNBLOCK_SOURCE));
1380#endif
1381#if defined(IP_BLOCK_SOURCE)
1382 /* Block IPv4 multicast packets with a give source address */
1383 rb_define_const(rb_cSocket, "IP_BLOCK_SOURCE", INTEGER2NUM(IP_BLOCK_SOURCE));
1384 /* Block IPv4 multicast packets with a give source address */
1385 rb_define_const(rb_mSockConst, "IP_BLOCK_SOURCE", INTEGER2NUM(IP_BLOCK_SOURCE));
1386#endif
1387#if defined(IP_ADD_SOURCE_MEMBERSHIP)
1388 /* Add a multicast group membership */
1389 rb_define_const(rb_cSocket, "IP_ADD_SOURCE_MEMBERSHIP", INTEGER2NUM(IP_ADD_SOURCE_MEMBERSHIP));
1390 /* Add a multicast group membership */
1391 rb_define_const(rb_mSockConst, "IP_ADD_SOURCE_MEMBERSHIP", INTEGER2NUM(IP_ADD_SOURCE_MEMBERSHIP));
1392#endif
1393#if defined(IP_DROP_SOURCE_MEMBERSHIP)
1394 /* Drop a multicast group membership */
1395 rb_define_const(rb_cSocket, "IP_DROP_SOURCE_MEMBERSHIP", INTEGER2NUM(IP_DROP_SOURCE_MEMBERSHIP));
1396 /* Drop a multicast group membership */
1397 rb_define_const(rb_mSockConst, "IP_DROP_SOURCE_MEMBERSHIP", INTEGER2NUM(IP_DROP_SOURCE_MEMBERSHIP));
1398#endif
1399#if defined(IP_MSFILTER)
1400 /* Multicast source filtering */
1401 rb_define_const(rb_cSocket, "IP_MSFILTER", INTEGER2NUM(IP_MSFILTER));
1402 /* Multicast source filtering */
1403 rb_define_const(rb_mSockConst, "IP_MSFILTER", INTEGER2NUM(IP_MSFILTER));
1404#endif
1405#if defined(MCAST_JOIN_GROUP)
1406 /* Join a multicast group */
1407 rb_define_const(rb_cSocket, "MCAST_JOIN_GROUP", INTEGER2NUM(MCAST_JOIN_GROUP));
1408 /* Join a multicast group */
1409 rb_define_const(rb_mSockConst, "MCAST_JOIN_GROUP", INTEGER2NUM(MCAST_JOIN_GROUP));
1410#endif
1411#if defined(MCAST_BLOCK_SOURCE)
1412 /* Block multicast packets from this source */
1413 rb_define_const(rb_cSocket, "MCAST_BLOCK_SOURCE", INTEGER2NUM(MCAST_BLOCK_SOURCE));
1414 /* Block multicast packets from this source */
1415 rb_define_const(rb_mSockConst, "MCAST_BLOCK_SOURCE", INTEGER2NUM(MCAST_BLOCK_SOURCE));
1416#endif
1417#if defined(MCAST_UNBLOCK_SOURCE)
1418 /* Unblock multicast packets from this source */
1419 rb_define_const(rb_cSocket, "MCAST_UNBLOCK_SOURCE", INTEGER2NUM(MCAST_UNBLOCK_SOURCE));
1420 /* Unblock multicast packets from this source */
1421 rb_define_const(rb_mSockConst, "MCAST_UNBLOCK_SOURCE", INTEGER2NUM(MCAST_UNBLOCK_SOURCE));
1422#endif
1423#if defined(MCAST_LEAVE_GROUP)
1424 /* Leave a multicast group */
1425 rb_define_const(rb_cSocket, "MCAST_LEAVE_GROUP", INTEGER2NUM(MCAST_LEAVE_GROUP));
1426 /* Leave a multicast group */
1427 rb_define_const(rb_mSockConst, "MCAST_LEAVE_GROUP", INTEGER2NUM(MCAST_LEAVE_GROUP));
1428#endif
1429#if defined(MCAST_JOIN_SOURCE_GROUP)
1430 /* Join a multicast source group */
1431 rb_define_const(rb_cSocket, "MCAST_JOIN_SOURCE_GROUP", INTEGER2NUM(MCAST_JOIN_SOURCE_GROUP));
1432 /* Join a multicast source group */
1433 rb_define_const(rb_mSockConst, "MCAST_JOIN_SOURCE_GROUP", INTEGER2NUM(MCAST_JOIN_SOURCE_GROUP));
1434#endif
1435#if defined(MCAST_LEAVE_SOURCE_GROUP)
1436 /* Leave a multicast source group */
1437 rb_define_const(rb_cSocket, "MCAST_LEAVE_SOURCE_GROUP", INTEGER2NUM(MCAST_LEAVE_SOURCE_GROUP));
1438 /* Leave a multicast source group */
1439 rb_define_const(rb_mSockConst, "MCAST_LEAVE_SOURCE_GROUP", INTEGER2NUM(MCAST_LEAVE_SOURCE_GROUP));
1440#endif
1441#if defined(MCAST_MSFILTER)
1442 /* Multicast source filtering */
1443 rb_define_const(rb_cSocket, "MCAST_MSFILTER", INTEGER2NUM(MCAST_MSFILTER));
1444 /* Multicast source filtering */
1445 rb_define_const(rb_mSockConst, "MCAST_MSFILTER", INTEGER2NUM(MCAST_MSFILTER));
1446#endif
1447#if defined(MCAST_EXCLUDE)
1448 /* Exclusive multicast source filter */
1449 rb_define_const(rb_cSocket, "MCAST_EXCLUDE", INTEGER2NUM(MCAST_EXCLUDE));
1450 /* Exclusive multicast source filter */
1451 rb_define_const(rb_mSockConst, "MCAST_EXCLUDE", INTEGER2NUM(MCAST_EXCLUDE));
1452#endif
1453#if defined(MCAST_INCLUDE)
1454 /* Inclusive multicast source filter */
1455 rb_define_const(rb_cSocket, "MCAST_INCLUDE", INTEGER2NUM(MCAST_INCLUDE));
1456 /* Inclusive multicast source filter */
1457 rb_define_const(rb_mSockConst, "MCAST_INCLUDE", INTEGER2NUM(MCAST_INCLUDE));
1458#endif
1459#if defined(SO_DEBUG)
1460 /* Debug info recording */
1461 rb_define_const(rb_cSocket, "SO_DEBUG", INTEGER2NUM(SO_DEBUG));
1462 /* Debug info recording */
1463 rb_define_const(rb_mSockConst, "SO_DEBUG", INTEGER2NUM(SO_DEBUG));
1464#endif
1465#if defined(SO_REUSEADDR)
1466 /* Allow local address reuse */
1467 rb_define_const(rb_cSocket, "SO_REUSEADDR", INTEGER2NUM(SO_REUSEADDR));
1468 /* Allow local address reuse */
1469 rb_define_const(rb_mSockConst, "SO_REUSEADDR", INTEGER2NUM(SO_REUSEADDR));
1470#endif
1471#if defined(SO_REUSEPORT)
1472 /* Allow local address and port reuse */
1473 rb_define_const(rb_cSocket, "SO_REUSEPORT", INTEGER2NUM(SO_REUSEPORT));
1474 /* Allow local address and port reuse */
1475 rb_define_const(rb_mSockConst, "SO_REUSEPORT", INTEGER2NUM(SO_REUSEPORT));
1476#endif
1477#if defined(SO_TYPE)
1478 /* Get the socket type */
1479 rb_define_const(rb_cSocket, "SO_TYPE", INTEGER2NUM(SO_TYPE));
1480 /* Get the socket type */
1481 rb_define_const(rb_mSockConst, "SO_TYPE", INTEGER2NUM(SO_TYPE));
1482#endif
1483#if defined(SO_ERROR)
1484 /* Get and clear the error status */
1485 rb_define_const(rb_cSocket, "SO_ERROR", INTEGER2NUM(SO_ERROR));
1486 /* Get and clear the error status */
1487 rb_define_const(rb_mSockConst, "SO_ERROR", INTEGER2NUM(SO_ERROR));
1488#endif
1489#if defined(SO_DONTROUTE)
1490 /* Use interface addresses */
1491 rb_define_const(rb_cSocket, "SO_DONTROUTE", INTEGER2NUM(SO_DONTROUTE));
1492 /* Use interface addresses */
1493 rb_define_const(rb_mSockConst, "SO_DONTROUTE", INTEGER2NUM(SO_DONTROUTE));
1494#endif
1495#if defined(SO_BROADCAST)
1496 /* Permit sending of broadcast messages */
1497 rb_define_const(rb_cSocket, "SO_BROADCAST", INTEGER2NUM(SO_BROADCAST));
1498 /* Permit sending of broadcast messages */
1499 rb_define_const(rb_mSockConst, "SO_BROADCAST", INTEGER2NUM(SO_BROADCAST));
1500#endif
1501#if defined(SO_SNDBUF)
1502 /* Send buffer size */
1503 rb_define_const(rb_cSocket, "SO_SNDBUF", INTEGER2NUM(SO_SNDBUF));
1504 /* Send buffer size */
1505 rb_define_const(rb_mSockConst, "SO_SNDBUF", INTEGER2NUM(SO_SNDBUF));
1506#endif
1507#if defined(SO_RCVBUF)
1508 /* Receive buffer size */
1509 rb_define_const(rb_cSocket, "SO_RCVBUF", INTEGER2NUM(SO_RCVBUF));
1510 /* Receive buffer size */
1511 rb_define_const(rb_mSockConst, "SO_RCVBUF", INTEGER2NUM(SO_RCVBUF));
1512#endif
1513#if defined(SO_SNDBUFFORCE)
1514 /* Send buffer size without wmem_max limit (Linux 2.6.14) */
1515 rb_define_const(rb_cSocket, "SO_SNDBUFFORCE", INTEGER2NUM(SO_SNDBUFFORCE));
1516 /* Send buffer size without wmem_max limit (Linux 2.6.14) */
1517 rb_define_const(rb_mSockConst, "SO_SNDBUFFORCE", INTEGER2NUM(SO_SNDBUFFORCE));
1518#endif
1519#if defined(SO_RCVBUFFORCE)
1520 /* Receive buffer size without rmem_max limit (Linux 2.6.14) */
1521 rb_define_const(rb_cSocket, "SO_RCVBUFFORCE", INTEGER2NUM(SO_RCVBUFFORCE));
1522 /* Receive buffer size without rmem_max limit (Linux 2.6.14) */
1523 rb_define_const(rb_mSockConst, "SO_RCVBUFFORCE", INTEGER2NUM(SO_RCVBUFFORCE));
1524#endif
1525#if defined(SO_KEEPALIVE)
1526 /* Keep connections alive */
1527 rb_define_const(rb_cSocket, "SO_KEEPALIVE", INTEGER2NUM(SO_KEEPALIVE));
1528 /* Keep connections alive */
1529 rb_define_const(rb_mSockConst, "SO_KEEPALIVE", INTEGER2NUM(SO_KEEPALIVE));
1530#endif
1531#if defined(SO_OOBINLINE)
1532 /* Leave received out-of-band data in-line */
1533 rb_define_const(rb_cSocket, "SO_OOBINLINE", INTEGER2NUM(SO_OOBINLINE));
1534 /* Leave received out-of-band data in-line */
1535 rb_define_const(rb_mSockConst, "SO_OOBINLINE", INTEGER2NUM(SO_OOBINLINE));
1536#endif
1537#if defined(SO_NO_CHECK)
1538 /* Disable checksums */
1539 rb_define_const(rb_cSocket, "SO_NO_CHECK", INTEGER2NUM(SO_NO_CHECK));
1540 /* Disable checksums */
1541 rb_define_const(rb_mSockConst, "SO_NO_CHECK", INTEGER2NUM(SO_NO_CHECK));
1542#endif
1543#if defined(SO_PRIORITY)
1544 /* The protocol-defined priority for all packets on this socket */
1545 rb_define_const(rb_cSocket, "SO_PRIORITY", INTEGER2NUM(SO_PRIORITY));
1546 /* The protocol-defined priority for all packets on this socket */
1547 rb_define_const(rb_mSockConst, "SO_PRIORITY", INTEGER2NUM(SO_PRIORITY));
1548#endif
1549#if defined(SO_LINGER)
1550 /* Linger on close if data is present */
1551 rb_define_const(rb_cSocket, "SO_LINGER", INTEGER2NUM(SO_LINGER));
1552 /* Linger on close if data is present */
1553 rb_define_const(rb_mSockConst, "SO_LINGER", INTEGER2NUM(SO_LINGER));
1554#endif
1555#if defined(SO_PASSCRED)
1556 /* Receive SCM_CREDENTIALS messages */
1557 rb_define_const(rb_cSocket, "SO_PASSCRED", INTEGER2NUM(SO_PASSCRED));
1558 /* Receive SCM_CREDENTIALS messages */
1559 rb_define_const(rb_mSockConst, "SO_PASSCRED", INTEGER2NUM(SO_PASSCRED));
1560#endif
1561#if defined(SO_PEERCRED)
1562 /* The credentials of the foreign process connected to this socket */
1563 rb_define_const(rb_cSocket, "SO_PEERCRED", INTEGER2NUM(SO_PEERCRED));
1564 /* The credentials of the foreign process connected to this socket */
1565 rb_define_const(rb_mSockConst, "SO_PEERCRED", INTEGER2NUM(SO_PEERCRED));
1566#endif
1567#if defined(SO_RCVLOWAT)
1568 /* Receive low-water mark */
1569 rb_define_const(rb_cSocket, "SO_RCVLOWAT", INTEGER2NUM(SO_RCVLOWAT));
1570 /* Receive low-water mark */
1571 rb_define_const(rb_mSockConst, "SO_RCVLOWAT", INTEGER2NUM(SO_RCVLOWAT));
1572#endif
1573#if defined(SO_SNDLOWAT)
1574 /* Send low-water mark */
1575 rb_define_const(rb_cSocket, "SO_SNDLOWAT", INTEGER2NUM(SO_SNDLOWAT));
1576 /* Send low-water mark */
1577 rb_define_const(rb_mSockConst, "SO_SNDLOWAT", INTEGER2NUM(SO_SNDLOWAT));
1578#endif
1579#if defined(SO_RCVTIMEO)
1580 /* Receive timeout */
1581 rb_define_const(rb_cSocket, "SO_RCVTIMEO", INTEGER2NUM(SO_RCVTIMEO));
1582 /* Receive timeout */
1583 rb_define_const(rb_mSockConst, "SO_RCVTIMEO", INTEGER2NUM(SO_RCVTIMEO));
1584#endif
1585#if defined(SO_SNDTIMEO)
1586 /* Send timeout */
1587 rb_define_const(rb_cSocket, "SO_SNDTIMEO", INTEGER2NUM(SO_SNDTIMEO));
1588 /* Send timeout */
1589 rb_define_const(rb_mSockConst, "SO_SNDTIMEO", INTEGER2NUM(SO_SNDTIMEO));
1590#endif
1591#if defined(SO_ACCEPTCONN)
1592 /* Socket has had listen() called on it */
1593 rb_define_const(rb_cSocket, "SO_ACCEPTCONN", INTEGER2NUM(SO_ACCEPTCONN));
1594 /* Socket has had listen() called on it */
1595 rb_define_const(rb_mSockConst, "SO_ACCEPTCONN", INTEGER2NUM(SO_ACCEPTCONN));
1596#endif
1597#if defined(SO_USELOOPBACK)
1598 /* Bypass hardware when possible */
1599 rb_define_const(rb_cSocket, "SO_USELOOPBACK", INTEGER2NUM(SO_USELOOPBACK));
1600 /* Bypass hardware when possible */
1601 rb_define_const(rb_mSockConst, "SO_USELOOPBACK", INTEGER2NUM(SO_USELOOPBACK));
1602#endif
1603#if defined(SO_ACCEPTFILTER)
1604 /* There is an accept filter */
1605 rb_define_const(rb_cSocket, "SO_ACCEPTFILTER", INTEGER2NUM(SO_ACCEPTFILTER));
1606 /* There is an accept filter */
1607 rb_define_const(rb_mSockConst, "SO_ACCEPTFILTER", INTEGER2NUM(SO_ACCEPTFILTER));
1608#endif
1609#if defined(SO_DONTTRUNC)
1610 /* Retain unread data */
1611 rb_define_const(rb_cSocket, "SO_DONTTRUNC", INTEGER2NUM(SO_DONTTRUNC));
1612 /* Retain unread data */
1613 rb_define_const(rb_mSockConst, "SO_DONTTRUNC", INTEGER2NUM(SO_DONTTRUNC));
1614#endif
1615#if defined(SO_WANTMORE)
1616 /* Give a hint when more data is ready */
1617 rb_define_const(rb_cSocket, "SO_WANTMORE", INTEGER2NUM(SO_WANTMORE));
1618 /* Give a hint when more data is ready */
1619 rb_define_const(rb_mSockConst, "SO_WANTMORE", INTEGER2NUM(SO_WANTMORE));
1620#endif
1621#if defined(SO_WANTOOBFLAG)
1622 /* OOB data is wanted in MSG_FLAG on receive */
1623 rb_define_const(rb_cSocket, "SO_WANTOOBFLAG", INTEGER2NUM(SO_WANTOOBFLAG));
1624 /* OOB data is wanted in MSG_FLAG on receive */
1625 rb_define_const(rb_mSockConst, "SO_WANTOOBFLAG", INTEGER2NUM(SO_WANTOOBFLAG));
1626#endif
1627#if defined(SO_NREAD)
1628 /* Get first packet byte count */
1629 rb_define_const(rb_cSocket, "SO_NREAD", INTEGER2NUM(SO_NREAD));
1630 /* Get first packet byte count */
1631 rb_define_const(rb_mSockConst, "SO_NREAD", INTEGER2NUM(SO_NREAD));
1632#endif
1633#if defined(SO_NKE)
1634 /* Install socket-level Network Kernel Extension */
1635 rb_define_const(rb_cSocket, "SO_NKE", INTEGER2NUM(SO_NKE));
1636 /* Install socket-level Network Kernel Extension */
1637 rb_define_const(rb_mSockConst, "SO_NKE", INTEGER2NUM(SO_NKE));
1638#endif
1639#if defined(SO_NOSIGPIPE)
1640 /* Don't SIGPIPE on EPIPE */
1641 rb_define_const(rb_cSocket, "SO_NOSIGPIPE", INTEGER2NUM(SO_NOSIGPIPE));
1642 /* Don't SIGPIPE on EPIPE */
1643 rb_define_const(rb_mSockConst, "SO_NOSIGPIPE", INTEGER2NUM(SO_NOSIGPIPE));
1644#endif
1645#if defined(SO_SECURITY_AUTHENTICATION)
1646 /* */
1647 rb_define_const(rb_cSocket, "SO_SECURITY_AUTHENTICATION", INTEGER2NUM(SO_SECURITY_AUTHENTICATION));
1648 /* */
1649 rb_define_const(rb_mSockConst, "SO_SECURITY_AUTHENTICATION", INTEGER2NUM(SO_SECURITY_AUTHENTICATION));
1650#endif
1651#if defined(SO_SECURITY_ENCRYPTION_TRANSPORT)
1652 /* */
1653 rb_define_const(rb_cSocket, "SO_SECURITY_ENCRYPTION_TRANSPORT", INTEGER2NUM(SO_SECURITY_ENCRYPTION_TRANSPORT));
1654 /* */
1655 rb_define_const(rb_mSockConst, "SO_SECURITY_ENCRYPTION_TRANSPORT", INTEGER2NUM(SO_SECURITY_ENCRYPTION_TRANSPORT));
1656#endif
1657#if defined(SO_SECURITY_ENCRYPTION_NETWORK)
1658 /* */
1659 rb_define_const(rb_cSocket, "SO_SECURITY_ENCRYPTION_NETWORK", INTEGER2NUM(SO_SECURITY_ENCRYPTION_NETWORK));
1660 /* */
1661 rb_define_const(rb_mSockConst, "SO_SECURITY_ENCRYPTION_NETWORK", INTEGER2NUM(SO_SECURITY_ENCRYPTION_NETWORK));
1662#endif
1663#if defined(SO_BINDTODEVICE)
1664 /* Only send packets from the given interface */
1665 rb_define_const(rb_cSocket, "SO_BINDTODEVICE", INTEGER2NUM(SO_BINDTODEVICE));
1666 /* Only send packets from the given interface */
1667 rb_define_const(rb_mSockConst, "SO_BINDTODEVICE", INTEGER2NUM(SO_BINDTODEVICE));
1668#endif
1669#if defined(SO_ATTACH_FILTER)
1670 /* Attach an accept filter */
1671 rb_define_const(rb_cSocket, "SO_ATTACH_FILTER", INTEGER2NUM(SO_ATTACH_FILTER));
1672 /* Attach an accept filter */
1673 rb_define_const(rb_mSockConst, "SO_ATTACH_FILTER", INTEGER2NUM(SO_ATTACH_FILTER));
1674#endif
1675#if defined(SO_DETACH_FILTER)
1676 /* Detach an accept filter */
1677 rb_define_const(rb_cSocket, "SO_DETACH_FILTER", INTEGER2NUM(SO_DETACH_FILTER));
1678 /* Detach an accept filter */
1679 rb_define_const(rb_mSockConst, "SO_DETACH_FILTER", INTEGER2NUM(SO_DETACH_FILTER));
1680#endif
1681#if defined(SO_GET_FILTER)
1682 /* Obtain filter set by SO_ATTACH_FILTER (Linux 3.8) */
1683 rb_define_const(rb_cSocket, "SO_GET_FILTER", INTEGER2NUM(SO_GET_FILTER));
1684 /* Obtain filter set by SO_ATTACH_FILTER (Linux 3.8) */
1685 rb_define_const(rb_mSockConst, "SO_GET_FILTER", INTEGER2NUM(SO_GET_FILTER));
1686#endif
1687#if defined(SO_PEERNAME)
1688 /* Name of the connecting user */
1689 rb_define_const(rb_cSocket, "SO_PEERNAME", INTEGER2NUM(SO_PEERNAME));
1690 /* Name of the connecting user */
1691 rb_define_const(rb_mSockConst, "SO_PEERNAME", INTEGER2NUM(SO_PEERNAME));
1692#endif
1693#if defined(SO_TIMESTAMP)
1694 /* Receive timestamp with datagrams (timeval) */
1695 rb_define_const(rb_cSocket, "SO_TIMESTAMP", INTEGER2NUM(SO_TIMESTAMP));
1696 /* Receive timestamp with datagrams (timeval) */
1697 rb_define_const(rb_mSockConst, "SO_TIMESTAMP", INTEGER2NUM(SO_TIMESTAMP));
1698#endif
1699#if defined(SO_TIMESTAMPNS)
1700 /* Receive nanosecond timestamp with datagrams (timespec) */
1701 rb_define_const(rb_cSocket, "SO_TIMESTAMPNS", INTEGER2NUM(SO_TIMESTAMPNS));
1702 /* Receive nanosecond timestamp with datagrams (timespec) */
1703 rb_define_const(rb_mSockConst, "SO_TIMESTAMPNS", INTEGER2NUM(SO_TIMESTAMPNS));
1704#endif
1705#if defined(SO_BINTIME)
1706 /* Receive timestamp with datagrams (bintime) */
1707 rb_define_const(rb_cSocket, "SO_BINTIME", INTEGER2NUM(SO_BINTIME));
1708 /* Receive timestamp with datagrams (bintime) */
1709 rb_define_const(rb_mSockConst, "SO_BINTIME", INTEGER2NUM(SO_BINTIME));
1710#endif
1711#if defined(SO_RECVUCRED)
1712 /* Receive user credentials with datagram */
1713 rb_define_const(rb_cSocket, "SO_RECVUCRED", INTEGER2NUM(SO_RECVUCRED));
1714 /* Receive user credentials with datagram */
1715 rb_define_const(rb_mSockConst, "SO_RECVUCRED", INTEGER2NUM(SO_RECVUCRED));
1716#endif
1717#if defined(SO_MAC_EXEMPT)
1718 /* Mandatory Access Control exemption for unlabeled peers */
1719 rb_define_const(rb_cSocket, "SO_MAC_EXEMPT", INTEGER2NUM(SO_MAC_EXEMPT));
1720 /* Mandatory Access Control exemption for unlabeled peers */
1721 rb_define_const(rb_mSockConst, "SO_MAC_EXEMPT", INTEGER2NUM(SO_MAC_EXEMPT));
1722#endif
1723#if defined(SO_ALLZONES)
1724 /* Bypass zone boundaries */
1725 rb_define_const(rb_cSocket, "SO_ALLZONES", INTEGER2NUM(SO_ALLZONES));
1726 /* Bypass zone boundaries */
1727 rb_define_const(rb_mSockConst, "SO_ALLZONES", INTEGER2NUM(SO_ALLZONES));
1728#endif
1729#if defined(SO_PEERSEC)
1730 /* Obtain the security credentials (Linux 2.6.2) */
1731 rb_define_const(rb_cSocket, "SO_PEERSEC", INTEGER2NUM(SO_PEERSEC));
1732 /* Obtain the security credentials (Linux 2.6.2) */
1733 rb_define_const(rb_mSockConst, "SO_PEERSEC", INTEGER2NUM(SO_PEERSEC));
1734#endif
1735#if defined(SO_PASSSEC)
1736 /* Toggle security context passing (Linux 2.6.18) */
1737 rb_define_const(rb_cSocket, "SO_PASSSEC", INTEGER2NUM(SO_PASSSEC));
1738 /* Toggle security context passing (Linux 2.6.18) */
1739 rb_define_const(rb_mSockConst, "SO_PASSSEC", INTEGER2NUM(SO_PASSSEC));
1740#endif
1741#if defined(SO_MARK)
1742 /* Set the mark for mark-based routing (Linux 2.6.25) */
1743 rb_define_const(rb_cSocket, "SO_MARK", INTEGER2NUM(SO_MARK));
1744 /* Set the mark for mark-based routing (Linux 2.6.25) */
1745 rb_define_const(rb_mSockConst, "SO_MARK", INTEGER2NUM(SO_MARK));
1746#endif
1747#if defined(SO_TIMESTAMPING)
1748 /* Time stamping of incoming and outgoing packets (Linux 2.6.30) */
1749 rb_define_const(rb_cSocket, "SO_TIMESTAMPING", INTEGER2NUM(SO_TIMESTAMPING));
1750 /* Time stamping of incoming and outgoing packets (Linux 2.6.30) */
1751 rb_define_const(rb_mSockConst, "SO_TIMESTAMPING", INTEGER2NUM(SO_TIMESTAMPING));
1752#endif
1753#if defined(SO_PROTOCOL)
1754 /* Protocol given for socket() (Linux 2.6.32) */
1755 rb_define_const(rb_cSocket, "SO_PROTOCOL", INTEGER2NUM(SO_PROTOCOL));
1756 /* Protocol given for socket() (Linux 2.6.32) */
1757 rb_define_const(rb_mSockConst, "SO_PROTOCOL", INTEGER2NUM(SO_PROTOCOL));
1758#endif
1759#if defined(SO_DOMAIN)
1760 /* Domain given for socket() (Linux 2.6.32) */
1761 rb_define_const(rb_cSocket, "SO_DOMAIN", INTEGER2NUM(SO_DOMAIN));
1762 /* Domain given for socket() (Linux 2.6.32) */
1763 rb_define_const(rb_mSockConst, "SO_DOMAIN", INTEGER2NUM(SO_DOMAIN));
1764#endif
1765#if defined(SO_RXQ_OVFL)
1766 /* Toggle cmsg for number of packets dropped (Linux 2.6.33) */
1767 rb_define_const(rb_cSocket, "SO_RXQ_OVFL", INTEGER2NUM(SO_RXQ_OVFL));
1768 /* Toggle cmsg for number of packets dropped (Linux 2.6.33) */
1769 rb_define_const(rb_mSockConst, "SO_RXQ_OVFL", INTEGER2NUM(SO_RXQ_OVFL));
1770#endif
1771#if defined(SO_WIFI_STATUS)
1772 /* Toggle cmsg for wifi status (Linux 3.3) */
1773 rb_define_const(rb_cSocket, "SO_WIFI_STATUS", INTEGER2NUM(SO_WIFI_STATUS));
1774 /* Toggle cmsg for wifi status (Linux 3.3) */
1775 rb_define_const(rb_mSockConst, "SO_WIFI_STATUS", INTEGER2NUM(SO_WIFI_STATUS));
1776#endif
1777#if defined(SO_PEEK_OFF)
1778 /* Set the peek offset (Linux 3.4) */
1779 rb_define_const(rb_cSocket, "SO_PEEK_OFF", INTEGER2NUM(SO_PEEK_OFF));
1780 /* Set the peek offset (Linux 3.4) */
1781 rb_define_const(rb_mSockConst, "SO_PEEK_OFF", INTEGER2NUM(SO_PEEK_OFF));
1782#endif
1783#if defined(SO_NOFCS)
1784 /* Set netns of a socket (Linux 3.4) */
1785 rb_define_const(rb_cSocket, "SO_NOFCS", INTEGER2NUM(SO_NOFCS));
1786 /* Set netns of a socket (Linux 3.4) */
1787 rb_define_const(rb_mSockConst, "SO_NOFCS", INTEGER2NUM(SO_NOFCS));
1788#endif
1789#if defined(SO_LOCK_FILTER)
1790 /* Lock the filter attached to a socket (Linux 3.9) */
1791 rb_define_const(rb_cSocket, "SO_LOCK_FILTER", INTEGER2NUM(SO_LOCK_FILTER));
1792 /* Lock the filter attached to a socket (Linux 3.9) */
1793 rb_define_const(rb_mSockConst, "SO_LOCK_FILTER", INTEGER2NUM(SO_LOCK_FILTER));
1794#endif
1795#if defined(SO_SELECT_ERR_QUEUE)
1796 /* Make select() detect socket error queue with errorfds (Linux 3.10) */
1797 rb_define_const(rb_cSocket, "SO_SELECT_ERR_QUEUE", INTEGER2NUM(SO_SELECT_ERR_QUEUE));
1798 /* Make select() detect socket error queue with errorfds (Linux 3.10) */
1799 rb_define_const(rb_mSockConst, "SO_SELECT_ERR_QUEUE", INTEGER2NUM(SO_SELECT_ERR_QUEUE));
1800#endif
1801#if defined(SO_BUSY_POLL)
1802 /* Set the threshold in microseconds for low latency polling (Linux 3.11) */
1803 rb_define_const(rb_cSocket, "SO_BUSY_POLL", INTEGER2NUM(SO_BUSY_POLL));
1804 /* Set the threshold in microseconds for low latency polling (Linux 3.11) */
1805 rb_define_const(rb_mSockConst, "SO_BUSY_POLL", INTEGER2NUM(SO_BUSY_POLL));
1806#endif
1807#if defined(SO_MAX_PACING_RATE)
1808 /* Cap the rate computed by transport layer. [bytes per second] (Linux 3.13) */
1809 rb_define_const(rb_cSocket, "SO_MAX_PACING_RATE", INTEGER2NUM(SO_MAX_PACING_RATE));
1810 /* Cap the rate computed by transport layer. [bytes per second] (Linux 3.13) */
1811 rb_define_const(rb_mSockConst, "SO_MAX_PACING_RATE", INTEGER2NUM(SO_MAX_PACING_RATE));
1812#endif
1813#if defined(SO_BPF_EXTENSIONS)
1814 /* Query supported BPF extensions (Linux 3.14) */
1815 rb_define_const(rb_cSocket, "SO_BPF_EXTENSIONS", INTEGER2NUM(SO_BPF_EXTENSIONS));
1816 /* Query supported BPF extensions (Linux 3.14) */
1817 rb_define_const(rb_mSockConst, "SO_BPF_EXTENSIONS", INTEGER2NUM(SO_BPF_EXTENSIONS));
1818#endif
1819#if defined(SOPRI_INTERACTIVE)
1820 /* Interactive socket priority */
1821 rb_define_const(rb_cSocket, "SOPRI_INTERACTIVE", INTEGER2NUM(SOPRI_INTERACTIVE));
1822 /* Interactive socket priority */
1823 rb_define_const(rb_mSockConst, "SOPRI_INTERACTIVE", INTEGER2NUM(SOPRI_INTERACTIVE));
1824#endif
1825#if defined(SOPRI_NORMAL)
1826 /* Normal socket priority */
1827 rb_define_const(rb_cSocket, "SOPRI_NORMAL", INTEGER2NUM(SOPRI_NORMAL));
1828 /* Normal socket priority */
1829 rb_define_const(rb_mSockConst, "SOPRI_NORMAL", INTEGER2NUM(SOPRI_NORMAL));
1830#endif
1831#if defined(SOPRI_BACKGROUND)
1832 /* Background socket priority */
1833 rb_define_const(rb_cSocket, "SOPRI_BACKGROUND", INTEGER2NUM(SOPRI_BACKGROUND));
1834 /* Background socket priority */
1835 rb_define_const(rb_mSockConst, "SOPRI_BACKGROUND", INTEGER2NUM(SOPRI_BACKGROUND));
1836#endif
1837#if defined(IPX_TYPE)
1838 /* */
1839 rb_define_const(rb_cSocket, "IPX_TYPE", INTEGER2NUM(IPX_TYPE));
1840 /* */
1841 rb_define_const(rb_mSockConst, "IPX_TYPE", INTEGER2NUM(IPX_TYPE));
1842#endif
1843#if defined(TCP_NODELAY)
1844 /* Don't delay sending to coalesce packets */
1845 rb_define_const(rb_cSocket, "TCP_NODELAY", INTEGER2NUM(TCP_NODELAY));
1846 /* Don't delay sending to coalesce packets */
1847 rb_define_const(rb_mSockConst, "TCP_NODELAY", INTEGER2NUM(TCP_NODELAY));
1848#endif
1849#if defined(TCP_MAXSEG)
1850 /* Set maximum segment size */
1851 rb_define_const(rb_cSocket, "TCP_MAXSEG", INTEGER2NUM(TCP_MAXSEG));
1852 /* Set maximum segment size */
1853 rb_define_const(rb_mSockConst, "TCP_MAXSEG", INTEGER2NUM(TCP_MAXSEG));
1854#endif
1855#if defined(TCP_CORK)
1856 /* Don't send partial frames (Linux 2.2, glibc 2.2) */
1857 rb_define_const(rb_cSocket, "TCP_CORK", INTEGER2NUM(TCP_CORK));
1858 /* Don't send partial frames (Linux 2.2, glibc 2.2) */
1859 rb_define_const(rb_mSockConst, "TCP_CORK", INTEGER2NUM(TCP_CORK));
1860#endif
1861#if defined(TCP_DEFER_ACCEPT)
1862 /* Don't notify a listening socket until data is ready (Linux 2.4, glibc 2.2) */
1863 rb_define_const(rb_cSocket, "TCP_DEFER_ACCEPT", INTEGER2NUM(TCP_DEFER_ACCEPT));
1864 /* Don't notify a listening socket until data is ready (Linux 2.4, glibc 2.2) */
1865 rb_define_const(rb_mSockConst, "TCP_DEFER_ACCEPT", INTEGER2NUM(TCP_DEFER_ACCEPT));
1866#endif
1867#if defined(TCP_INFO)
1868 /* Retrieve information about this socket (Linux 2.4, glibc 2.2) */
1869 rb_define_const(rb_cSocket, "TCP_INFO", INTEGER2NUM(TCP_INFO));
1870 /* Retrieve information about this socket (Linux 2.4, glibc 2.2) */
1871 rb_define_const(rb_mSockConst, "TCP_INFO", INTEGER2NUM(TCP_INFO));
1872#endif
1873#if defined(TCP_KEEPCNT)
1874 /* Maximum number of keepalive probes allowed before dropping a connection (Linux 2.4, glibc 2.2) */
1875 rb_define_const(rb_cSocket, "TCP_KEEPCNT", INTEGER2NUM(TCP_KEEPCNT));
1876 /* Maximum number of keepalive probes allowed before dropping a connection (Linux 2.4, glibc 2.2) */
1877 rb_define_const(rb_mSockConst, "TCP_KEEPCNT", INTEGER2NUM(TCP_KEEPCNT));
1878#endif
1879#if defined(TCP_KEEPIDLE)
1880 /* Idle time before keepalive probes are sent (Linux 2.4, glibc 2.2) */
1881 rb_define_const(rb_cSocket, "TCP_KEEPIDLE", INTEGER2NUM(TCP_KEEPIDLE));
1882 /* Idle time before keepalive probes are sent (Linux 2.4, glibc 2.2) */
1883 rb_define_const(rb_mSockConst, "TCP_KEEPIDLE", INTEGER2NUM(TCP_KEEPIDLE));
1884#endif
1885#if defined(TCP_KEEPINTVL)
1886 /* Time between keepalive probes (Linux 2.4, glibc 2.2) */
1887 rb_define_const(rb_cSocket, "TCP_KEEPINTVL", INTEGER2NUM(TCP_KEEPINTVL));
1888 /* Time between keepalive probes (Linux 2.4, glibc 2.2) */
1889 rb_define_const(rb_mSockConst, "TCP_KEEPINTVL", INTEGER2NUM(TCP_KEEPINTVL));
1890#endif
1891#if defined(TCP_LINGER2)
1892 /* Lifetime of orphaned FIN_WAIT2 sockets (Linux 2.4, glibc 2.2) */
1893 rb_define_const(rb_cSocket, "TCP_LINGER2", INTEGER2NUM(TCP_LINGER2));
1894 /* Lifetime of orphaned FIN_WAIT2 sockets (Linux 2.4, glibc 2.2) */
1895 rb_define_const(rb_mSockConst, "TCP_LINGER2", INTEGER2NUM(TCP_LINGER2));
1896#endif
1897#if defined(TCP_MD5SIG)
1898 /* Use MD5 digests (RFC2385, Linux 2.6.20, glibc 2.7) */
1899 rb_define_const(rb_cSocket, "TCP_MD5SIG", INTEGER2NUM(TCP_MD5SIG));
1900 /* Use MD5 digests (RFC2385, Linux 2.6.20, glibc 2.7) */
1901 rb_define_const(rb_mSockConst, "TCP_MD5SIG", INTEGER2NUM(TCP_MD5SIG));
1902#endif
1903#if defined(TCP_NOOPT)
1904 /* Don't use TCP options */
1905 rb_define_const(rb_cSocket, "TCP_NOOPT", INTEGER2NUM(TCP_NOOPT));
1906 /* Don't use TCP options */
1907 rb_define_const(rb_mSockConst, "TCP_NOOPT", INTEGER2NUM(TCP_NOOPT));
1908#endif
1909#if defined(TCP_NOPUSH)
1910 /* Don't push the last block of write */
1911 rb_define_const(rb_cSocket, "TCP_NOPUSH", INTEGER2NUM(TCP_NOPUSH));
1912 /* Don't push the last block of write */
1913 rb_define_const(rb_mSockConst, "TCP_NOPUSH", INTEGER2NUM(TCP_NOPUSH));
1914#endif
1915#if defined(TCP_QUICKACK)
1916 /* Enable quickack mode (Linux 2.4.4, glibc 2.3) */
1917 rb_define_const(rb_cSocket, "TCP_QUICKACK", INTEGER2NUM(TCP_QUICKACK));
1918 /* Enable quickack mode (Linux 2.4.4, glibc 2.3) */
1919 rb_define_const(rb_mSockConst, "TCP_QUICKACK", INTEGER2NUM(TCP_QUICKACK));
1920#endif
1921#if defined(TCP_SYNCNT)
1922 /* Number of SYN retransmits before a connection is dropped (Linux 2.4, glibc 2.2) */
1923 rb_define_const(rb_cSocket, "TCP_SYNCNT", INTEGER2NUM(TCP_SYNCNT));
1924 /* Number of SYN retransmits before a connection is dropped (Linux 2.4, glibc 2.2) */
1925 rb_define_const(rb_mSockConst, "TCP_SYNCNT", INTEGER2NUM(TCP_SYNCNT));
1926#endif
1927#if defined(TCP_WINDOW_CLAMP)
1928 /* Clamp the size of the advertised window (Linux 2.4, glibc 2.2) */
1929 rb_define_const(rb_cSocket, "TCP_WINDOW_CLAMP", INTEGER2NUM(TCP_WINDOW_CLAMP));
1930 /* Clamp the size of the advertised window (Linux 2.4, glibc 2.2) */
1931 rb_define_const(rb_mSockConst, "TCP_WINDOW_CLAMP", INTEGER2NUM(TCP_WINDOW_CLAMP));
1932#endif
1933#if defined(TCP_FASTOPEN)
1934 /* Reduce step of the handshake process (Linux 3.7, glibc 2.18) */
1935 rb_define_const(rb_cSocket, "TCP_FASTOPEN", INTEGER2NUM(TCP_FASTOPEN));
1936 /* Reduce step of the handshake process (Linux 3.7, glibc 2.18) */
1937 rb_define_const(rb_mSockConst, "TCP_FASTOPEN", INTEGER2NUM(TCP_FASTOPEN));
1938#endif
1939#if defined(TCP_CONGESTION)
1940 /* TCP congestion control algorithm (Linux 2.6.13, glibc 2.6) */
1941 rb_define_const(rb_cSocket, "TCP_CONGESTION", INTEGER2NUM(TCP_CONGESTION));
1942 /* TCP congestion control algorithm (Linux 2.6.13, glibc 2.6) */
1943 rb_define_const(rb_mSockConst, "TCP_CONGESTION", INTEGER2NUM(TCP_CONGESTION));
1944#endif
1945#if defined(TCP_COOKIE_TRANSACTIONS)
1946 /* TCP Cookie Transactions (Linux 2.6.33, glibc 2.18) */
1947 rb_define_const(rb_cSocket, "TCP_COOKIE_TRANSACTIONS", INTEGER2NUM(TCP_COOKIE_TRANSACTIONS));
1948 /* TCP Cookie Transactions (Linux 2.6.33, glibc 2.18) */
1949 rb_define_const(rb_mSockConst, "TCP_COOKIE_TRANSACTIONS", INTEGER2NUM(TCP_COOKIE_TRANSACTIONS));
1950#endif
1951#if defined(TCP_QUEUE_SEQ)
1952 /* Sequence of a queue for repair mode (Linux 3.5, glibc 2.18) */
1953 rb_define_const(rb_cSocket, "TCP_QUEUE_SEQ", INTEGER2NUM(TCP_QUEUE_SEQ));
1954 /* Sequence of a queue for repair mode (Linux 3.5, glibc 2.18) */
1955 rb_define_const(rb_mSockConst, "TCP_QUEUE_SEQ", INTEGER2NUM(TCP_QUEUE_SEQ));
1956#endif
1957#if defined(TCP_REPAIR)
1958 /* Repair mode (Linux 3.5, glibc 2.18) */
1959 rb_define_const(rb_cSocket, "TCP_REPAIR", INTEGER2NUM(TCP_REPAIR));
1960 /* Repair mode (Linux 3.5, glibc 2.18) */
1961 rb_define_const(rb_mSockConst, "TCP_REPAIR", INTEGER2NUM(TCP_REPAIR));
1962#endif
1963#if defined(TCP_REPAIR_OPTIONS)
1964 /* Options for repair mode (Linux 3.5, glibc 2.18) */
1965 rb_define_const(rb_cSocket, "TCP_REPAIR_OPTIONS", INTEGER2NUM(TCP_REPAIR_OPTIONS));
1966 /* Options for repair mode (Linux 3.5, glibc 2.18) */
1967 rb_define_const(rb_mSockConst, "TCP_REPAIR_OPTIONS", INTEGER2NUM(TCP_REPAIR_OPTIONS));
1968#endif
1969#if defined(TCP_REPAIR_QUEUE)
1970 /* Queue for repair mode (Linux 3.5, glibc 2.18) */
1971 rb_define_const(rb_cSocket, "TCP_REPAIR_QUEUE", INTEGER2NUM(TCP_REPAIR_QUEUE));
1972 /* Queue for repair mode (Linux 3.5, glibc 2.18) */
1973 rb_define_const(rb_mSockConst, "TCP_REPAIR_QUEUE", INTEGER2NUM(TCP_REPAIR_QUEUE));
1974#endif
1975#if defined(TCP_THIN_DUPACK)
1976 /* Duplicated acknowledgments handling for thin-streams (Linux 2.6.34, glibc 2.18) */
1977 rb_define_const(rb_cSocket, "TCP_THIN_DUPACK", INTEGER2NUM(TCP_THIN_DUPACK));
1978 /* Duplicated acknowledgments handling for thin-streams (Linux 2.6.34, glibc 2.18) */
1979 rb_define_const(rb_mSockConst, "TCP_THIN_DUPACK", INTEGER2NUM(TCP_THIN_DUPACK));
1980#endif
1981#if defined(TCP_THIN_LINEAR_TIMEOUTS)
1982 /* Linear timeouts for thin-streams (Linux 2.6.34, glibc 2.18) */
1983 rb_define_const(rb_cSocket, "TCP_THIN_LINEAR_TIMEOUTS", INTEGER2NUM(TCP_THIN_LINEAR_TIMEOUTS));
1984 /* Linear timeouts for thin-streams (Linux 2.6.34, glibc 2.18) */
1985 rb_define_const(rb_mSockConst, "TCP_THIN_LINEAR_TIMEOUTS", INTEGER2NUM(TCP_THIN_LINEAR_TIMEOUTS));
1986#endif
1987#if defined(TCP_TIMESTAMP)
1988 /* TCP timestamp (Linux 3.9, glibc 2.18) */
1989 rb_define_const(rb_cSocket, "TCP_TIMESTAMP", INTEGER2NUM(TCP_TIMESTAMP));
1990 /* TCP timestamp (Linux 3.9, glibc 2.18) */
1991 rb_define_const(rb_mSockConst, "TCP_TIMESTAMP", INTEGER2NUM(TCP_TIMESTAMP));
1992#endif
1993#if defined(TCP_USER_TIMEOUT)
1994 /* Max timeout before a TCP connection is aborted (Linux 2.6.37, glibc 2.18) */
1995 rb_define_const(rb_cSocket, "TCP_USER_TIMEOUT", INTEGER2NUM(TCP_USER_TIMEOUT));
1996 /* Max timeout before a TCP connection is aborted (Linux 2.6.37, glibc 2.18) */
1997 rb_define_const(rb_mSockConst, "TCP_USER_TIMEOUT", INTEGER2NUM(TCP_USER_TIMEOUT));
1998#endif
1999#if defined(UDP_CORK)
2000 /* Don't send partial frames (Linux 2.5.44, glibc 2.11) */
2001 rb_define_const(rb_cSocket, "UDP_CORK", INTEGER2NUM(UDP_CORK));
2002 /* Don't send partial frames (Linux 2.5.44, glibc 2.11) */
2003 rb_define_const(rb_mSockConst, "UDP_CORK", INTEGER2NUM(UDP_CORK));
2004#endif
2005#if defined(EAI_ADDRFAMILY)
2006 /* Address family for hostname not supported */
2007 rb_define_const(rb_cSocket, "EAI_ADDRFAMILY", INTEGER2NUM(EAI_ADDRFAMILY));
2008 /* Address family for hostname not supported */
2009 rb_define_const(rb_mSockConst, "EAI_ADDRFAMILY", INTEGER2NUM(EAI_ADDRFAMILY));
2010#endif
2011#if defined(EAI_AGAIN)
2012 /* Temporary failure in name resolution */
2013 rb_define_const(rb_cSocket, "EAI_AGAIN", INTEGER2NUM(EAI_AGAIN));
2014 /* Temporary failure in name resolution */
2015 rb_define_const(rb_mSockConst, "EAI_AGAIN", INTEGER2NUM(EAI_AGAIN));
2016#endif
2017#if defined(EAI_BADFLAGS)
2018 /* Invalid flags */
2019 rb_define_const(rb_cSocket, "EAI_BADFLAGS", INTEGER2NUM(EAI_BADFLAGS));
2020 /* Invalid flags */
2021 rb_define_const(rb_mSockConst, "EAI_BADFLAGS", INTEGER2NUM(EAI_BADFLAGS));
2022#endif
2023#if defined(EAI_FAIL)
2024 /* Non-recoverable failure in name resolution */
2025 rb_define_const(rb_cSocket, "EAI_FAIL", INTEGER2NUM(EAI_FAIL));
2026 /* Non-recoverable failure in name resolution */
2027 rb_define_const(rb_mSockConst, "EAI_FAIL", INTEGER2NUM(EAI_FAIL));
2028#endif
2029#if defined(EAI_FAMILY)
2030 /* Address family not supported */
2031 rb_define_const(rb_cSocket, "EAI_FAMILY", INTEGER2NUM(EAI_FAMILY));
2032 /* Address family not supported */
2033 rb_define_const(rb_mSockConst, "EAI_FAMILY", INTEGER2NUM(EAI_FAMILY));
2034#endif
2035#if defined(EAI_MEMORY)
2036 /* Memory allocation failure */
2037 rb_define_const(rb_cSocket, "EAI_MEMORY", INTEGER2NUM(EAI_MEMORY));
2038 /* Memory allocation failure */
2039 rb_define_const(rb_mSockConst, "EAI_MEMORY", INTEGER2NUM(EAI_MEMORY));
2040#endif
2041#if defined(EAI_NODATA)
2042 /* No address associated with hostname */
2043 rb_define_const(rb_cSocket, "EAI_NODATA", INTEGER2NUM(EAI_NODATA));
2044 /* No address associated with hostname */
2045 rb_define_const(rb_mSockConst, "EAI_NODATA", INTEGER2NUM(EAI_NODATA));
2046#endif
2047#if defined(EAI_NONAME)
2048 /* Hostname nor servname, or not known */
2049 rb_define_const(rb_cSocket, "EAI_NONAME", INTEGER2NUM(EAI_NONAME));
2050 /* Hostname nor servname, or not known */
2051 rb_define_const(rb_mSockConst, "EAI_NONAME", INTEGER2NUM(EAI_NONAME));
2052#endif
2053#if defined(EAI_OVERFLOW)
2054 /* Argument buffer overflow */
2055 rb_define_const(rb_cSocket, "EAI_OVERFLOW", INTEGER2NUM(EAI_OVERFLOW));
2056 /* Argument buffer overflow */
2057 rb_define_const(rb_mSockConst, "EAI_OVERFLOW", INTEGER2NUM(EAI_OVERFLOW));
2058#endif
2059#if defined(EAI_SERVICE)
2060 /* Servname not supported for socket type */
2061 rb_define_const(rb_cSocket, "EAI_SERVICE", INTEGER2NUM(EAI_SERVICE));
2062 /* Servname not supported for socket type */
2063 rb_define_const(rb_mSockConst, "EAI_SERVICE", INTEGER2NUM(EAI_SERVICE));
2064#endif
2065#if defined(EAI_SOCKTYPE)
2066 /* Socket type not supported */
2067 rb_define_const(rb_cSocket, "EAI_SOCKTYPE", INTEGER2NUM(EAI_SOCKTYPE));
2068 /* Socket type not supported */
2069 rb_define_const(rb_mSockConst, "EAI_SOCKTYPE", INTEGER2NUM(EAI_SOCKTYPE));
2070#endif
2071#if defined(EAI_SYSTEM)
2072 /* System error returned in errno */
2073 rb_define_const(rb_cSocket, "EAI_SYSTEM", INTEGER2NUM(EAI_SYSTEM));
2074 /* System error returned in errno */
2075 rb_define_const(rb_mSockConst, "EAI_SYSTEM", INTEGER2NUM(EAI_SYSTEM));
2076#endif
2077#if defined(EAI_BADHINTS)
2078 /* Invalid value for hints */
2079 rb_define_const(rb_cSocket, "EAI_BADHINTS", INTEGER2NUM(EAI_BADHINTS));
2080 /* Invalid value for hints */
2081 rb_define_const(rb_mSockConst, "EAI_BADHINTS", INTEGER2NUM(EAI_BADHINTS));
2082#endif
2083#if defined(EAI_PROTOCOL)
2084 /* Resolved protocol is unknown */
2085 rb_define_const(rb_cSocket, "EAI_PROTOCOL", INTEGER2NUM(EAI_PROTOCOL));
2086 /* Resolved protocol is unknown */
2087 rb_define_const(rb_mSockConst, "EAI_PROTOCOL", INTEGER2NUM(EAI_PROTOCOL));
2088#endif
2089#if defined(EAI_MAX)
2090 /* Maximum error code from getaddrinfo */
2091 rb_define_const(rb_cSocket, "EAI_MAX", INTEGER2NUM(EAI_MAX));
2092 /* Maximum error code from getaddrinfo */
2093 rb_define_const(rb_mSockConst, "EAI_MAX", INTEGER2NUM(EAI_MAX));
2094#endif
2095#if defined(AI_PASSIVE)
2096 /* Get address to use with bind() */
2097 rb_define_const(rb_cSocket, "AI_PASSIVE", INTEGER2NUM(AI_PASSIVE));
2098 /* Get address to use with bind() */
2099 rb_define_const(rb_mSockConst, "AI_PASSIVE", INTEGER2NUM(AI_PASSIVE));
2100#endif
2101#if defined(AI_CANONNAME)
2102 /* Fill in the canonical name */
2103 rb_define_const(rb_cSocket, "AI_CANONNAME", INTEGER2NUM(AI_CANONNAME));
2104 /* Fill in the canonical name */
2105 rb_define_const(rb_mSockConst, "AI_CANONNAME", INTEGER2NUM(AI_CANONNAME));
2106#endif
2107#if defined(AI_NUMERICHOST)
2108 /* Prevent host name resolution */
2109 rb_define_const(rb_cSocket, "AI_NUMERICHOST", INTEGER2NUM(AI_NUMERICHOST));
2110 /* Prevent host name resolution */
2111 rb_define_const(rb_mSockConst, "AI_NUMERICHOST", INTEGER2NUM(AI_NUMERICHOST));
2112#endif
2113#if defined(AI_NUMERICSERV)
2114 /* Prevent service name resolution */
2115 rb_define_const(rb_cSocket, "AI_NUMERICSERV", INTEGER2NUM(AI_NUMERICSERV));
2116 /* Prevent service name resolution */
2117 rb_define_const(rb_mSockConst, "AI_NUMERICSERV", INTEGER2NUM(AI_NUMERICSERV));
2118#endif
2119#if defined(AI_MASK)
2120 /* Valid flag mask for getaddrinfo (not for application use) */
2121 rb_define_const(rb_cSocket, "AI_MASK", INTEGER2NUM(AI_MASK));
2122 /* Valid flag mask for getaddrinfo (not for application use) */
2123 rb_define_const(rb_mSockConst, "AI_MASK", INTEGER2NUM(AI_MASK));
2124#endif
2125#if defined(AI_ALL)
2126 /* Allow all addresses */
2127 rb_define_const(rb_cSocket, "AI_ALL", INTEGER2NUM(AI_ALL));
2128 /* Allow all addresses */
2129 rb_define_const(rb_mSockConst, "AI_ALL", INTEGER2NUM(AI_ALL));
2130#endif
2131#if defined(AI_V4MAPPED_CFG)
2132 /* Accept IPv4 mapped addresses if the kernel supports it */
2133 rb_define_const(rb_cSocket, "AI_V4MAPPED_CFG", INTEGER2NUM(AI_V4MAPPED_CFG));
2134 /* Accept IPv4 mapped addresses if the kernel supports it */
2135 rb_define_const(rb_mSockConst, "AI_V4MAPPED_CFG", INTEGER2NUM(AI_V4MAPPED_CFG));
2136#endif
2137#if defined(AI_ADDRCONFIG)
2138 /* Accept only if any address is assigned */
2139 rb_define_const(rb_cSocket, "AI_ADDRCONFIG", INTEGER2NUM(AI_ADDRCONFIG));
2140 /* Accept only if any address is assigned */
2141 rb_define_const(rb_mSockConst, "AI_ADDRCONFIG", INTEGER2NUM(AI_ADDRCONFIG));
2142#endif
2143#if defined(AI_V4MAPPED)
2144 /* Accept IPv4-mapped IPv6 addresses */
2145 rb_define_const(rb_cSocket, "AI_V4MAPPED", INTEGER2NUM(AI_V4MAPPED));
2146 /* Accept IPv4-mapped IPv6 addresses */
2147 rb_define_const(rb_mSockConst, "AI_V4MAPPED", INTEGER2NUM(AI_V4MAPPED));
2148#endif
2149#if defined(AI_DEFAULT)
2150 /* Default flags for getaddrinfo */
2151 rb_define_const(rb_cSocket, "AI_DEFAULT", INTEGER2NUM(AI_DEFAULT));
2152 /* Default flags for getaddrinfo */
2153 rb_define_const(rb_mSockConst, "AI_DEFAULT", INTEGER2NUM(AI_DEFAULT));
2154#endif
2155#if defined(NI_MAXHOST)
2156 /* Maximum length of a hostname */
2157 rb_define_const(rb_cSocket, "NI_MAXHOST", INTEGER2NUM(NI_MAXHOST));
2158 /* Maximum length of a hostname */
2159 rb_define_const(rb_mSockConst, "NI_MAXHOST", INTEGER2NUM(NI_MAXHOST));
2160#endif
2161#if defined(NI_MAXSERV)
2162 /* Maximum length of a service name */
2163 rb_define_const(rb_cSocket, "NI_MAXSERV", INTEGER2NUM(NI_MAXSERV));
2164 /* Maximum length of a service name */
2165 rb_define_const(rb_mSockConst, "NI_MAXSERV", INTEGER2NUM(NI_MAXSERV));
2166#endif
2167#if defined(NI_NOFQDN)
2168 /* An FQDN is not required for local hosts, return only the local part */
2169 rb_define_const(rb_cSocket, "NI_NOFQDN", INTEGER2NUM(NI_NOFQDN));
2170 /* An FQDN is not required for local hosts, return only the local part */
2171 rb_define_const(rb_mSockConst, "NI_NOFQDN", INTEGER2NUM(NI_NOFQDN));
2172#endif
2173#if defined(NI_NUMERICHOST)
2174 /* Return a numeric address */
2175 rb_define_const(rb_cSocket, "NI_NUMERICHOST", INTEGER2NUM(NI_NUMERICHOST));
2176 /* Return a numeric address */
2177 rb_define_const(rb_mSockConst, "NI_NUMERICHOST", INTEGER2NUM(NI_NUMERICHOST));
2178#endif
2179#if defined(NI_NAMEREQD)
2180 /* A name is required */
2181 rb_define_const(rb_cSocket, "NI_NAMEREQD", INTEGER2NUM(NI_NAMEREQD));
2182 /* A name is required */
2183 rb_define_const(rb_mSockConst, "NI_NAMEREQD", INTEGER2NUM(NI_NAMEREQD));
2184#endif
2185#if defined(NI_NUMERICSERV)
2186 /* Return the service name as a digit string */
2187 rb_define_const(rb_cSocket, "NI_NUMERICSERV", INTEGER2NUM(NI_NUMERICSERV));
2188 /* Return the service name as a digit string */
2189 rb_define_const(rb_mSockConst, "NI_NUMERICSERV", INTEGER2NUM(NI_NUMERICSERV));
2190#endif
2191#if defined(NI_DGRAM)
2192 /* The service specified is a datagram service (looks up UDP ports) */
2193 rb_define_const(rb_cSocket, "NI_DGRAM", INTEGER2NUM(NI_DGRAM));
2194 /* The service specified is a datagram service (looks up UDP ports) */
2195 rb_define_const(rb_mSockConst, "NI_DGRAM", INTEGER2NUM(NI_DGRAM));
2196#endif
2197#if defined(SHUT_RD)
2198 /* Shut down the reading side of the socket */
2199 rb_define_const(rb_cSocket, "SHUT_RD", INTEGER2NUM(SHUT_RD));
2200 /* Shut down the reading side of the socket */
2201 rb_define_const(rb_mSockConst, "SHUT_RD", INTEGER2NUM(SHUT_RD));
2202#endif
2203#if defined(SHUT_WR)
2204 /* Shut down the writing side of the socket */
2205 rb_define_const(rb_cSocket, "SHUT_WR", INTEGER2NUM(SHUT_WR));
2206 /* Shut down the writing side of the socket */
2207 rb_define_const(rb_mSockConst, "SHUT_WR", INTEGER2NUM(SHUT_WR));
2208#endif
2209#if defined(SHUT_RDWR)
2210 /* Shut down the both sides of the socket */
2211 rb_define_const(rb_cSocket, "SHUT_RDWR", INTEGER2NUM(SHUT_RDWR));
2212 /* Shut down the both sides of the socket */
2213 rb_define_const(rb_mSockConst, "SHUT_RDWR", INTEGER2NUM(SHUT_RDWR));
2214#endif
2215#if defined(INET6)
2216#if defined(IPV6_JOIN_GROUP)
2217 /* Join a group membership */
2218 rb_define_const(rb_cSocket, "IPV6_JOIN_GROUP", INTEGER2NUM(IPV6_JOIN_GROUP));
2219 /* Join a group membership */
2220 rb_define_const(rb_mSockConst, "IPV6_JOIN_GROUP", INTEGER2NUM(IPV6_JOIN_GROUP));
2221#endif
2222#endif
2223#if defined(INET6)
2224#if defined(IPV6_LEAVE_GROUP)
2225 /* Leave a group membership */
2226 rb_define_const(rb_cSocket, "IPV6_LEAVE_GROUP", INTEGER2NUM(IPV6_LEAVE_GROUP));
2227 /* Leave a group membership */
2228 rb_define_const(rb_mSockConst, "IPV6_LEAVE_GROUP", INTEGER2NUM(IPV6_LEAVE_GROUP));
2229#endif
2230#endif
2231#if defined(INET6)
2232#if defined(IPV6_MULTICAST_HOPS)
2233 /* IP6 multicast hops */
2234 rb_define_const(rb_cSocket, "IPV6_MULTICAST_HOPS", INTEGER2NUM(IPV6_MULTICAST_HOPS));
2235 /* IP6 multicast hops */
2236 rb_define_const(rb_mSockConst, "IPV6_MULTICAST_HOPS", INTEGER2NUM(IPV6_MULTICAST_HOPS));
2237#endif
2238#endif
2239#if defined(INET6)
2240#if defined(IPV6_MULTICAST_IF)
2241 /* IP6 multicast interface */
2242 rb_define_const(rb_cSocket, "IPV6_MULTICAST_IF", INTEGER2NUM(IPV6_MULTICAST_IF));
2243 /* IP6 multicast interface */
2244 rb_define_const(rb_mSockConst, "IPV6_MULTICAST_IF", INTEGER2NUM(IPV6_MULTICAST_IF));
2245#endif
2246#endif
2247#if defined(INET6)
2248#if defined(IPV6_MULTICAST_LOOP)
2249 /* IP6 multicast loopback */
2250 rb_define_const(rb_cSocket, "IPV6_MULTICAST_LOOP", INTEGER2NUM(IPV6_MULTICAST_LOOP));
2251 /* IP6 multicast loopback */
2252 rb_define_const(rb_mSockConst, "IPV6_MULTICAST_LOOP", INTEGER2NUM(IPV6_MULTICAST_LOOP));
2253#endif
2254#endif
2255#if defined(INET6)
2256#if defined(IPV6_UNICAST_HOPS)
2257 /* IP6 unicast hops */
2258 rb_define_const(rb_cSocket, "IPV6_UNICAST_HOPS", INTEGER2NUM(IPV6_UNICAST_HOPS));
2259 /* IP6 unicast hops */
2260 rb_define_const(rb_mSockConst, "IPV6_UNICAST_HOPS", INTEGER2NUM(IPV6_UNICAST_HOPS));
2261#endif
2262#endif
2263#if defined(INET6)
2264#if defined(IPV6_V6ONLY)
2265 /* Only bind IPv6 with a wildcard bind */
2266 rb_define_const(rb_cSocket, "IPV6_V6ONLY", INTEGER2NUM(IPV6_V6ONLY));
2267 /* Only bind IPv6 with a wildcard bind */
2268 rb_define_const(rb_mSockConst, "IPV6_V6ONLY", INTEGER2NUM(IPV6_V6ONLY));
2269#endif
2270#endif
2271#if defined(INET6)
2272#if defined(IPV6_CHECKSUM)
2273 /* Checksum offset for raw sockets */
2274 rb_define_const(rb_cSocket, "IPV6_CHECKSUM", INTEGER2NUM(IPV6_CHECKSUM));
2275 /* Checksum offset for raw sockets */
2276 rb_define_const(rb_mSockConst, "IPV6_CHECKSUM", INTEGER2NUM(IPV6_CHECKSUM));
2277#endif
2278#endif
2279#if defined(INET6)
2280#if defined(IPV6_DONTFRAG)
2281 /* Don't fragment packets */
2282 rb_define_const(rb_cSocket, "IPV6_DONTFRAG", INTEGER2NUM(IPV6_DONTFRAG));
2283 /* Don't fragment packets */
2284 rb_define_const(rb_mSockConst, "IPV6_DONTFRAG", INTEGER2NUM(IPV6_DONTFRAG));
2285#endif
2286#endif
2287#if defined(INET6)
2288#if defined(IPV6_DSTOPTS)
2289 /* Destination option */
2290 rb_define_const(rb_cSocket, "IPV6_DSTOPTS", INTEGER2NUM(IPV6_DSTOPTS));
2291 /* Destination option */
2292 rb_define_const(rb_mSockConst, "IPV6_DSTOPTS", INTEGER2NUM(IPV6_DSTOPTS));
2293#endif
2294#endif
2295#if defined(INET6)
2296#if defined(IPV6_HOPLIMIT)
2297 /* Hop limit */
2298 rb_define_const(rb_cSocket, "IPV6_HOPLIMIT", INTEGER2NUM(IPV6_HOPLIMIT));
2299 /* Hop limit */
2300 rb_define_const(rb_mSockConst, "IPV6_HOPLIMIT", INTEGER2NUM(IPV6_HOPLIMIT));
2301#endif
2302#endif
2303#if defined(INET6)
2304#if defined(IPV6_HOPOPTS)
2305 /* Hop-by-hop option */
2306 rb_define_const(rb_cSocket, "IPV6_HOPOPTS", INTEGER2NUM(IPV6_HOPOPTS));
2307 /* Hop-by-hop option */
2308 rb_define_const(rb_mSockConst, "IPV6_HOPOPTS", INTEGER2NUM(IPV6_HOPOPTS));
2309#endif
2310#endif
2311#if defined(INET6)
2312#if defined(IPV6_NEXTHOP)
2313 /* Next hop address */
2314 rb_define_const(rb_cSocket, "IPV6_NEXTHOP", INTEGER2NUM(IPV6_NEXTHOP));
2315 /* Next hop address */
2316 rb_define_const(rb_mSockConst, "IPV6_NEXTHOP", INTEGER2NUM(IPV6_NEXTHOP));
2317#endif
2318#endif
2319#if defined(INET6)
2320#if defined(IPV6_PATHMTU)
2321 /* Retrieve current path MTU */
2322 rb_define_const(rb_cSocket, "IPV6_PATHMTU", INTEGER2NUM(IPV6_PATHMTU));
2323 /* Retrieve current path MTU */
2324 rb_define_const(rb_mSockConst, "IPV6_PATHMTU", INTEGER2NUM(IPV6_PATHMTU));
2325#endif
2326#endif
2327#if defined(INET6)
2328#if defined(IPV6_PKTINFO)
2329 /* Receive packet information with datagram */
2330 rb_define_const(rb_cSocket, "IPV6_PKTINFO", INTEGER2NUM(IPV6_PKTINFO));
2331 /* Receive packet information with datagram */
2332 rb_define_const(rb_mSockConst, "IPV6_PKTINFO", INTEGER2NUM(IPV6_PKTINFO));
2333#endif
2334#endif
2335#if defined(INET6)
2336#if defined(IPV6_RECVDSTOPTS)
2337 /* Receive all IP6 options for response */
2338 rb_define_const(rb_cSocket, "IPV6_RECVDSTOPTS", INTEGER2NUM(IPV6_RECVDSTOPTS));
2339 /* Receive all IP6 options for response */
2340 rb_define_const(rb_mSockConst, "IPV6_RECVDSTOPTS", INTEGER2NUM(IPV6_RECVDSTOPTS));
2341#endif
2342#endif
2343#if defined(INET6)
2344#if defined(IPV6_RECVHOPLIMIT)
2345 /* Receive hop limit with datagram */
2346 rb_define_const(rb_cSocket, "IPV6_RECVHOPLIMIT", INTEGER2NUM(IPV6_RECVHOPLIMIT));
2347 /* Receive hop limit with datagram */
2348 rb_define_const(rb_mSockConst, "IPV6_RECVHOPLIMIT", INTEGER2NUM(IPV6_RECVHOPLIMIT));
2349#endif
2350#endif
2351#if defined(INET6)
2352#if defined(IPV6_RECVHOPOPTS)
2353 /* Receive hop-by-hop options */
2354 rb_define_const(rb_cSocket, "IPV6_RECVHOPOPTS", INTEGER2NUM(IPV6_RECVHOPOPTS));
2355 /* Receive hop-by-hop options */
2356 rb_define_const(rb_mSockConst, "IPV6_RECVHOPOPTS", INTEGER2NUM(IPV6_RECVHOPOPTS));
2357#endif
2358#endif
2359#if defined(INET6)
2360#if defined(IPV6_RECVPKTINFO)
2361 /* Receive destination IP address and incoming interface */
2362 rb_define_const(rb_cSocket, "IPV6_RECVPKTINFO", INTEGER2NUM(IPV6_RECVPKTINFO));
2363 /* Receive destination IP address and incoming interface */
2364 rb_define_const(rb_mSockConst, "IPV6_RECVPKTINFO", INTEGER2NUM(IPV6_RECVPKTINFO));
2365#endif
2366#endif
2367#if defined(INET6)
2368#if defined(IPV6_RECVRTHDR)
2369 /* Receive routing header */
2370 rb_define_const(rb_cSocket, "IPV6_RECVRTHDR", INTEGER2NUM(IPV6_RECVRTHDR));
2371 /* Receive routing header */
2372 rb_define_const(rb_mSockConst, "IPV6_RECVRTHDR", INTEGER2NUM(IPV6_RECVRTHDR));
2373#endif
2374#endif
2375#if defined(INET6)
2376#if defined(IPV6_RECVTCLASS)
2377 /* Receive traffic class */
2378 rb_define_const(rb_cSocket, "IPV6_RECVTCLASS", INTEGER2NUM(IPV6_RECVTCLASS));
2379 /* Receive traffic class */
2380 rb_define_const(rb_mSockConst, "IPV6_RECVTCLASS", INTEGER2NUM(IPV6_RECVTCLASS));
2381#endif
2382#endif
2383#if defined(INET6)
2384#if defined(IPV6_RTHDR)
2385 /* Allows removal of sticky routing headers */
2386 rb_define_const(rb_cSocket, "IPV6_RTHDR", INTEGER2NUM(IPV6_RTHDR));
2387 /* Allows removal of sticky routing headers */
2388 rb_define_const(rb_mSockConst, "IPV6_RTHDR", INTEGER2NUM(IPV6_RTHDR));
2389#endif
2390#endif
2391#if defined(INET6)
2392#if defined(IPV6_RTHDRDSTOPTS)
2393 /* Allows removal of sticky destination options header */
2394 rb_define_const(rb_cSocket, "IPV6_RTHDRDSTOPTS", INTEGER2NUM(IPV6_RTHDRDSTOPTS));
2395 /* Allows removal of sticky destination options header */
2396 rb_define_const(rb_mSockConst, "IPV6_RTHDRDSTOPTS", INTEGER2NUM(IPV6_RTHDRDSTOPTS));
2397#endif
2398#endif
2399#if defined(INET6)
2400#if defined(IPV6_RTHDR_TYPE_0)
2401 /* Routing header type 0 */
2402 rb_define_const(rb_cSocket, "IPV6_RTHDR_TYPE_0", INTEGER2NUM(IPV6_RTHDR_TYPE_0));
2403 /* Routing header type 0 */
2404 rb_define_const(rb_mSockConst, "IPV6_RTHDR_TYPE_0", INTEGER2NUM(IPV6_RTHDR_TYPE_0));
2405#endif
2406#endif
2407#if defined(INET6)
2408#if defined(IPV6_RECVPATHMTU)
2409 /* Receive current path MTU with datagram */
2410 rb_define_const(rb_cSocket, "IPV6_RECVPATHMTU", INTEGER2NUM(IPV6_RECVPATHMTU));
2411 /* Receive current path MTU with datagram */
2412 rb_define_const(rb_mSockConst, "IPV6_RECVPATHMTU", INTEGER2NUM(IPV6_RECVPATHMTU));
2413#endif
2414#endif
2415#if defined(INET6)
2416#if defined(IPV6_TCLASS)
2417 /* Specify the traffic class */
2418 rb_define_const(rb_cSocket, "IPV6_TCLASS", INTEGER2NUM(IPV6_TCLASS));
2419 /* Specify the traffic class */
2420 rb_define_const(rb_mSockConst, "IPV6_TCLASS", INTEGER2NUM(IPV6_TCLASS));
2421#endif
2422#endif
2423#if defined(INET6)
2424#if defined(IPV6_USE_MIN_MTU)
2425 /* Use the minimum MTU size */
2426 rb_define_const(rb_cSocket, "IPV6_USE_MIN_MTU", INTEGER2NUM(IPV6_USE_MIN_MTU));
2427 /* Use the minimum MTU size */
2428 rb_define_const(rb_mSockConst, "IPV6_USE_MIN_MTU", INTEGER2NUM(IPV6_USE_MIN_MTU));
2429#endif
2430#endif
2431#if defined(INET_ADDRSTRLEN)
2432 /* Maximum length of an IPv4 address string */
2433 rb_define_const(rb_cSocket, "INET_ADDRSTRLEN", INTEGER2NUM(INET_ADDRSTRLEN));
2434 /* Maximum length of an IPv4 address string */
2435 rb_define_const(rb_mSockConst, "INET_ADDRSTRLEN", INTEGER2NUM(INET_ADDRSTRLEN));
2436#endif
2437#if defined(INET6_ADDRSTRLEN)
2438 /* Maximum length of an IPv6 address string */
2439 rb_define_const(rb_cSocket, "INET6_ADDRSTRLEN", INTEGER2NUM(INET6_ADDRSTRLEN));
2440 /* Maximum length of an IPv6 address string */
2441 rb_define_const(rb_mSockConst, "INET6_ADDRSTRLEN", INTEGER2NUM(INET6_ADDRSTRLEN));
2442#endif
2443#if defined(IFNAMSIZ)
2444 /* Maximum interface name size */
2445 rb_define_const(rb_cSocket, "IFNAMSIZ", INTEGER2NUM(IFNAMSIZ));
2446 /* Maximum interface name size */
2447 rb_define_const(rb_mSockConst, "IFNAMSIZ", INTEGER2NUM(IFNAMSIZ));
2448#endif
2449#if defined(IF_NAMESIZE)
2450 /* Maximum interface name size */
2451 rb_define_const(rb_cSocket, "IF_NAMESIZE", INTEGER2NUM(IF_NAMESIZE));
2452 /* Maximum interface name size */
2453 rb_define_const(rb_mSockConst, "IF_NAMESIZE", INTEGER2NUM(IF_NAMESIZE));
2454#endif
2455#if defined(SOMAXCONN)
2456 /* Maximum connection requests that may be queued for a socket */
2457 rb_define_const(rb_cSocket, "SOMAXCONN", INTEGER2NUM(SOMAXCONN));
2458 /* Maximum connection requests that may be queued for a socket */
2459 rb_define_const(rb_mSockConst, "SOMAXCONN", INTEGER2NUM(SOMAXCONN));
2460#endif
2461#if defined(SCM_RIGHTS)
2462 /* Access rights */
2463 rb_define_const(rb_cSocket, "SCM_RIGHTS", INTEGER2NUM(SCM_RIGHTS));
2464 /* Access rights */
2465 rb_define_const(rb_mSockConst, "SCM_RIGHTS", INTEGER2NUM(SCM_RIGHTS));
2466#endif
2467#if defined(SCM_TIMESTAMP)
2468 /* Timestamp (timeval) */
2469 rb_define_const(rb_cSocket, "SCM_TIMESTAMP", INTEGER2NUM(SCM_TIMESTAMP));
2470 /* Timestamp (timeval) */
2471 rb_define_const(rb_mSockConst, "SCM_TIMESTAMP", INTEGER2NUM(SCM_TIMESTAMP));
2472#endif
2473#if defined(SCM_TIMESTAMPNS)
2474 /* Timespec (timespec) */
2475 rb_define_const(rb_cSocket, "SCM_TIMESTAMPNS", INTEGER2NUM(SCM_TIMESTAMPNS));
2476 /* Timespec (timespec) */
2477 rb_define_const(rb_mSockConst, "SCM_TIMESTAMPNS", INTEGER2NUM(SCM_TIMESTAMPNS));
2478#endif
2479#if defined(SCM_TIMESTAMPING)
2480 /* Timestamp (timespec list) (Linux 2.6.30) */
2481 rb_define_const(rb_cSocket, "SCM_TIMESTAMPING", INTEGER2NUM(SCM_TIMESTAMPING));
2482 /* Timestamp (timespec list) (Linux 2.6.30) */
2483 rb_define_const(rb_mSockConst, "SCM_TIMESTAMPING", INTEGER2NUM(SCM_TIMESTAMPING));
2484#endif
2485#if defined(SCM_BINTIME)
2486 /* Timestamp (bintime) */
2487 rb_define_const(rb_cSocket, "SCM_BINTIME", INTEGER2NUM(SCM_BINTIME));
2488 /* Timestamp (bintime) */
2489 rb_define_const(rb_mSockConst, "SCM_BINTIME", INTEGER2NUM(SCM_BINTIME));
2490#endif
2491#if defined(SCM_CREDENTIALS)
2492 /* The sender's credentials */
2493 rb_define_const(rb_cSocket, "SCM_CREDENTIALS", INTEGER2NUM(SCM_CREDENTIALS));
2494 /* The sender's credentials */
2495 rb_define_const(rb_mSockConst, "SCM_CREDENTIALS", INTEGER2NUM(SCM_CREDENTIALS));
2496#endif
2497#if defined(SCM_CREDS)
2498 /* Process credentials */
2499 rb_define_const(rb_cSocket, "SCM_CREDS", INTEGER2NUM(SCM_CREDS));
2500 /* Process credentials */
2501 rb_define_const(rb_mSockConst, "SCM_CREDS", INTEGER2NUM(SCM_CREDS));
2502#endif
2503#if defined(SCM_UCRED)
2504 /* User credentials */
2505 rb_define_const(rb_cSocket, "SCM_UCRED", INTEGER2NUM(SCM_UCRED));
2506 /* User credentials */
2507 rb_define_const(rb_mSockConst, "SCM_UCRED", INTEGER2NUM(SCM_UCRED));
2508#endif
2509#if defined(SCM_WIFI_STATUS)
2510 /* Wifi status (Linux 3.3) */
2511 rb_define_const(rb_cSocket, "SCM_WIFI_STATUS", INTEGER2NUM(SCM_WIFI_STATUS));
2512 /* Wifi status (Linux 3.3) */
2513 rb_define_const(rb_mSockConst, "SCM_WIFI_STATUS", INTEGER2NUM(SCM_WIFI_STATUS));
2514#endif
2515#if defined(LOCAL_PEERCRED)
2516 /* Retrieve peer credentials */
2517 rb_define_const(rb_cSocket, "LOCAL_PEERCRED", INTEGER2NUM(LOCAL_PEERCRED));
2518 /* Retrieve peer credentials */
2519 rb_define_const(rb_mSockConst, "LOCAL_PEERCRED", INTEGER2NUM(LOCAL_PEERCRED));
2520#endif
2521#if defined(LOCAL_CREDS)
2522 /* Pass credentials to receiver */
2523 rb_define_const(rb_cSocket, "LOCAL_CREDS", INTEGER2NUM(LOCAL_CREDS));
2524 /* Pass credentials to receiver */
2525 rb_define_const(rb_mSockConst, "LOCAL_CREDS", INTEGER2NUM(LOCAL_CREDS));
2526#endif
2527#if defined(LOCAL_CONNWAIT)
2528 /* Connect blocks until accepted */
2529 rb_define_const(rb_cSocket, "LOCAL_CONNWAIT", INTEGER2NUM(LOCAL_CONNWAIT));
2530 /* Connect blocks until accepted */
2531 rb_define_const(rb_mSockConst, "LOCAL_CONNWAIT", INTEGER2NUM(LOCAL_CONNWAIT));
2532#endif
2533#if defined(IFF_802_1Q_VLAN)
2534 /* 802.1Q VLAN device */
2535 rb_define_const(rb_cSocket, "IFF_802_1Q_VLAN", INTEGER2NUM(IFF_802_1Q_VLAN));
2536 /* 802.1Q VLAN device */
2537 rb_define_const(rb_mSockConst, "IFF_802_1Q_VLAN", INTEGER2NUM(IFF_802_1Q_VLAN));
2538#endif
2539#if defined(IFF_ALLMULTI)
2540 /* receive all multicast packets */
2541 rb_define_const(rb_cSocket, "IFF_ALLMULTI", INTEGER2NUM(IFF_ALLMULTI));
2542 /* receive all multicast packets */
2543 rb_define_const(rb_mSockConst, "IFF_ALLMULTI", INTEGER2NUM(IFF_ALLMULTI));
2544#endif
2545#if defined(IFF_ALTPHYS)
2546 /* use alternate physical connection */
2547 rb_define_const(rb_cSocket, "IFF_ALTPHYS", INTEGER2NUM(IFF_ALTPHYS));
2548 /* use alternate physical connection */
2549 rb_define_const(rb_mSockConst, "IFF_ALTPHYS", INTEGER2NUM(IFF_ALTPHYS));
2550#endif
2551#if defined(IFF_AUTOMEDIA)
2552 /* auto media select active */
2553 rb_define_const(rb_cSocket, "IFF_AUTOMEDIA", INTEGER2NUM(IFF_AUTOMEDIA));
2554 /* auto media select active */
2555 rb_define_const(rb_mSockConst, "IFF_AUTOMEDIA", INTEGER2NUM(IFF_AUTOMEDIA));
2556#endif
2557#if defined(IFF_BONDING)
2558 /* bonding master or slave */
2559 rb_define_const(rb_cSocket, "IFF_BONDING", INTEGER2NUM(IFF_BONDING));
2560 /* bonding master or slave */
2561 rb_define_const(rb_mSockConst, "IFF_BONDING", INTEGER2NUM(IFF_BONDING));
2562#endif
2563#if defined(IFF_BRIDGE_PORT)
2564 /* device used as bridge port */
2565 rb_define_const(rb_cSocket, "IFF_BRIDGE_PORT", INTEGER2NUM(IFF_BRIDGE_PORT));
2566 /* device used as bridge port */
2567 rb_define_const(rb_mSockConst, "IFF_BRIDGE_PORT", INTEGER2NUM(IFF_BRIDGE_PORT));
2568#endif
2569#if defined(IFF_BROADCAST)
2570 /* broadcast address valid */
2571 rb_define_const(rb_cSocket, "IFF_BROADCAST", INTEGER2NUM(IFF_BROADCAST));
2572 /* broadcast address valid */
2573 rb_define_const(rb_mSockConst, "IFF_BROADCAST", INTEGER2NUM(IFF_BROADCAST));
2574#endif
2575#if defined(IFF_CANTCONFIG)
2576 /* unconfigurable using ioctl(2) */
2577 rb_define_const(rb_cSocket, "IFF_CANTCONFIG", INTEGER2NUM(IFF_CANTCONFIG));
2578 /* unconfigurable using ioctl(2) */
2579 rb_define_const(rb_mSockConst, "IFF_CANTCONFIG", INTEGER2NUM(IFF_CANTCONFIG));
2580#endif
2581#if defined(IFF_DEBUG)
2582 /* turn on debugging */
2583 rb_define_const(rb_cSocket, "IFF_DEBUG", INTEGER2NUM(IFF_DEBUG));
2584 /* turn on debugging */
2585 rb_define_const(rb_mSockConst, "IFF_DEBUG", INTEGER2NUM(IFF_DEBUG));
2586#endif
2587#if defined(IFF_DISABLE_NETPOLL)
2588 /* disable netpoll at run-time */
2589 rb_define_const(rb_cSocket, "IFF_DISABLE_NETPOLL", INTEGER2NUM(IFF_DISABLE_NETPOLL));
2590 /* disable netpoll at run-time */
2591 rb_define_const(rb_mSockConst, "IFF_DISABLE_NETPOLL", INTEGER2NUM(IFF_DISABLE_NETPOLL));
2592#endif
2593#if defined(IFF_DONT_BRIDGE)
2594 /* disallow bridging this ether dev */
2595 rb_define_const(rb_cSocket, "IFF_DONT_BRIDGE", INTEGER2NUM(IFF_DONT_BRIDGE));
2596 /* disallow bridging this ether dev */
2597 rb_define_const(rb_mSockConst, "IFF_DONT_BRIDGE", INTEGER2NUM(IFF_DONT_BRIDGE));
2598#endif
2599#if defined(IFF_DORMANT)
2600 /* driver signals dormant */
2601 rb_define_const(rb_cSocket, "IFF_DORMANT", INTEGER2NUM(IFF_DORMANT));
2602 /* driver signals dormant */
2603 rb_define_const(rb_mSockConst, "IFF_DORMANT", INTEGER2NUM(IFF_DORMANT));
2604#endif
2605#if defined(IFF_DRV_OACTIVE)
2606 /* tx hardware queue is full */
2607 rb_define_const(rb_cSocket, "IFF_DRV_OACTIVE", INTEGER2NUM(IFF_DRV_OACTIVE));
2608 /* tx hardware queue is full */
2609 rb_define_const(rb_mSockConst, "IFF_DRV_OACTIVE", INTEGER2NUM(IFF_DRV_OACTIVE));
2610#endif
2611#if defined(IFF_DRV_RUNNING)
2612 /* resources allocated */
2613 rb_define_const(rb_cSocket, "IFF_DRV_RUNNING", INTEGER2NUM(IFF_DRV_RUNNING));
2614 /* resources allocated */
2615 rb_define_const(rb_mSockConst, "IFF_DRV_RUNNING", INTEGER2NUM(IFF_DRV_RUNNING));
2616#endif
2617#if defined(IFF_DYING)
2618 /* interface is winding down */
2619 rb_define_const(rb_cSocket, "IFF_DYING", INTEGER2NUM(IFF_DYING));
2620 /* interface is winding down */
2621 rb_define_const(rb_mSockConst, "IFF_DYING", INTEGER2NUM(IFF_DYING));
2622#endif
2623#if defined(IFF_DYNAMIC)
2624 /* dialup device with changing addresses */
2625 rb_define_const(rb_cSocket, "IFF_DYNAMIC", INTEGER2NUM(IFF_DYNAMIC));
2626 /* dialup device with changing addresses */
2627 rb_define_const(rb_mSockConst, "IFF_DYNAMIC", INTEGER2NUM(IFF_DYNAMIC));
2628#endif
2629#if defined(IFF_EBRIDGE)
2630 /* ethernet bridging device */
2631 rb_define_const(rb_cSocket, "IFF_EBRIDGE", INTEGER2NUM(IFF_EBRIDGE));
2632 /* ethernet bridging device */
2633 rb_define_const(rb_mSockConst, "IFF_EBRIDGE", INTEGER2NUM(IFF_EBRIDGE));
2634#endif
2635#if defined(IFF_ECHO)
2636 /* echo sent packets */
2637 rb_define_const(rb_cSocket, "IFF_ECHO", INTEGER2NUM(IFF_ECHO));
2638 /* echo sent packets */
2639 rb_define_const(rb_mSockConst, "IFF_ECHO", INTEGER2NUM(IFF_ECHO));
2640#endif
2641#if defined(IFF_ISATAP)
2642 /* ISATAP interface (RFC4214) */
2643 rb_define_const(rb_cSocket, "IFF_ISATAP", INTEGER2NUM(IFF_ISATAP));
2644 /* ISATAP interface (RFC4214) */
2645 rb_define_const(rb_mSockConst, "IFF_ISATAP", INTEGER2NUM(IFF_ISATAP));
2646#endif
2647#if defined(IFF_LINK0)
2648 /* per link layer defined bit 0 */
2649 rb_define_const(rb_cSocket, "IFF_LINK0", INTEGER2NUM(IFF_LINK0));
2650 /* per link layer defined bit 0 */
2651 rb_define_const(rb_mSockConst, "IFF_LINK0", INTEGER2NUM(IFF_LINK0));
2652#endif
2653#if defined(IFF_LINK1)
2654 /* per link layer defined bit 1 */
2655 rb_define_const(rb_cSocket, "IFF_LINK1", INTEGER2NUM(IFF_LINK1));
2656 /* per link layer defined bit 1 */
2657 rb_define_const(rb_mSockConst, "IFF_LINK1", INTEGER2NUM(IFF_LINK1));
2658#endif
2659#if defined(IFF_LINK2)
2660 /* per link layer defined bit 2 */
2661 rb_define_const(rb_cSocket, "IFF_LINK2", INTEGER2NUM(IFF_LINK2));
2662 /* per link layer defined bit 2 */
2663 rb_define_const(rb_mSockConst, "IFF_LINK2", INTEGER2NUM(IFF_LINK2));
2664#endif
2665#if defined(IFF_LIVE_ADDR_CHANGE)
2666 /* hardware address change when it's running */
2667 rb_define_const(rb_cSocket, "IFF_LIVE_ADDR_CHANGE", INTEGER2NUM(IFF_LIVE_ADDR_CHANGE));
2668 /* hardware address change when it's running */
2669 rb_define_const(rb_mSockConst, "IFF_LIVE_ADDR_CHANGE", INTEGER2NUM(IFF_LIVE_ADDR_CHANGE));
2670#endif
2671#if defined(IFF_LOOPBACK)
2672 /* loopback net */
2673 rb_define_const(rb_cSocket, "IFF_LOOPBACK", INTEGER2NUM(IFF_LOOPBACK));
2674 /* loopback net */
2675 rb_define_const(rb_mSockConst, "IFF_LOOPBACK", INTEGER2NUM(IFF_LOOPBACK));
2676#endif
2677#if defined(IFF_LOWER_UP)
2678 /* driver signals L1 up */
2679 rb_define_const(rb_cSocket, "IFF_LOWER_UP", INTEGER2NUM(IFF_LOWER_UP));
2680 /* driver signals L1 up */
2681 rb_define_const(rb_mSockConst, "IFF_LOWER_UP", INTEGER2NUM(IFF_LOWER_UP));
2682#endif
2683#if defined(IFF_MACVLAN_PORT)
2684 /* device used as macvlan port */
2685 rb_define_const(rb_cSocket, "IFF_MACVLAN_PORT", INTEGER2NUM(IFF_MACVLAN_PORT));
2686 /* device used as macvlan port */
2687 rb_define_const(rb_mSockConst, "IFF_MACVLAN_PORT", INTEGER2NUM(IFF_MACVLAN_PORT));
2688#endif
2689#if defined(IFF_MASTER)
2690 /* master of a load balancer */
2691 rb_define_const(rb_cSocket, "IFF_MASTER", INTEGER2NUM(IFF_MASTER));
2692 /* master of a load balancer */
2693 rb_define_const(rb_mSockConst, "IFF_MASTER", INTEGER2NUM(IFF_MASTER));
2694#endif
2695#if defined(IFF_MASTER_8023AD)
2696 /* bonding master, 802.3ad. */
2697 rb_define_const(rb_cSocket, "IFF_MASTER_8023AD", INTEGER2NUM(IFF_MASTER_8023AD));
2698 /* bonding master, 802.3ad. */
2699 rb_define_const(rb_mSockConst, "IFF_MASTER_8023AD", INTEGER2NUM(IFF_MASTER_8023AD));
2700#endif
2701#if defined(IFF_MASTER_ALB)
2702 /* bonding master, balance-alb. */
2703 rb_define_const(rb_cSocket, "IFF_MASTER_ALB", INTEGER2NUM(IFF_MASTER_ALB));
2704 /* bonding master, balance-alb. */
2705 rb_define_const(rb_mSockConst, "IFF_MASTER_ALB", INTEGER2NUM(IFF_MASTER_ALB));
2706#endif
2707#if defined(IFF_MASTER_ARPMON)
2708 /* bonding master, ARP mon in use */
2709 rb_define_const(rb_cSocket, "IFF_MASTER_ARPMON", INTEGER2NUM(IFF_MASTER_ARPMON));
2710 /* bonding master, ARP mon in use */
2711 rb_define_const(rb_mSockConst, "IFF_MASTER_ARPMON", INTEGER2NUM(IFF_MASTER_ARPMON));
2712#endif
2713#if defined(IFF_MONITOR)
2714 /* user-requested monitor mode */
2715 rb_define_const(rb_cSocket, "IFF_MONITOR", INTEGER2NUM(IFF_MONITOR));
2716 /* user-requested monitor mode */
2717 rb_define_const(rb_mSockConst, "IFF_MONITOR", INTEGER2NUM(IFF_MONITOR));
2718#endif
2719#if defined(IFF_MULTICAST)
2720 /* supports multicast */
2721 rb_define_const(rb_cSocket, "IFF_MULTICAST", INTEGER2NUM(IFF_MULTICAST));
2722 /* supports multicast */
2723 rb_define_const(rb_mSockConst, "IFF_MULTICAST", INTEGER2NUM(IFF_MULTICAST));
2724#endif
2725#if defined(IFF_NOARP)
2726 /* no address resolution protocol */
2727 rb_define_const(rb_cSocket, "IFF_NOARP", INTEGER2NUM(IFF_NOARP));
2728 /* no address resolution protocol */
2729 rb_define_const(rb_mSockConst, "IFF_NOARP", INTEGER2NUM(IFF_NOARP));
2730#endif
2731#if defined(IFF_NOTRAILERS)
2732 /* avoid use of trailers */
2733 rb_define_const(rb_cSocket, "IFF_NOTRAILERS", INTEGER2NUM(IFF_NOTRAILERS));
2734 /* avoid use of trailers */
2735 rb_define_const(rb_mSockConst, "IFF_NOTRAILERS", INTEGER2NUM(IFF_NOTRAILERS));
2736#endif
2737#if defined(IFF_OACTIVE)
2738 /* transmission in progress */
2739 rb_define_const(rb_cSocket, "IFF_OACTIVE", INTEGER2NUM(IFF_OACTIVE));
2740 /* transmission in progress */
2741 rb_define_const(rb_mSockConst, "IFF_OACTIVE", INTEGER2NUM(IFF_OACTIVE));
2742#endif
2743#if defined(IFF_OVS_DATAPATH)
2744 /* device used as Open vSwitch datapath port */
2745 rb_define_const(rb_cSocket, "IFF_OVS_DATAPATH", INTEGER2NUM(IFF_OVS_DATAPATH));
2746 /* device used as Open vSwitch datapath port */
2747 rb_define_const(rb_mSockConst, "IFF_OVS_DATAPATH", INTEGER2NUM(IFF_OVS_DATAPATH));
2748#endif
2749#if defined(IFF_POINTOPOINT)
2750 /* point-to-point link */
2751 rb_define_const(rb_cSocket, "IFF_POINTOPOINT", INTEGER2NUM(IFF_POINTOPOINT));
2752 /* point-to-point link */
2753 rb_define_const(rb_mSockConst, "IFF_POINTOPOINT", INTEGER2NUM(IFF_POINTOPOINT));
2754#endif
2755#if defined(IFF_PORTSEL)
2756 /* can set media type */
2757 rb_define_const(rb_cSocket, "IFF_PORTSEL", INTEGER2NUM(IFF_PORTSEL));
2758 /* can set media type */
2759 rb_define_const(rb_mSockConst, "IFF_PORTSEL", INTEGER2NUM(IFF_PORTSEL));
2760#endif
2761#if defined(IFF_PPROMISC)
2762 /* user-requested promisc mode */
2763 rb_define_const(rb_cSocket, "IFF_PPROMISC", INTEGER2NUM(IFF_PPROMISC));
2764 /* user-requested promisc mode */
2765 rb_define_const(rb_mSockConst, "IFF_PPROMISC", INTEGER2NUM(IFF_PPROMISC));
2766#endif
2767#if defined(IFF_PROMISC)
2768 /* receive all packets */
2769 rb_define_const(rb_cSocket, "IFF_PROMISC", INTEGER2NUM(IFF_PROMISC));
2770 /* receive all packets */
2771 rb_define_const(rb_mSockConst, "IFF_PROMISC", INTEGER2NUM(IFF_PROMISC));
2772#endif
2773#if defined(IFF_RENAMING)
2774 /* interface is being renamed */
2775 rb_define_const(rb_cSocket, "IFF_RENAMING", INTEGER2NUM(IFF_RENAMING));
2776 /* interface is being renamed */
2777 rb_define_const(rb_mSockConst, "IFF_RENAMING", INTEGER2NUM(IFF_RENAMING));
2778#endif
2779#if defined(IFF_ROUTE)
2780 /* routing entry installed */
2781 rb_define_const(rb_cSocket, "IFF_ROUTE", INTEGER2NUM(IFF_ROUTE));
2782 /* routing entry installed */
2783 rb_define_const(rb_mSockConst, "IFF_ROUTE", INTEGER2NUM(IFF_ROUTE));
2784#endif
2785#if defined(IFF_RUNNING)
2786 /* resources allocated */
2787 rb_define_const(rb_cSocket, "IFF_RUNNING", INTEGER2NUM(IFF_RUNNING));
2788 /* resources allocated */
2789 rb_define_const(rb_mSockConst, "IFF_RUNNING", INTEGER2NUM(IFF_RUNNING));
2790#endif
2791#if defined(IFF_SIMPLEX)
2792 /* can't hear own transmissions */
2793 rb_define_const(rb_cSocket, "IFF_SIMPLEX", INTEGER2NUM(IFF_SIMPLEX));
2794 /* can't hear own transmissions */
2795 rb_define_const(rb_mSockConst, "IFF_SIMPLEX", INTEGER2NUM(IFF_SIMPLEX));
2796#endif
2797#if defined(IFF_SLAVE)
2798 /* slave of a load balancer */
2799 rb_define_const(rb_cSocket, "IFF_SLAVE", INTEGER2NUM(IFF_SLAVE));
2800 /* slave of a load balancer */
2801 rb_define_const(rb_mSockConst, "IFF_SLAVE", INTEGER2NUM(IFF_SLAVE));
2802#endif
2803#if defined(IFF_SLAVE_INACTIVE)
2804 /* bonding slave not the curr. active */
2805 rb_define_const(rb_cSocket, "IFF_SLAVE_INACTIVE", INTEGER2NUM(IFF_SLAVE_INACTIVE));
2806 /* bonding slave not the curr. active */
2807 rb_define_const(rb_mSockConst, "IFF_SLAVE_INACTIVE", INTEGER2NUM(IFF_SLAVE_INACTIVE));
2808#endif
2809#if defined(IFF_SLAVE_NEEDARP)
2810 /* need ARPs for validation */
2811 rb_define_const(rb_cSocket, "IFF_SLAVE_NEEDARP", INTEGER2NUM(IFF_SLAVE_NEEDARP));
2812 /* need ARPs for validation */
2813 rb_define_const(rb_mSockConst, "IFF_SLAVE_NEEDARP", INTEGER2NUM(IFF_SLAVE_NEEDARP));
2814#endif
2815#if defined(IFF_SMART)
2816 /* interface manages own routes */
2817 rb_define_const(rb_cSocket, "IFF_SMART", INTEGER2NUM(IFF_SMART));
2818 /* interface manages own routes */
2819 rb_define_const(rb_mSockConst, "IFF_SMART", INTEGER2NUM(IFF_SMART));
2820#endif
2821#if defined(IFF_STATICARP)
2822 /* static ARP */
2823 rb_define_const(rb_cSocket, "IFF_STATICARP", INTEGER2NUM(IFF_STATICARP));
2824 /* static ARP */
2825 rb_define_const(rb_mSockConst, "IFF_STATICARP", INTEGER2NUM(IFF_STATICARP));
2826#endif
2827#if defined(IFF_SUPP_NOFCS)
2828 /* sending custom FCS */
2829 rb_define_const(rb_cSocket, "IFF_SUPP_NOFCS", INTEGER2NUM(IFF_SUPP_NOFCS));
2830 /* sending custom FCS */
2831 rb_define_const(rb_mSockConst, "IFF_SUPP_NOFCS", INTEGER2NUM(IFF_SUPP_NOFCS));
2832#endif
2833#if defined(IFF_TEAM_PORT)
2834 /* used as team port */
2835 rb_define_const(rb_cSocket, "IFF_TEAM_PORT", INTEGER2NUM(IFF_TEAM_PORT));
2836 /* used as team port */
2837 rb_define_const(rb_mSockConst, "IFF_TEAM_PORT", INTEGER2NUM(IFF_TEAM_PORT));
2838#endif
2839#if defined(IFF_TX_SKB_SHARING)
2840 /* sharing skbs on transmit */
2841 rb_define_const(rb_cSocket, "IFF_TX_SKB_SHARING", INTEGER2NUM(IFF_TX_SKB_SHARING));
2842 /* sharing skbs on transmit */
2843 rb_define_const(rb_mSockConst, "IFF_TX_SKB_SHARING", INTEGER2NUM(IFF_TX_SKB_SHARING));
2844#endif
2845#if defined(IFF_UNICAST_FLT)
2846 /* unicast filtering */
2847 rb_define_const(rb_cSocket, "IFF_UNICAST_FLT", INTEGER2NUM(IFF_UNICAST_FLT));
2848 /* unicast filtering */
2849 rb_define_const(rb_mSockConst, "IFF_UNICAST_FLT", INTEGER2NUM(IFF_UNICAST_FLT));
2850#endif
2851#if defined(IFF_UP)
2852 /* interface is up */
2853 rb_define_const(rb_cSocket, "IFF_UP", INTEGER2NUM(IFF_UP));
2854 /* interface is up */
2855 rb_define_const(rb_mSockConst, "IFF_UP", INTEGER2NUM(IFF_UP));
2856#endif
2857#if defined(IFF_WAN_HDLC)
2858 /* WAN HDLC device */
2859 rb_define_const(rb_cSocket, "IFF_WAN_HDLC", INTEGER2NUM(IFF_WAN_HDLC));
2860 /* WAN HDLC device */
2861 rb_define_const(rb_mSockConst, "IFF_WAN_HDLC", INTEGER2NUM(IFF_WAN_HDLC));
2862#endif
2863#if defined(IFF_XMIT_DST_RELEASE)
2864 /* dev_hard_start_xmit() is allowed to release skb->dst */
2865 rb_define_const(rb_cSocket, "IFF_XMIT_DST_RELEASE", INTEGER2NUM(IFF_XMIT_DST_RELEASE));
2866 /* dev_hard_start_xmit() is allowed to release skb->dst */
2867 rb_define_const(rb_mSockConst, "IFF_XMIT_DST_RELEASE", INTEGER2NUM(IFF_XMIT_DST_RELEASE));
2868#endif
2869#if defined(IFF_VOLATILE)
2870 /* volatile flags */
2871 rb_define_const(rb_cSocket, "IFF_VOLATILE", INTEGER2NUM(IFF_VOLATILE));
2872 /* volatile flags */
2873 rb_define_const(rb_mSockConst, "IFF_VOLATILE", INTEGER2NUM(IFF_VOLATILE));
2874#endif
2875#if defined(IFF_CANTCHANGE)
2876 /* flags not changeable */
2877 rb_define_const(rb_cSocket, "IFF_CANTCHANGE", INTEGER2NUM(IFF_CANTCHANGE));
2878 /* flags not changeable */
2879 rb_define_const(rb_mSockConst, "IFF_CANTCHANGE", INTEGER2NUM(IFF_CANTCHANGE));
2880#endif
2881
2882 rsock_intern_family_hash = st_init_numtable();
2883#ifdef AF_XDP
2884 st_insert(rsock_intern_family_hash, (st_data_t)AF_XDP, (st_data_t)rb_intern2("AF_XDP", 6));
2885#endif
2886#ifdef AF_KCM
2887 st_insert(rsock_intern_family_hash, (st_data_t)AF_KCM, (st_data_t)rb_intern2("AF_KCM", 6));
2888#endif
2889#ifdef AF_VSOCK
2890 st_insert(rsock_intern_family_hash, (st_data_t)AF_VSOCK, (st_data_t)rb_intern2("AF_VSOCK", 8));
2891#endif
2892#ifdef AF_ALG
2893 st_insert(rsock_intern_family_hash, (st_data_t)AF_ALG, (st_data_t)rb_intern2("AF_ALG", 6));
2894#endif
2895#ifdef AF_BLUETOOTH
2896 st_insert(rsock_intern_family_hash, (st_data_t)AF_BLUETOOTH, (st_data_t)rb_intern2("AF_BLUETOOTH", 12));
2897#endif
2898#ifdef AF_TIPC
2899 st_insert(rsock_intern_family_hash, (st_data_t)AF_TIPC, (st_data_t)rb_intern2("AF_TIPC", 7));
2900#endif
2901#ifdef AF_CAN
2902 st_insert(rsock_intern_family_hash, (st_data_t)AF_CAN, (st_data_t)rb_intern2("AF_CAN", 6));
2903#endif
2904#ifdef AF_MPLS
2905 st_insert(rsock_intern_family_hash, (st_data_t)AF_MPLS, (st_data_t)rb_intern2("AF_MPLS", 7));
2906#endif
2907#ifdef AF_IB
2908 st_insert(rsock_intern_family_hash, (st_data_t)AF_IB, (st_data_t)rb_intern2("AF_IB", 5));
2909#endif
2910#ifdef AF_LLC
2911 st_insert(rsock_intern_family_hash, (st_data_t)AF_LLC, (st_data_t)rb_intern2("AF_LLC", 6));
2912#endif
2913#ifdef AF_PPPOX
2914 st_insert(rsock_intern_family_hash, (st_data_t)AF_PPPOX, (st_data_t)rb_intern2("AF_PPPOX", 8));
2915#endif
2916#ifdef AF_RDS
2917 st_insert(rsock_intern_family_hash, (st_data_t)AF_RDS, (st_data_t)rb_intern2("AF_RDS", 6));
2918#endif
2919#ifdef AF_NETLINK
2920 st_insert(rsock_intern_family_hash, (st_data_t)AF_NETLINK, (st_data_t)rb_intern2("AF_NETLINK", 10));
2921#endif
2922#ifdef AF_KEY
2923 st_insert(rsock_intern_family_hash, (st_data_t)AF_KEY, (st_data_t)rb_intern2("AF_KEY", 6));
2924#endif
2925#ifdef AF_E164
2926 st_insert(rsock_intern_family_hash, (st_data_t)AF_E164, (st_data_t)rb_intern2("AF_E164", 7));
2927#endif
2928#ifdef AF_PACKET
2929 st_insert(rsock_intern_family_hash, (st_data_t)AF_PACKET, (st_data_t)rb_intern2("AF_PACKET", 9));
2930#endif
2931#ifdef AF_MAX
2932 st_insert(rsock_intern_family_hash, (st_data_t)AF_MAX, (st_data_t)rb_intern2("AF_MAX", 6));
2933#endif
2934#ifdef AF_NETGRAPH
2935 st_insert(rsock_intern_family_hash, (st_data_t)AF_NETGRAPH, (st_data_t)rb_intern2("AF_NETGRAPH", 11));
2936#endif
2937#ifdef AF_ATM
2938 st_insert(rsock_intern_family_hash, (st_data_t)AF_ATM, (st_data_t)rb_intern2("AF_ATM", 6));
2939#endif
2940#ifdef AF_PPP
2941 st_insert(rsock_intern_family_hash, (st_data_t)AF_PPP, (st_data_t)rb_intern2("AF_PPP", 6));
2942#endif
2943#ifdef AF_NETBIOS
2944 st_insert(rsock_intern_family_hash, (st_data_t)AF_NETBIOS, (st_data_t)rb_intern2("AF_NETBIOS", 10));
2945#endif
2946#ifdef AF_SYSTEM
2947 st_insert(rsock_intern_family_hash, (st_data_t)AF_SYSTEM, (st_data_t)rb_intern2("AF_SYSTEM", 9));
2948#endif
2949#ifdef AF_NATM
2950 st_insert(rsock_intern_family_hash, (st_data_t)AF_NATM, (st_data_t)rb_intern2("AF_NATM", 7));
2951#endif
2952#ifdef AF_ISDN
2953 st_insert(rsock_intern_family_hash, (st_data_t)AF_ISDN, (st_data_t)rb_intern2("AF_ISDN", 7));
2954#endif
2955#ifdef AF_NDRV
2956 st_insert(rsock_intern_family_hash, (st_data_t)AF_NDRV, (st_data_t)rb_intern2("AF_NDRV", 7));
2957#endif
2958#ifdef AF_SIP
2959 st_insert(rsock_intern_family_hash, (st_data_t)AF_SIP, (st_data_t)rb_intern2("AF_SIP", 6));
2960#endif
2961#ifdef AF_CNT
2962 st_insert(rsock_intern_family_hash, (st_data_t)AF_CNT, (st_data_t)rb_intern2("AF_CNT", 6));
2963#endif
2964#ifdef AF_COIP
2965 st_insert(rsock_intern_family_hash, (st_data_t)AF_COIP, (st_data_t)rb_intern2("AF_COIP", 7));
2966#endif
2967#ifdef AF_LINK
2968 st_insert(rsock_intern_family_hash, (st_data_t)AF_LINK, (st_data_t)rb_intern2("AF_LINK", 7));
2969#endif
2970#ifdef AF_ROUTE
2971 st_insert(rsock_intern_family_hash, (st_data_t)AF_ROUTE, (st_data_t)rb_intern2("AF_ROUTE", 8));
2972#endif
2973#ifdef AF_HYLINK
2974 st_insert(rsock_intern_family_hash, (st_data_t)AF_HYLINK, (st_data_t)rb_intern2("AF_HYLINK", 9));
2975#endif
2976#ifdef AF_LAT
2977 st_insert(rsock_intern_family_hash, (st_data_t)AF_LAT, (st_data_t)rb_intern2("AF_LAT", 6));
2978#endif
2979#ifdef AF_DLI
2980 st_insert(rsock_intern_family_hash, (st_data_t)AF_DLI, (st_data_t)rb_intern2("AF_DLI", 6));
2981#endif
2982#ifdef AF_DECnet
2983 st_insert(rsock_intern_family_hash, (st_data_t)AF_DECnet, (st_data_t)rb_intern2("AF_DECnet", 9));
2984#endif
2985#ifdef AF_DEC
2986 st_insert(rsock_intern_family_hash, (st_data_t)AF_DEC, (st_data_t)rb_intern2("AF_DEC", 6));
2987#endif
2988#ifdef AF_SNA
2989 st_insert(rsock_intern_family_hash, (st_data_t)AF_SNA, (st_data_t)rb_intern2("AF_SNA", 6));
2990#endif
2991#ifdef AF_CCITT
2992 st_insert(rsock_intern_family_hash, (st_data_t)AF_CCITT, (st_data_t)rb_intern2("AF_CCITT", 8));
2993#endif
2994#ifdef AF_DATAKIT
2995 st_insert(rsock_intern_family_hash, (st_data_t)AF_DATAKIT, (st_data_t)rb_intern2("AF_DATAKIT", 10));
2996#endif
2997#ifdef AF_ECMA
2998 st_insert(rsock_intern_family_hash, (st_data_t)AF_ECMA, (st_data_t)rb_intern2("AF_ECMA", 7));
2999#endif
3000#ifdef AF_OSI
3001 st_insert(rsock_intern_family_hash, (st_data_t)AF_OSI, (st_data_t)rb_intern2("AF_OSI", 6));
3002#endif
3003#ifdef AF_ISO
3004 st_insert(rsock_intern_family_hash, (st_data_t)AF_ISO, (st_data_t)rb_intern2("AF_ISO", 6));
3005#endif
3006#ifdef AF_NS
3007 st_insert(rsock_intern_family_hash, (st_data_t)AF_NS, (st_data_t)rb_intern2("AF_NS", 5));
3008#endif
3009#ifdef AF_CHAOS
3010 st_insert(rsock_intern_family_hash, (st_data_t)AF_CHAOS, (st_data_t)rb_intern2("AF_CHAOS", 8));
3011#endif
3012#ifdef AF_PUP
3013 st_insert(rsock_intern_family_hash, (st_data_t)AF_PUP, (st_data_t)rb_intern2("AF_PUP", 6));
3014#endif
3015#ifdef AF_IMPLINK
3016 st_insert(rsock_intern_family_hash, (st_data_t)AF_IMPLINK, (st_data_t)rb_intern2("AF_IMPLINK", 10));
3017#endif
3018#ifdef AF_LOCAL
3019 st_insert(rsock_intern_family_hash, (st_data_t)AF_LOCAL, (st_data_t)rb_intern2("AF_LOCAL", 8));
3020#endif
3021#ifdef AF_APPLETALK
3022 st_insert(rsock_intern_family_hash, (st_data_t)AF_APPLETALK, (st_data_t)rb_intern2("AF_APPLETALK", 12));
3023#endif
3024#ifdef AF_IPX
3025 st_insert(rsock_intern_family_hash, (st_data_t)AF_IPX, (st_data_t)rb_intern2("AF_IPX", 6));
3026#endif
3027#ifdef AF_AX25
3028 st_insert(rsock_intern_family_hash, (st_data_t)AF_AX25, (st_data_t)rb_intern2("AF_AX25", 7));
3029#endif
3030#ifdef AF_UNIX
3031 st_insert(rsock_intern_family_hash, (st_data_t)AF_UNIX, (st_data_t)rb_intern2("AF_UNIX", 7));
3032#endif
3033#ifdef AF_INET6
3034 st_insert(rsock_intern_family_hash, (st_data_t)AF_INET6, (st_data_t)rb_intern2("AF_INET6", 8));
3035#endif
3036#ifdef AF_INET
3037 st_insert(rsock_intern_family_hash, (st_data_t)AF_INET, (st_data_t)rb_intern2("AF_INET", 7));
3038#endif
3039#ifdef AF_UNSPEC
3040 st_insert(rsock_intern_family_hash, (st_data_t)AF_UNSPEC, (st_data_t)rb_intern2("AF_UNSPEC", 9));
3041#endif
3042
3043 rsock_intern_family_noprefix_hash = st_init_numtable();
3044#ifdef AF_XDP
3045 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_XDP, (st_data_t)rb_intern2("AF_XDP", 6));
3046#endif
3047#ifdef AF_KCM
3048 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_KCM, (st_data_t)rb_intern2("AF_KCM", 6));
3049#endif
3050#ifdef AF_VSOCK
3051 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_VSOCK, (st_data_t)rb_intern2("AF_VSOCK", 8));
3052#endif
3053#ifdef AF_ALG
3054 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ALG, (st_data_t)rb_intern2("AF_ALG", 6));
3055#endif
3056#ifdef AF_BLUETOOTH
3057 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_BLUETOOTH, (st_data_t)rb_intern2("AF_BLUETOOTH", 12));
3058#endif
3059#ifdef AF_TIPC
3060 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_TIPC, (st_data_t)rb_intern2("AF_TIPC", 7));
3061#endif
3062#ifdef AF_CAN
3063 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CAN, (st_data_t)rb_intern2("AF_CAN", 6));
3064#endif
3065#ifdef AF_MPLS
3066 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_MPLS, (st_data_t)rb_intern2("AF_MPLS", 7));
3067#endif
3068#ifdef AF_IB
3069 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IB, (st_data_t)rb_intern2("AF_IB", 5));
3070#endif
3071#ifdef AF_LLC
3072 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LLC, (st_data_t)rb_intern2("AF_LLC", 6));
3073#endif
3074#ifdef AF_PPPOX
3075 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PPPOX, (st_data_t)rb_intern2("AF_PPPOX", 8));
3076#endif
3077#ifdef AF_RDS
3078 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_RDS, (st_data_t)rb_intern2("AF_RDS", 6));
3079#endif
3080#ifdef AF_NETLINK
3081 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETLINK, (st_data_t)rb_intern2("AF_NETLINK", 10));
3082#endif
3083#ifdef AF_KEY
3084 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_KEY, (st_data_t)rb_intern2("AF_KEY", 6));
3085#endif
3086#ifdef AF_E164
3087 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_E164, (st_data_t)rb_intern2("AF_E164", 7));
3088#endif
3089#ifdef AF_PACKET
3090 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PACKET, (st_data_t)rb_intern2("AF_PACKET", 9));
3091#endif
3092#ifdef AF_MAX
3093 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_MAX, (st_data_t)rb_intern2("AF_MAX", 6));
3094#endif
3095#ifdef AF_NETGRAPH
3096 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETGRAPH, (st_data_t)rb_intern2("AF_NETGRAPH", 11));
3097#endif
3098#ifdef AF_ATM
3099 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ATM, (st_data_t)rb_intern2("AF_ATM", 6));
3100#endif
3101#ifdef AF_PPP
3102 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PPP, (st_data_t)rb_intern2("AF_PPP", 6));
3103#endif
3104#ifdef AF_NETBIOS
3105 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETBIOS, (st_data_t)rb_intern2("AF_NETBIOS", 10));
3106#endif
3107#ifdef AF_SYSTEM
3108 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SYSTEM, (st_data_t)rb_intern2("AF_SYSTEM", 9));
3109#endif
3110#ifdef AF_NATM
3111 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NATM, (st_data_t)rb_intern2("AF_NATM", 7));
3112#endif
3113#ifdef AF_ISDN
3114 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ISDN, (st_data_t)rb_intern2("AF_ISDN", 7));
3115#endif
3116#ifdef AF_NDRV
3117 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NDRV, (st_data_t)rb_intern2("AF_NDRV", 7));
3118#endif
3119#ifdef AF_SIP
3120 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SIP, (st_data_t)rb_intern2("AF_SIP", 6));
3121#endif
3122#ifdef AF_CNT
3123 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CNT, (st_data_t)rb_intern2("AF_CNT", 6));
3124#endif
3125#ifdef AF_COIP
3126 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_COIP, (st_data_t)rb_intern2("AF_COIP", 7));
3127#endif
3128#ifdef AF_LINK
3129 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LINK, (st_data_t)rb_intern2("AF_LINK", 7));
3130#endif
3131#ifdef AF_ROUTE
3132 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ROUTE, (st_data_t)rb_intern2("AF_ROUTE", 8));
3133#endif
3134#ifdef AF_HYLINK
3135 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_HYLINK, (st_data_t)rb_intern2("AF_HYLINK", 9));
3136#endif
3137#ifdef AF_LAT
3138 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LAT, (st_data_t)rb_intern2("AF_LAT", 6));
3139#endif
3140#ifdef AF_DLI
3141 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DLI, (st_data_t)rb_intern2("AF_DLI", 6));
3142#endif
3143#ifdef AF_DECnet
3144 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DECnet, (st_data_t)rb_intern2("AF_DECnet", 9));
3145#endif
3146#ifdef AF_DEC
3147 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DEC, (st_data_t)rb_intern2("AF_DEC", 6));
3148#endif
3149#ifdef AF_SNA
3150 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SNA, (st_data_t)rb_intern2("AF_SNA", 6));
3151#endif
3152#ifdef AF_CCITT
3153 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CCITT, (st_data_t)rb_intern2("AF_CCITT", 8));
3154#endif
3155#ifdef AF_DATAKIT
3156 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DATAKIT, (st_data_t)rb_intern2("AF_DATAKIT", 10));
3157#endif
3158#ifdef AF_ECMA
3159 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ECMA, (st_data_t)rb_intern2("AF_ECMA", 7));
3160#endif
3161#ifdef AF_OSI
3162 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_OSI, (st_data_t)rb_intern2("AF_OSI", 6));
3163#endif
3164#ifdef AF_ISO
3165 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ISO, (st_data_t)rb_intern2("AF_ISO", 6));
3166#endif
3167#ifdef AF_NS
3168 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NS, (st_data_t)rb_intern2("AF_NS", 5));
3169#endif
3170#ifdef AF_CHAOS
3171 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CHAOS, (st_data_t)rb_intern2("AF_CHAOS", 8));
3172#endif
3173#ifdef AF_PUP
3174 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PUP, (st_data_t)rb_intern2("AF_PUP", 6));
3175#endif
3176#ifdef AF_IMPLINK
3177 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IMPLINK, (st_data_t)rb_intern2("AF_IMPLINK", 10));
3178#endif
3179#ifdef AF_LOCAL
3180 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LOCAL, (st_data_t)rb_intern2("AF_LOCAL", 8));
3181#endif
3182#ifdef AF_APPLETALK
3183 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_APPLETALK, (st_data_t)rb_intern2("AF_APPLETALK", 12));
3184#endif
3185#ifdef AF_IPX
3186 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IPX, (st_data_t)rb_intern2("AF_IPX", 6));
3187#endif
3188#ifdef AF_AX25
3189 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_AX25, (st_data_t)rb_intern2("AF_AX25", 7));
3190#endif
3191#ifdef AF_UNIX
3192 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_UNIX, (st_data_t)rb_intern2("AF_UNIX", 7));
3193#endif
3194#ifdef AF_INET6
3195 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_INET6, (st_data_t)rb_intern2("AF_INET6", 8));
3196#endif
3197#ifdef AF_INET
3198 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_INET, (st_data_t)rb_intern2("AF_INET", 7));
3199#endif
3200#ifdef AF_UNSPEC
3201 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_UNSPEC, (st_data_t)rb_intern2("AF_UNSPEC", 9));
3202#endif
3203#ifdef AF_XDP
3204 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_XDP, (st_data_t)rb_intern2("XDP", 3));
3205#endif
3206#ifdef AF_KCM
3207 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_KCM, (st_data_t)rb_intern2("KCM", 3));
3208#endif
3209#ifdef AF_VSOCK
3210 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_VSOCK, (st_data_t)rb_intern2("VSOCK", 5));
3211#endif
3212#ifdef AF_ALG
3213 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ALG, (st_data_t)rb_intern2("ALG", 3));
3214#endif
3215#ifdef AF_BLUETOOTH
3216 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_BLUETOOTH, (st_data_t)rb_intern2("BLUETOOTH", 9));
3217#endif
3218#ifdef AF_TIPC
3219 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_TIPC, (st_data_t)rb_intern2("TIPC", 4));
3220#endif
3221#ifdef AF_CAN
3222 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CAN, (st_data_t)rb_intern2("CAN", 3));
3223#endif
3224#ifdef AF_MPLS
3225 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_MPLS, (st_data_t)rb_intern2("MPLS", 4));
3226#endif
3227#ifdef AF_IB
3228 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IB, (st_data_t)rb_intern2("IB", 2));
3229#endif
3230#ifdef AF_LLC
3231 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LLC, (st_data_t)rb_intern2("LLC", 3));
3232#endif
3233#ifdef AF_PPPOX
3234 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PPPOX, (st_data_t)rb_intern2("PPPOX", 5));
3235#endif
3236#ifdef AF_RDS
3237 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_RDS, (st_data_t)rb_intern2("RDS", 3));
3238#endif
3239#ifdef AF_NETLINK
3240 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETLINK, (st_data_t)rb_intern2("NETLINK", 7));
3241#endif
3242#ifdef AF_KEY
3243 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_KEY, (st_data_t)rb_intern2("KEY", 3));
3244#endif
3245#ifdef AF_E164
3246 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_E164, (st_data_t)rb_intern2("E164", 4));
3247#endif
3248#ifdef AF_PACKET
3249 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PACKET, (st_data_t)rb_intern2("PACKET", 6));
3250#endif
3251#ifdef AF_MAX
3252 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_MAX, (st_data_t)rb_intern2("MAX", 3));
3253#endif
3254#ifdef AF_NETGRAPH
3255 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETGRAPH, (st_data_t)rb_intern2("NETGRAPH", 8));
3256#endif
3257#ifdef AF_ATM
3258 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ATM, (st_data_t)rb_intern2("ATM", 3));
3259#endif
3260#ifdef AF_PPP
3261 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PPP, (st_data_t)rb_intern2("PPP", 3));
3262#endif
3263#ifdef AF_NETBIOS
3264 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NETBIOS, (st_data_t)rb_intern2("NETBIOS", 7));
3265#endif
3266#ifdef AF_SYSTEM
3267 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SYSTEM, (st_data_t)rb_intern2("SYSTEM", 6));
3268#endif
3269#ifdef AF_NATM
3270 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NATM, (st_data_t)rb_intern2("NATM", 4));
3271#endif
3272#ifdef AF_ISDN
3273 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ISDN, (st_data_t)rb_intern2("ISDN", 4));
3274#endif
3275#ifdef AF_NDRV
3276 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NDRV, (st_data_t)rb_intern2("NDRV", 4));
3277#endif
3278#ifdef AF_SIP
3279 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SIP, (st_data_t)rb_intern2("SIP", 3));
3280#endif
3281#ifdef AF_CNT
3282 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CNT, (st_data_t)rb_intern2("CNT", 3));
3283#endif
3284#ifdef AF_COIP
3285 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_COIP, (st_data_t)rb_intern2("COIP", 4));
3286#endif
3287#ifdef AF_LINK
3288 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LINK, (st_data_t)rb_intern2("LINK", 4));
3289#endif
3290#ifdef AF_ROUTE
3291 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ROUTE, (st_data_t)rb_intern2("ROUTE", 5));
3292#endif
3293#ifdef AF_HYLINK
3294 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_HYLINK, (st_data_t)rb_intern2("HYLINK", 6));
3295#endif
3296#ifdef AF_LAT
3297 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LAT, (st_data_t)rb_intern2("LAT", 3));
3298#endif
3299#ifdef AF_DLI
3300 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DLI, (st_data_t)rb_intern2("DLI", 3));
3301#endif
3302#ifdef AF_DECnet
3303 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DECnet, (st_data_t)rb_intern2("DECnet", 6));
3304#endif
3305#ifdef AF_DEC
3306 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DEC, (st_data_t)rb_intern2("DEC", 3));
3307#endif
3308#ifdef AF_SNA
3309 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_SNA, (st_data_t)rb_intern2("SNA", 3));
3310#endif
3311#ifdef AF_CCITT
3312 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CCITT, (st_data_t)rb_intern2("CCITT", 5));
3313#endif
3314#ifdef AF_DATAKIT
3315 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_DATAKIT, (st_data_t)rb_intern2("DATAKIT", 7));
3316#endif
3317#ifdef AF_ECMA
3318 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ECMA, (st_data_t)rb_intern2("ECMA", 4));
3319#endif
3320#ifdef AF_OSI
3321 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_OSI, (st_data_t)rb_intern2("OSI", 3));
3322#endif
3323#ifdef AF_ISO
3324 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_ISO, (st_data_t)rb_intern2("ISO", 3));
3325#endif
3326#ifdef AF_NS
3327 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_NS, (st_data_t)rb_intern2("NS", 2));
3328#endif
3329#ifdef AF_CHAOS
3330 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_CHAOS, (st_data_t)rb_intern2("CHAOS", 5));
3331#endif
3332#ifdef AF_PUP
3333 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_PUP, (st_data_t)rb_intern2("PUP", 3));
3334#endif
3335#ifdef AF_IMPLINK
3336 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IMPLINK, (st_data_t)rb_intern2("IMPLINK", 7));
3337#endif
3338#ifdef AF_LOCAL
3339 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_LOCAL, (st_data_t)rb_intern2("LOCAL", 5));
3340#endif
3341#ifdef AF_APPLETALK
3342 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_APPLETALK, (st_data_t)rb_intern2("APPLETALK", 9));
3343#endif
3344#ifdef AF_IPX
3345 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_IPX, (st_data_t)rb_intern2("IPX", 3));
3346#endif
3347#ifdef AF_AX25
3348 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_AX25, (st_data_t)rb_intern2("AX25", 4));
3349#endif
3350#ifdef AF_UNIX
3351 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_UNIX, (st_data_t)rb_intern2("UNIX", 4));
3352#endif
3353#ifdef AF_INET6
3354 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_INET6, (st_data_t)rb_intern2("INET6", 5));
3355#endif
3356#ifdef AF_INET
3357 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_INET, (st_data_t)rb_intern2("INET", 4));
3358#endif
3359#ifdef AF_UNSPEC
3360 st_insert(rsock_intern_family_noprefix_hash, (st_data_t)AF_UNSPEC, (st_data_t)rb_intern2("UNSPEC", 6));
3361#endif
3362
3363 rsock_intern_protocol_family_hash = st_init_numtable();
3364#ifdef PF_XDP
3365 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_XDP, (st_data_t)rb_intern2("PF_XDP", 6));
3366#endif
3367#ifdef PF_KCM
3368 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_KCM, (st_data_t)rb_intern2("PF_KCM", 6));
3369#endif
3370#ifdef PF_VSOCK
3371 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_VSOCK, (st_data_t)rb_intern2("PF_VSOCK", 8));
3372#endif
3373#ifdef PF_ALG
3374 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ALG, (st_data_t)rb_intern2("PF_ALG", 6));
3375#endif
3376#ifdef PF_BLUETOOTH
3377 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_BLUETOOTH, (st_data_t)rb_intern2("PF_BLUETOOTH", 12));
3378#endif
3379#ifdef PF_TIPC
3380 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_TIPC, (st_data_t)rb_intern2("PF_TIPC", 7));
3381#endif
3382#ifdef PF_CAN
3383 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_CAN, (st_data_t)rb_intern2("PF_CAN", 6));
3384#endif
3385#ifdef PF_MPLS
3386 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_MPLS, (st_data_t)rb_intern2("PF_MPLS", 7));
3387#endif
3388#ifdef PF_IB
3389 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_IB, (st_data_t)rb_intern2("PF_IB", 5));
3390#endif
3391#ifdef PF_LLC
3392 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_LLC, (st_data_t)rb_intern2("PF_LLC", 6));
3393#endif
3394#ifdef PF_PPPOX
3395 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PPPOX, (st_data_t)rb_intern2("PF_PPPOX", 8));
3396#endif
3397#ifdef PF_RDS
3398 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_RDS, (st_data_t)rb_intern2("PF_RDS", 6));
3399#endif
3400#ifdef PF_NETLINK
3401 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NETLINK, (st_data_t)rb_intern2("PF_NETLINK", 10));
3402#endif
3403#ifdef PF_KEY
3404 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_KEY, (st_data_t)rb_intern2("PF_KEY", 6));
3405#endif
3406#ifdef PF_PIP
3407 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PIP, (st_data_t)rb_intern2("PF_PIP", 6));
3408#endif
3409#ifdef PF_RTIP
3410 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_RTIP, (st_data_t)rb_intern2("PF_RTIP", 7));
3411#endif
3412#ifdef PF_XTP
3413 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_XTP, (st_data_t)rb_intern2("PF_XTP", 6));
3414#endif
3415#ifdef PF_PACKET
3416 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PACKET, (st_data_t)rb_intern2("PF_PACKET", 9));
3417#endif
3418#ifdef PF_MAX
3419 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_MAX, (st_data_t)rb_intern2("PF_MAX", 6));
3420#endif
3421#ifdef PF_NETGRAPH
3422 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NETGRAPH, (st_data_t)rb_intern2("PF_NETGRAPH", 11));
3423#endif
3424#ifdef PF_ATM
3425 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ATM, (st_data_t)rb_intern2("PF_ATM", 6));
3426#endif
3427#ifdef PF_PPP
3428 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PPP, (st_data_t)rb_intern2("PF_PPP", 6));
3429#endif
3430#ifdef PF_NETBIOS
3431 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NETBIOS, (st_data_t)rb_intern2("PF_NETBIOS", 10));
3432#endif
3433#ifdef PF_SYSTEM
3434 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_SYSTEM, (st_data_t)rb_intern2("PF_SYSTEM", 9));
3435#endif
3436#ifdef PF_NATM
3437 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NATM, (st_data_t)rb_intern2("PF_NATM", 7));
3438#endif
3439#ifdef PF_ISDN
3440 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ISDN, (st_data_t)rb_intern2("PF_ISDN", 7));
3441#endif
3442#ifdef PF_NDRV
3443 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NDRV, (st_data_t)rb_intern2("PF_NDRV", 7));
3444#endif
3445#ifdef PF_SIP
3446 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_SIP, (st_data_t)rb_intern2("PF_SIP", 6));
3447#endif
3448#ifdef PF_CNT
3449 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_CNT, (st_data_t)rb_intern2("PF_CNT", 6));
3450#endif
3451#ifdef PF_COIP
3452 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_COIP, (st_data_t)rb_intern2("PF_COIP", 7));
3453#endif
3454#ifdef PF_LINK
3455 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_LINK, (st_data_t)rb_intern2("PF_LINK", 7));
3456#endif
3457#ifdef PF_ROUTE
3458 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ROUTE, (st_data_t)rb_intern2("PF_ROUTE", 8));
3459#endif
3460#ifdef PF_HYLINK
3461 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_HYLINK, (st_data_t)rb_intern2("PF_HYLINK", 9));
3462#endif
3463#ifdef PF_LAT
3464 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_LAT, (st_data_t)rb_intern2("PF_LAT", 6));
3465#endif
3466#ifdef PF_DLI
3467 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_DLI, (st_data_t)rb_intern2("PF_DLI", 6));
3468#endif
3469#ifdef PF_DECnet
3470 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_DECnet, (st_data_t)rb_intern2("PF_DECnet", 9));
3471#endif
3472#ifdef PF_DEC
3473 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_DEC, (st_data_t)rb_intern2("PF_DEC", 6));
3474#endif
3475#ifdef PF_SNA
3476 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_SNA, (st_data_t)rb_intern2("PF_SNA", 6));
3477#endif
3478#ifdef PF_CCITT
3479 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_CCITT, (st_data_t)rb_intern2("PF_CCITT", 8));
3480#endif
3481#ifdef PF_DATAKIT
3482 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_DATAKIT, (st_data_t)rb_intern2("PF_DATAKIT", 10));
3483#endif
3484#ifdef PF_ECMA
3485 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ECMA, (st_data_t)rb_intern2("PF_ECMA", 7));
3486#endif
3487#ifdef PF_OSI
3488 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_OSI, (st_data_t)rb_intern2("PF_OSI", 6));
3489#endif
3490#ifdef PF_ISO
3491 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_ISO, (st_data_t)rb_intern2("PF_ISO", 6));
3492#endif
3493#ifdef PF_NS
3494 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_NS, (st_data_t)rb_intern2("PF_NS", 5));
3495#endif
3496#ifdef PF_CHAOS
3497 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_CHAOS, (st_data_t)rb_intern2("PF_CHAOS", 8));
3498#endif
3499#ifdef PF_PUP
3500 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_PUP, (st_data_t)rb_intern2("PF_PUP", 6));
3501#endif
3502#ifdef PF_IMPLINK
3503 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_IMPLINK, (st_data_t)rb_intern2("PF_IMPLINK", 10));
3504#endif
3505#ifdef PF_LOCAL
3506 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_LOCAL, (st_data_t)rb_intern2("PF_LOCAL", 8));
3507#endif
3508#ifdef PF_APPLETALK
3509 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_APPLETALK, (st_data_t)rb_intern2("PF_APPLETALK", 12));
3510#endif
3511#ifdef PF_IPX
3512 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_IPX, (st_data_t)rb_intern2("PF_IPX", 6));
3513#endif
3514#ifdef PF_AX25
3515 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_AX25, (st_data_t)rb_intern2("PF_AX25", 7));
3516#endif
3517#ifdef PF_UNIX
3518 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_UNIX, (st_data_t)rb_intern2("PF_UNIX", 7));
3519#endif
3520#ifdef PF_INET6
3521 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_INET6, (st_data_t)rb_intern2("PF_INET6", 8));
3522#endif
3523#ifdef PF_INET
3524 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_INET, (st_data_t)rb_intern2("PF_INET", 7));
3525#endif
3526#ifdef PF_UNSPEC
3527 st_insert(rsock_intern_protocol_family_hash, (st_data_t)PF_UNSPEC, (st_data_t)rb_intern2("PF_UNSPEC", 9));
3528#endif
3529
3530 rsock_intern_socktype_hash = st_init_numtable();
3531#ifdef SOCK_CLOEXEC
3532 st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_CLOEXEC, (st_data_t)rb_intern2("SOCK_CLOEXEC", 12));
3533#endif
3534#ifdef SOCK_NONBLOCK
3535 st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_NONBLOCK, (st_data_t)rb_intern2("SOCK_NONBLOCK", 13));
3536#endif
3537#ifdef SOCK_PACKET
3538 st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_PACKET, (st_data_t)rb_intern2("SOCK_PACKET", 11));
3539#endif
3540#ifdef SOCK_SEQPACKET
3541 st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_SEQPACKET, (st_data_t)rb_intern2("SOCK_SEQPACKET", 14));
3542#endif
3543#ifdef SOCK_RDM
3544 st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_RDM, (st_data_t)rb_intern2("SOCK_RDM", 8));
3545#endif
3546#ifdef SOCK_RAW
3547 st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_RAW, (st_data_t)rb_intern2("SOCK_RAW", 8));
3548#endif
3549#ifdef SOCK_DGRAM
3550 st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_DGRAM, (st_data_t)rb_intern2("SOCK_DGRAM", 10));
3551#endif
3552#ifdef SOCK_STREAM
3553 st_insert(rsock_intern_socktype_hash, (st_data_t)SOCK_STREAM, (st_data_t)rb_intern2("SOCK_STREAM", 11));
3554#endif
3555
3556 rsock_intern_ipproto_hash = st_init_numtable();
3557#ifdef IPPROTO_MAX
3558 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_MAX, (st_data_t)rb_intern2("IPPROTO_MAX", 11));
3559#endif
3560#ifdef IPPROTO_RAW
3561 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_RAW, (st_data_t)rb_intern2("IPPROTO_RAW", 11));
3562#endif
3563#ifdef IPPROTO_ROUTING
3564 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ROUTING, (st_data_t)rb_intern2("IPPROTO_ROUTING", 15));
3565#endif
3566#ifdef IPPROTO_NONE
3567 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_NONE, (st_data_t)rb_intern2("IPPROTO_NONE", 12));
3568#endif
3569#ifdef IPPROTO_IPV6
3570 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_IPV6, (st_data_t)rb_intern2("IPPROTO_IPV6", 12));
3571#endif
3572#ifdef IPPROTO_ICMPV6
3573 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ICMPV6, (st_data_t)rb_intern2("IPPROTO_ICMPV6", 14));
3574#endif
3575#ifdef IPPROTO_HOPOPTS
3576 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_HOPOPTS, (st_data_t)rb_intern2("IPPROTO_HOPOPTS", 15));
3577#endif
3578#ifdef IPPROTO_FRAGMENT
3579 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_FRAGMENT, (st_data_t)rb_intern2("IPPROTO_FRAGMENT", 16));
3580#endif
3581#ifdef IPPROTO_ESP
3582 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ESP, (st_data_t)rb_intern2("IPPROTO_ESP", 11));
3583#endif
3584#ifdef IPPROTO_DSTOPTS
3585 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_DSTOPTS, (st_data_t)rb_intern2("IPPROTO_DSTOPTS", 15));
3586#endif
3587#ifdef IPPROTO_AH
3588 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_AH, (st_data_t)rb_intern2("IPPROTO_AH", 10));
3589#endif
3590#ifdef IPPROTO_BIP
3591 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_BIP, (st_data_t)rb_intern2("IPPROTO_BIP", 11));
3592#endif
3593#ifdef IPPROTO_EON
3594 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_EON, (st_data_t)rb_intern2("IPPROTO_EON", 11));
3595#endif
3596#ifdef IPPROTO_XTP
3597 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_XTP, (st_data_t)rb_intern2("IPPROTO_XTP", 11));
3598#endif
3599#ifdef IPPROTO_TP
3600 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_TP, (st_data_t)rb_intern2("IPPROTO_TP", 10));
3601#endif
3602#ifdef IPPROTO_ND
3603 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ND, (st_data_t)rb_intern2("IPPROTO_ND", 10));
3604#endif
3605#ifdef IPPROTO_HELLO
3606 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_HELLO, (st_data_t)rb_intern2("IPPROTO_HELLO", 13));
3607#endif
3608#ifdef IPPROTO_IDP
3609 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_IDP, (st_data_t)rb_intern2("IPPROTO_IDP", 11));
3610#endif
3611#ifdef IPPROTO_UDP
3612 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_UDP, (st_data_t)rb_intern2("IPPROTO_UDP", 11));
3613#endif
3614#ifdef IPPROTO_PUP
3615 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_PUP, (st_data_t)rb_intern2("IPPROTO_PUP", 11));
3616#endif
3617#ifdef IPPROTO_EGP
3618 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_EGP, (st_data_t)rb_intern2("IPPROTO_EGP", 11));
3619#endif
3620#ifdef IPPROTO_TCP
3621 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_TCP, (st_data_t)rb_intern2("IPPROTO_TCP", 11));
3622#endif
3623#ifdef IPPROTO_GGP
3624 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_GGP, (st_data_t)rb_intern2("IPPROTO_GGP", 11));
3625#endif
3626#ifdef IPPROTO_IGMP
3627 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_IGMP, (st_data_t)rb_intern2("IPPROTO_IGMP", 12));
3628#endif
3629#ifdef IPPROTO_ICMP
3630 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_ICMP, (st_data_t)rb_intern2("IPPROTO_ICMP", 12));
3631#endif
3632#ifdef IPPROTO_IP
3633 st_insert(rsock_intern_ipproto_hash, (st_data_t)IPPROTO_IP, (st_data_t)rb_intern2("IPPROTO_IP", 10));
3634#endif
3635
3636 rsock_intern_iplevel_hash = st_init_numtable();
3637#ifdef IPPROTO_MAX
3638 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_MAX, (st_data_t)rb_intern2("IPPROTO_MAX", 11));
3639#endif
3640#ifdef IPPROTO_RAW
3641 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_RAW, (st_data_t)rb_intern2("IPPROTO_RAW", 11));
3642#endif
3643#ifdef IPPROTO_ROUTING
3644 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ROUTING, (st_data_t)rb_intern2("IPPROTO_ROUTING", 15));
3645#endif
3646#ifdef IPPROTO_NONE
3647 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_NONE, (st_data_t)rb_intern2("IPPROTO_NONE", 12));
3648#endif
3649#ifdef IPPROTO_IPV6
3650 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IPV6, (st_data_t)rb_intern2("IPPROTO_IPV6", 12));
3651#endif
3652#ifdef IPPROTO_ICMPV6
3653 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ICMPV6, (st_data_t)rb_intern2("IPPROTO_ICMPV6", 14));
3654#endif
3655#ifdef IPPROTO_HOPOPTS
3656 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_HOPOPTS, (st_data_t)rb_intern2("IPPROTO_HOPOPTS", 15));
3657#endif
3658#ifdef IPPROTO_FRAGMENT
3659 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_FRAGMENT, (st_data_t)rb_intern2("IPPROTO_FRAGMENT", 16));
3660#endif
3661#ifdef IPPROTO_ESP
3662 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ESP, (st_data_t)rb_intern2("IPPROTO_ESP", 11));
3663#endif
3664#ifdef IPPROTO_DSTOPTS
3665 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_DSTOPTS, (st_data_t)rb_intern2("IPPROTO_DSTOPTS", 15));
3666#endif
3667#ifdef IPPROTO_AH
3668 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_AH, (st_data_t)rb_intern2("IPPROTO_AH", 10));
3669#endif
3670#ifdef IPPROTO_BIP
3671 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_BIP, (st_data_t)rb_intern2("IPPROTO_BIP", 11));
3672#endif
3673#ifdef IPPROTO_EON
3674 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_EON, (st_data_t)rb_intern2("IPPROTO_EON", 11));
3675#endif
3676#ifdef IPPROTO_XTP
3677 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_XTP, (st_data_t)rb_intern2("IPPROTO_XTP", 11));
3678#endif
3679#ifdef IPPROTO_TP
3680 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_TP, (st_data_t)rb_intern2("IPPROTO_TP", 10));
3681#endif
3682#ifdef IPPROTO_ND
3683 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ND, (st_data_t)rb_intern2("IPPROTO_ND", 10));
3684#endif
3685#ifdef IPPROTO_HELLO
3686 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_HELLO, (st_data_t)rb_intern2("IPPROTO_HELLO", 13));
3687#endif
3688#ifdef IPPROTO_IDP
3689 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IDP, (st_data_t)rb_intern2("IPPROTO_IDP", 11));
3690#endif
3691#ifdef IPPROTO_UDP
3692 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_UDP, (st_data_t)rb_intern2("IPPROTO_UDP", 11));
3693#endif
3694#ifdef IPPROTO_PUP
3695 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_PUP, (st_data_t)rb_intern2("IPPROTO_PUP", 11));
3696#endif
3697#ifdef IPPROTO_EGP
3698 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_EGP, (st_data_t)rb_intern2("IPPROTO_EGP", 11));
3699#endif
3700#ifdef IPPROTO_TCP
3701 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_TCP, (st_data_t)rb_intern2("IPPROTO_TCP", 11));
3702#endif
3703#ifdef IPPROTO_GGP
3704 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_GGP, (st_data_t)rb_intern2("IPPROTO_GGP", 11));
3705#endif
3706#ifdef IPPROTO_IGMP
3707 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IGMP, (st_data_t)rb_intern2("IPPROTO_IGMP", 12));
3708#endif
3709#ifdef IPPROTO_ICMP
3710 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ICMP, (st_data_t)rb_intern2("IPPROTO_ICMP", 12));
3711#endif
3712#ifdef IPPROTO_IP
3713 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IP, (st_data_t)rb_intern2("IPPROTO_IP", 10));
3714#endif
3715#ifdef SOL_SOCKET
3716 st_insert(rsock_intern_iplevel_hash, (st_data_t)SOL_SOCKET, (st_data_t)rb_intern2("SOL_SOCKET", 10));
3717#endif
3718#ifdef IPPROTO_MAX
3719 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_MAX, (st_data_t)rb_intern2("MAX", 3));
3720#endif
3721#ifdef IPPROTO_RAW
3722 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_RAW, (st_data_t)rb_intern2("RAW", 3));
3723#endif
3724#ifdef IPPROTO_ROUTING
3725 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ROUTING, (st_data_t)rb_intern2("ROUTING", 7));
3726#endif
3727#ifdef IPPROTO_NONE
3728 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_NONE, (st_data_t)rb_intern2("NONE", 4));
3729#endif
3730#ifdef IPPROTO_IPV6
3731 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IPV6, (st_data_t)rb_intern2("IPV6", 4));
3732#endif
3733#ifdef IPPROTO_ICMPV6
3734 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ICMPV6, (st_data_t)rb_intern2("ICMPV6", 6));
3735#endif
3736#ifdef IPPROTO_HOPOPTS
3737 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_HOPOPTS, (st_data_t)rb_intern2("HOPOPTS", 7));
3738#endif
3739#ifdef IPPROTO_FRAGMENT
3740 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_FRAGMENT, (st_data_t)rb_intern2("FRAGMENT", 8));
3741#endif
3742#ifdef IPPROTO_ESP
3743 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ESP, (st_data_t)rb_intern2("ESP", 3));
3744#endif
3745#ifdef IPPROTO_DSTOPTS
3746 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_DSTOPTS, (st_data_t)rb_intern2("DSTOPTS", 7));
3747#endif
3748#ifdef IPPROTO_AH
3749 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_AH, (st_data_t)rb_intern2("AH", 2));
3750#endif
3751#ifdef IPPROTO_BIP
3752 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_BIP, (st_data_t)rb_intern2("BIP", 3));
3753#endif
3754#ifdef IPPROTO_EON
3755 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_EON, (st_data_t)rb_intern2("EON", 3));
3756#endif
3757#ifdef IPPROTO_XTP
3758 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_XTP, (st_data_t)rb_intern2("XTP", 3));
3759#endif
3760#ifdef IPPROTO_TP
3761 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_TP, (st_data_t)rb_intern2("TP", 2));
3762#endif
3763#ifdef IPPROTO_ND
3764 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ND, (st_data_t)rb_intern2("ND", 2));
3765#endif
3766#ifdef IPPROTO_HELLO
3767 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_HELLO, (st_data_t)rb_intern2("HELLO", 5));
3768#endif
3769#ifdef IPPROTO_IDP
3770 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IDP, (st_data_t)rb_intern2("IDP", 3));
3771#endif
3772#ifdef IPPROTO_UDP
3773 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_UDP, (st_data_t)rb_intern2("UDP", 3));
3774#endif
3775#ifdef IPPROTO_PUP
3776 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_PUP, (st_data_t)rb_intern2("PUP", 3));
3777#endif
3778#ifdef IPPROTO_EGP
3779 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_EGP, (st_data_t)rb_intern2("EGP", 3));
3780#endif
3781#ifdef IPPROTO_TCP
3782 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_TCP, (st_data_t)rb_intern2("TCP", 3));
3783#endif
3784#ifdef IPPROTO_GGP
3785 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_GGP, (st_data_t)rb_intern2("GGP", 3));
3786#endif
3787#ifdef IPPROTO_IGMP
3788 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IGMP, (st_data_t)rb_intern2("IGMP", 4));
3789#endif
3790#ifdef IPPROTO_ICMP
3791 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_ICMP, (st_data_t)rb_intern2("ICMP", 4));
3792#endif
3793#ifdef IPPROTO_IP
3794 st_insert(rsock_intern_iplevel_hash, (st_data_t)IPPROTO_IP, (st_data_t)rb_intern2("IP", 2));
3795#endif
3796#ifdef SOL_SOCKET
3797 st_insert(rsock_intern_iplevel_hash, (st_data_t)SOL_SOCKET, (st_data_t)rb_intern2("SOCKET", 6));
3798#endif
3799
3800 rsock_intern_so_optname_hash = st_init_numtable();
3801#ifdef SO_BPF_EXTENSIONS
3802 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BPF_EXTENSIONS, (st_data_t)rb_intern2("SO_BPF_EXTENSIONS", 17));
3803#endif
3804#ifdef SO_MAX_PACING_RATE
3805 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MAX_PACING_RATE, (st_data_t)rb_intern2("SO_MAX_PACING_RATE", 18));
3806#endif
3807#ifdef SO_BUSY_POLL
3808 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BUSY_POLL, (st_data_t)rb_intern2("SO_BUSY_POLL", 12));
3809#endif
3810#ifdef SO_SELECT_ERR_QUEUE
3811 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SELECT_ERR_QUEUE, (st_data_t)rb_intern2("SO_SELECT_ERR_QUEUE", 19));
3812#endif
3813#ifdef SO_LOCK_FILTER
3814 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_LOCK_FILTER, (st_data_t)rb_intern2("SO_LOCK_FILTER", 14));
3815#endif
3816#ifdef SO_NOFCS
3817 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NOFCS, (st_data_t)rb_intern2("SO_NOFCS", 8));
3818#endif
3819#ifdef SO_PEEK_OFF
3820 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEEK_OFF, (st_data_t)rb_intern2("SO_PEEK_OFF", 11));
3821#endif
3822#ifdef SO_WIFI_STATUS
3823 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WIFI_STATUS, (st_data_t)rb_intern2("SO_WIFI_STATUS", 14));
3824#endif
3825#ifdef SO_RXQ_OVFL
3826 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RXQ_OVFL, (st_data_t)rb_intern2("SO_RXQ_OVFL", 11));
3827#endif
3828#ifdef SO_DOMAIN
3829 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DOMAIN, (st_data_t)rb_intern2("SO_DOMAIN", 9));
3830#endif
3831#ifdef SO_PROTOCOL
3832 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PROTOCOL, (st_data_t)rb_intern2("SO_PROTOCOL", 11));
3833#endif
3834#ifdef SO_TIMESTAMPING
3835 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMPING, (st_data_t)rb_intern2("SO_TIMESTAMPING", 15));
3836#endif
3837#ifdef SO_MARK
3838 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MARK, (st_data_t)rb_intern2("SO_MARK", 7));
3839#endif
3840#ifdef SO_PASSSEC
3841 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PASSSEC, (st_data_t)rb_intern2("SO_PASSSEC", 10));
3842#endif
3843#ifdef SO_PEERSEC
3844 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERSEC, (st_data_t)rb_intern2("SO_PEERSEC", 10));
3845#endif
3846#ifdef SO_ALLZONES
3847 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ALLZONES, (st_data_t)rb_intern2("SO_ALLZONES", 11));
3848#endif
3849#ifdef SO_MAC_EXEMPT
3850 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MAC_EXEMPT, (st_data_t)rb_intern2("SO_MAC_EXEMPT", 13));
3851#endif
3852#ifdef SO_RECVUCRED
3853 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RECVUCRED, (st_data_t)rb_intern2("SO_RECVUCRED", 12));
3854#endif
3855#ifdef SO_BINTIME
3856 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BINTIME, (st_data_t)rb_intern2("SO_BINTIME", 10));
3857#endif
3858#ifdef SO_TIMESTAMPNS
3859 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMPNS, (st_data_t)rb_intern2("SO_TIMESTAMPNS", 14));
3860#endif
3861#ifdef SO_TIMESTAMP
3862 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMP, (st_data_t)rb_intern2("SO_TIMESTAMP", 12));
3863#endif
3864#ifdef SO_PEERNAME
3865 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERNAME, (st_data_t)rb_intern2("SO_PEERNAME", 11));
3866#endif
3867#ifdef SO_GET_FILTER
3868 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_GET_FILTER, (st_data_t)rb_intern2("SO_GET_FILTER", 13));
3869#endif
3870#ifdef SO_DETACH_FILTER
3871 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DETACH_FILTER, (st_data_t)rb_intern2("SO_DETACH_FILTER", 16));
3872#endif
3873#ifdef SO_ATTACH_FILTER
3874 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ATTACH_FILTER, (st_data_t)rb_intern2("SO_ATTACH_FILTER", 16));
3875#endif
3876#ifdef SO_BINDTODEVICE
3877 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BINDTODEVICE, (st_data_t)rb_intern2("SO_BINDTODEVICE", 15));
3878#endif
3879#ifdef SO_SECURITY_ENCRYPTION_NETWORK
3880 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_ENCRYPTION_NETWORK, (st_data_t)rb_intern2("SO_SECURITY_ENCRYPTION_NETWORK", 30));
3881#endif
3882#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT
3883 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_ENCRYPTION_TRANSPORT, (st_data_t)rb_intern2("SO_SECURITY_ENCRYPTION_TRANSPORT", 32));
3884#endif
3885#ifdef SO_SECURITY_AUTHENTICATION
3886 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_AUTHENTICATION, (st_data_t)rb_intern2("SO_SECURITY_AUTHENTICATION", 26));
3887#endif
3888#ifdef SO_NOSIGPIPE
3889 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NOSIGPIPE, (st_data_t)rb_intern2("SO_NOSIGPIPE", 12));
3890#endif
3891#ifdef SO_NKE
3892 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NKE, (st_data_t)rb_intern2("SO_NKE", 6));
3893#endif
3894#ifdef SO_NREAD
3895 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NREAD, (st_data_t)rb_intern2("SO_NREAD", 8));
3896#endif
3897#ifdef SO_WANTOOBFLAG
3898 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WANTOOBFLAG, (st_data_t)rb_intern2("SO_WANTOOBFLAG", 14));
3899#endif
3900#ifdef SO_WANTMORE
3901 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WANTMORE, (st_data_t)rb_intern2("SO_WANTMORE", 11));
3902#endif
3903#ifdef SO_DONTTRUNC
3904 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DONTTRUNC, (st_data_t)rb_intern2("SO_DONTTRUNC", 12));
3905#endif
3906#ifdef SO_ACCEPTFILTER
3907 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ACCEPTFILTER, (st_data_t)rb_intern2("SO_ACCEPTFILTER", 15));
3908#endif
3909#ifdef SO_USELOOPBACK
3910 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_USELOOPBACK, (st_data_t)rb_intern2("SO_USELOOPBACK", 14));
3911#endif
3912#ifdef SO_ACCEPTCONN
3913 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ACCEPTCONN, (st_data_t)rb_intern2("SO_ACCEPTCONN", 13));
3914#endif
3915#ifdef SO_SNDTIMEO
3916 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDTIMEO, (st_data_t)rb_intern2("SO_SNDTIMEO", 11));
3917#endif
3918#ifdef SO_RCVTIMEO
3919 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVTIMEO, (st_data_t)rb_intern2("SO_RCVTIMEO", 11));
3920#endif
3921#ifdef SO_SNDLOWAT
3922 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDLOWAT, (st_data_t)rb_intern2("SO_SNDLOWAT", 11));
3923#endif
3924#ifdef SO_RCVLOWAT
3925 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVLOWAT, (st_data_t)rb_intern2("SO_RCVLOWAT", 11));
3926#endif
3927#ifdef SO_PEERCRED
3928 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERCRED, (st_data_t)rb_intern2("SO_PEERCRED", 11));
3929#endif
3930#ifdef SO_PASSCRED
3931 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PASSCRED, (st_data_t)rb_intern2("SO_PASSCRED", 11));
3932#endif
3933#ifdef SO_LINGER
3934 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_LINGER, (st_data_t)rb_intern2("SO_LINGER", 9));
3935#endif
3936#ifdef SO_PRIORITY
3937 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PRIORITY, (st_data_t)rb_intern2("SO_PRIORITY", 11));
3938#endif
3939#ifdef SO_NO_CHECK
3940 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NO_CHECK, (st_data_t)rb_intern2("SO_NO_CHECK", 11));
3941#endif
3942#ifdef SO_OOBINLINE
3943 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_OOBINLINE, (st_data_t)rb_intern2("SO_OOBINLINE", 12));
3944#endif
3945#ifdef SO_KEEPALIVE
3946 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_KEEPALIVE, (st_data_t)rb_intern2("SO_KEEPALIVE", 12));
3947#endif
3948#ifdef SO_RCVBUFFORCE
3949 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVBUFFORCE, (st_data_t)rb_intern2("SO_RCVBUFFORCE", 14));
3950#endif
3951#ifdef SO_SNDBUFFORCE
3952 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDBUFFORCE, (st_data_t)rb_intern2("SO_SNDBUFFORCE", 14));
3953#endif
3954#ifdef SO_RCVBUF
3955 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVBUF, (st_data_t)rb_intern2("SO_RCVBUF", 9));
3956#endif
3957#ifdef SO_SNDBUF
3958 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDBUF, (st_data_t)rb_intern2("SO_SNDBUF", 9));
3959#endif
3960#ifdef SO_BROADCAST
3961 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BROADCAST, (st_data_t)rb_intern2("SO_BROADCAST", 12));
3962#endif
3963#ifdef SO_DONTROUTE
3964 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DONTROUTE, (st_data_t)rb_intern2("SO_DONTROUTE", 12));
3965#endif
3966#ifdef SO_ERROR
3967 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ERROR, (st_data_t)rb_intern2("SO_ERROR", 8));
3968#endif
3969#ifdef SO_TYPE
3970 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TYPE, (st_data_t)rb_intern2("SO_TYPE", 7));
3971#endif
3972#ifdef SO_REUSEPORT
3973 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_REUSEPORT, (st_data_t)rb_intern2("SO_REUSEPORT", 12));
3974#endif
3975#ifdef SO_REUSEADDR
3976 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_REUSEADDR, (st_data_t)rb_intern2("SO_REUSEADDR", 12));
3977#endif
3978#ifdef SO_DEBUG
3979 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DEBUG, (st_data_t)rb_intern2("SO_DEBUG", 8));
3980#endif
3981#ifdef SO_BPF_EXTENSIONS
3982 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BPF_EXTENSIONS, (st_data_t)rb_intern2("BPF_EXTENSIONS", 14));
3983#endif
3984#ifdef SO_MAX_PACING_RATE
3985 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MAX_PACING_RATE, (st_data_t)rb_intern2("MAX_PACING_RATE", 15));
3986#endif
3987#ifdef SO_BUSY_POLL
3988 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BUSY_POLL, (st_data_t)rb_intern2("BUSY_POLL", 9));
3989#endif
3990#ifdef SO_SELECT_ERR_QUEUE
3991 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SELECT_ERR_QUEUE, (st_data_t)rb_intern2("SELECT_ERR_QUEUE", 16));
3992#endif
3993#ifdef SO_LOCK_FILTER
3994 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_LOCK_FILTER, (st_data_t)rb_intern2("LOCK_FILTER", 11));
3995#endif
3996#ifdef SO_NOFCS
3997 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NOFCS, (st_data_t)rb_intern2("NOFCS", 5));
3998#endif
3999#ifdef SO_PEEK_OFF
4000 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEEK_OFF, (st_data_t)rb_intern2("PEEK_OFF", 8));
4001#endif
4002#ifdef SO_WIFI_STATUS
4003 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WIFI_STATUS, (st_data_t)rb_intern2("WIFI_STATUS", 11));
4004#endif
4005#ifdef SO_RXQ_OVFL
4006 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RXQ_OVFL, (st_data_t)rb_intern2("RXQ_OVFL", 8));
4007#endif
4008#ifdef SO_DOMAIN
4009 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DOMAIN, (st_data_t)rb_intern2("DOMAIN", 6));
4010#endif
4011#ifdef SO_PROTOCOL
4012 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PROTOCOL, (st_data_t)rb_intern2("PROTOCOL", 8));
4013#endif
4014#ifdef SO_TIMESTAMPING
4015 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMPING, (st_data_t)rb_intern2("TIMESTAMPING", 12));
4016#endif
4017#ifdef SO_MARK
4018 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MARK, (st_data_t)rb_intern2("MARK", 4));
4019#endif
4020#ifdef SO_PASSSEC
4021 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PASSSEC, (st_data_t)rb_intern2("PASSSEC", 7));
4022#endif
4023#ifdef SO_PEERSEC
4024 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERSEC, (st_data_t)rb_intern2("PEERSEC", 7));
4025#endif
4026#ifdef SO_ALLZONES
4027 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ALLZONES, (st_data_t)rb_intern2("ALLZONES", 8));
4028#endif
4029#ifdef SO_MAC_EXEMPT
4030 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_MAC_EXEMPT, (st_data_t)rb_intern2("MAC_EXEMPT", 10));
4031#endif
4032#ifdef SO_RECVUCRED
4033 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RECVUCRED, (st_data_t)rb_intern2("RECVUCRED", 9));
4034#endif
4035#ifdef SO_BINTIME
4036 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BINTIME, (st_data_t)rb_intern2("BINTIME", 7));
4037#endif
4038#ifdef SO_TIMESTAMPNS
4039 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMPNS, (st_data_t)rb_intern2("TIMESTAMPNS", 11));
4040#endif
4041#ifdef SO_TIMESTAMP
4042 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TIMESTAMP, (st_data_t)rb_intern2("TIMESTAMP", 9));
4043#endif
4044#ifdef SO_PEERNAME
4045 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERNAME, (st_data_t)rb_intern2("PEERNAME", 8));
4046#endif
4047#ifdef SO_GET_FILTER
4048 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_GET_FILTER, (st_data_t)rb_intern2("GET_FILTER", 10));
4049#endif
4050#ifdef SO_DETACH_FILTER
4051 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DETACH_FILTER, (st_data_t)rb_intern2("DETACH_FILTER", 13));
4052#endif
4053#ifdef SO_ATTACH_FILTER
4054 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ATTACH_FILTER, (st_data_t)rb_intern2("ATTACH_FILTER", 13));
4055#endif
4056#ifdef SO_BINDTODEVICE
4057 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BINDTODEVICE, (st_data_t)rb_intern2("BINDTODEVICE", 12));
4058#endif
4059#ifdef SO_SECURITY_ENCRYPTION_NETWORK
4060 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_ENCRYPTION_NETWORK, (st_data_t)rb_intern2("SECURITY_ENCRYPTION_NETWORK", 27));
4061#endif
4062#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT
4063 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_ENCRYPTION_TRANSPORT, (st_data_t)rb_intern2("SECURITY_ENCRYPTION_TRANSPORT", 29));
4064#endif
4065#ifdef SO_SECURITY_AUTHENTICATION
4066 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SECURITY_AUTHENTICATION, (st_data_t)rb_intern2("SECURITY_AUTHENTICATION", 23));
4067#endif
4068#ifdef SO_NOSIGPIPE
4069 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NOSIGPIPE, (st_data_t)rb_intern2("NOSIGPIPE", 9));
4070#endif
4071#ifdef SO_NKE
4072 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NKE, (st_data_t)rb_intern2("NKE", 3));
4073#endif
4074#ifdef SO_NREAD
4075 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NREAD, (st_data_t)rb_intern2("NREAD", 5));
4076#endif
4077#ifdef SO_WANTOOBFLAG
4078 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WANTOOBFLAG, (st_data_t)rb_intern2("WANTOOBFLAG", 11));
4079#endif
4080#ifdef SO_WANTMORE
4081 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_WANTMORE, (st_data_t)rb_intern2("WANTMORE", 8));
4082#endif
4083#ifdef SO_DONTTRUNC
4084 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DONTTRUNC, (st_data_t)rb_intern2("DONTTRUNC", 9));
4085#endif
4086#ifdef SO_ACCEPTFILTER
4087 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ACCEPTFILTER, (st_data_t)rb_intern2("ACCEPTFILTER", 12));
4088#endif
4089#ifdef SO_USELOOPBACK
4090 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_USELOOPBACK, (st_data_t)rb_intern2("USELOOPBACK", 11));
4091#endif
4092#ifdef SO_ACCEPTCONN
4093 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ACCEPTCONN, (st_data_t)rb_intern2("ACCEPTCONN", 10));
4094#endif
4095#ifdef SO_SNDTIMEO
4096 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDTIMEO, (st_data_t)rb_intern2("SNDTIMEO", 8));
4097#endif
4098#ifdef SO_RCVTIMEO
4099 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVTIMEO, (st_data_t)rb_intern2("RCVTIMEO", 8));
4100#endif
4101#ifdef SO_SNDLOWAT
4102 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDLOWAT, (st_data_t)rb_intern2("SNDLOWAT", 8));
4103#endif
4104#ifdef SO_RCVLOWAT
4105 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVLOWAT, (st_data_t)rb_intern2("RCVLOWAT", 8));
4106#endif
4107#ifdef SO_PEERCRED
4108 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PEERCRED, (st_data_t)rb_intern2("PEERCRED", 8));
4109#endif
4110#ifdef SO_PASSCRED
4111 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PASSCRED, (st_data_t)rb_intern2("PASSCRED", 8));
4112#endif
4113#ifdef SO_LINGER
4114 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_LINGER, (st_data_t)rb_intern2("LINGER", 6));
4115#endif
4116#ifdef SO_PRIORITY
4117 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_PRIORITY, (st_data_t)rb_intern2("PRIORITY", 8));
4118#endif
4119#ifdef SO_NO_CHECK
4120 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_NO_CHECK, (st_data_t)rb_intern2("NO_CHECK", 8));
4121#endif
4122#ifdef SO_OOBINLINE
4123 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_OOBINLINE, (st_data_t)rb_intern2("OOBINLINE", 9));
4124#endif
4125#ifdef SO_KEEPALIVE
4126 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_KEEPALIVE, (st_data_t)rb_intern2("KEEPALIVE", 9));
4127#endif
4128#ifdef SO_RCVBUFFORCE
4129 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVBUFFORCE, (st_data_t)rb_intern2("RCVBUFFORCE", 11));
4130#endif
4131#ifdef SO_SNDBUFFORCE
4132 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDBUFFORCE, (st_data_t)rb_intern2("SNDBUFFORCE", 11));
4133#endif
4134#ifdef SO_RCVBUF
4135 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_RCVBUF, (st_data_t)rb_intern2("RCVBUF", 6));
4136#endif
4137#ifdef SO_SNDBUF
4138 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_SNDBUF, (st_data_t)rb_intern2("SNDBUF", 6));
4139#endif
4140#ifdef SO_BROADCAST
4141 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_BROADCAST, (st_data_t)rb_intern2("BROADCAST", 9));
4142#endif
4143#ifdef SO_DONTROUTE
4144 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DONTROUTE, (st_data_t)rb_intern2("DONTROUTE", 9));
4145#endif
4146#ifdef SO_ERROR
4147 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_ERROR, (st_data_t)rb_intern2("ERROR", 5));
4148#endif
4149#ifdef SO_TYPE
4150 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_TYPE, (st_data_t)rb_intern2("TYPE", 4));
4151#endif
4152#ifdef SO_REUSEPORT
4153 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_REUSEPORT, (st_data_t)rb_intern2("REUSEPORT", 9));
4154#endif
4155#ifdef SO_REUSEADDR
4156 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_REUSEADDR, (st_data_t)rb_intern2("REUSEADDR", 9));
4157#endif
4158#ifdef SO_DEBUG
4159 st_insert(rsock_intern_so_optname_hash, (st_data_t)SO_DEBUG, (st_data_t)rb_intern2("DEBUG", 5));
4160#endif
4161
4162 rsock_intern_ip_optname_hash = st_init_numtable();
4163#ifdef IP_MSFILTER
4164 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MSFILTER, (st_data_t)rb_intern2("IP_MSFILTER", 11));
4165#endif
4166#ifdef IP_DROP_SOURCE_MEMBERSHIP
4167 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DROP_SOURCE_MEMBERSHIP, (st_data_t)rb_intern2("IP_DROP_SOURCE_MEMBERSHIP", 25));
4168#endif
4169#ifdef IP_ADD_SOURCE_MEMBERSHIP
4170 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ADD_SOURCE_MEMBERSHIP, (st_data_t)rb_intern2("IP_ADD_SOURCE_MEMBERSHIP", 24));
4171#endif
4172#ifdef IP_BLOCK_SOURCE
4173 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_BLOCK_SOURCE, (st_data_t)rb_intern2("IP_BLOCK_SOURCE", 15));
4174#endif
4175#ifdef IP_UNBLOCK_SOURCE
4176 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_UNBLOCK_SOURCE, (st_data_t)rb_intern2("IP_UNBLOCK_SOURCE", 17));
4177#endif
4178#ifdef IP_PMTUDISC_DO
4179 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_DO, (st_data_t)rb_intern2("IP_PMTUDISC_DO", 14));
4180#endif
4181#ifdef IP_PMTUDISC_WANT
4182 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_WANT, (st_data_t)rb_intern2("IP_PMTUDISC_WANT", 16));
4183#endif
4184#ifdef IP_PMTUDISC_DONT
4185 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_DONT, (st_data_t)rb_intern2("IP_PMTUDISC_DONT", 16));
4186#endif
4187#ifdef IP_TRANSPARENT
4188 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TRANSPARENT, (st_data_t)rb_intern2("IP_TRANSPARENT", 14));
4189#endif
4190#ifdef IP_PASSSEC
4191 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PASSSEC, (st_data_t)rb_intern2("IP_PASSSEC", 10));
4192#endif
4193#ifdef IP_XFRM_POLICY
4194 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_XFRM_POLICY, (st_data_t)rb_intern2("IP_XFRM_POLICY", 14));
4195#endif
4196#ifdef IP_IPSEC_POLICY
4197 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_IPSEC_POLICY, (st_data_t)rb_intern2("IP_IPSEC_POLICY", 15));
4198#endif
4199#ifdef IP_FREEBIND
4200 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_FREEBIND, (st_data_t)rb_intern2("IP_FREEBIND", 11));
4201#endif
4202#ifdef IP_MTU
4203 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MTU, (st_data_t)rb_intern2("IP_MTU", 6));
4204#endif
4205#ifdef IP_RECVTOS
4206 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVTOS, (st_data_t)rb_intern2("IP_RECVTOS", 10));
4207#endif
4208#ifdef IP_RECVERR
4209 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVERR, (st_data_t)rb_intern2("IP_RECVERR", 10));
4210#endif
4211#ifdef IP_MTU_DISCOVER
4212 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MTU_DISCOVER, (st_data_t)rb_intern2("IP_MTU_DISCOVER", 15));
4213#endif
4214#ifdef IP_PKTOPTIONS
4215 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PKTOPTIONS, (st_data_t)rb_intern2("IP_PKTOPTIONS", 13));
4216#endif
4217#ifdef IP_PKTINFO
4218 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PKTINFO, (st_data_t)rb_intern2("IP_PKTINFO", 10));
4219#endif
4220#ifdef IP_ROUTER_ALERT
4221 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ROUTER_ALERT, (st_data_t)rb_intern2("IP_ROUTER_ALERT", 15));
4222#endif
4223#ifdef IP_MAX_MEMBERSHIPS
4224 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MAX_MEMBERSHIPS, (st_data_t)rb_intern2("IP_MAX_MEMBERSHIPS", 18));
4225#endif
4226#ifdef IP_DEFAULT_MULTICAST_LOOP
4227 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DEFAULT_MULTICAST_LOOP, (st_data_t)rb_intern2("IP_DEFAULT_MULTICAST_LOOP", 25));
4228#endif
4229#ifdef IP_DEFAULT_MULTICAST_TTL
4230 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DEFAULT_MULTICAST_TTL, (st_data_t)rb_intern2("IP_DEFAULT_MULTICAST_TTL", 24));
4231#endif
4232#ifdef IP_DROP_MEMBERSHIP
4233 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DROP_MEMBERSHIP, (st_data_t)rb_intern2("IP_DROP_MEMBERSHIP", 18));
4234#endif
4235#ifdef IP_ADD_MEMBERSHIP
4236 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ADD_MEMBERSHIP, (st_data_t)rb_intern2("IP_ADD_MEMBERSHIP", 17));
4237#endif
4238#ifdef IP_MULTICAST_LOOP
4239 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_LOOP, (st_data_t)rb_intern2("IP_MULTICAST_LOOP", 17));
4240#endif
4241#ifdef IP_MULTICAST_TTL
4242 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_TTL, (st_data_t)rb_intern2("IP_MULTICAST_TTL", 16));
4243#endif
4244#ifdef IP_MULTICAST_IF
4245 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_IF, (st_data_t)rb_intern2("IP_MULTICAST_IF", 15));
4246#endif
4247#ifdef IP_PORTRANGE
4248 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PORTRANGE, (st_data_t)rb_intern2("IP_PORTRANGE", 12));
4249#endif
4250#ifdef IP_RECVSLLA
4251 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVSLLA, (st_data_t)rb_intern2("IP_RECVSLLA", 11));
4252#endif
4253#ifdef IP_RECVIF
4254 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVIF, (st_data_t)rb_intern2("IP_RECVIF", 9));
4255#endif
4256#ifdef IP_RECVTTL
4257 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVTTL, (st_data_t)rb_intern2("IP_RECVTTL", 10));
4258#endif
4259#ifdef IP_ONESBCAST
4260 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ONESBCAST, (st_data_t)rb_intern2("IP_ONESBCAST", 12));
4261#endif
4262#ifdef IP_SENDSRCADDR
4263 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_SENDSRCADDR, (st_data_t)rb_intern2("IP_SENDSRCADDR", 14));
4264#endif
4265#ifdef IP_DONTFRAG
4266 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DONTFRAG, (st_data_t)rb_intern2("IP_DONTFRAG", 11));
4267#endif
4268#ifdef IP_MINTTL
4269 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MINTTL, (st_data_t)rb_intern2("IP_MINTTL", 9));
4270#endif
4271#ifdef IP_RETOPTS
4272 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RETOPTS, (st_data_t)rb_intern2("IP_RETOPTS", 10));
4273#endif
4274#ifdef IP_RECVDSTADDR
4275 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVDSTADDR, (st_data_t)rb_intern2("IP_RECVDSTADDR", 14));
4276#endif
4277#ifdef IP_RECVRETOPTS
4278 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVRETOPTS, (st_data_t)rb_intern2("IP_RECVRETOPTS", 14));
4279#endif
4280#ifdef IP_RECVOPTS
4281 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVOPTS, (st_data_t)rb_intern2("IP_RECVOPTS", 11));
4282#endif
4283#ifdef IP_TTL
4284 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TTL, (st_data_t)rb_intern2("IP_TTL", 6));
4285#endif
4286#ifdef IP_TOS
4287 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TOS, (st_data_t)rb_intern2("IP_TOS", 6));
4288#endif
4289#ifdef IP_HDRINCL
4290 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_HDRINCL, (st_data_t)rb_intern2("IP_HDRINCL", 10));
4291#endif
4292#ifdef IP_OPTIONS
4293 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_OPTIONS, (st_data_t)rb_intern2("IP_OPTIONS", 10));
4294#endif
4295#ifdef IP_MSFILTER
4296 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MSFILTER, (st_data_t)rb_intern2("MSFILTER", 8));
4297#endif
4298#ifdef IP_DROP_SOURCE_MEMBERSHIP
4299 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DROP_SOURCE_MEMBERSHIP, (st_data_t)rb_intern2("DROP_SOURCE_MEMBERSHIP", 22));
4300#endif
4301#ifdef IP_ADD_SOURCE_MEMBERSHIP
4302 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ADD_SOURCE_MEMBERSHIP, (st_data_t)rb_intern2("ADD_SOURCE_MEMBERSHIP", 21));
4303#endif
4304#ifdef IP_BLOCK_SOURCE
4305 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_BLOCK_SOURCE, (st_data_t)rb_intern2("BLOCK_SOURCE", 12));
4306#endif
4307#ifdef IP_UNBLOCK_SOURCE
4308 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_UNBLOCK_SOURCE, (st_data_t)rb_intern2("UNBLOCK_SOURCE", 14));
4309#endif
4310#ifdef IP_PMTUDISC_DO
4311 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_DO, (st_data_t)rb_intern2("PMTUDISC_DO", 11));
4312#endif
4313#ifdef IP_PMTUDISC_WANT
4314 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_WANT, (st_data_t)rb_intern2("PMTUDISC_WANT", 13));
4315#endif
4316#ifdef IP_PMTUDISC_DONT
4317 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PMTUDISC_DONT, (st_data_t)rb_intern2("PMTUDISC_DONT", 13));
4318#endif
4319#ifdef IP_TRANSPARENT
4320 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TRANSPARENT, (st_data_t)rb_intern2("TRANSPARENT", 11));
4321#endif
4322#ifdef IP_PASSSEC
4323 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PASSSEC, (st_data_t)rb_intern2("PASSSEC", 7));
4324#endif
4325#ifdef IP_XFRM_POLICY
4326 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_XFRM_POLICY, (st_data_t)rb_intern2("XFRM_POLICY", 11));
4327#endif
4328#ifdef IP_IPSEC_POLICY
4329 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_IPSEC_POLICY, (st_data_t)rb_intern2("IPSEC_POLICY", 12));
4330#endif
4331#ifdef IP_FREEBIND
4332 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_FREEBIND, (st_data_t)rb_intern2("FREEBIND", 8));
4333#endif
4334#ifdef IP_MTU
4335 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MTU, (st_data_t)rb_intern2("MTU", 3));
4336#endif
4337#ifdef IP_RECVTOS
4338 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVTOS, (st_data_t)rb_intern2("RECVTOS", 7));
4339#endif
4340#ifdef IP_RECVERR
4341 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVERR, (st_data_t)rb_intern2("RECVERR", 7));
4342#endif
4343#ifdef IP_MTU_DISCOVER
4344 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MTU_DISCOVER, (st_data_t)rb_intern2("MTU_DISCOVER", 12));
4345#endif
4346#ifdef IP_PKTOPTIONS
4347 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PKTOPTIONS, (st_data_t)rb_intern2("PKTOPTIONS", 10));
4348#endif
4349#ifdef IP_PKTINFO
4350 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PKTINFO, (st_data_t)rb_intern2("PKTINFO", 7));
4351#endif
4352#ifdef IP_ROUTER_ALERT
4353 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ROUTER_ALERT, (st_data_t)rb_intern2("ROUTER_ALERT", 12));
4354#endif
4355#ifdef IP_MAX_MEMBERSHIPS
4356 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MAX_MEMBERSHIPS, (st_data_t)rb_intern2("MAX_MEMBERSHIPS", 15));
4357#endif
4358#ifdef IP_DEFAULT_MULTICAST_LOOP
4359 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DEFAULT_MULTICAST_LOOP, (st_data_t)rb_intern2("DEFAULT_MULTICAST_LOOP", 22));
4360#endif
4361#ifdef IP_DEFAULT_MULTICAST_TTL
4362 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DEFAULT_MULTICAST_TTL, (st_data_t)rb_intern2("DEFAULT_MULTICAST_TTL", 21));
4363#endif
4364#ifdef IP_DROP_MEMBERSHIP
4365 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DROP_MEMBERSHIP, (st_data_t)rb_intern2("DROP_MEMBERSHIP", 15));
4366#endif
4367#ifdef IP_ADD_MEMBERSHIP
4368 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ADD_MEMBERSHIP, (st_data_t)rb_intern2("ADD_MEMBERSHIP", 14));
4369#endif
4370#ifdef IP_MULTICAST_LOOP
4371 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_LOOP, (st_data_t)rb_intern2("MULTICAST_LOOP", 14));
4372#endif
4373#ifdef IP_MULTICAST_TTL
4374 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_TTL, (st_data_t)rb_intern2("MULTICAST_TTL", 13));
4375#endif
4376#ifdef IP_MULTICAST_IF
4377 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MULTICAST_IF, (st_data_t)rb_intern2("MULTICAST_IF", 12));
4378#endif
4379#ifdef IP_PORTRANGE
4380 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_PORTRANGE, (st_data_t)rb_intern2("PORTRANGE", 9));
4381#endif
4382#ifdef IP_RECVSLLA
4383 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVSLLA, (st_data_t)rb_intern2("RECVSLLA", 8));
4384#endif
4385#ifdef IP_RECVIF
4386 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVIF, (st_data_t)rb_intern2("RECVIF", 6));
4387#endif
4388#ifdef IP_RECVTTL
4389 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVTTL, (st_data_t)rb_intern2("RECVTTL", 7));
4390#endif
4391#ifdef IP_ONESBCAST
4392 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_ONESBCAST, (st_data_t)rb_intern2("ONESBCAST", 9));
4393#endif
4394#ifdef IP_SENDSRCADDR
4395 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_SENDSRCADDR, (st_data_t)rb_intern2("SENDSRCADDR", 11));
4396#endif
4397#ifdef IP_DONTFRAG
4398 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_DONTFRAG, (st_data_t)rb_intern2("DONTFRAG", 8));
4399#endif
4400#ifdef IP_MINTTL
4401 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_MINTTL, (st_data_t)rb_intern2("MINTTL", 6));
4402#endif
4403#ifdef IP_RETOPTS
4404 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RETOPTS, (st_data_t)rb_intern2("RETOPTS", 7));
4405#endif
4406#ifdef IP_RECVDSTADDR
4407 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVDSTADDR, (st_data_t)rb_intern2("RECVDSTADDR", 11));
4408#endif
4409#ifdef IP_RECVRETOPTS
4410 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVRETOPTS, (st_data_t)rb_intern2("RECVRETOPTS", 11));
4411#endif
4412#ifdef IP_RECVOPTS
4413 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_RECVOPTS, (st_data_t)rb_intern2("RECVOPTS", 8));
4414#endif
4415#ifdef IP_TTL
4416 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TTL, (st_data_t)rb_intern2("TTL", 3));
4417#endif
4418#ifdef IP_TOS
4419 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_TOS, (st_data_t)rb_intern2("TOS", 3));
4420#endif
4421#ifdef IP_HDRINCL
4422 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_HDRINCL, (st_data_t)rb_intern2("HDRINCL", 7));
4423#endif
4424#ifdef IP_OPTIONS
4425 st_insert(rsock_intern_ip_optname_hash, (st_data_t)IP_OPTIONS, (st_data_t)rb_intern2("OPTIONS", 7));
4426#endif
4427
4428 rsock_intern_ipv6_optname_hash = st_init_numtable();
4429#ifdef IPV6_USE_MIN_MTU
4430 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_USE_MIN_MTU, (st_data_t)rb_intern2("IPV6_USE_MIN_MTU", 16));
4431#endif
4432#ifdef IPV6_TCLASS
4433 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_TCLASS, (st_data_t)rb_intern2("IPV6_TCLASS", 11));
4434#endif
4435#ifdef IPV6_RECVPATHMTU
4436 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVPATHMTU, (st_data_t)rb_intern2("IPV6_RECVPATHMTU", 16));
4437#endif
4438#ifdef IPV6_RTHDR_TYPE_0
4439 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDR_TYPE_0, (st_data_t)rb_intern2("IPV6_RTHDR_TYPE_0", 17));
4440#endif
4441#ifdef IPV6_RTHDRDSTOPTS
4442 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDRDSTOPTS, (st_data_t)rb_intern2("IPV6_RTHDRDSTOPTS", 17));
4443#endif
4444#ifdef IPV6_RTHDR
4445 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDR, (st_data_t)rb_intern2("IPV6_RTHDR", 10));
4446#endif
4447#ifdef IPV6_RECVTCLASS
4448 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVTCLASS, (st_data_t)rb_intern2("IPV6_RECVTCLASS", 15));
4449#endif
4450#ifdef IPV6_RECVRTHDR
4451 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVRTHDR, (st_data_t)rb_intern2("IPV6_RECVRTHDR", 14));
4452#endif
4453#ifdef IPV6_RECVPKTINFO
4454 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVPKTINFO, (st_data_t)rb_intern2("IPV6_RECVPKTINFO", 16));
4455#endif
4456#ifdef IPV6_RECVHOPOPTS
4457 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVHOPOPTS, (st_data_t)rb_intern2("IPV6_RECVHOPOPTS", 16));
4458#endif
4459#ifdef IPV6_RECVHOPLIMIT
4460 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVHOPLIMIT, (st_data_t)rb_intern2("IPV6_RECVHOPLIMIT", 17));
4461#endif
4462#ifdef IPV6_RECVDSTOPTS
4463 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVDSTOPTS, (st_data_t)rb_intern2("IPV6_RECVDSTOPTS", 16));
4464#endif
4465#ifdef IPV6_PKTINFO
4466 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_PKTINFO, (st_data_t)rb_intern2("IPV6_PKTINFO", 12));
4467#endif
4468#ifdef IPV6_PATHMTU
4469 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_PATHMTU, (st_data_t)rb_intern2("IPV6_PATHMTU", 12));
4470#endif
4471#ifdef IPV6_NEXTHOP
4472 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_NEXTHOP, (st_data_t)rb_intern2("IPV6_NEXTHOP", 12));
4473#endif
4474#ifdef IPV6_HOPOPTS
4475 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_HOPOPTS, (st_data_t)rb_intern2("IPV6_HOPOPTS", 12));
4476#endif
4477#ifdef IPV6_HOPLIMIT
4478 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_HOPLIMIT, (st_data_t)rb_intern2("IPV6_HOPLIMIT", 13));
4479#endif
4480#ifdef IPV6_DSTOPTS
4481 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_DSTOPTS, (st_data_t)rb_intern2("IPV6_DSTOPTS", 12));
4482#endif
4483#ifdef IPV6_DONTFRAG
4484 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_DONTFRAG, (st_data_t)rb_intern2("IPV6_DONTFRAG", 13));
4485#endif
4486#ifdef IPV6_CHECKSUM
4487 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_CHECKSUM, (st_data_t)rb_intern2("IPV6_CHECKSUM", 13));
4488#endif
4489#ifdef IPV6_V6ONLY
4490 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_V6ONLY, (st_data_t)rb_intern2("IPV6_V6ONLY", 11));
4491#endif
4492#ifdef IPV6_UNICAST_HOPS
4493 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_UNICAST_HOPS, (st_data_t)rb_intern2("IPV6_UNICAST_HOPS", 17));
4494#endif
4495#ifdef IPV6_MULTICAST_LOOP
4496 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_LOOP, (st_data_t)rb_intern2("IPV6_MULTICAST_LOOP", 19));
4497#endif
4498#ifdef IPV6_MULTICAST_IF
4499 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_IF, (st_data_t)rb_intern2("IPV6_MULTICAST_IF", 17));
4500#endif
4501#ifdef IPV6_MULTICAST_HOPS
4502 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_HOPS, (st_data_t)rb_intern2("IPV6_MULTICAST_HOPS", 19));
4503#endif
4504#ifdef IPV6_LEAVE_GROUP
4505 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_LEAVE_GROUP, (st_data_t)rb_intern2("IPV6_LEAVE_GROUP", 16));
4506#endif
4507#ifdef IPV6_JOIN_GROUP
4508 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_JOIN_GROUP, (st_data_t)rb_intern2("IPV6_JOIN_GROUP", 15));
4509#endif
4510#ifdef IPV6_USE_MIN_MTU
4511 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_USE_MIN_MTU, (st_data_t)rb_intern2("USE_MIN_MTU", 11));
4512#endif
4513#ifdef IPV6_TCLASS
4514 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_TCLASS, (st_data_t)rb_intern2("TCLASS", 6));
4515#endif
4516#ifdef IPV6_RECVPATHMTU
4517 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVPATHMTU, (st_data_t)rb_intern2("RECVPATHMTU", 11));
4518#endif
4519#ifdef IPV6_RTHDR_TYPE_0
4520 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDR_TYPE_0, (st_data_t)rb_intern2("RTHDR_TYPE_0", 12));
4521#endif
4522#ifdef IPV6_RTHDRDSTOPTS
4523 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDRDSTOPTS, (st_data_t)rb_intern2("RTHDRDSTOPTS", 12));
4524#endif
4525#ifdef IPV6_RTHDR
4526 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RTHDR, (st_data_t)rb_intern2("RTHDR", 5));
4527#endif
4528#ifdef IPV6_RECVTCLASS
4529 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVTCLASS, (st_data_t)rb_intern2("RECVTCLASS", 10));
4530#endif
4531#ifdef IPV6_RECVRTHDR
4532 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVRTHDR, (st_data_t)rb_intern2("RECVRTHDR", 9));
4533#endif
4534#ifdef IPV6_RECVPKTINFO
4535 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVPKTINFO, (st_data_t)rb_intern2("RECVPKTINFO", 11));
4536#endif
4537#ifdef IPV6_RECVHOPOPTS
4538 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVHOPOPTS, (st_data_t)rb_intern2("RECVHOPOPTS", 11));
4539#endif
4540#ifdef IPV6_RECVHOPLIMIT
4541 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVHOPLIMIT, (st_data_t)rb_intern2("RECVHOPLIMIT", 12));
4542#endif
4543#ifdef IPV6_RECVDSTOPTS
4544 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_RECVDSTOPTS, (st_data_t)rb_intern2("RECVDSTOPTS", 11));
4545#endif
4546#ifdef IPV6_PKTINFO
4547 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_PKTINFO, (st_data_t)rb_intern2("PKTINFO", 7));
4548#endif
4549#ifdef IPV6_PATHMTU
4550 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_PATHMTU, (st_data_t)rb_intern2("PATHMTU", 7));
4551#endif
4552#ifdef IPV6_NEXTHOP
4553 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_NEXTHOP, (st_data_t)rb_intern2("NEXTHOP", 7));
4554#endif
4555#ifdef IPV6_HOPOPTS
4556 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_HOPOPTS, (st_data_t)rb_intern2("HOPOPTS", 7));
4557#endif
4558#ifdef IPV6_HOPLIMIT
4559 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_HOPLIMIT, (st_data_t)rb_intern2("HOPLIMIT", 8));
4560#endif
4561#ifdef IPV6_DSTOPTS
4562 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_DSTOPTS, (st_data_t)rb_intern2("DSTOPTS", 7));
4563#endif
4564#ifdef IPV6_DONTFRAG
4565 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_DONTFRAG, (st_data_t)rb_intern2("DONTFRAG", 8));
4566#endif
4567#ifdef IPV6_CHECKSUM
4568 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_CHECKSUM, (st_data_t)rb_intern2("CHECKSUM", 8));
4569#endif
4570#ifdef IPV6_V6ONLY
4571 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_V6ONLY, (st_data_t)rb_intern2("V6ONLY", 6));
4572#endif
4573#ifdef IPV6_UNICAST_HOPS
4574 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_UNICAST_HOPS, (st_data_t)rb_intern2("UNICAST_HOPS", 12));
4575#endif
4576#ifdef IPV6_MULTICAST_LOOP
4577 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_LOOP, (st_data_t)rb_intern2("MULTICAST_LOOP", 14));
4578#endif
4579#ifdef IPV6_MULTICAST_IF
4580 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_IF, (st_data_t)rb_intern2("MULTICAST_IF", 12));
4581#endif
4582#ifdef IPV6_MULTICAST_HOPS
4583 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_MULTICAST_HOPS, (st_data_t)rb_intern2("MULTICAST_HOPS", 14));
4584#endif
4585#ifdef IPV6_LEAVE_GROUP
4586 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_LEAVE_GROUP, (st_data_t)rb_intern2("LEAVE_GROUP", 11));
4587#endif
4588#ifdef IPV6_JOIN_GROUP
4589 st_insert(rsock_intern_ipv6_optname_hash, (st_data_t)IPV6_JOIN_GROUP, (st_data_t)rb_intern2("JOIN_GROUP", 10));
4590#endif
4591
4592 rsock_intern_tcp_optname_hash = st_init_numtable();
4593#ifdef TCP_USER_TIMEOUT
4594 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_USER_TIMEOUT, (st_data_t)rb_intern2("TCP_USER_TIMEOUT", 16));
4595#endif
4596#ifdef TCP_TIMESTAMP
4597 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_TIMESTAMP, (st_data_t)rb_intern2("TCP_TIMESTAMP", 13));
4598#endif
4599#ifdef TCP_THIN_LINEAR_TIMEOUTS
4600 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_THIN_LINEAR_TIMEOUTS, (st_data_t)rb_intern2("TCP_THIN_LINEAR_TIMEOUTS", 24));
4601#endif
4602#ifdef TCP_THIN_DUPACK
4603 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_THIN_DUPACK, (st_data_t)rb_intern2("TCP_THIN_DUPACK", 15));
4604#endif
4605#ifdef TCP_REPAIR_QUEUE
4606 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR_QUEUE, (st_data_t)rb_intern2("TCP_REPAIR_QUEUE", 16));
4607#endif
4608#ifdef TCP_REPAIR_OPTIONS
4609 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR_OPTIONS, (st_data_t)rb_intern2("TCP_REPAIR_OPTIONS", 18));
4610#endif
4611#ifdef TCP_REPAIR
4612 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR, (st_data_t)rb_intern2("TCP_REPAIR", 10));
4613#endif
4614#ifdef TCP_QUEUE_SEQ
4615 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_QUEUE_SEQ, (st_data_t)rb_intern2("TCP_QUEUE_SEQ", 13));
4616#endif
4617#ifdef TCP_COOKIE_TRANSACTIONS
4618 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_COOKIE_TRANSACTIONS, (st_data_t)rb_intern2("TCP_COOKIE_TRANSACTIONS", 23));
4619#endif
4620#ifdef TCP_CONGESTION
4621 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_CONGESTION, (st_data_t)rb_intern2("TCP_CONGESTION", 14));
4622#endif
4623#ifdef TCP_FASTOPEN
4624 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_FASTOPEN, (st_data_t)rb_intern2("TCP_FASTOPEN", 12));
4625#endif
4626#ifdef TCP_WINDOW_CLAMP
4627 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_WINDOW_CLAMP, (st_data_t)rb_intern2("TCP_WINDOW_CLAMP", 16));
4628#endif
4629#ifdef TCP_SYNCNT
4630 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_SYNCNT, (st_data_t)rb_intern2("TCP_SYNCNT", 10));
4631#endif
4632#ifdef TCP_QUICKACK
4633 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_QUICKACK, (st_data_t)rb_intern2("TCP_QUICKACK", 12));
4634#endif
4635#ifdef TCP_NOPUSH
4636 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NOPUSH, (st_data_t)rb_intern2("TCP_NOPUSH", 10));
4637#endif
4638#ifdef TCP_NOOPT
4639 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NOOPT, (st_data_t)rb_intern2("TCP_NOOPT", 9));
4640#endif
4641#ifdef TCP_MD5SIG
4642 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_MD5SIG, (st_data_t)rb_intern2("TCP_MD5SIG", 10));
4643#endif
4644#ifdef TCP_LINGER2
4645 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_LINGER2, (st_data_t)rb_intern2("TCP_LINGER2", 11));
4646#endif
4647#ifdef TCP_KEEPINTVL
4648 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPINTVL, (st_data_t)rb_intern2("TCP_KEEPINTVL", 13));
4649#endif
4650#ifdef TCP_KEEPIDLE
4651 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPIDLE, (st_data_t)rb_intern2("TCP_KEEPIDLE", 12));
4652#endif
4653#ifdef TCP_KEEPCNT
4654 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPCNT, (st_data_t)rb_intern2("TCP_KEEPCNT", 11));
4655#endif
4656#ifdef TCP_INFO
4657 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_INFO, (st_data_t)rb_intern2("TCP_INFO", 8));
4658#endif
4659#ifdef TCP_DEFER_ACCEPT
4660 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_DEFER_ACCEPT, (st_data_t)rb_intern2("TCP_DEFER_ACCEPT", 16));
4661#endif
4662#ifdef TCP_CORK
4663 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_CORK, (st_data_t)rb_intern2("TCP_CORK", 8));
4664#endif
4665#ifdef TCP_MAXSEG
4666 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_MAXSEG, (st_data_t)rb_intern2("TCP_MAXSEG", 10));
4667#endif
4668#ifdef TCP_NODELAY
4669 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NODELAY, (st_data_t)rb_intern2("TCP_NODELAY", 11));
4670#endif
4671#ifdef TCP_USER_TIMEOUT
4672 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_USER_TIMEOUT, (st_data_t)rb_intern2("USER_TIMEOUT", 12));
4673#endif
4674#ifdef TCP_TIMESTAMP
4675 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_TIMESTAMP, (st_data_t)rb_intern2("TIMESTAMP", 9));
4676#endif
4677#ifdef TCP_THIN_LINEAR_TIMEOUTS
4678 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_THIN_LINEAR_TIMEOUTS, (st_data_t)rb_intern2("THIN_LINEAR_TIMEOUTS", 20));
4679#endif
4680#ifdef TCP_THIN_DUPACK
4681 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_THIN_DUPACK, (st_data_t)rb_intern2("THIN_DUPACK", 11));
4682#endif
4683#ifdef TCP_REPAIR_QUEUE
4684 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR_QUEUE, (st_data_t)rb_intern2("REPAIR_QUEUE", 12));
4685#endif
4686#ifdef TCP_REPAIR_OPTIONS
4687 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR_OPTIONS, (st_data_t)rb_intern2("REPAIR_OPTIONS", 14));
4688#endif
4689#ifdef TCP_REPAIR
4690 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_REPAIR, (st_data_t)rb_intern2("REPAIR", 6));
4691#endif
4692#ifdef TCP_QUEUE_SEQ
4693 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_QUEUE_SEQ, (st_data_t)rb_intern2("QUEUE_SEQ", 9));
4694#endif
4695#ifdef TCP_COOKIE_TRANSACTIONS
4696 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_COOKIE_TRANSACTIONS, (st_data_t)rb_intern2("COOKIE_TRANSACTIONS", 19));
4697#endif
4698#ifdef TCP_CONGESTION
4699 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_CONGESTION, (st_data_t)rb_intern2("CONGESTION", 10));
4700#endif
4701#ifdef TCP_FASTOPEN
4702 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_FASTOPEN, (st_data_t)rb_intern2("FASTOPEN", 8));
4703#endif
4704#ifdef TCP_WINDOW_CLAMP
4705 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_WINDOW_CLAMP, (st_data_t)rb_intern2("WINDOW_CLAMP", 12));
4706#endif
4707#ifdef TCP_SYNCNT
4708 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_SYNCNT, (st_data_t)rb_intern2("SYNCNT", 6));
4709#endif
4710#ifdef TCP_QUICKACK
4711 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_QUICKACK, (st_data_t)rb_intern2("QUICKACK", 8));
4712#endif
4713#ifdef TCP_NOPUSH
4714 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NOPUSH, (st_data_t)rb_intern2("NOPUSH", 6));
4715#endif
4716#ifdef TCP_NOOPT
4717 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NOOPT, (st_data_t)rb_intern2("NOOPT", 5));
4718#endif
4719#ifdef TCP_MD5SIG
4720 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_MD5SIG, (st_data_t)rb_intern2("MD5SIG", 6));
4721#endif
4722#ifdef TCP_LINGER2
4723 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_LINGER2, (st_data_t)rb_intern2("LINGER2", 7));
4724#endif
4725#ifdef TCP_KEEPINTVL
4726 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPINTVL, (st_data_t)rb_intern2("KEEPINTVL", 9));
4727#endif
4728#ifdef TCP_KEEPIDLE
4729 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPIDLE, (st_data_t)rb_intern2("KEEPIDLE", 8));
4730#endif
4731#ifdef TCP_KEEPCNT
4732 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_KEEPCNT, (st_data_t)rb_intern2("KEEPCNT", 7));
4733#endif
4734#ifdef TCP_INFO
4735 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_INFO, (st_data_t)rb_intern2("INFO", 4));
4736#endif
4737#ifdef TCP_DEFER_ACCEPT
4738 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_DEFER_ACCEPT, (st_data_t)rb_intern2("DEFER_ACCEPT", 12));
4739#endif
4740#ifdef TCP_CORK
4741 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_CORK, (st_data_t)rb_intern2("CORK", 4));
4742#endif
4743#ifdef TCP_MAXSEG
4744 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_MAXSEG, (st_data_t)rb_intern2("MAXSEG", 6));
4745#endif
4746#ifdef TCP_NODELAY
4747 st_insert(rsock_intern_tcp_optname_hash, (st_data_t)TCP_NODELAY, (st_data_t)rb_intern2("NODELAY", 7));
4748#endif
4749
4750 rsock_intern_udp_optname_hash = st_init_numtable();
4751#ifdef UDP_CORK
4752 st_insert(rsock_intern_udp_optname_hash, (st_data_t)UDP_CORK, (st_data_t)rb_intern2("UDP_CORK", 8));
4753#endif
4754#ifdef UDP_CORK
4755 st_insert(rsock_intern_udp_optname_hash, (st_data_t)UDP_CORK, (st_data_t)rb_intern2("CORK", 4));
4756#endif
4757
4758 rsock_intern_scm_optname_hash = st_init_numtable();
4759#ifdef SCM_WIFI_STATUS
4760 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_WIFI_STATUS, (st_data_t)rb_intern2("SCM_WIFI_STATUS", 15));
4761#endif
4762#ifdef SCM_UCRED
4763 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_UCRED, (st_data_t)rb_intern2("SCM_UCRED", 9));
4764#endif
4765#ifdef SCM_CREDS
4766 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_CREDS, (st_data_t)rb_intern2("SCM_CREDS", 9));
4767#endif
4768#ifdef SCM_CREDENTIALS
4769 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_CREDENTIALS, (st_data_t)rb_intern2("SCM_CREDENTIALS", 15));
4770#endif
4771#ifdef SCM_BINTIME
4772 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_BINTIME, (st_data_t)rb_intern2("SCM_BINTIME", 11));
4773#endif
4774#ifdef SCM_TIMESTAMPING
4775 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMPING, (st_data_t)rb_intern2("SCM_TIMESTAMPING", 16));
4776#endif
4777#ifdef SCM_TIMESTAMPNS
4778 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMPNS, (st_data_t)rb_intern2("SCM_TIMESTAMPNS", 15));
4779#endif
4780#ifdef SCM_TIMESTAMP
4781 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMP, (st_data_t)rb_intern2("SCM_TIMESTAMP", 13));
4782#endif
4783#ifdef SCM_RIGHTS
4784 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_RIGHTS, (st_data_t)rb_intern2("SCM_RIGHTS", 10));
4785#endif
4786#ifdef SCM_WIFI_STATUS
4787 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_WIFI_STATUS, (st_data_t)rb_intern2("WIFI_STATUS", 11));
4788#endif
4789#ifdef SCM_UCRED
4790 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_UCRED, (st_data_t)rb_intern2("UCRED", 5));
4791#endif
4792#ifdef SCM_CREDS
4793 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_CREDS, (st_data_t)rb_intern2("CREDS", 5));
4794#endif
4795#ifdef SCM_CREDENTIALS
4796 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_CREDENTIALS, (st_data_t)rb_intern2("CREDENTIALS", 11));
4797#endif
4798#ifdef SCM_BINTIME
4799 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_BINTIME, (st_data_t)rb_intern2("BINTIME", 7));
4800#endif
4801#ifdef SCM_TIMESTAMPING
4802 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMPING, (st_data_t)rb_intern2("TIMESTAMPING", 12));
4803#endif
4804#ifdef SCM_TIMESTAMPNS
4805 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMPNS, (st_data_t)rb_intern2("TIMESTAMPNS", 11));
4806#endif
4807#ifdef SCM_TIMESTAMP
4808 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_TIMESTAMP, (st_data_t)rb_intern2("TIMESTAMP", 9));
4809#endif
4810#ifdef SCM_RIGHTS
4811 st_insert(rsock_intern_scm_optname_hash, (st_data_t)SCM_RIGHTS, (st_data_t)rb_intern2("RIGHTS", 6));
4812#endif
4813
4814 rsock_intern_local_optname_hash = st_init_numtable();
4815#ifdef LOCAL_CONNWAIT
4816 st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_CONNWAIT, (st_data_t)rb_intern2("LOCAL_CONNWAIT", 14));
4817#endif
4818#ifdef LOCAL_CREDS
4819 st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_CREDS, (st_data_t)rb_intern2("LOCAL_CREDS", 11));
4820#endif
4821#ifdef LOCAL_PEERCRED
4822 st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_PEERCRED, (st_data_t)rb_intern2("LOCAL_PEERCRED", 14));
4823#endif
4824#ifdef LOCAL_CONNWAIT
4825 st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_CONNWAIT, (st_data_t)rb_intern2("CONNWAIT", 8));
4826#endif
4827#ifdef LOCAL_CREDS
4828 st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_CREDS, (st_data_t)rb_intern2("CREDS", 5));
4829#endif
4830#ifdef LOCAL_PEERCRED
4831 st_insert(rsock_intern_local_optname_hash, (st_data_t)LOCAL_PEERCRED, (st_data_t)rb_intern2("PEERCRED", 8));
4832#endif
4833
4834}
4835
4836int
4837rsock_family_to_int(const char *str, long len, int *valp)
4838{
4839 switch (len) {
4840 case 2:
4841#ifdef AF_NS
4842 if (memcmp(str, "NS", 2) == 0) { *valp = AF_NS; return 0; }
4843#endif
4844#ifdef AF_IB
4845 if (memcmp(str, "IB", 2) == 0) { *valp = AF_IB; return 0; }
4846#endif
4847 return -1;
4848
4849 case 3:
4850#ifdef AF_IPX
4851 if (memcmp(str, "IPX", 3) == 0) { *valp = AF_IPX; return 0; }
4852#endif
4853#ifdef AF_PUP
4854 if (memcmp(str, "PUP", 3) == 0) { *valp = AF_PUP; return 0; }
4855#endif
4856#ifdef AF_ISO
4857 if (memcmp(str, "ISO", 3) == 0) { *valp = AF_ISO; return 0; }
4858#endif
4859#ifdef AF_OSI
4860 if (memcmp(str, "OSI", 3) == 0) { *valp = AF_OSI; return 0; }
4861#endif
4862#ifdef AF_SNA
4863 if (memcmp(str, "SNA", 3) == 0) { *valp = AF_SNA; return 0; }
4864#endif
4865#ifdef AF_DEC
4866 if (memcmp(str, "DEC", 3) == 0) { *valp = AF_DEC; return 0; }
4867#endif
4868#ifdef AF_DLI
4869 if (memcmp(str, "DLI", 3) == 0) { *valp = AF_DLI; return 0; }
4870#endif
4871#ifdef AF_LAT
4872 if (memcmp(str, "LAT", 3) == 0) { *valp = AF_LAT; return 0; }
4873#endif
4874#ifdef AF_CNT
4875 if (memcmp(str, "CNT", 3) == 0) { *valp = AF_CNT; return 0; }
4876#endif
4877#ifdef AF_SIP
4878 if (memcmp(str, "SIP", 3) == 0) { *valp = AF_SIP; return 0; }
4879#endif
4880#ifdef AF_PPP
4881 if (memcmp(str, "PPP", 3) == 0) { *valp = AF_PPP; return 0; }
4882#endif
4883#ifdef AF_ATM
4884 if (memcmp(str, "ATM", 3) == 0) { *valp = AF_ATM; return 0; }
4885#endif
4886#ifdef AF_MAX
4887 if (memcmp(str, "MAX", 3) == 0) { *valp = AF_MAX; return 0; }
4888#endif
4889#ifdef AF_KEY
4890 if (memcmp(str, "KEY", 3) == 0) { *valp = AF_KEY; return 0; }
4891#endif
4892#ifdef AF_RDS
4893 if (memcmp(str, "RDS", 3) == 0) { *valp = AF_RDS; return 0; }
4894#endif
4895#ifdef AF_LLC
4896 if (memcmp(str, "LLC", 3) == 0) { *valp = AF_LLC; return 0; }
4897#endif
4898#ifdef AF_CAN
4899 if (memcmp(str, "CAN", 3) == 0) { *valp = AF_CAN; return 0; }
4900#endif
4901#ifdef AF_ALG
4902 if (memcmp(str, "ALG", 3) == 0) { *valp = AF_ALG; return 0; }
4903#endif
4904#ifdef AF_KCM
4905 if (memcmp(str, "KCM", 3) == 0) { *valp = AF_KCM; return 0; }
4906#endif
4907#ifdef AF_XDP
4908 if (memcmp(str, "XDP", 3) == 0) { *valp = AF_XDP; return 0; }
4909#endif
4910 return -1;
4911
4912 case 4:
4913#ifdef AF_INET
4914 if (memcmp(str, "INET", 4) == 0) { *valp = AF_INET; return 0; }
4915#endif
4916#ifdef AF_UNIX
4917 if (memcmp(str, "UNIX", 4) == 0) { *valp = AF_UNIX; return 0; }
4918#endif
4919#ifdef AF_AX25
4920 if (memcmp(str, "AX25", 4) == 0) { *valp = AF_AX25; return 0; }
4921#endif
4922#ifdef AF_ECMA
4923 if (memcmp(str, "ECMA", 4) == 0) { *valp = AF_ECMA; return 0; }
4924#endif
4925#ifdef AF_LINK
4926 if (memcmp(str, "LINK", 4) == 0) { *valp = AF_LINK; return 0; }
4927#endif
4928#ifdef AF_COIP
4929 if (memcmp(str, "COIP", 4) == 0) { *valp = AF_COIP; return 0; }
4930#endif
4931#ifdef AF_NDRV
4932 if (memcmp(str, "NDRV", 4) == 0) { *valp = AF_NDRV; return 0; }
4933#endif
4934#ifdef AF_ISDN
4935 if (memcmp(str, "ISDN", 4) == 0) { *valp = AF_ISDN; return 0; }
4936#endif
4937#ifdef AF_NATM
4938 if (memcmp(str, "NATM", 4) == 0) { *valp = AF_NATM; return 0; }
4939#endif
4940#ifdef AF_E164
4941 if (memcmp(str, "E164", 4) == 0) { *valp = AF_E164; return 0; }
4942#endif
4943#ifdef AF_MPLS
4944 if (memcmp(str, "MPLS", 4) == 0) { *valp = AF_MPLS; return 0; }
4945#endif
4946#ifdef AF_TIPC
4947 if (memcmp(str, "TIPC", 4) == 0) { *valp = AF_TIPC; return 0; }
4948#endif
4949 return -1;
4950
4951 case 5:
4952#ifdef AF_NS
4953 if (memcmp(str, "AF_NS", 5) == 0) { *valp = AF_NS; return 0; }
4954#endif
4955#ifdef PF_NS
4956 if (memcmp(str, "PF_NS", 5) == 0) { *valp = PF_NS; return 0; }
4957#endif
4958#ifdef AF_IB
4959 if (memcmp(str, "AF_IB", 5) == 0) { *valp = AF_IB; return 0; }
4960#endif
4961#ifdef PF_IB
4962 if (memcmp(str, "PF_IB", 5) == 0) { *valp = PF_IB; return 0; }
4963#endif
4964#ifdef AF_INET6
4965 if (memcmp(str, "INET6", 5) == 0) { *valp = AF_INET6; return 0; }
4966#endif
4967#ifdef AF_LOCAL
4968 if (memcmp(str, "LOCAL", 5) == 0) { *valp = AF_LOCAL; return 0; }
4969#endif
4970#ifdef AF_CHAOS
4971 if (memcmp(str, "CHAOS", 5) == 0) { *valp = AF_CHAOS; return 0; }
4972#endif
4973#ifdef AF_CCITT
4974 if (memcmp(str, "CCITT", 5) == 0) { *valp = AF_CCITT; return 0; }
4975#endif
4976#ifdef AF_ROUTE
4977 if (memcmp(str, "ROUTE", 5) == 0) { *valp = AF_ROUTE; return 0; }
4978#endif
4979#ifdef AF_PPPOX
4980 if (memcmp(str, "PPPOX", 5) == 0) { *valp = AF_PPPOX; return 0; }
4981#endif
4982#ifdef AF_VSOCK
4983 if (memcmp(str, "VSOCK", 5) == 0) { *valp = AF_VSOCK; return 0; }
4984#endif
4985 return -1;
4986
4987 case 6:
4988#ifdef AF_IPX
4989 if (memcmp(str, "AF_IPX", 6) == 0) { *valp = AF_IPX; return 0; }
4990#endif
4991#ifdef PF_IPX
4992 if (memcmp(str, "PF_IPX", 6) == 0) { *valp = PF_IPX; return 0; }
4993#endif
4994#ifdef AF_PUP
4995 if (memcmp(str, "AF_PUP", 6) == 0) { *valp = AF_PUP; return 0; }
4996#endif
4997#ifdef PF_PUP
4998 if (memcmp(str, "PF_PUP", 6) == 0) { *valp = PF_PUP; return 0; }
4999#endif
5000#ifdef AF_ISO
5001 if (memcmp(str, "AF_ISO", 6) == 0) { *valp = AF_ISO; return 0; }
5002#endif
5003#ifdef PF_ISO
5004 if (memcmp(str, "PF_ISO", 6) == 0) { *valp = PF_ISO; return 0; }
5005#endif
5006#ifdef AF_OSI
5007 if (memcmp(str, "AF_OSI", 6) == 0) { *valp = AF_OSI; return 0; }
5008#endif
5009#ifdef PF_OSI
5010 if (memcmp(str, "PF_OSI", 6) == 0) { *valp = PF_OSI; return 0; }
5011#endif
5012#ifdef AF_SNA
5013 if (memcmp(str, "AF_SNA", 6) == 0) { *valp = AF_SNA; return 0; }
5014#endif
5015#ifdef PF_SNA
5016 if (memcmp(str, "PF_SNA", 6) == 0) { *valp = PF_SNA; return 0; }
5017#endif
5018#ifdef AF_DEC
5019 if (memcmp(str, "AF_DEC", 6) == 0) { *valp = AF_DEC; return 0; }
5020#endif
5021#ifdef PF_DEC
5022 if (memcmp(str, "PF_DEC", 6) == 0) { *valp = PF_DEC; return 0; }
5023#endif
5024#ifdef AF_DLI
5025 if (memcmp(str, "AF_DLI", 6) == 0) { *valp = AF_DLI; return 0; }
5026#endif
5027#ifdef PF_DLI
5028 if (memcmp(str, "PF_DLI", 6) == 0) { *valp = PF_DLI; return 0; }
5029#endif
5030#ifdef AF_LAT
5031 if (memcmp(str, "AF_LAT", 6) == 0) { *valp = AF_LAT; return 0; }
5032#endif
5033#ifdef PF_LAT
5034 if (memcmp(str, "PF_LAT", 6) == 0) { *valp = PF_LAT; return 0; }
5035#endif
5036#ifdef AF_CNT
5037 if (memcmp(str, "AF_CNT", 6) == 0) { *valp = AF_CNT; return 0; }
5038#endif
5039#ifdef PF_CNT
5040 if (memcmp(str, "PF_CNT", 6) == 0) { *valp = PF_CNT; return 0; }
5041#endif
5042#ifdef AF_SIP
5043 if (memcmp(str, "AF_SIP", 6) == 0) { *valp = AF_SIP; return 0; }
5044#endif
5045#ifdef PF_SIP
5046 if (memcmp(str, "PF_SIP", 6) == 0) { *valp = PF_SIP; return 0; }
5047#endif
5048#ifdef AF_PPP
5049 if (memcmp(str, "AF_PPP", 6) == 0) { *valp = AF_PPP; return 0; }
5050#endif
5051#ifdef PF_PPP
5052 if (memcmp(str, "PF_PPP", 6) == 0) { *valp = PF_PPP; return 0; }
5053#endif
5054#ifdef AF_ATM
5055 if (memcmp(str, "AF_ATM", 6) == 0) { *valp = AF_ATM; return 0; }
5056#endif
5057#ifdef PF_ATM
5058 if (memcmp(str, "PF_ATM", 6) == 0) { *valp = PF_ATM; return 0; }
5059#endif
5060#ifdef AF_MAX
5061 if (memcmp(str, "AF_MAX", 6) == 0) { *valp = AF_MAX; return 0; }
5062#endif
5063#ifdef PF_MAX
5064 if (memcmp(str, "PF_MAX", 6) == 0) { *valp = PF_MAX; return 0; }
5065#endif
5066#ifdef PF_XTP
5067 if (memcmp(str, "PF_XTP", 6) == 0) { *valp = PF_XTP; return 0; }
5068#endif
5069#ifdef PF_PIP
5070 if (memcmp(str, "PF_PIP", 6) == 0) { *valp = PF_PIP; return 0; }
5071#endif
5072#ifdef AF_KEY
5073 if (memcmp(str, "AF_KEY", 6) == 0) { *valp = AF_KEY; return 0; }
5074#endif
5075#ifdef PF_KEY
5076 if (memcmp(str, "PF_KEY", 6) == 0) { *valp = PF_KEY; return 0; }
5077#endif
5078#ifdef AF_RDS
5079 if (memcmp(str, "AF_RDS", 6) == 0) { *valp = AF_RDS; return 0; }
5080#endif
5081#ifdef PF_RDS
5082 if (memcmp(str, "PF_RDS", 6) == 0) { *valp = PF_RDS; return 0; }
5083#endif
5084#ifdef AF_LLC
5085 if (memcmp(str, "AF_LLC", 6) == 0) { *valp = AF_LLC; return 0; }
5086#endif
5087#ifdef PF_LLC
5088 if (memcmp(str, "PF_LLC", 6) == 0) { *valp = PF_LLC; return 0; }
5089#endif
5090#ifdef AF_CAN
5091 if (memcmp(str, "AF_CAN", 6) == 0) { *valp = AF_CAN; return 0; }
5092#endif
5093#ifdef PF_CAN
5094 if (memcmp(str, "PF_CAN", 6) == 0) { *valp = PF_CAN; return 0; }
5095#endif
5096#ifdef AF_ALG
5097 if (memcmp(str, "AF_ALG", 6) == 0) { *valp = AF_ALG; return 0; }
5098#endif
5099#ifdef PF_ALG
5100 if (memcmp(str, "PF_ALG", 6) == 0) { *valp = PF_ALG; return 0; }
5101#endif
5102#ifdef AF_KCM
5103 if (memcmp(str, "AF_KCM", 6) == 0) { *valp = AF_KCM; return 0; }
5104#endif
5105#ifdef PF_KCM
5106 if (memcmp(str, "PF_KCM", 6) == 0) { *valp = PF_KCM; return 0; }
5107#endif
5108#ifdef AF_XDP
5109 if (memcmp(str, "AF_XDP", 6) == 0) { *valp = AF_XDP; return 0; }
5110#endif
5111#ifdef PF_XDP
5112 if (memcmp(str, "PF_XDP", 6) == 0) { *valp = PF_XDP; return 0; }
5113#endif
5114#ifdef AF_UNSPEC
5115 if (memcmp(str, "UNSPEC", 6) == 0) { *valp = AF_UNSPEC; return 0; }
5116#endif
5117#ifdef AF_DECnet
5118 if (memcmp(str, "DECnet", 6) == 0) { *valp = AF_DECnet; return 0; }
5119#endif
5120#ifdef AF_HYLINK
5121 if (memcmp(str, "HYLINK", 6) == 0) { *valp = AF_HYLINK; return 0; }
5122#endif
5123#ifdef AF_SYSTEM
5124 if (memcmp(str, "SYSTEM", 6) == 0) { *valp = AF_SYSTEM; return 0; }
5125#endif
5126#ifdef AF_PACKET
5127 if (memcmp(str, "PACKET", 6) == 0) { *valp = AF_PACKET; return 0; }
5128#endif
5129 return -1;
5130
5131 case 7:
5132#ifdef AF_INET
5133 if (memcmp(str, "AF_INET", 7) == 0) { *valp = AF_INET; return 0; }
5134#endif
5135#ifdef PF_INET
5136 if (memcmp(str, "PF_INET", 7) == 0) { *valp = PF_INET; return 0; }
5137#endif
5138#ifdef AF_UNIX
5139 if (memcmp(str, "AF_UNIX", 7) == 0) { *valp = AF_UNIX; return 0; }
5140#endif
5141#ifdef PF_UNIX
5142 if (memcmp(str, "PF_UNIX", 7) == 0) { *valp = PF_UNIX; return 0; }
5143#endif
5144#ifdef AF_AX25
5145 if (memcmp(str, "AF_AX25", 7) == 0) { *valp = AF_AX25; return 0; }
5146#endif
5147#ifdef PF_AX25
5148 if (memcmp(str, "PF_AX25", 7) == 0) { *valp = PF_AX25; return 0; }
5149#endif
5150#ifdef AF_ECMA
5151 if (memcmp(str, "AF_ECMA", 7) == 0) { *valp = AF_ECMA; return 0; }
5152#endif
5153#ifdef PF_ECMA
5154 if (memcmp(str, "PF_ECMA", 7) == 0) { *valp = PF_ECMA; return 0; }
5155#endif
5156#ifdef AF_LINK
5157 if (memcmp(str, "AF_LINK", 7) == 0) { *valp = AF_LINK; return 0; }
5158#endif
5159#ifdef PF_LINK
5160 if (memcmp(str, "PF_LINK", 7) == 0) { *valp = PF_LINK; return 0; }
5161#endif
5162#ifdef AF_COIP
5163 if (memcmp(str, "AF_COIP", 7) == 0) { *valp = AF_COIP; return 0; }
5164#endif
5165#ifdef PF_COIP
5166 if (memcmp(str, "PF_COIP", 7) == 0) { *valp = PF_COIP; return 0; }
5167#endif
5168#ifdef AF_NDRV
5169 if (memcmp(str, "AF_NDRV", 7) == 0) { *valp = AF_NDRV; return 0; }
5170#endif
5171#ifdef PF_NDRV
5172 if (memcmp(str, "PF_NDRV", 7) == 0) { *valp = PF_NDRV; return 0; }
5173#endif
5174#ifdef AF_ISDN
5175 if (memcmp(str, "AF_ISDN", 7) == 0) { *valp = AF_ISDN; return 0; }
5176#endif
5177#ifdef PF_ISDN
5178 if (memcmp(str, "PF_ISDN", 7) == 0) { *valp = PF_ISDN; return 0; }
5179#endif
5180#ifdef AF_NATM
5181 if (memcmp(str, "AF_NATM", 7) == 0) { *valp = AF_NATM; return 0; }
5182#endif
5183#ifdef PF_NATM
5184 if (memcmp(str, "PF_NATM", 7) == 0) { *valp = PF_NATM; return 0; }
5185#endif
5186#ifdef AF_E164
5187 if (memcmp(str, "AF_E164", 7) == 0) { *valp = AF_E164; return 0; }
5188#endif
5189#ifdef PF_RTIP
5190 if (memcmp(str, "PF_RTIP", 7) == 0) { *valp = PF_RTIP; return 0; }
5191#endif
5192#ifdef AF_MPLS
5193 if (memcmp(str, "AF_MPLS", 7) == 0) { *valp = AF_MPLS; return 0; }
5194#endif
5195#ifdef PF_MPLS
5196 if (memcmp(str, "PF_MPLS", 7) == 0) { *valp = PF_MPLS; return 0; }
5197#endif
5198#ifdef AF_TIPC
5199 if (memcmp(str, "AF_TIPC", 7) == 0) { *valp = AF_TIPC; return 0; }
5200#endif
5201#ifdef PF_TIPC
5202 if (memcmp(str, "PF_TIPC", 7) == 0) { *valp = PF_TIPC; return 0; }
5203#endif
5204#ifdef AF_IMPLINK
5205 if (memcmp(str, "IMPLINK", 7) == 0) { *valp = AF_IMPLINK; return 0; }
5206#endif
5207#ifdef AF_DATAKIT
5208 if (memcmp(str, "DATAKIT", 7) == 0) { *valp = AF_DATAKIT; return 0; }
5209#endif
5210#ifdef AF_NETBIOS
5211 if (memcmp(str, "NETBIOS", 7) == 0) { *valp = AF_NETBIOS; return 0; }
5212#endif
5213#ifdef AF_NETLINK
5214 if (memcmp(str, "NETLINK", 7) == 0) { *valp = AF_NETLINK; return 0; }
5215#endif
5216 return -1;
5217
5218 case 8:
5219#ifdef AF_INET6
5220 if (memcmp(str, "AF_INET6", 8) == 0) { *valp = AF_INET6; return 0; }
5221#endif
5222#ifdef PF_INET6
5223 if (memcmp(str, "PF_INET6", 8) == 0) { *valp = PF_INET6; return 0; }
5224#endif
5225#ifdef AF_LOCAL
5226 if (memcmp(str, "AF_LOCAL", 8) == 0) { *valp = AF_LOCAL; return 0; }
5227#endif
5228#ifdef PF_LOCAL
5229 if (memcmp(str, "PF_LOCAL", 8) == 0) { *valp = PF_LOCAL; return 0; }
5230#endif
5231#ifdef AF_CHAOS
5232 if (memcmp(str, "AF_CHAOS", 8) == 0) { *valp = AF_CHAOS; return 0; }
5233#endif
5234#ifdef PF_CHAOS
5235 if (memcmp(str, "PF_CHAOS", 8) == 0) { *valp = PF_CHAOS; return 0; }
5236#endif
5237#ifdef AF_CCITT
5238 if (memcmp(str, "AF_CCITT", 8) == 0) { *valp = AF_CCITT; return 0; }
5239#endif
5240#ifdef PF_CCITT
5241 if (memcmp(str, "PF_CCITT", 8) == 0) { *valp = PF_CCITT; return 0; }
5242#endif
5243#ifdef AF_ROUTE
5244 if (memcmp(str, "AF_ROUTE", 8) == 0) { *valp = AF_ROUTE; return 0; }
5245#endif
5246#ifdef PF_ROUTE
5247 if (memcmp(str, "PF_ROUTE", 8) == 0) { *valp = PF_ROUTE; return 0; }
5248#endif
5249#ifdef AF_PPPOX
5250 if (memcmp(str, "AF_PPPOX", 8) == 0) { *valp = AF_PPPOX; return 0; }
5251#endif
5252#ifdef PF_PPPOX
5253 if (memcmp(str, "PF_PPPOX", 8) == 0) { *valp = PF_PPPOX; return 0; }
5254#endif
5255#ifdef AF_VSOCK
5256 if (memcmp(str, "AF_VSOCK", 8) == 0) { *valp = AF_VSOCK; return 0; }
5257#endif
5258#ifdef PF_VSOCK
5259 if (memcmp(str, "PF_VSOCK", 8) == 0) { *valp = PF_VSOCK; return 0; }
5260#endif
5261#ifdef AF_NETGRAPH
5262 if (memcmp(str, "NETGRAPH", 8) == 0) { *valp = AF_NETGRAPH; return 0; }
5263#endif
5264 return -1;
5265
5266 case 9:
5267#ifdef AF_UNSPEC
5268 if (memcmp(str, "AF_UNSPEC", 9) == 0) { *valp = AF_UNSPEC; return 0; }
5269#endif
5270#ifdef PF_UNSPEC
5271 if (memcmp(str, "PF_UNSPEC", 9) == 0) { *valp = PF_UNSPEC; return 0; }
5272#endif
5273#ifdef AF_DECnet
5274 if (memcmp(str, "AF_DECnet", 9) == 0) { *valp = AF_DECnet; return 0; }
5275#endif
5276#ifdef PF_DECnet
5277 if (memcmp(str, "PF_DECnet", 9) == 0) { *valp = PF_DECnet; return 0; }
5278#endif
5279#ifdef AF_HYLINK
5280 if (memcmp(str, "AF_HYLINK", 9) == 0) { *valp = AF_HYLINK; return 0; }
5281#endif
5282#ifdef PF_HYLINK
5283 if (memcmp(str, "PF_HYLINK", 9) == 0) { *valp = PF_HYLINK; return 0; }
5284#endif
5285#ifdef AF_SYSTEM
5286 if (memcmp(str, "AF_SYSTEM", 9) == 0) { *valp = AF_SYSTEM; return 0; }
5287#endif
5288#ifdef PF_SYSTEM
5289 if (memcmp(str, "PF_SYSTEM", 9) == 0) { *valp = PF_SYSTEM; return 0; }
5290#endif
5291#ifdef AF_PACKET
5292 if (memcmp(str, "AF_PACKET", 9) == 0) { *valp = AF_PACKET; return 0; }
5293#endif
5294#ifdef PF_PACKET
5295 if (memcmp(str, "PF_PACKET", 9) == 0) { *valp = PF_PACKET; return 0; }
5296#endif
5297#ifdef AF_APPLETALK
5298 if (memcmp(str, "APPLETALK", 9) == 0) { *valp = AF_APPLETALK; return 0; }
5299#endif
5300#ifdef AF_BLUETOOTH
5301 if (memcmp(str, "BLUETOOTH", 9) == 0) { *valp = AF_BLUETOOTH; return 0; }
5302#endif
5303 return -1;
5304
5305 case 10:
5306#ifdef AF_IMPLINK
5307 if (memcmp(str, "AF_IMPLINK", 10) == 0) { *valp = AF_IMPLINK; return 0; }
5308#endif
5309#ifdef PF_IMPLINK
5310 if (memcmp(str, "PF_IMPLINK", 10) == 0) { *valp = PF_IMPLINK; return 0; }
5311#endif
5312#ifdef AF_DATAKIT
5313 if (memcmp(str, "AF_DATAKIT", 10) == 0) { *valp = AF_DATAKIT; return 0; }
5314#endif
5315#ifdef PF_DATAKIT
5316 if (memcmp(str, "PF_DATAKIT", 10) == 0) { *valp = PF_DATAKIT; return 0; }
5317#endif
5318#ifdef AF_NETBIOS
5319 if (memcmp(str, "AF_NETBIOS", 10) == 0) { *valp = AF_NETBIOS; return 0; }
5320#endif
5321#ifdef PF_NETBIOS
5322 if (memcmp(str, "PF_NETBIOS", 10) == 0) { *valp = PF_NETBIOS; return 0; }
5323#endif
5324#ifdef AF_NETLINK
5325 if (memcmp(str, "AF_NETLINK", 10) == 0) { *valp = AF_NETLINK; return 0; }
5326#endif
5327#ifdef PF_NETLINK
5328 if (memcmp(str, "PF_NETLINK", 10) == 0) { *valp = PF_NETLINK; return 0; }
5329#endif
5330 return -1;
5331
5332 case 11:
5333#ifdef AF_NETGRAPH
5334 if (memcmp(str, "AF_NETGRAPH", 11) == 0) { *valp = AF_NETGRAPH; return 0; }
5335#endif
5336#ifdef PF_NETGRAPH
5337 if (memcmp(str, "PF_NETGRAPH", 11) == 0) { *valp = PF_NETGRAPH; return 0; }
5338#endif
5339 return -1;
5340
5341 case 12:
5342#ifdef AF_APPLETALK
5343 if (memcmp(str, "AF_APPLETALK", 12) == 0) { *valp = AF_APPLETALK; return 0; }
5344#endif
5345#ifdef PF_APPLETALK
5346 if (memcmp(str, "PF_APPLETALK", 12) == 0) { *valp = PF_APPLETALK; return 0; }
5347#endif
5348#ifdef AF_BLUETOOTH
5349 if (memcmp(str, "AF_BLUETOOTH", 12) == 0) { *valp = AF_BLUETOOTH; return 0; }
5350#endif
5351#ifdef PF_BLUETOOTH
5352 if (memcmp(str, "PF_BLUETOOTH", 12) == 0) { *valp = PF_BLUETOOTH; return 0; }
5353#endif
5354 return -1;
5355
5356 default:
5357 if (!str || !valp) {/* wrong argument */}
5358 return -1;
5359 }
5360}
5361
5362
5363int
5364rsock_socktype_to_int(const char *str, long len, int *valp)
5365{
5366 switch (len) {
5367 case 3:
5368#ifdef SOCK_RAW
5369 if (memcmp(str, "RAW", 3) == 0) { *valp = SOCK_RAW; return 0; }
5370#endif
5371#ifdef SOCK_RDM
5372 if (memcmp(str, "RDM", 3) == 0) { *valp = SOCK_RDM; return 0; }
5373#endif
5374 return -1;
5375
5376 case 5:
5377#ifdef SOCK_DGRAM
5378 if (memcmp(str, "DGRAM", 5) == 0) { *valp = SOCK_DGRAM; return 0; }
5379#endif
5380 return -1;
5381
5382 case 6:
5383#ifdef SOCK_STREAM
5384 if (memcmp(str, "STREAM", 6) == 0) { *valp = SOCK_STREAM; return 0; }
5385#endif
5386#ifdef SOCK_PACKET
5387 if (memcmp(str, "PACKET", 6) == 0) { *valp = SOCK_PACKET; return 0; }
5388#endif
5389 return -1;
5390
5391 case 7:
5392#ifdef SOCK_CLOEXEC
5393 if (memcmp(str, "CLOEXEC", 7) == 0) { *valp = SOCK_CLOEXEC; return 0; }
5394#endif
5395 return -1;
5396
5397 case 8:
5398#ifdef SOCK_RAW
5399 if (memcmp(str, "SOCK_RAW", 8) == 0) { *valp = SOCK_RAW; return 0; }
5400#endif
5401#ifdef SOCK_RDM
5402 if (memcmp(str, "SOCK_RDM", 8) == 0) { *valp = SOCK_RDM; return 0; }
5403#endif
5404#ifdef SOCK_NONBLOCK
5405 if (memcmp(str, "NONBLOCK", 8) == 0) { *valp = SOCK_NONBLOCK; return 0; }
5406#endif
5407 return -1;
5408
5409 case 9:
5410#ifdef SOCK_SEQPACKET
5411 if (memcmp(str, "SEQPACKET", 9) == 0) { *valp = SOCK_SEQPACKET; return 0; }
5412#endif
5413 return -1;
5414
5415 case 10:
5416#ifdef SOCK_DGRAM
5417 if (memcmp(str, "SOCK_DGRAM", 10) == 0) { *valp = SOCK_DGRAM; return 0; }
5418#endif
5419 return -1;
5420
5421 case 11:
5422#ifdef SOCK_STREAM
5423 if (memcmp(str, "SOCK_STREAM", 11) == 0) { *valp = SOCK_STREAM; return 0; }
5424#endif
5425#ifdef SOCK_PACKET
5426 if (memcmp(str, "SOCK_PACKET", 11) == 0) { *valp = SOCK_PACKET; return 0; }
5427#endif
5428 return -1;
5429
5430 case 12:
5431#ifdef SOCK_CLOEXEC
5432 if (memcmp(str, "SOCK_CLOEXEC", 12) == 0) { *valp = SOCK_CLOEXEC; return 0; }
5433#endif
5434 return -1;
5435
5436 case 13:
5437#ifdef SOCK_NONBLOCK
5438 if (memcmp(str, "SOCK_NONBLOCK", 13) == 0) { *valp = SOCK_NONBLOCK; return 0; }
5439#endif
5440 return -1;
5441
5442 case 14:
5443#ifdef SOCK_SEQPACKET
5444 if (memcmp(str, "SOCK_SEQPACKET", 14) == 0) { *valp = SOCK_SEQPACKET; return 0; }
5445#endif
5446 return -1;
5447
5448 default:
5449 if (!str || !valp) {/* wrong argument */}
5450 return -1;
5451 }
5452}
5453
5454
5455int
5456rsock_ipproto_to_int(const char *str, long len, int *valp)
5457{
5458 switch (len) {
5459 case 2:
5460#ifdef IPPROTO_IP
5461 if (memcmp(str, "IP", 2) == 0) { *valp = IPPROTO_IP; return 0; }
5462#endif
5463#ifdef IPPROTO_ND
5464 if (memcmp(str, "ND", 2) == 0) { *valp = IPPROTO_ND; return 0; }
5465#endif
5466#ifdef IPPROTO_TP
5467 if (memcmp(str, "TP", 2) == 0) { *valp = IPPROTO_TP; return 0; }
5468#endif
5469#ifdef IPPROTO_AH
5470 if (memcmp(str, "AH", 2) == 0) { *valp = IPPROTO_AH; return 0; }
5471#endif
5472 return -1;
5473
5474 case 3:
5475#ifdef IPPROTO_GGP
5476 if (memcmp(str, "GGP", 3) == 0) { *valp = IPPROTO_GGP; return 0; }
5477#endif
5478#ifdef IPPROTO_TCP
5479 if (memcmp(str, "TCP", 3) == 0) { *valp = IPPROTO_TCP; return 0; }
5480#endif
5481#ifdef IPPROTO_EGP
5482 if (memcmp(str, "EGP", 3) == 0) { *valp = IPPROTO_EGP; return 0; }
5483#endif
5484#ifdef IPPROTO_PUP
5485 if (memcmp(str, "PUP", 3) == 0) { *valp = IPPROTO_PUP; return 0; }
5486#endif
5487#ifdef IPPROTO_UDP
5488 if (memcmp(str, "UDP", 3) == 0) { *valp = IPPROTO_UDP; return 0; }
5489#endif
5490#ifdef IPPROTO_IDP
5491 if (memcmp(str, "IDP", 3) == 0) { *valp = IPPROTO_IDP; return 0; }
5492#endif
5493#ifdef IPPROTO_XTP
5494 if (memcmp(str, "XTP", 3) == 0) { *valp = IPPROTO_XTP; return 0; }
5495#endif
5496#ifdef IPPROTO_EON
5497 if (memcmp(str, "EON", 3) == 0) { *valp = IPPROTO_EON; return 0; }
5498#endif
5499#ifdef IPPROTO_BIP
5500 if (memcmp(str, "BIP", 3) == 0) { *valp = IPPROTO_BIP; return 0; }
5501#endif
5502#ifdef IPPROTO_ESP
5503 if (memcmp(str, "ESP", 3) == 0) { *valp = IPPROTO_ESP; return 0; }
5504#endif
5505#ifdef IPPROTO_RAW
5506 if (memcmp(str, "RAW", 3) == 0) { *valp = IPPROTO_RAW; return 0; }
5507#endif
5508#ifdef IPPROTO_MAX
5509 if (memcmp(str, "MAX", 3) == 0) { *valp = IPPROTO_MAX; return 0; }
5510#endif
5511 return -1;
5512
5513 case 4:
5514#ifdef IPPROTO_ICMP
5515 if (memcmp(str, "ICMP", 4) == 0) { *valp = IPPROTO_ICMP; return 0; }
5516#endif
5517#ifdef IPPROTO_IGMP
5518 if (memcmp(str, "IGMP", 4) == 0) { *valp = IPPROTO_IGMP; return 0; }
5519#endif
5520#ifdef IPPROTO_IPV6
5521 if (memcmp(str, "IPV6", 4) == 0) { *valp = IPPROTO_IPV6; return 0; }
5522#endif
5523#ifdef IPPROTO_NONE
5524 if (memcmp(str, "NONE", 4) == 0) { *valp = IPPROTO_NONE; return 0; }
5525#endif
5526 return -1;
5527
5528 case 5:
5529#ifdef IPPROTO_HELLO
5530 if (memcmp(str, "HELLO", 5) == 0) { *valp = IPPROTO_HELLO; return 0; }
5531#endif
5532 return -1;
5533
5534 case 6:
5535#ifdef IPPROTO_ICMPV6
5536 if (memcmp(str, "ICMPV6", 6) == 0) { *valp = IPPROTO_ICMPV6; return 0; }
5537#endif
5538 return -1;
5539
5540 case 7:
5541#ifdef IPPROTO_DSTOPTS
5542 if (memcmp(str, "DSTOPTS", 7) == 0) { *valp = IPPROTO_DSTOPTS; return 0; }
5543#endif
5544#ifdef IPPROTO_HOPOPTS
5545 if (memcmp(str, "HOPOPTS", 7) == 0) { *valp = IPPROTO_HOPOPTS; return 0; }
5546#endif
5547#ifdef IPPROTO_ROUTING
5548 if (memcmp(str, "ROUTING", 7) == 0) { *valp = IPPROTO_ROUTING; return 0; }
5549#endif
5550 return -1;
5551
5552 case 8:
5553#ifdef IPPROTO_FRAGMENT
5554 if (memcmp(str, "FRAGMENT", 8) == 0) { *valp = IPPROTO_FRAGMENT; return 0; }
5555#endif
5556 return -1;
5557
5558 case 10:
5559#ifdef IPPROTO_IP
5560 if (memcmp(str, "IPPROTO_IP", 10) == 0) { *valp = IPPROTO_IP; return 0; }
5561#endif
5562#ifdef IPPROTO_ND
5563 if (memcmp(str, "IPPROTO_ND", 10) == 0) { *valp = IPPROTO_ND; return 0; }
5564#endif
5565#ifdef IPPROTO_TP
5566 if (memcmp(str, "IPPROTO_TP", 10) == 0) { *valp = IPPROTO_TP; return 0; }
5567#endif
5568#ifdef IPPROTO_AH
5569 if (memcmp(str, "IPPROTO_AH", 10) == 0) { *valp = IPPROTO_AH; return 0; }
5570#endif
5571 return -1;
5572
5573 case 11:
5574#ifdef IPPROTO_GGP
5575 if (memcmp(str, "IPPROTO_GGP", 11) == 0) { *valp = IPPROTO_GGP; return 0; }
5576#endif
5577#ifdef IPPROTO_TCP
5578 if (memcmp(str, "IPPROTO_TCP", 11) == 0) { *valp = IPPROTO_TCP; return 0; }
5579#endif
5580#ifdef IPPROTO_EGP
5581 if (memcmp(str, "IPPROTO_EGP", 11) == 0) { *valp = IPPROTO_EGP; return 0; }
5582#endif
5583#ifdef IPPROTO_PUP
5584 if (memcmp(str, "IPPROTO_PUP", 11) == 0) { *valp = IPPROTO_PUP; return 0; }
5585#endif
5586#ifdef IPPROTO_UDP
5587 if (memcmp(str, "IPPROTO_UDP", 11) == 0) { *valp = IPPROTO_UDP; return 0; }
5588#endif
5589#ifdef IPPROTO_IDP
5590 if (memcmp(str, "IPPROTO_IDP", 11) == 0) { *valp = IPPROTO_IDP; return 0; }
5591#endif
5592#ifdef IPPROTO_XTP
5593 if (memcmp(str, "IPPROTO_XTP", 11) == 0) { *valp = IPPROTO_XTP; return 0; }
5594#endif
5595#ifdef IPPROTO_EON
5596 if (memcmp(str, "IPPROTO_EON", 11) == 0) { *valp = IPPROTO_EON; return 0; }
5597#endif
5598#ifdef IPPROTO_BIP
5599 if (memcmp(str, "IPPROTO_BIP", 11) == 0) { *valp = IPPROTO_BIP; return 0; }
5600#endif
5601#ifdef IPPROTO_ESP
5602 if (memcmp(str, "IPPROTO_ESP", 11) == 0) { *valp = IPPROTO_ESP; return 0; }
5603#endif
5604#ifdef IPPROTO_RAW
5605 if (memcmp(str, "IPPROTO_RAW", 11) == 0) { *valp = IPPROTO_RAW; return 0; }
5606#endif
5607#ifdef IPPROTO_MAX
5608 if (memcmp(str, "IPPROTO_MAX", 11) == 0) { *valp = IPPROTO_MAX; return 0; }
5609#endif
5610 return -1;
5611
5612 case 12:
5613#ifdef IPPROTO_ICMP
5614 if (memcmp(str, "IPPROTO_ICMP", 12) == 0) { *valp = IPPROTO_ICMP; return 0; }
5615#endif
5616#ifdef IPPROTO_IGMP
5617 if (memcmp(str, "IPPROTO_IGMP", 12) == 0) { *valp = IPPROTO_IGMP; return 0; }
5618#endif
5619#ifdef IPPROTO_IPV6
5620 if (memcmp(str, "IPPROTO_IPV6", 12) == 0) { *valp = IPPROTO_IPV6; return 0; }
5621#endif
5622#ifdef IPPROTO_NONE
5623 if (memcmp(str, "IPPROTO_NONE", 12) == 0) { *valp = IPPROTO_NONE; return 0; }
5624#endif
5625 return -1;
5626
5627 case 13:
5628#ifdef IPPROTO_HELLO
5629 if (memcmp(str, "IPPROTO_HELLO", 13) == 0) { *valp = IPPROTO_HELLO; return 0; }
5630#endif
5631 return -1;
5632
5633 case 14:
5634#ifdef IPPROTO_ICMPV6
5635 if (memcmp(str, "IPPROTO_ICMPV6", 14) == 0) { *valp = IPPROTO_ICMPV6; return 0; }
5636#endif
5637 return -1;
5638
5639 case 15:
5640#ifdef IPPROTO_DSTOPTS
5641 if (memcmp(str, "IPPROTO_DSTOPTS", 15) == 0) { *valp = IPPROTO_DSTOPTS; return 0; }
5642#endif
5643#ifdef IPPROTO_HOPOPTS
5644 if (memcmp(str, "IPPROTO_HOPOPTS", 15) == 0) { *valp = IPPROTO_HOPOPTS; return 0; }
5645#endif
5646#ifdef IPPROTO_ROUTING
5647 if (memcmp(str, "IPPROTO_ROUTING", 15) == 0) { *valp = IPPROTO_ROUTING; return 0; }
5648#endif
5649 return -1;
5650
5651 case 16:
5652#ifdef IPPROTO_FRAGMENT
5653 if (memcmp(str, "IPPROTO_FRAGMENT", 16) == 0) { *valp = IPPROTO_FRAGMENT; return 0; }
5654#endif
5655 return -1;
5656
5657 default:
5658 if (!str || !valp) {/* wrong argument */}
5659 return -1;
5660 }
5661}
5662
5663
5664int
5665rsock_unknown_level_to_int(const char *str, long len, int *valp)
5666{
5667 switch (len) {
5668 case 6:
5669#ifdef SOL_SOCKET
5670 if (memcmp(str, "SOCKET", 6) == 0) { *valp = SOL_SOCKET; return 0; }
5671#endif
5672 return -1;
5673
5674 case 10:
5675#ifdef SOL_SOCKET
5676 if (memcmp(str, "SOL_SOCKET", 10) == 0) { *valp = SOL_SOCKET; return 0; }
5677#endif
5678 return -1;
5679
5680 default:
5681 if (!str || !valp) {/* wrong argument */}
5682 return -1;
5683 }
5684}
5685
5686
5687int
5688rsock_ip_level_to_int(const char *str, long len, int *valp)
5689{
5690 switch (len) {
5691 case 2:
5692#ifdef IPPROTO_IP
5693 if (memcmp(str, "IP", 2) == 0) { *valp = IPPROTO_IP; return 0; }
5694#endif
5695#ifdef IPPROTO_ND
5696 if (memcmp(str, "ND", 2) == 0) { *valp = IPPROTO_ND; return 0; }
5697#endif
5698#ifdef IPPROTO_TP
5699 if (memcmp(str, "TP", 2) == 0) { *valp = IPPROTO_TP; return 0; }
5700#endif
5701#ifdef IPPROTO_AH
5702 if (memcmp(str, "AH", 2) == 0) { *valp = IPPROTO_AH; return 0; }
5703#endif
5704 return -1;
5705
5706 case 3:
5707#ifdef IPPROTO_GGP
5708 if (memcmp(str, "GGP", 3) == 0) { *valp = IPPROTO_GGP; return 0; }
5709#endif
5710#ifdef IPPROTO_TCP
5711 if (memcmp(str, "TCP", 3) == 0) { *valp = IPPROTO_TCP; return 0; }
5712#endif
5713#ifdef IPPROTO_EGP
5714 if (memcmp(str, "EGP", 3) == 0) { *valp = IPPROTO_EGP; return 0; }
5715#endif
5716#ifdef IPPROTO_PUP
5717 if (memcmp(str, "PUP", 3) == 0) { *valp = IPPROTO_PUP; return 0; }
5718#endif
5719#ifdef IPPROTO_UDP
5720 if (memcmp(str, "UDP", 3) == 0) { *valp = IPPROTO_UDP; return 0; }
5721#endif
5722#ifdef IPPROTO_IDP
5723 if (memcmp(str, "IDP", 3) == 0) { *valp = IPPROTO_IDP; return 0; }
5724#endif
5725#ifdef IPPROTO_XTP
5726 if (memcmp(str, "XTP", 3) == 0) { *valp = IPPROTO_XTP; return 0; }
5727#endif
5728#ifdef IPPROTO_EON
5729 if (memcmp(str, "EON", 3) == 0) { *valp = IPPROTO_EON; return 0; }
5730#endif
5731#ifdef IPPROTO_BIP
5732 if (memcmp(str, "BIP", 3) == 0) { *valp = IPPROTO_BIP; return 0; }
5733#endif
5734#ifdef IPPROTO_ESP
5735 if (memcmp(str, "ESP", 3) == 0) { *valp = IPPROTO_ESP; return 0; }
5736#endif
5737#ifdef IPPROTO_RAW
5738 if (memcmp(str, "RAW", 3) == 0) { *valp = IPPROTO_RAW; return 0; }
5739#endif
5740#ifdef IPPROTO_MAX
5741 if (memcmp(str, "MAX", 3) == 0) { *valp = IPPROTO_MAX; return 0; }
5742#endif
5743 return -1;
5744
5745 case 4:
5746#ifdef IPPROTO_ICMP
5747 if (memcmp(str, "ICMP", 4) == 0) { *valp = IPPROTO_ICMP; return 0; }
5748#endif
5749#ifdef IPPROTO_IGMP
5750 if (memcmp(str, "IGMP", 4) == 0) { *valp = IPPROTO_IGMP; return 0; }
5751#endif
5752#ifdef IPPROTO_IPV6
5753 if (memcmp(str, "IPV6", 4) == 0) { *valp = IPPROTO_IPV6; return 0; }
5754#endif
5755#ifdef IPPROTO_NONE
5756 if (memcmp(str, "NONE", 4) == 0) { *valp = IPPROTO_NONE; return 0; }
5757#endif
5758 return -1;
5759
5760 case 5:
5761#ifdef IPPROTO_HELLO
5762 if (memcmp(str, "HELLO", 5) == 0) { *valp = IPPROTO_HELLO; return 0; }
5763#endif
5764 return -1;
5765
5766 case 6:
5767#ifdef SOL_SOCKET
5768 if (memcmp(str, "SOCKET", 6) == 0) { *valp = SOL_SOCKET; return 0; }
5769#endif
5770#ifdef IPPROTO_ICMPV6
5771 if (memcmp(str, "ICMPV6", 6) == 0) { *valp = IPPROTO_ICMPV6; return 0; }
5772#endif
5773 return -1;
5774
5775 case 7:
5776#ifdef IPPROTO_DSTOPTS
5777 if (memcmp(str, "DSTOPTS", 7) == 0) { *valp = IPPROTO_DSTOPTS; return 0; }
5778#endif
5779#ifdef IPPROTO_HOPOPTS
5780 if (memcmp(str, "HOPOPTS", 7) == 0) { *valp = IPPROTO_HOPOPTS; return 0; }
5781#endif
5782#ifdef IPPROTO_ROUTING
5783 if (memcmp(str, "ROUTING", 7) == 0) { *valp = IPPROTO_ROUTING; return 0; }
5784#endif
5785 return -1;
5786
5787 case 8:
5788#ifdef IPPROTO_FRAGMENT
5789 if (memcmp(str, "FRAGMENT", 8) == 0) { *valp = IPPROTO_FRAGMENT; return 0; }
5790#endif
5791 return -1;
5792
5793 case 10:
5794#ifdef SOL_SOCKET
5795 if (memcmp(str, "SOL_SOCKET", 10) == 0) { *valp = SOL_SOCKET; return 0; }
5796#endif
5797#ifdef IPPROTO_IP
5798 if (memcmp(str, "IPPROTO_IP", 10) == 0) { *valp = IPPROTO_IP; return 0; }
5799#endif
5800#ifdef IPPROTO_ND
5801 if (memcmp(str, "IPPROTO_ND", 10) == 0) { *valp = IPPROTO_ND; return 0; }
5802#endif
5803#ifdef IPPROTO_TP
5804 if (memcmp(str, "IPPROTO_TP", 10) == 0) { *valp = IPPROTO_TP; return 0; }
5805#endif
5806#ifdef IPPROTO_AH
5807 if (memcmp(str, "IPPROTO_AH", 10) == 0) { *valp = IPPROTO_AH; return 0; }
5808#endif
5809 return -1;
5810
5811 case 11:
5812#ifdef IPPROTO_GGP
5813 if (memcmp(str, "IPPROTO_GGP", 11) == 0) { *valp = IPPROTO_GGP; return 0; }
5814#endif
5815#ifdef IPPROTO_TCP
5816 if (memcmp(str, "IPPROTO_TCP", 11) == 0) { *valp = IPPROTO_TCP; return 0; }
5817#endif
5818#ifdef IPPROTO_EGP
5819 if (memcmp(str, "IPPROTO_EGP", 11) == 0) { *valp = IPPROTO_EGP; return 0; }
5820#endif
5821#ifdef IPPROTO_PUP
5822 if (memcmp(str, "IPPROTO_PUP", 11) == 0) { *valp = IPPROTO_PUP; return 0; }
5823#endif
5824#ifdef IPPROTO_UDP
5825 if (memcmp(str, "IPPROTO_UDP", 11) == 0) { *valp = IPPROTO_UDP; return 0; }
5826#endif
5827#ifdef IPPROTO_IDP
5828 if (memcmp(str, "IPPROTO_IDP", 11) == 0) { *valp = IPPROTO_IDP; return 0; }
5829#endif
5830#ifdef IPPROTO_XTP
5831 if (memcmp(str, "IPPROTO_XTP", 11) == 0) { *valp = IPPROTO_XTP; return 0; }
5832#endif
5833#ifdef IPPROTO_EON
5834 if (memcmp(str, "IPPROTO_EON", 11) == 0) { *valp = IPPROTO_EON; return 0; }
5835#endif
5836#ifdef IPPROTO_BIP
5837 if (memcmp(str, "IPPROTO_BIP", 11) == 0) { *valp = IPPROTO_BIP; return 0; }
5838#endif
5839#ifdef IPPROTO_ESP
5840 if (memcmp(str, "IPPROTO_ESP", 11) == 0) { *valp = IPPROTO_ESP; return 0; }
5841#endif
5842#ifdef IPPROTO_RAW
5843 if (memcmp(str, "IPPROTO_RAW", 11) == 0) { *valp = IPPROTO_RAW; return 0; }
5844#endif
5845#ifdef IPPROTO_MAX
5846 if (memcmp(str, "IPPROTO_MAX", 11) == 0) { *valp = IPPROTO_MAX; return 0; }
5847#endif
5848 return -1;
5849
5850 case 12:
5851#ifdef IPPROTO_ICMP
5852 if (memcmp(str, "IPPROTO_ICMP", 12) == 0) { *valp = IPPROTO_ICMP; return 0; }
5853#endif
5854#ifdef IPPROTO_IGMP
5855 if (memcmp(str, "IPPROTO_IGMP", 12) == 0) { *valp = IPPROTO_IGMP; return 0; }
5856#endif
5857#ifdef IPPROTO_IPV6
5858 if (memcmp(str, "IPPROTO_IPV6", 12) == 0) { *valp = IPPROTO_IPV6; return 0; }
5859#endif
5860#ifdef IPPROTO_NONE
5861 if (memcmp(str, "IPPROTO_NONE", 12) == 0) { *valp = IPPROTO_NONE; return 0; }
5862#endif
5863 return -1;
5864
5865 case 13:
5866#ifdef IPPROTO_HELLO
5867 if (memcmp(str, "IPPROTO_HELLO", 13) == 0) { *valp = IPPROTO_HELLO; return 0; }
5868#endif
5869 return -1;
5870
5871 case 14:
5872#ifdef IPPROTO_ICMPV6
5873 if (memcmp(str, "IPPROTO_ICMPV6", 14) == 0) { *valp = IPPROTO_ICMPV6; return 0; }
5874#endif
5875 return -1;
5876
5877 case 15:
5878#ifdef IPPROTO_DSTOPTS
5879 if (memcmp(str, "IPPROTO_DSTOPTS", 15) == 0) { *valp = IPPROTO_DSTOPTS; return 0; }
5880#endif
5881#ifdef IPPROTO_HOPOPTS
5882 if (memcmp(str, "IPPROTO_HOPOPTS", 15) == 0) { *valp = IPPROTO_HOPOPTS; return 0; }
5883#endif
5884#ifdef IPPROTO_ROUTING
5885 if (memcmp(str, "IPPROTO_ROUTING", 15) == 0) { *valp = IPPROTO_ROUTING; return 0; }
5886#endif
5887 return -1;
5888
5889 case 16:
5890#ifdef IPPROTO_FRAGMENT
5891 if (memcmp(str, "IPPROTO_FRAGMENT", 16) == 0) { *valp = IPPROTO_FRAGMENT; return 0; }
5892#endif
5893 return -1;
5894
5895 default:
5896 if (!str || !valp) {/* wrong argument */}
5897 return -1;
5898 }
5899}
5900
5901
5902int
5903rsock_so_optname_to_int(const char *str, long len, int *valp)
5904{
5905 switch (len) {
5906 case 3:
5907#ifdef SO_NKE
5908 if (memcmp(str, "NKE", 3) == 0) { *valp = SO_NKE; return 0; }
5909#endif
5910 return -1;
5911
5912 case 4:
5913#ifdef SO_TYPE
5914 if (memcmp(str, "TYPE", 4) == 0) { *valp = SO_TYPE; return 0; }
5915#endif
5916#ifdef SO_MARK
5917 if (memcmp(str, "MARK", 4) == 0) { *valp = SO_MARK; return 0; }
5918#endif
5919 return -1;
5920
5921 case 5:
5922#ifdef SO_DEBUG
5923 if (memcmp(str, "DEBUG", 5) == 0) { *valp = SO_DEBUG; return 0; }
5924#endif
5925#ifdef SO_ERROR
5926 if (memcmp(str, "ERROR", 5) == 0) { *valp = SO_ERROR; return 0; }
5927#endif
5928#ifdef SO_NREAD
5929 if (memcmp(str, "NREAD", 5) == 0) { *valp = SO_NREAD; return 0; }
5930#endif
5931#ifdef SO_NOFCS
5932 if (memcmp(str, "NOFCS", 5) == 0) { *valp = SO_NOFCS; return 0; }
5933#endif
5934 return -1;
5935
5936 case 6:
5937#ifdef SO_NKE
5938 if (memcmp(str, "SO_NKE", 6) == 0) { *valp = SO_NKE; return 0; }
5939#endif
5940#ifdef SO_SNDBUF
5941 if (memcmp(str, "SNDBUF", 6) == 0) { *valp = SO_SNDBUF; return 0; }
5942#endif
5943#ifdef SO_RCVBUF
5944 if (memcmp(str, "RCVBUF", 6) == 0) { *valp = SO_RCVBUF; return 0; }
5945#endif
5946#ifdef SO_LINGER
5947 if (memcmp(str, "LINGER", 6) == 0) { *valp = SO_LINGER; return 0; }
5948#endif
5949#ifdef SO_DOMAIN
5950 if (memcmp(str, "DOMAIN", 6) == 0) { *valp = SO_DOMAIN; return 0; }
5951#endif
5952 return -1;
5953
5954 case 7:
5955#ifdef SO_TYPE
5956 if (memcmp(str, "SO_TYPE", 7) == 0) { *valp = SO_TYPE; return 0; }
5957#endif
5958#ifdef SO_MARK
5959 if (memcmp(str, "SO_MARK", 7) == 0) { *valp = SO_MARK; return 0; }
5960#endif
5961#ifdef SO_BINTIME
5962 if (memcmp(str, "BINTIME", 7) == 0) { *valp = SO_BINTIME; return 0; }
5963#endif
5964#ifdef SO_PEERSEC
5965 if (memcmp(str, "PEERSEC", 7) == 0) { *valp = SO_PEERSEC; return 0; }
5966#endif
5967#ifdef SO_PASSSEC
5968 if (memcmp(str, "PASSSEC", 7) == 0) { *valp = SO_PASSSEC; return 0; }
5969#endif
5970 return -1;
5971
5972 case 8:
5973#ifdef SO_DEBUG
5974 if (memcmp(str, "SO_DEBUG", 8) == 0) { *valp = SO_DEBUG; return 0; }
5975#endif
5976#ifdef SO_ERROR
5977 if (memcmp(str, "SO_ERROR", 8) == 0) { *valp = SO_ERROR; return 0; }
5978#endif
5979#ifdef SO_NREAD
5980 if (memcmp(str, "SO_NREAD", 8) == 0) { *valp = SO_NREAD; return 0; }
5981#endif
5982#ifdef SO_NOFCS
5983 if (memcmp(str, "SO_NOFCS", 8) == 0) { *valp = SO_NOFCS; return 0; }
5984#endif
5985#ifdef SO_NO_CHECK
5986 if (memcmp(str, "NO_CHECK", 8) == 0) { *valp = SO_NO_CHECK; return 0; }
5987#endif
5988#ifdef SO_PRIORITY
5989 if (memcmp(str, "PRIORITY", 8) == 0) { *valp = SO_PRIORITY; return 0; }
5990#endif
5991#ifdef SO_PASSCRED
5992 if (memcmp(str, "PASSCRED", 8) == 0) { *valp = SO_PASSCRED; return 0; }
5993#endif
5994#ifdef SO_PEERCRED
5995 if (memcmp(str, "PEERCRED", 8) == 0) { *valp = SO_PEERCRED; return 0; }
5996#endif
5997#ifdef SO_RCVLOWAT
5998 if (memcmp(str, "RCVLOWAT", 8) == 0) { *valp = SO_RCVLOWAT; return 0; }
5999#endif
6000#ifdef SO_SNDLOWAT
6001 if (memcmp(str, "SNDLOWAT", 8) == 0) { *valp = SO_SNDLOWAT; return 0; }
6002#endif
6003#ifdef SO_RCVTIMEO
6004 if (memcmp(str, "RCVTIMEO", 8) == 0) { *valp = SO_RCVTIMEO; return 0; }
6005#endif
6006#ifdef SO_SNDTIMEO
6007 if (memcmp(str, "SNDTIMEO", 8) == 0) { *valp = SO_SNDTIMEO; return 0; }
6008#endif
6009#ifdef SO_WANTMORE
6010 if (memcmp(str, "WANTMORE", 8) == 0) { *valp = SO_WANTMORE; return 0; }
6011#endif
6012#ifdef SO_PEERNAME
6013 if (memcmp(str, "PEERNAME", 8) == 0) { *valp = SO_PEERNAME; return 0; }
6014#endif
6015#ifdef SO_ALLZONES
6016 if (memcmp(str, "ALLZONES", 8) == 0) { *valp = SO_ALLZONES; return 0; }
6017#endif
6018#ifdef SO_PROTOCOL
6019 if (memcmp(str, "PROTOCOL", 8) == 0) { *valp = SO_PROTOCOL; return 0; }
6020#endif
6021#ifdef SO_RXQ_OVFL
6022 if (memcmp(str, "RXQ_OVFL", 8) == 0) { *valp = SO_RXQ_OVFL; return 0; }
6023#endif
6024#ifdef SO_PEEK_OFF
6025 if (memcmp(str, "PEEK_OFF", 8) == 0) { *valp = SO_PEEK_OFF; return 0; }
6026#endif
6027 return -1;
6028
6029 case 9:
6030#ifdef SO_SNDBUF
6031 if (memcmp(str, "SO_SNDBUF", 9) == 0) { *valp = SO_SNDBUF; return 0; }
6032#endif
6033#ifdef SO_RCVBUF
6034 if (memcmp(str, "SO_RCVBUF", 9) == 0) { *valp = SO_RCVBUF; return 0; }
6035#endif
6036#ifdef SO_LINGER
6037 if (memcmp(str, "SO_LINGER", 9) == 0) { *valp = SO_LINGER; return 0; }
6038#endif
6039#ifdef SO_DOMAIN
6040 if (memcmp(str, "SO_DOMAIN", 9) == 0) { *valp = SO_DOMAIN; return 0; }
6041#endif
6042#ifdef SO_REUSEADDR
6043 if (memcmp(str, "REUSEADDR", 9) == 0) { *valp = SO_REUSEADDR; return 0; }
6044#endif
6045#ifdef SO_REUSEPORT
6046 if (memcmp(str, "REUSEPORT", 9) == 0) { *valp = SO_REUSEPORT; return 0; }
6047#endif
6048#ifdef SO_DONTROUTE
6049 if (memcmp(str, "DONTROUTE", 9) == 0) { *valp = SO_DONTROUTE; return 0; }
6050#endif
6051#ifdef SO_BROADCAST
6052 if (memcmp(str, "BROADCAST", 9) == 0) { *valp = SO_BROADCAST; return 0; }
6053#endif
6054#ifdef SO_KEEPALIVE
6055 if (memcmp(str, "KEEPALIVE", 9) == 0) { *valp = SO_KEEPALIVE; return 0; }
6056#endif
6057#ifdef SO_OOBINLINE
6058 if (memcmp(str, "OOBINLINE", 9) == 0) { *valp = SO_OOBINLINE; return 0; }
6059#endif
6060#ifdef SO_DONTTRUNC
6061 if (memcmp(str, "DONTTRUNC", 9) == 0) { *valp = SO_DONTTRUNC; return 0; }
6062#endif
6063#ifdef SO_NOSIGPIPE
6064 if (memcmp(str, "NOSIGPIPE", 9) == 0) { *valp = SO_NOSIGPIPE; return 0; }
6065#endif
6066#ifdef SO_TIMESTAMP
6067 if (memcmp(str, "TIMESTAMP", 9) == 0) { *valp = SO_TIMESTAMP; return 0; }
6068#endif
6069#ifdef SO_RECVUCRED
6070 if (memcmp(str, "RECVUCRED", 9) == 0) { *valp = SO_RECVUCRED; return 0; }
6071#endif
6072#ifdef SO_BUSY_POLL
6073 if (memcmp(str, "BUSY_POLL", 9) == 0) { *valp = SO_BUSY_POLL; return 0; }
6074#endif
6075 return -1;
6076
6077 case 10:
6078#ifdef SO_BINTIME
6079 if (memcmp(str, "SO_BINTIME", 10) == 0) { *valp = SO_BINTIME; return 0; }
6080#endif
6081#ifdef SO_PEERSEC
6082 if (memcmp(str, "SO_PEERSEC", 10) == 0) { *valp = SO_PEERSEC; return 0; }
6083#endif
6084#ifdef SO_PASSSEC
6085 if (memcmp(str, "SO_PASSSEC", 10) == 0) { *valp = SO_PASSSEC; return 0; }
6086#endif
6087#ifdef SO_ACCEPTCONN
6088 if (memcmp(str, "ACCEPTCONN", 10) == 0) { *valp = SO_ACCEPTCONN; return 0; }
6089#endif
6090#ifdef SO_GET_FILTER
6091 if (memcmp(str, "GET_FILTER", 10) == 0) { *valp = SO_GET_FILTER; return 0; }
6092#endif
6093#ifdef SO_MAC_EXEMPT
6094 if (memcmp(str, "MAC_EXEMPT", 10) == 0) { *valp = SO_MAC_EXEMPT; return 0; }
6095#endif
6096 return -1;
6097
6098 case 11:
6099#ifdef SO_NO_CHECK
6100 if (memcmp(str, "SO_NO_CHECK", 11) == 0) { *valp = SO_NO_CHECK; return 0; }
6101#endif
6102#ifdef SO_PRIORITY
6103 if (memcmp(str, "SO_PRIORITY", 11) == 0) { *valp = SO_PRIORITY; return 0; }
6104#endif
6105#ifdef SO_PASSCRED
6106 if (memcmp(str, "SO_PASSCRED", 11) == 0) { *valp = SO_PASSCRED; return 0; }
6107#endif
6108#ifdef SO_PEERCRED
6109 if (memcmp(str, "SO_PEERCRED", 11) == 0) { *valp = SO_PEERCRED; return 0; }
6110#endif
6111#ifdef SO_RCVLOWAT
6112 if (memcmp(str, "SO_RCVLOWAT", 11) == 0) { *valp = SO_RCVLOWAT; return 0; }
6113#endif
6114#ifdef SO_SNDLOWAT
6115 if (memcmp(str, "SO_SNDLOWAT", 11) == 0) { *valp = SO_SNDLOWAT; return 0; }
6116#endif
6117#ifdef SO_RCVTIMEO
6118 if (memcmp(str, "SO_RCVTIMEO", 11) == 0) { *valp = SO_RCVTIMEO; return 0; }
6119#endif
6120#ifdef SO_SNDTIMEO
6121 if (memcmp(str, "SO_SNDTIMEO", 11) == 0) { *valp = SO_SNDTIMEO; return 0; }
6122#endif
6123#ifdef SO_WANTMORE
6124 if (memcmp(str, "SO_WANTMORE", 11) == 0) { *valp = SO_WANTMORE; return 0; }
6125#endif
6126#ifdef SO_PEERNAME
6127 if (memcmp(str, "SO_PEERNAME", 11) == 0) { *valp = SO_PEERNAME; return 0; }
6128#endif
6129#ifdef SO_ALLZONES
6130 if (memcmp(str, "SO_ALLZONES", 11) == 0) { *valp = SO_ALLZONES; return 0; }
6131#endif
6132#ifdef SO_PROTOCOL
6133 if (memcmp(str, "SO_PROTOCOL", 11) == 0) { *valp = SO_PROTOCOL; return 0; }
6134#endif
6135#ifdef SO_RXQ_OVFL
6136 if (memcmp(str, "SO_RXQ_OVFL", 11) == 0) { *valp = SO_RXQ_OVFL; return 0; }
6137#endif
6138#ifdef SO_PEEK_OFF
6139 if (memcmp(str, "SO_PEEK_OFF", 11) == 0) { *valp = SO_PEEK_OFF; return 0; }
6140#endif
6141#ifdef SO_SNDBUFFORCE
6142 if (memcmp(str, "SNDBUFFORCE", 11) == 0) { *valp = SO_SNDBUFFORCE; return 0; }
6143#endif
6144#ifdef SO_RCVBUFFORCE
6145 if (memcmp(str, "RCVBUFFORCE", 11) == 0) { *valp = SO_RCVBUFFORCE; return 0; }
6146#endif
6147#ifdef SO_USELOOPBACK
6148 if (memcmp(str, "USELOOPBACK", 11) == 0) { *valp = SO_USELOOPBACK; return 0; }
6149#endif
6150#ifdef SO_WANTOOBFLAG
6151 if (memcmp(str, "WANTOOBFLAG", 11) == 0) { *valp = SO_WANTOOBFLAG; return 0; }
6152#endif
6153#ifdef SO_TIMESTAMPNS
6154 if (memcmp(str, "TIMESTAMPNS", 11) == 0) { *valp = SO_TIMESTAMPNS; return 0; }
6155#endif
6156#ifdef SO_WIFI_STATUS
6157 if (memcmp(str, "WIFI_STATUS", 11) == 0) { *valp = SO_WIFI_STATUS; return 0; }
6158#endif
6159#ifdef SO_LOCK_FILTER
6160 if (memcmp(str, "LOCK_FILTER", 11) == 0) { *valp = SO_LOCK_FILTER; return 0; }
6161#endif
6162 return -1;
6163
6164 case 12:
6165#ifdef SO_REUSEADDR
6166 if (memcmp(str, "SO_REUSEADDR", 12) == 0) { *valp = SO_REUSEADDR; return 0; }
6167#endif
6168#ifdef SO_REUSEPORT
6169 if (memcmp(str, "SO_REUSEPORT", 12) == 0) { *valp = SO_REUSEPORT; return 0; }
6170#endif
6171#ifdef SO_DONTROUTE
6172 if (memcmp(str, "SO_DONTROUTE", 12) == 0) { *valp = SO_DONTROUTE; return 0; }
6173#endif
6174#ifdef SO_BROADCAST
6175 if (memcmp(str, "SO_BROADCAST", 12) == 0) { *valp = SO_BROADCAST; return 0; }
6176#endif
6177#ifdef SO_KEEPALIVE
6178 if (memcmp(str, "SO_KEEPALIVE", 12) == 0) { *valp = SO_KEEPALIVE; return 0; }
6179#endif
6180#ifdef SO_OOBINLINE
6181 if (memcmp(str, "SO_OOBINLINE", 12) == 0) { *valp = SO_OOBINLINE; return 0; }
6182#endif
6183#ifdef SO_DONTTRUNC
6184 if (memcmp(str, "SO_DONTTRUNC", 12) == 0) { *valp = SO_DONTTRUNC; return 0; }
6185#endif
6186#ifdef SO_NOSIGPIPE
6187 if (memcmp(str, "SO_NOSIGPIPE", 12) == 0) { *valp = SO_NOSIGPIPE; return 0; }
6188#endif
6189#ifdef SO_TIMESTAMP
6190 if (memcmp(str, "SO_TIMESTAMP", 12) == 0) { *valp = SO_TIMESTAMP; return 0; }
6191#endif
6192#ifdef SO_RECVUCRED
6193 if (memcmp(str, "SO_RECVUCRED", 12) == 0) { *valp = SO_RECVUCRED; return 0; }
6194#endif
6195#ifdef SO_BUSY_POLL
6196 if (memcmp(str, "SO_BUSY_POLL", 12) == 0) { *valp = SO_BUSY_POLL; return 0; }
6197#endif
6198#ifdef SO_ACCEPTFILTER
6199 if (memcmp(str, "ACCEPTFILTER", 12) == 0) { *valp = SO_ACCEPTFILTER; return 0; }
6200#endif
6201#ifdef SO_BINDTODEVICE
6202 if (memcmp(str, "BINDTODEVICE", 12) == 0) { *valp = SO_BINDTODEVICE; return 0; }
6203#endif
6204#ifdef SO_TIMESTAMPING
6205 if (memcmp(str, "TIMESTAMPING", 12) == 0) { *valp = SO_TIMESTAMPING; return 0; }
6206#endif
6207 return -1;
6208
6209 case 13:
6210#ifdef SO_ACCEPTCONN
6211 if (memcmp(str, "SO_ACCEPTCONN", 13) == 0) { *valp = SO_ACCEPTCONN; return 0; }
6212#endif
6213#ifdef SO_GET_FILTER
6214 if (memcmp(str, "SO_GET_FILTER", 13) == 0) { *valp = SO_GET_FILTER; return 0; }
6215#endif
6216#ifdef SO_MAC_EXEMPT
6217 if (memcmp(str, "SO_MAC_EXEMPT", 13) == 0) { *valp = SO_MAC_EXEMPT; return 0; }
6218#endif
6219#ifdef SO_ATTACH_FILTER
6220 if (memcmp(str, "ATTACH_FILTER", 13) == 0) { *valp = SO_ATTACH_FILTER; return 0; }
6221#endif
6222#ifdef SO_DETACH_FILTER
6223 if (memcmp(str, "DETACH_FILTER", 13) == 0) { *valp = SO_DETACH_FILTER; return 0; }
6224#endif
6225 return -1;
6226
6227 case 14:
6228#ifdef SO_SNDBUFFORCE
6229 if (memcmp(str, "SO_SNDBUFFORCE", 14) == 0) { *valp = SO_SNDBUFFORCE; return 0; }
6230#endif
6231#ifdef SO_RCVBUFFORCE
6232 if (memcmp(str, "SO_RCVBUFFORCE", 14) == 0) { *valp = SO_RCVBUFFORCE; return 0; }
6233#endif
6234#ifdef SO_USELOOPBACK
6235 if (memcmp(str, "SO_USELOOPBACK", 14) == 0) { *valp = SO_USELOOPBACK; return 0; }
6236#endif
6237#ifdef SO_WANTOOBFLAG
6238 if (memcmp(str, "SO_WANTOOBFLAG", 14) == 0) { *valp = SO_WANTOOBFLAG; return 0; }
6239#endif
6240#ifdef SO_TIMESTAMPNS
6241 if (memcmp(str, "SO_TIMESTAMPNS", 14) == 0) { *valp = SO_TIMESTAMPNS; return 0; }
6242#endif
6243#ifdef SO_WIFI_STATUS
6244 if (memcmp(str, "SO_WIFI_STATUS", 14) == 0) { *valp = SO_WIFI_STATUS; return 0; }
6245#endif
6246#ifdef SO_LOCK_FILTER
6247 if (memcmp(str, "SO_LOCK_FILTER", 14) == 0) { *valp = SO_LOCK_FILTER; return 0; }
6248#endif
6249#ifdef SO_BPF_EXTENSIONS
6250 if (memcmp(str, "BPF_EXTENSIONS", 14) == 0) { *valp = SO_BPF_EXTENSIONS; return 0; }
6251#endif
6252 return -1;
6253
6254 case 15:
6255#ifdef SO_ACCEPTFILTER
6256 if (memcmp(str, "SO_ACCEPTFILTER", 15) == 0) { *valp = SO_ACCEPTFILTER; return 0; }
6257#endif
6258#ifdef SO_BINDTODEVICE
6259 if (memcmp(str, "SO_BINDTODEVICE", 15) == 0) { *valp = SO_BINDTODEVICE; return 0; }
6260#endif
6261#ifdef SO_TIMESTAMPING
6262 if (memcmp(str, "SO_TIMESTAMPING", 15) == 0) { *valp = SO_TIMESTAMPING; return 0; }
6263#endif
6264#ifdef SO_MAX_PACING_RATE
6265 if (memcmp(str, "MAX_PACING_RATE", 15) == 0) { *valp = SO_MAX_PACING_RATE; return 0; }
6266#endif
6267 return -1;
6268
6269 case 16:
6270#ifdef SO_ATTACH_FILTER
6271 if (memcmp(str, "SO_ATTACH_FILTER", 16) == 0) { *valp = SO_ATTACH_FILTER; return 0; }
6272#endif
6273#ifdef SO_DETACH_FILTER
6274 if (memcmp(str, "SO_DETACH_FILTER", 16) == 0) { *valp = SO_DETACH_FILTER; return 0; }
6275#endif
6276#ifdef SO_SELECT_ERR_QUEUE
6277 if (memcmp(str, "SELECT_ERR_QUEUE", 16) == 0) { *valp = SO_SELECT_ERR_QUEUE; return 0; }
6278#endif
6279 return -1;
6280
6281 case 17:
6282#ifdef SO_BPF_EXTENSIONS
6283 if (memcmp(str, "SO_BPF_EXTENSIONS", 17) == 0) { *valp = SO_BPF_EXTENSIONS; return 0; }
6284#endif
6285 return -1;
6286
6287 case 18:
6288#ifdef SO_MAX_PACING_RATE
6289 if (memcmp(str, "SO_MAX_PACING_RATE", 18) == 0) { *valp = SO_MAX_PACING_RATE; return 0; }
6290#endif
6291 return -1;
6292
6293 case 19:
6294#ifdef SO_SELECT_ERR_QUEUE
6295 if (memcmp(str, "SO_SELECT_ERR_QUEUE", 19) == 0) { *valp = SO_SELECT_ERR_QUEUE; return 0; }
6296#endif
6297 return -1;
6298
6299 case 23:
6300#ifdef SO_SECURITY_AUTHENTICATION
6301 if (memcmp(str, "SECURITY_AUTHENTICATION", 23) == 0) { *valp = SO_SECURITY_AUTHENTICATION; return 0; }
6302#endif
6303 return -1;
6304
6305 case 26:
6306#ifdef SO_SECURITY_AUTHENTICATION
6307 if (memcmp(str, "SO_SECURITY_AUTHENTICATION", 26) == 0) { *valp = SO_SECURITY_AUTHENTICATION; return 0; }
6308#endif
6309 return -1;
6310
6311 case 27:
6312#ifdef SO_SECURITY_ENCRYPTION_NETWORK
6313 if (memcmp(str, "SECURITY_ENCRYPTION_NETWORK", 27) == 0) { *valp = SO_SECURITY_ENCRYPTION_NETWORK; return 0; }
6314#endif
6315 return -1;
6316
6317 case 29:
6318#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT
6319 if (memcmp(str, "SECURITY_ENCRYPTION_TRANSPORT", 29) == 0) { *valp = SO_SECURITY_ENCRYPTION_TRANSPORT; return 0; }
6320#endif
6321 return -1;
6322
6323 case 30:
6324#ifdef SO_SECURITY_ENCRYPTION_NETWORK
6325 if (memcmp(str, "SO_SECURITY_ENCRYPTION_NETWORK", 30) == 0) { *valp = SO_SECURITY_ENCRYPTION_NETWORK; return 0; }
6326#endif
6327 return -1;
6328
6329 case 32:
6330#ifdef SO_SECURITY_ENCRYPTION_TRANSPORT
6331 if (memcmp(str, "SO_SECURITY_ENCRYPTION_TRANSPORT", 32) == 0) { *valp = SO_SECURITY_ENCRYPTION_TRANSPORT; return 0; }
6332#endif
6333 return -1;
6334
6335 default:
6336 if (!str || !valp) {/* wrong argument */}
6337 return -1;
6338 }
6339}
6340
6341
6342int
6343rsock_ip_optname_to_int(const char *str, long len, int *valp)
6344{
6345 switch (len) {
6346 case 3:
6347#ifdef IP_TOS
6348 if (memcmp(str, "TOS", 3) == 0) { *valp = IP_TOS; return 0; }
6349#endif
6350#ifdef IP_TTL
6351 if (memcmp(str, "TTL", 3) == 0) { *valp = IP_TTL; return 0; }
6352#endif
6353#ifdef IP_MTU
6354 if (memcmp(str, "MTU", 3) == 0) { *valp = IP_MTU; return 0; }
6355#endif
6356 return -1;
6357
6358 case 6:
6359#ifdef IP_TOS
6360 if (memcmp(str, "IP_TOS", 6) == 0) { *valp = IP_TOS; return 0; }
6361#endif
6362#ifdef IP_TTL
6363 if (memcmp(str, "IP_TTL", 6) == 0) { *valp = IP_TTL; return 0; }
6364#endif
6365#ifdef IP_MTU
6366 if (memcmp(str, "IP_MTU", 6) == 0) { *valp = IP_MTU; return 0; }
6367#endif
6368#ifdef IP_MINTTL
6369 if (memcmp(str, "MINTTL", 6) == 0) { *valp = IP_MINTTL; return 0; }
6370#endif
6371#ifdef IP_RECVIF
6372 if (memcmp(str, "RECVIF", 6) == 0) { *valp = IP_RECVIF; return 0; }
6373#endif
6374 return -1;
6375
6376 case 7:
6377#ifdef IP_OPTIONS
6378 if (memcmp(str, "OPTIONS", 7) == 0) { *valp = IP_OPTIONS; return 0; }
6379#endif
6380#ifdef IP_HDRINCL
6381 if (memcmp(str, "HDRINCL", 7) == 0) { *valp = IP_HDRINCL; return 0; }
6382#endif
6383#ifdef IP_RETOPTS
6384 if (memcmp(str, "RETOPTS", 7) == 0) { *valp = IP_RETOPTS; return 0; }
6385#endif
6386#ifdef IP_RECVTTL
6387 if (memcmp(str, "RECVTTL", 7) == 0) { *valp = IP_RECVTTL; return 0; }
6388#endif
6389#ifdef IP_PKTINFO
6390 if (memcmp(str, "PKTINFO", 7) == 0) { *valp = IP_PKTINFO; return 0; }
6391#endif
6392#ifdef IP_RECVERR
6393 if (memcmp(str, "RECVERR", 7) == 0) { *valp = IP_RECVERR; return 0; }
6394#endif
6395#ifdef IP_RECVTOS
6396 if (memcmp(str, "RECVTOS", 7) == 0) { *valp = IP_RECVTOS; return 0; }
6397#endif
6398#ifdef IP_PASSSEC
6399 if (memcmp(str, "PASSSEC", 7) == 0) { *valp = IP_PASSSEC; return 0; }
6400#endif
6401 return -1;
6402
6403 case 8:
6404#ifdef IP_RECVOPTS
6405 if (memcmp(str, "RECVOPTS", 8) == 0) { *valp = IP_RECVOPTS; return 0; }
6406#endif
6407#ifdef IP_DONTFRAG
6408 if (memcmp(str, "DONTFRAG", 8) == 0) { *valp = IP_DONTFRAG; return 0; }
6409#endif
6410#ifdef IP_RECVSLLA
6411 if (memcmp(str, "RECVSLLA", 8) == 0) { *valp = IP_RECVSLLA; return 0; }
6412#endif
6413#ifdef IP_FREEBIND
6414 if (memcmp(str, "FREEBIND", 8) == 0) { *valp = IP_FREEBIND; return 0; }
6415#endif
6416#ifdef IP_MSFILTER
6417 if (memcmp(str, "MSFILTER", 8) == 0) { *valp = IP_MSFILTER; return 0; }
6418#endif
6419 return -1;
6420
6421 case 9:
6422#ifdef IP_MINTTL
6423 if (memcmp(str, "IP_MINTTL", 9) == 0) { *valp = IP_MINTTL; return 0; }
6424#endif
6425#ifdef IP_RECVIF
6426 if (memcmp(str, "IP_RECVIF", 9) == 0) { *valp = IP_RECVIF; return 0; }
6427#endif
6428#ifdef IP_ONESBCAST
6429 if (memcmp(str, "ONESBCAST", 9) == 0) { *valp = IP_ONESBCAST; return 0; }
6430#endif
6431#ifdef IP_PORTRANGE
6432 if (memcmp(str, "PORTRANGE", 9) == 0) { *valp = IP_PORTRANGE; return 0; }
6433#endif
6434 return -1;
6435
6436 case 10:
6437#ifdef IP_OPTIONS
6438 if (memcmp(str, "IP_OPTIONS", 10) == 0) { *valp = IP_OPTIONS; return 0; }
6439#endif
6440#ifdef IP_HDRINCL
6441 if (memcmp(str, "IP_HDRINCL", 10) == 0) { *valp = IP_HDRINCL; return 0; }
6442#endif
6443#ifdef IP_RETOPTS
6444 if (memcmp(str, "IP_RETOPTS", 10) == 0) { *valp = IP_RETOPTS; return 0; }
6445#endif
6446#ifdef IP_RECVTTL
6447 if (memcmp(str, "IP_RECVTTL", 10) == 0) { *valp = IP_RECVTTL; return 0; }
6448#endif
6449#ifdef IP_PKTINFO
6450 if (memcmp(str, "IP_PKTINFO", 10) == 0) { *valp = IP_PKTINFO; return 0; }
6451#endif
6452#ifdef IP_RECVERR
6453 if (memcmp(str, "IP_RECVERR", 10) == 0) { *valp = IP_RECVERR; return 0; }
6454#endif
6455#ifdef IP_RECVTOS
6456 if (memcmp(str, "IP_RECVTOS", 10) == 0) { *valp = IP_RECVTOS; return 0; }
6457#endif
6458#ifdef IP_PASSSEC
6459 if (memcmp(str, "IP_PASSSEC", 10) == 0) { *valp = IP_PASSSEC; return 0; }
6460#endif
6461#ifdef IP_PKTOPTIONS
6462 if (memcmp(str, "PKTOPTIONS", 10) == 0) { *valp = IP_PKTOPTIONS; return 0; }
6463#endif
6464 return -1;
6465
6466 case 11:
6467#ifdef IP_RECVOPTS
6468 if (memcmp(str, "IP_RECVOPTS", 11) == 0) { *valp = IP_RECVOPTS; return 0; }
6469#endif
6470#ifdef IP_DONTFRAG
6471 if (memcmp(str, "IP_DONTFRAG", 11) == 0) { *valp = IP_DONTFRAG; return 0; }
6472#endif
6473#ifdef IP_RECVSLLA
6474 if (memcmp(str, "IP_RECVSLLA", 11) == 0) { *valp = IP_RECVSLLA; return 0; }
6475#endif
6476#ifdef IP_FREEBIND
6477 if (memcmp(str, "IP_FREEBIND", 11) == 0) { *valp = IP_FREEBIND; return 0; }
6478#endif
6479#ifdef IP_MSFILTER
6480 if (memcmp(str, "IP_MSFILTER", 11) == 0) { *valp = IP_MSFILTER; return 0; }
6481#endif
6482#ifdef IP_RECVRETOPTS
6483 if (memcmp(str, "RECVRETOPTS", 11) == 0) { *valp = IP_RECVRETOPTS; return 0; }
6484#endif
6485#ifdef IP_RECVDSTADDR
6486 if (memcmp(str, "RECVDSTADDR", 11) == 0) { *valp = IP_RECVDSTADDR; return 0; }
6487#endif
6488#ifdef IP_SENDSRCADDR
6489 if (memcmp(str, "SENDSRCADDR", 11) == 0) { *valp = IP_SENDSRCADDR; return 0; }
6490#endif
6491#ifdef IP_XFRM_POLICY
6492 if (memcmp(str, "XFRM_POLICY", 11) == 0) { *valp = IP_XFRM_POLICY; return 0; }
6493#endif
6494#ifdef IP_TRANSPARENT
6495 if (memcmp(str, "TRANSPARENT", 11) == 0) { *valp = IP_TRANSPARENT; return 0; }
6496#endif
6497#ifdef IP_PMTUDISC_DO
6498 if (memcmp(str, "PMTUDISC_DO", 11) == 0) { *valp = IP_PMTUDISC_DO; return 0; }
6499#endif
6500 return -1;
6501
6502 case 12:
6503#ifdef IP_ONESBCAST
6504 if (memcmp(str, "IP_ONESBCAST", 12) == 0) { *valp = IP_ONESBCAST; return 0; }
6505#endif
6506#ifdef IP_PORTRANGE
6507 if (memcmp(str, "IP_PORTRANGE", 12) == 0) { *valp = IP_PORTRANGE; return 0; }
6508#endif
6509#ifdef IP_MULTICAST_IF
6510 if (memcmp(str, "MULTICAST_IF", 12) == 0) { *valp = IP_MULTICAST_IF; return 0; }
6511#endif
6512#ifdef IP_ROUTER_ALERT
6513 if (memcmp(str, "ROUTER_ALERT", 12) == 0) { *valp = IP_ROUTER_ALERT; return 0; }
6514#endif
6515#ifdef IP_MTU_DISCOVER
6516 if (memcmp(str, "MTU_DISCOVER", 12) == 0) { *valp = IP_MTU_DISCOVER; return 0; }
6517#endif
6518#ifdef IP_IPSEC_POLICY
6519 if (memcmp(str, "IPSEC_POLICY", 12) == 0) { *valp = IP_IPSEC_POLICY; return 0; }
6520#endif
6521#ifdef IP_BLOCK_SOURCE
6522 if (memcmp(str, "BLOCK_SOURCE", 12) == 0) { *valp = IP_BLOCK_SOURCE; return 0; }
6523#endif
6524 return -1;
6525
6526 case 13:
6527#ifdef IP_PKTOPTIONS
6528 if (memcmp(str, "IP_PKTOPTIONS", 13) == 0) { *valp = IP_PKTOPTIONS; return 0; }
6529#endif
6530#ifdef IP_MULTICAST_TTL
6531 if (memcmp(str, "MULTICAST_TTL", 13) == 0) { *valp = IP_MULTICAST_TTL; return 0; }
6532#endif
6533#ifdef IP_PMTUDISC_DONT
6534 if (memcmp(str, "PMTUDISC_DONT", 13) == 0) { *valp = IP_PMTUDISC_DONT; return 0; }
6535#endif
6536#ifdef IP_PMTUDISC_WANT
6537 if (memcmp(str, "PMTUDISC_WANT", 13) == 0) { *valp = IP_PMTUDISC_WANT; return 0; }
6538#endif
6539 return -1;
6540
6541 case 14:
6542#ifdef IP_RECVRETOPTS
6543 if (memcmp(str, "IP_RECVRETOPTS", 14) == 0) { *valp = IP_RECVRETOPTS; return 0; }
6544#endif
6545#ifdef IP_RECVDSTADDR
6546 if (memcmp(str, "IP_RECVDSTADDR", 14) == 0) { *valp = IP_RECVDSTADDR; return 0; }
6547#endif
6548#ifdef IP_SENDSRCADDR
6549 if (memcmp(str, "IP_SENDSRCADDR", 14) == 0) { *valp = IP_SENDSRCADDR; return 0; }
6550#endif
6551#ifdef IP_XFRM_POLICY
6552 if (memcmp(str, "IP_XFRM_POLICY", 14) == 0) { *valp = IP_XFRM_POLICY; return 0; }
6553#endif
6554#ifdef IP_TRANSPARENT
6555 if (memcmp(str, "IP_TRANSPARENT", 14) == 0) { *valp = IP_TRANSPARENT; return 0; }
6556#endif
6557#ifdef IP_PMTUDISC_DO
6558 if (memcmp(str, "IP_PMTUDISC_DO", 14) == 0) { *valp = IP_PMTUDISC_DO; return 0; }
6559#endif
6560#ifdef IP_MULTICAST_LOOP
6561 if (memcmp(str, "MULTICAST_LOOP", 14) == 0) { *valp = IP_MULTICAST_LOOP; return 0; }
6562#endif
6563#ifdef IP_ADD_MEMBERSHIP
6564 if (memcmp(str, "ADD_MEMBERSHIP", 14) == 0) { *valp = IP_ADD_MEMBERSHIP; return 0; }
6565#endif
6566#ifdef IP_UNBLOCK_SOURCE
6567 if (memcmp(str, "UNBLOCK_SOURCE", 14) == 0) { *valp = IP_UNBLOCK_SOURCE; return 0; }
6568#endif
6569 return -1;
6570
6571 case 15:
6572#ifdef IP_MULTICAST_IF
6573 if (memcmp(str, "IP_MULTICAST_IF", 15) == 0) { *valp = IP_MULTICAST_IF; return 0; }
6574#endif
6575#ifdef IP_ROUTER_ALERT
6576 if (memcmp(str, "IP_ROUTER_ALERT", 15) == 0) { *valp = IP_ROUTER_ALERT; return 0; }
6577#endif
6578#ifdef IP_MTU_DISCOVER
6579 if (memcmp(str, "IP_MTU_DISCOVER", 15) == 0) { *valp = IP_MTU_DISCOVER; return 0; }
6580#endif
6581#ifdef IP_IPSEC_POLICY
6582 if (memcmp(str, "IP_IPSEC_POLICY", 15) == 0) { *valp = IP_IPSEC_POLICY; return 0; }
6583#endif
6584#ifdef IP_BLOCK_SOURCE
6585 if (memcmp(str, "IP_BLOCK_SOURCE", 15) == 0) { *valp = IP_BLOCK_SOURCE; return 0; }
6586#endif
6587#ifdef IP_DROP_MEMBERSHIP
6588 if (memcmp(str, "DROP_MEMBERSHIP", 15) == 0) { *valp = IP_DROP_MEMBERSHIP; return 0; }
6589#endif
6590#ifdef IP_MAX_MEMBERSHIPS
6591 if (memcmp(str, "MAX_MEMBERSHIPS", 15) == 0) { *valp = IP_MAX_MEMBERSHIPS; return 0; }
6592#endif
6593 return -1;
6594
6595 case 16:
6596#ifdef IP_MULTICAST_TTL
6597 if (memcmp(str, "IP_MULTICAST_TTL", 16) == 0) { *valp = IP_MULTICAST_TTL; return 0; }
6598#endif
6599#ifdef IP_PMTUDISC_DONT
6600 if (memcmp(str, "IP_PMTUDISC_DONT", 16) == 0) { *valp = IP_PMTUDISC_DONT; return 0; }
6601#endif
6602#ifdef IP_PMTUDISC_WANT
6603 if (memcmp(str, "IP_PMTUDISC_WANT", 16) == 0) { *valp = IP_PMTUDISC_WANT; return 0; }
6604#endif
6605 return -1;
6606
6607 case 17:
6608#ifdef IP_MULTICAST_LOOP
6609 if (memcmp(str, "IP_MULTICAST_LOOP", 17) == 0) { *valp = IP_MULTICAST_LOOP; return 0; }
6610#endif
6611#ifdef IP_ADD_MEMBERSHIP
6612 if (memcmp(str, "IP_ADD_MEMBERSHIP", 17) == 0) { *valp = IP_ADD_MEMBERSHIP; return 0; }
6613#endif
6614#ifdef IP_UNBLOCK_SOURCE
6615 if (memcmp(str, "IP_UNBLOCK_SOURCE", 17) == 0) { *valp = IP_UNBLOCK_SOURCE; return 0; }
6616#endif
6617 return -1;
6618
6619 case 18:
6620#ifdef IP_DROP_MEMBERSHIP
6621 if (memcmp(str, "IP_DROP_MEMBERSHIP", 18) == 0) { *valp = IP_DROP_MEMBERSHIP; return 0; }
6622#endif
6623#ifdef IP_MAX_MEMBERSHIPS
6624 if (memcmp(str, "IP_MAX_MEMBERSHIPS", 18) == 0) { *valp = IP_MAX_MEMBERSHIPS; return 0; }
6625#endif
6626 return -1;
6627
6628 case 21:
6629#ifdef IP_DEFAULT_MULTICAST_TTL
6630 if (memcmp(str, "DEFAULT_MULTICAST_TTL", 21) == 0) { *valp = IP_DEFAULT_MULTICAST_TTL; return 0; }
6631#endif
6632#ifdef IP_ADD_SOURCE_MEMBERSHIP
6633 if (memcmp(str, "ADD_SOURCE_MEMBERSHIP", 21) == 0) { *valp = IP_ADD_SOURCE_MEMBERSHIP; return 0; }
6634#endif
6635 return -1;
6636
6637 case 22:
6638#ifdef IP_DEFAULT_MULTICAST_LOOP
6639 if (memcmp(str, "DEFAULT_MULTICAST_LOOP", 22) == 0) { *valp = IP_DEFAULT_MULTICAST_LOOP; return 0; }
6640#endif
6641#ifdef IP_DROP_SOURCE_MEMBERSHIP
6642 if (memcmp(str, "DROP_SOURCE_MEMBERSHIP", 22) == 0) { *valp = IP_DROP_SOURCE_MEMBERSHIP; return 0; }
6643#endif
6644 return -1;
6645
6646 case 24:
6647#ifdef IP_DEFAULT_MULTICAST_TTL
6648 if (memcmp(str, "IP_DEFAULT_MULTICAST_TTL", 24) == 0) { *valp = IP_DEFAULT_MULTICAST_TTL; return 0; }
6649#endif
6650#ifdef IP_ADD_SOURCE_MEMBERSHIP
6651 if (memcmp(str, "IP_ADD_SOURCE_MEMBERSHIP", 24) == 0) { *valp = IP_ADD_SOURCE_MEMBERSHIP; return 0; }
6652#endif
6653 return -1;
6654
6655 case 25:
6656#ifdef IP_DEFAULT_MULTICAST_LOOP
6657 if (memcmp(str, "IP_DEFAULT_MULTICAST_LOOP", 25) == 0) { *valp = IP_DEFAULT_MULTICAST_LOOP; return 0; }
6658#endif
6659#ifdef IP_DROP_SOURCE_MEMBERSHIP
6660 if (memcmp(str, "IP_DROP_SOURCE_MEMBERSHIP", 25) == 0) { *valp = IP_DROP_SOURCE_MEMBERSHIP; return 0; }
6661#endif
6662 return -1;
6663
6664 default:
6665 if (!str || !valp) {/* wrong argument */}
6666 return -1;
6667 }
6668}
6669
6670
6671#ifdef IPPROTO_IPV6
6672int
6673rsock_ipv6_optname_to_int(const char *str, long len, int *valp)
6674{
6675 switch (len) {
6676 case 5:
6677#ifdef IPV6_RTHDR
6678 if (memcmp(str, "RTHDR", 5) == 0) { *valp = IPV6_RTHDR; return 0; }
6679#endif
6680 return -1;
6681
6682 case 6:
6683#ifdef IPV6_V6ONLY
6684 if (memcmp(str, "V6ONLY", 6) == 0) { *valp = IPV6_V6ONLY; return 0; }
6685#endif
6686#ifdef IPV6_TCLASS
6687 if (memcmp(str, "TCLASS", 6) == 0) { *valp = IPV6_TCLASS; return 0; }
6688#endif
6689 return -1;
6690
6691 case 7:
6692#ifdef IPV6_DSTOPTS
6693 if (memcmp(str, "DSTOPTS", 7) == 0) { *valp = IPV6_DSTOPTS; return 0; }
6694#endif
6695#ifdef IPV6_HOPOPTS
6696 if (memcmp(str, "HOPOPTS", 7) == 0) { *valp = IPV6_HOPOPTS; return 0; }
6697#endif
6698#ifdef IPV6_NEXTHOP
6699 if (memcmp(str, "NEXTHOP", 7) == 0) { *valp = IPV6_NEXTHOP; return 0; }
6700#endif
6701#ifdef IPV6_PATHMTU
6702 if (memcmp(str, "PATHMTU", 7) == 0) { *valp = IPV6_PATHMTU; return 0; }
6703#endif
6704#ifdef IPV6_PKTINFO
6705 if (memcmp(str, "PKTINFO", 7) == 0) { *valp = IPV6_PKTINFO; return 0; }
6706#endif
6707 return -1;
6708
6709 case 8:
6710#ifdef IPV6_CHECKSUM
6711 if (memcmp(str, "CHECKSUM", 8) == 0) { *valp = IPV6_CHECKSUM; return 0; }
6712#endif
6713#ifdef IPV6_DONTFRAG
6714 if (memcmp(str, "DONTFRAG", 8) == 0) { *valp = IPV6_DONTFRAG; return 0; }
6715#endif
6716#ifdef IPV6_HOPLIMIT
6717 if (memcmp(str, "HOPLIMIT", 8) == 0) { *valp = IPV6_HOPLIMIT; return 0; }
6718#endif
6719 return -1;
6720
6721 case 9:
6722#ifdef IPV6_RECVRTHDR
6723 if (memcmp(str, "RECVRTHDR", 9) == 0) { *valp = IPV6_RECVRTHDR; return 0; }
6724#endif
6725 return -1;
6726
6727 case 10:
6728#ifdef IPV6_RTHDR
6729 if (memcmp(str, "IPV6_RTHDR", 10) == 0) { *valp = IPV6_RTHDR; return 0; }
6730#endif
6731#ifdef IPV6_JOIN_GROUP
6732 if (memcmp(str, "JOIN_GROUP", 10) == 0) { *valp = IPV6_JOIN_GROUP; return 0; }
6733#endif
6734#ifdef IPV6_RECVTCLASS
6735 if (memcmp(str, "RECVTCLASS", 10) == 0) { *valp = IPV6_RECVTCLASS; return 0; }
6736#endif
6737 return -1;
6738
6739 case 11:
6740#ifdef IPV6_V6ONLY
6741 if (memcmp(str, "IPV6_V6ONLY", 11) == 0) { *valp = IPV6_V6ONLY; return 0; }
6742#endif
6743#ifdef IPV6_TCLASS
6744 if (memcmp(str, "IPV6_TCLASS", 11) == 0) { *valp = IPV6_TCLASS; return 0; }
6745#endif
6746#ifdef IPV6_LEAVE_GROUP
6747 if (memcmp(str, "LEAVE_GROUP", 11) == 0) { *valp = IPV6_LEAVE_GROUP; return 0; }
6748#endif
6749#ifdef IPV6_RECVDSTOPTS
6750 if (memcmp(str, "RECVDSTOPTS", 11) == 0) { *valp = IPV6_RECVDSTOPTS; return 0; }
6751#endif
6752#ifdef IPV6_RECVHOPOPTS
6753 if (memcmp(str, "RECVHOPOPTS", 11) == 0) { *valp = IPV6_RECVHOPOPTS; return 0; }
6754#endif
6755#ifdef IPV6_RECVPKTINFO
6756 if (memcmp(str, "RECVPKTINFO", 11) == 0) { *valp = IPV6_RECVPKTINFO; return 0; }
6757#endif
6758#ifdef IPV6_RECVPATHMTU
6759 if (memcmp(str, "RECVPATHMTU", 11) == 0) { *valp = IPV6_RECVPATHMTU; return 0; }
6760#endif
6761#ifdef IPV6_USE_MIN_MTU
6762 if (memcmp(str, "USE_MIN_MTU", 11) == 0) { *valp = IPV6_USE_MIN_MTU; return 0; }
6763#endif
6764 return -1;
6765
6766 case 12:
6767#ifdef IPV6_DSTOPTS
6768 if (memcmp(str, "IPV6_DSTOPTS", 12) == 0) { *valp = IPV6_DSTOPTS; return 0; }
6769#endif
6770#ifdef IPV6_HOPOPTS
6771 if (memcmp(str, "IPV6_HOPOPTS", 12) == 0) { *valp = IPV6_HOPOPTS; return 0; }
6772#endif
6773#ifdef IPV6_NEXTHOP
6774 if (memcmp(str, "IPV6_NEXTHOP", 12) == 0) { *valp = IPV6_NEXTHOP; return 0; }
6775#endif
6776#ifdef IPV6_PATHMTU
6777 if (memcmp(str, "IPV6_PATHMTU", 12) == 0) { *valp = IPV6_PATHMTU; return 0; }
6778#endif
6779#ifdef IPV6_PKTINFO
6780 if (memcmp(str, "IPV6_PKTINFO", 12) == 0) { *valp = IPV6_PKTINFO; return 0; }
6781#endif
6782#ifdef IPV6_MULTICAST_IF
6783 if (memcmp(str, "MULTICAST_IF", 12) == 0) { *valp = IPV6_MULTICAST_IF; return 0; }
6784#endif
6785#ifdef IPV6_UNICAST_HOPS
6786 if (memcmp(str, "UNICAST_HOPS", 12) == 0) { *valp = IPV6_UNICAST_HOPS; return 0; }
6787#endif
6788#ifdef IPV6_RECVHOPLIMIT
6789 if (memcmp(str, "RECVHOPLIMIT", 12) == 0) { *valp = IPV6_RECVHOPLIMIT; return 0; }
6790#endif
6791#ifdef IPV6_RTHDRDSTOPTS
6792 if (memcmp(str, "RTHDRDSTOPTS", 12) == 0) { *valp = IPV6_RTHDRDSTOPTS; return 0; }
6793#endif
6794#ifdef IPV6_RTHDR_TYPE_0
6795 if (memcmp(str, "RTHDR_TYPE_0", 12) == 0) { *valp = IPV6_RTHDR_TYPE_0; return 0; }
6796#endif
6797 return -1;
6798
6799 case 13:
6800#ifdef IPV6_CHECKSUM
6801 if (memcmp(str, "IPV6_CHECKSUM", 13) == 0) { *valp = IPV6_CHECKSUM; return 0; }
6802#endif
6803#ifdef IPV6_DONTFRAG
6804 if (memcmp(str, "IPV6_DONTFRAG", 13) == 0) { *valp = IPV6_DONTFRAG; return 0; }
6805#endif
6806#ifdef IPV6_HOPLIMIT
6807 if (memcmp(str, "IPV6_HOPLIMIT", 13) == 0) { *valp = IPV6_HOPLIMIT; return 0; }
6808#endif
6809 return -1;
6810
6811 case 14:
6812#ifdef IPV6_RECVRTHDR
6813 if (memcmp(str, "IPV6_RECVRTHDR", 14) == 0) { *valp = IPV6_RECVRTHDR; return 0; }
6814#endif
6815#ifdef IPV6_MULTICAST_HOPS
6816 if (memcmp(str, "MULTICAST_HOPS", 14) == 0) { *valp = IPV6_MULTICAST_HOPS; return 0; }
6817#endif
6818#ifdef IPV6_MULTICAST_LOOP
6819 if (memcmp(str, "MULTICAST_LOOP", 14) == 0) { *valp = IPV6_MULTICAST_LOOP; return 0; }
6820#endif
6821 return -1;
6822
6823 case 15:
6824#ifdef IPV6_JOIN_GROUP
6825 if (memcmp(str, "IPV6_JOIN_GROUP", 15) == 0) { *valp = IPV6_JOIN_GROUP; return 0; }
6826#endif
6827#ifdef IPV6_RECVTCLASS
6828 if (memcmp(str, "IPV6_RECVTCLASS", 15) == 0) { *valp = IPV6_RECVTCLASS; return 0; }
6829#endif
6830 return -1;
6831
6832 case 16:
6833#ifdef IPV6_LEAVE_GROUP
6834 if (memcmp(str, "IPV6_LEAVE_GROUP", 16) == 0) { *valp = IPV6_LEAVE_GROUP; return 0; }
6835#endif
6836#ifdef IPV6_RECVDSTOPTS
6837 if (memcmp(str, "IPV6_RECVDSTOPTS", 16) == 0) { *valp = IPV6_RECVDSTOPTS; return 0; }
6838#endif
6839#ifdef IPV6_RECVHOPOPTS
6840 if (memcmp(str, "IPV6_RECVHOPOPTS", 16) == 0) { *valp = IPV6_RECVHOPOPTS; return 0; }
6841#endif
6842#ifdef IPV6_RECVPKTINFO
6843 if (memcmp(str, "IPV6_RECVPKTINFO", 16) == 0) { *valp = IPV6_RECVPKTINFO; return 0; }
6844#endif
6845#ifdef IPV6_RECVPATHMTU
6846 if (memcmp(str, "IPV6_RECVPATHMTU", 16) == 0) { *valp = IPV6_RECVPATHMTU; return 0; }
6847#endif
6848#ifdef IPV6_USE_MIN_MTU
6849 if (memcmp(str, "IPV6_USE_MIN_MTU", 16) == 0) { *valp = IPV6_USE_MIN_MTU; return 0; }
6850#endif
6851 return -1;
6852
6853 case 17:
6854#ifdef IPV6_MULTICAST_IF
6855 if (memcmp(str, "IPV6_MULTICAST_IF", 17) == 0) { *valp = IPV6_MULTICAST_IF; return 0; }
6856#endif
6857#ifdef IPV6_UNICAST_HOPS
6858 if (memcmp(str, "IPV6_UNICAST_HOPS", 17) == 0) { *valp = IPV6_UNICAST_HOPS; return 0; }
6859#endif
6860#ifdef IPV6_RECVHOPLIMIT
6861 if (memcmp(str, "IPV6_RECVHOPLIMIT", 17) == 0) { *valp = IPV6_RECVHOPLIMIT; return 0; }
6862#endif
6863#ifdef IPV6_RTHDRDSTOPTS
6864 if (memcmp(str, "IPV6_RTHDRDSTOPTS", 17) == 0) { *valp = IPV6_RTHDRDSTOPTS; return 0; }
6865#endif
6866#ifdef IPV6_RTHDR_TYPE_0
6867 if (memcmp(str, "IPV6_RTHDR_TYPE_0", 17) == 0) { *valp = IPV6_RTHDR_TYPE_0; return 0; }
6868#endif
6869 return -1;
6870
6871 case 19:
6872#ifdef IPV6_MULTICAST_HOPS
6873 if (memcmp(str, "IPV6_MULTICAST_HOPS", 19) == 0) { *valp = IPV6_MULTICAST_HOPS; return 0; }
6874#endif
6875#ifdef IPV6_MULTICAST_LOOP
6876 if (memcmp(str, "IPV6_MULTICAST_LOOP", 19) == 0) { *valp = IPV6_MULTICAST_LOOP; return 0; }
6877#endif
6878 return -1;
6879
6880 default:
6881 if (!str || !valp) {/* wrong argument */}
6882 return -1;
6883 }
6884}
6885
6886#endif
6887
6888int
6889rsock_tcp_optname_to_int(const char *str, long len, int *valp)
6890{
6891 switch (len) {
6892 case 4:
6893#ifdef TCP_CORK
6894 if (memcmp(str, "CORK", 4) == 0) { *valp = TCP_CORK; return 0; }
6895#endif
6896#ifdef TCP_INFO
6897 if (memcmp(str, "INFO", 4) == 0) { *valp = TCP_INFO; return 0; }
6898#endif
6899 return -1;
6900
6901 case 5:
6902#ifdef TCP_NOOPT
6903 if (memcmp(str, "NOOPT", 5) == 0) { *valp = TCP_NOOPT; return 0; }
6904#endif
6905 return -1;
6906
6907 case 6:
6908#ifdef TCP_MAXSEG
6909 if (memcmp(str, "MAXSEG", 6) == 0) { *valp = TCP_MAXSEG; return 0; }
6910#endif
6911#ifdef TCP_MD5SIG
6912 if (memcmp(str, "MD5SIG", 6) == 0) { *valp = TCP_MD5SIG; return 0; }
6913#endif
6914#ifdef TCP_NOPUSH
6915 if (memcmp(str, "NOPUSH", 6) == 0) { *valp = TCP_NOPUSH; return 0; }
6916#endif
6917#ifdef TCP_SYNCNT
6918 if (memcmp(str, "SYNCNT", 6) == 0) { *valp = TCP_SYNCNT; return 0; }
6919#endif
6920#ifdef TCP_REPAIR
6921 if (memcmp(str, "REPAIR", 6) == 0) { *valp = TCP_REPAIR; return 0; }
6922#endif
6923 return -1;
6924
6925 case 7:
6926#ifdef TCP_NODELAY
6927 if (memcmp(str, "NODELAY", 7) == 0) { *valp = TCP_NODELAY; return 0; }
6928#endif
6929#ifdef TCP_KEEPCNT
6930 if (memcmp(str, "KEEPCNT", 7) == 0) { *valp = TCP_KEEPCNT; return 0; }
6931#endif
6932#ifdef TCP_LINGER2
6933 if (memcmp(str, "LINGER2", 7) == 0) { *valp = TCP_LINGER2; return 0; }
6934#endif
6935 return -1;
6936
6937 case 8:
6938#ifdef TCP_CORK
6939 if (memcmp(str, "TCP_CORK", 8) == 0) { *valp = TCP_CORK; return 0; }
6940#endif
6941#ifdef TCP_INFO
6942 if (memcmp(str, "TCP_INFO", 8) == 0) { *valp = TCP_INFO; return 0; }
6943#endif
6944#ifdef TCP_KEEPIDLE
6945 if (memcmp(str, "KEEPIDLE", 8) == 0) { *valp = TCP_KEEPIDLE; return 0; }
6946#endif
6947#ifdef TCP_QUICKACK
6948 if (memcmp(str, "QUICKACK", 8) == 0) { *valp = TCP_QUICKACK; return 0; }
6949#endif
6950#ifdef TCP_FASTOPEN
6951 if (memcmp(str, "FASTOPEN", 8) == 0) { *valp = TCP_FASTOPEN; return 0; }
6952#endif
6953 return -1;
6954
6955 case 9:
6956#ifdef TCP_NOOPT
6957 if (memcmp(str, "TCP_NOOPT", 9) == 0) { *valp = TCP_NOOPT; return 0; }
6958#endif
6959#ifdef TCP_KEEPINTVL
6960 if (memcmp(str, "KEEPINTVL", 9) == 0) { *valp = TCP_KEEPINTVL; return 0; }
6961#endif
6962#ifdef TCP_QUEUE_SEQ
6963 if (memcmp(str, "QUEUE_SEQ", 9) == 0) { *valp = TCP_QUEUE_SEQ; return 0; }
6964#endif
6965#ifdef TCP_TIMESTAMP
6966 if (memcmp(str, "TIMESTAMP", 9) == 0) { *valp = TCP_TIMESTAMP; return 0; }
6967#endif
6968 return -1;
6969
6970 case 10:
6971#ifdef TCP_MAXSEG
6972 if (memcmp(str, "TCP_MAXSEG", 10) == 0) { *valp = TCP_MAXSEG; return 0; }
6973#endif
6974#ifdef TCP_MD5SIG
6975 if (memcmp(str, "TCP_MD5SIG", 10) == 0) { *valp = TCP_MD5SIG; return 0; }
6976#endif
6977#ifdef TCP_NOPUSH
6978 if (memcmp(str, "TCP_NOPUSH", 10) == 0) { *valp = TCP_NOPUSH; return 0; }
6979#endif
6980#ifdef TCP_SYNCNT
6981 if (memcmp(str, "TCP_SYNCNT", 10) == 0) { *valp = TCP_SYNCNT; return 0; }
6982#endif
6983#ifdef TCP_REPAIR
6984 if (memcmp(str, "TCP_REPAIR", 10) == 0) { *valp = TCP_REPAIR; return 0; }
6985#endif
6986#ifdef TCP_CONGESTION
6987 if (memcmp(str, "CONGESTION", 10) == 0) { *valp = TCP_CONGESTION; return 0; }
6988#endif
6989 return -1;
6990
6991 case 11:
6992#ifdef TCP_NODELAY
6993 if (memcmp(str, "TCP_NODELAY", 11) == 0) { *valp = TCP_NODELAY; return 0; }
6994#endif
6995#ifdef TCP_KEEPCNT
6996 if (memcmp(str, "TCP_KEEPCNT", 11) == 0) { *valp = TCP_KEEPCNT; return 0; }
6997#endif
6998#ifdef TCP_LINGER2
6999 if (memcmp(str, "TCP_LINGER2", 11) == 0) { *valp = TCP_LINGER2; return 0; }
7000#endif
7001#ifdef TCP_THIN_DUPACK
7002 if (memcmp(str, "THIN_DUPACK", 11) == 0) { *valp = TCP_THIN_DUPACK; return 0; }
7003#endif
7004 return -1;
7005
7006 case 12:
7007#ifdef TCP_KEEPIDLE
7008 if (memcmp(str, "TCP_KEEPIDLE", 12) == 0) { *valp = TCP_KEEPIDLE; return 0; }
7009#endif
7010#ifdef TCP_QUICKACK
7011 if (memcmp(str, "TCP_QUICKACK", 12) == 0) { *valp = TCP_QUICKACK; return 0; }
7012#endif
7013#ifdef TCP_FASTOPEN
7014 if (memcmp(str, "TCP_FASTOPEN", 12) == 0) { *valp = TCP_FASTOPEN; return 0; }
7015#endif
7016#ifdef TCP_DEFER_ACCEPT
7017 if (memcmp(str, "DEFER_ACCEPT", 12) == 0) { *valp = TCP_DEFER_ACCEPT; return 0; }
7018#endif
7019#ifdef TCP_WINDOW_CLAMP
7020 if (memcmp(str, "WINDOW_CLAMP", 12) == 0) { *valp = TCP_WINDOW_CLAMP; return 0; }
7021#endif
7022#ifdef TCP_REPAIR_QUEUE
7023 if (memcmp(str, "REPAIR_QUEUE", 12) == 0) { *valp = TCP_REPAIR_QUEUE; return 0; }
7024#endif
7025#ifdef TCP_USER_TIMEOUT
7026 if (memcmp(str, "USER_TIMEOUT", 12) == 0) { *valp = TCP_USER_TIMEOUT; return 0; }
7027#endif
7028 return -1;
7029
7030 case 13:
7031#ifdef TCP_KEEPINTVL
7032 if (memcmp(str, "TCP_KEEPINTVL", 13) == 0) { *valp = TCP_KEEPINTVL; return 0; }
7033#endif
7034#ifdef TCP_QUEUE_SEQ
7035 if (memcmp(str, "TCP_QUEUE_SEQ", 13) == 0) { *valp = TCP_QUEUE_SEQ; return 0; }
7036#endif
7037#ifdef TCP_TIMESTAMP
7038 if (memcmp(str, "TCP_TIMESTAMP", 13) == 0) { *valp = TCP_TIMESTAMP; return 0; }
7039#endif
7040 return -1;
7041
7042 case 14:
7043#ifdef TCP_CONGESTION
7044 if (memcmp(str, "TCP_CONGESTION", 14) == 0) { *valp = TCP_CONGESTION; return 0; }
7045#endif
7046#ifdef TCP_REPAIR_OPTIONS
7047 if (memcmp(str, "REPAIR_OPTIONS", 14) == 0) { *valp = TCP_REPAIR_OPTIONS; return 0; }
7048#endif
7049 return -1;
7050
7051 case 15:
7052#ifdef TCP_THIN_DUPACK
7053 if (memcmp(str, "TCP_THIN_DUPACK", 15) == 0) { *valp = TCP_THIN_DUPACK; return 0; }
7054#endif
7055 return -1;
7056
7057 case 16:
7058#ifdef TCP_DEFER_ACCEPT
7059 if (memcmp(str, "TCP_DEFER_ACCEPT", 16) == 0) { *valp = TCP_DEFER_ACCEPT; return 0; }
7060#endif
7061#ifdef TCP_WINDOW_CLAMP
7062 if (memcmp(str, "TCP_WINDOW_CLAMP", 16) == 0) { *valp = TCP_WINDOW_CLAMP; return 0; }
7063#endif
7064#ifdef TCP_REPAIR_QUEUE
7065 if (memcmp(str, "TCP_REPAIR_QUEUE", 16) == 0) { *valp = TCP_REPAIR_QUEUE; return 0; }
7066#endif
7067#ifdef TCP_USER_TIMEOUT
7068 if (memcmp(str, "TCP_USER_TIMEOUT", 16) == 0) { *valp = TCP_USER_TIMEOUT; return 0; }
7069#endif
7070 return -1;
7071
7072 case 18:
7073#ifdef TCP_REPAIR_OPTIONS
7074 if (memcmp(str, "TCP_REPAIR_OPTIONS", 18) == 0) { *valp = TCP_REPAIR_OPTIONS; return 0; }
7075#endif
7076 return -1;
7077
7078 case 19:
7079#ifdef TCP_COOKIE_TRANSACTIONS
7080 if (memcmp(str, "COOKIE_TRANSACTIONS", 19) == 0) { *valp = TCP_COOKIE_TRANSACTIONS; return 0; }
7081#endif
7082 return -1;
7083
7084 case 20:
7085#ifdef TCP_THIN_LINEAR_TIMEOUTS
7086 if (memcmp(str, "THIN_LINEAR_TIMEOUTS", 20) == 0) { *valp = TCP_THIN_LINEAR_TIMEOUTS; return 0; }
7087#endif
7088 return -1;
7089
7090 case 23:
7091#ifdef TCP_COOKIE_TRANSACTIONS
7092 if (memcmp(str, "TCP_COOKIE_TRANSACTIONS", 23) == 0) { *valp = TCP_COOKIE_TRANSACTIONS; return 0; }
7093#endif
7094 return -1;
7095
7096 case 24:
7097#ifdef TCP_THIN_LINEAR_TIMEOUTS
7098 if (memcmp(str, "TCP_THIN_LINEAR_TIMEOUTS", 24) == 0) { *valp = TCP_THIN_LINEAR_TIMEOUTS; return 0; }
7099#endif
7100 return -1;
7101
7102 default:
7103 if (!str || !valp) {/* wrong argument */}
7104 return -1;
7105 }
7106}
7107
7108
7109int
7110rsock_udp_optname_to_int(const char *str, long len, int *valp)
7111{
7112 switch (len) {
7113 case 4:
7114#ifdef UDP_CORK
7115 if (memcmp(str, "CORK", 4) == 0) { *valp = UDP_CORK; return 0; }
7116#endif
7117 return -1;
7118
7119 case 8:
7120#ifdef UDP_CORK
7121 if (memcmp(str, "UDP_CORK", 8) == 0) { *valp = UDP_CORK; return 0; }
7122#endif
7123 return -1;
7124
7125 default:
7126 if (!str || !valp) {/* wrong argument */}
7127 return -1;
7128 }
7129}
7130
7131
7132int
7133rsock_shutdown_how_to_int(const char *str, long len, int *valp)
7134{
7135 switch (len) {
7136 case 2:
7137#ifdef SHUT_RD
7138 if (memcmp(str, "RD", 2) == 0) { *valp = SHUT_RD; return 0; }
7139#endif
7140#ifdef SHUT_WR
7141 if (memcmp(str, "WR", 2) == 0) { *valp = SHUT_WR; return 0; }
7142#endif
7143 return -1;
7144
7145 case 4:
7146#ifdef SHUT_RDWR
7147 if (memcmp(str, "RDWR", 4) == 0) { *valp = SHUT_RDWR; return 0; }
7148#endif
7149 return -1;
7150
7151 case 7:
7152#ifdef SHUT_RD
7153 if (memcmp(str, "SHUT_RD", 7) == 0) { *valp = SHUT_RD; return 0; }
7154#endif
7155#ifdef SHUT_WR
7156 if (memcmp(str, "SHUT_WR", 7) == 0) { *valp = SHUT_WR; return 0; }
7157#endif
7158 return -1;
7159
7160 case 9:
7161#ifdef SHUT_RDWR
7162 if (memcmp(str, "SHUT_RDWR", 9) == 0) { *valp = SHUT_RDWR; return 0; }
7163#endif
7164 return -1;
7165
7166 default:
7167 if (!str || !valp) {/* wrong argument */}
7168 return -1;
7169 }
7170}
7171
7172
7173int
7174rsock_scm_optname_to_int(const char *str, long len, int *valp)
7175{
7176 switch (len) {
7177 case 5:
7178#ifdef SCM_CREDS
7179 if (memcmp(str, "CREDS", 5) == 0) { *valp = SCM_CREDS; return 0; }
7180#endif
7181#ifdef SCM_UCRED
7182 if (memcmp(str, "UCRED", 5) == 0) { *valp = SCM_UCRED; return 0; }
7183#endif
7184 return -1;
7185
7186 case 6:
7187#ifdef SCM_RIGHTS
7188 if (memcmp(str, "RIGHTS", 6) == 0) { *valp = SCM_RIGHTS; return 0; }
7189#endif
7190 return -1;
7191
7192 case 7:
7193#ifdef SCM_BINTIME
7194 if (memcmp(str, "BINTIME", 7) == 0) { *valp = SCM_BINTIME; return 0; }
7195#endif
7196 return -1;
7197
7198 case 9:
7199#ifdef SCM_CREDS
7200 if (memcmp(str, "SCM_CREDS", 9) == 0) { *valp = SCM_CREDS; return 0; }
7201#endif
7202#ifdef SCM_UCRED
7203 if (memcmp(str, "SCM_UCRED", 9) == 0) { *valp = SCM_UCRED; return 0; }
7204#endif
7205#ifdef SCM_TIMESTAMP
7206 if (memcmp(str, "TIMESTAMP", 9) == 0) { *valp = SCM_TIMESTAMP; return 0; }
7207#endif
7208 return -1;
7209
7210 case 10:
7211#ifdef SCM_RIGHTS
7212 if (memcmp(str, "SCM_RIGHTS", 10) == 0) { *valp = SCM_RIGHTS; return 0; }
7213#endif
7214 return -1;
7215
7216 case 11:
7217#ifdef SCM_BINTIME
7218 if (memcmp(str, "SCM_BINTIME", 11) == 0) { *valp = SCM_BINTIME; return 0; }
7219#endif
7220#ifdef SCM_TIMESTAMPNS
7221 if (memcmp(str, "TIMESTAMPNS", 11) == 0) { *valp = SCM_TIMESTAMPNS; return 0; }
7222#endif
7223#ifdef SCM_CREDENTIALS
7224 if (memcmp(str, "CREDENTIALS", 11) == 0) { *valp = SCM_CREDENTIALS; return 0; }
7225#endif
7226#ifdef SCM_WIFI_STATUS
7227 if (memcmp(str, "WIFI_STATUS", 11) == 0) { *valp = SCM_WIFI_STATUS; return 0; }
7228#endif
7229 return -1;
7230
7231 case 12:
7232#ifdef SCM_TIMESTAMPING
7233 if (memcmp(str, "TIMESTAMPING", 12) == 0) { *valp = SCM_TIMESTAMPING; return 0; }
7234#endif
7235 return -1;
7236
7237 case 13:
7238#ifdef SCM_TIMESTAMP
7239 if (memcmp(str, "SCM_TIMESTAMP", 13) == 0) { *valp = SCM_TIMESTAMP; return 0; }
7240#endif
7241 return -1;
7242
7243 case 15:
7244#ifdef SCM_TIMESTAMPNS
7245 if (memcmp(str, "SCM_TIMESTAMPNS", 15) == 0) { *valp = SCM_TIMESTAMPNS; return 0; }
7246#endif
7247#ifdef SCM_CREDENTIALS
7248 if (memcmp(str, "SCM_CREDENTIALS", 15) == 0) { *valp = SCM_CREDENTIALS; return 0; }
7249#endif
7250#ifdef SCM_WIFI_STATUS
7251 if (memcmp(str, "SCM_WIFI_STATUS", 15) == 0) { *valp = SCM_WIFI_STATUS; return 0; }
7252#endif
7253 return -1;
7254
7255 case 16:
7256#ifdef SCM_TIMESTAMPING
7257 if (memcmp(str, "SCM_TIMESTAMPING", 16) == 0) { *valp = SCM_TIMESTAMPING; return 0; }
7258#endif
7259 return -1;
7260
7261 default:
7262 if (!str || !valp) {/* wrong argument */}
7263 return -1;
7264 }
7265}
7266
7267
7268
7269ID
7270rsock_intern_family(int val)
7271{
7272 st_data_t name;
7273 if (st_lookup(rsock_intern_family_hash, (st_data_t)val, &name))
7274 return (ID)name;
7275 return 0;
7276}
7277
7278ID
7279rsock_intern_family_noprefix(int val)
7280{
7281 st_data_t name;
7282 if (st_lookup(rsock_intern_family_noprefix_hash, (st_data_t)val, &name))
7283 return (ID)name;
7284 return 0;
7285}
7286
7287ID
7288rsock_intern_protocol_family(int val)
7289{
7290 st_data_t name;
7291 if (st_lookup(rsock_intern_protocol_family_hash, (st_data_t)val, &name))
7292 return (ID)name;
7293 return 0;
7294}
7295
7296ID
7297rsock_intern_socktype(int val)
7298{
7299 st_data_t name;
7300 if (st_lookup(rsock_intern_socktype_hash, (st_data_t)val, &name))
7301 return (ID)name;
7302 return 0;
7303}
7304
7305ID
7306rsock_intern_ipproto(int val)
7307{
7308 st_data_t name;
7309 if (st_lookup(rsock_intern_ipproto_hash, (st_data_t)val, &name))
7310 return (ID)name;
7311 return 0;
7312}
7313
7314ID
7315rsock_intern_iplevel(int val)
7316{
7317 st_data_t name;
7318 if (st_lookup(rsock_intern_iplevel_hash, (st_data_t)val, &name))
7319 return (ID)name;
7320 return 0;
7321}
7322
7323ID
7324rsock_intern_so_optname(int val)
7325{
7326 st_data_t name;
7327 if (st_lookup(rsock_intern_so_optname_hash, (st_data_t)val, &name))
7328 return (ID)name;
7329 return 0;
7330}
7331
7332ID
7333rsock_intern_ip_optname(int val)
7334{
7335 st_data_t name;
7336 if (st_lookup(rsock_intern_ip_optname_hash, (st_data_t)val, &name))
7337 return (ID)name;
7338 return 0;
7339}
7340
7341ID
7342rsock_intern_ipv6_optname(int val)
7343{
7344 st_data_t name;
7345 if (st_lookup(rsock_intern_ipv6_optname_hash, (st_data_t)val, &name))
7346 return (ID)name;
7347 return 0;
7348}
7349
7350ID
7351rsock_intern_tcp_optname(int val)
7352{
7353 st_data_t name;
7354 if (st_lookup(rsock_intern_tcp_optname_hash, (st_data_t)val, &name))
7355 return (ID)name;
7356 return 0;
7357}
7358
7359ID
7360rsock_intern_udp_optname(int val)
7361{
7362 st_data_t name;
7363 if (st_lookup(rsock_intern_udp_optname_hash, (st_data_t)val, &name))
7364 return (ID)name;
7365 return 0;
7366}
7367
7368ID
7369rsock_intern_scm_optname(int val)
7370{
7371 st_data_t name;
7372 if (st_lookup(rsock_intern_scm_optname_hash, (st_data_t)val, &name))
7373 return (ID)name;
7374 return 0;
7375}
7376
7377ID
7378rsock_intern_local_optname(int val)
7379{
7380 st_data_t name;
7381 if (st_lookup(rsock_intern_local_optname_hash, (st_data_t)val, &name))
7382 return (ID)name;
7383 return 0;
7384}
7385
7386
VALUE rb_define_module_under(VALUE outer, const char *name)
Defines a module under the namespace of outer.
Definition class.c:972
ID rb_intern2(const char *name, long len)
Identical to rb_intern(), except it additionally takes the length of the string.
Definition symbol.c:775
void rb_define_const(VALUE klass, const char *name, VALUE val)
Defines a Ruby level constant under a namespace.
Definition variable.c:3253
Definition st.h:79
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
Definition value.h:52