File Coverage

cpan/Socket/const-xs.inc
Criterion Covered Total %
statement 32 50 64.0
branch n/a
condition n/a
subroutine n/a
total 32 50 64.0


line stmt bran cond sub time code
1           BOOT:
2           {
3           #ifdef dTHX
4           dTHX;
5           #endif
6 636         HV *symbol_table = get_hv("Socket::", GV_ADD);
7            
8           static const struct iv_s values_for_iv[] =
9           {
10           #ifdef AF_802
11           { "AF_802", 6, AF_802 },
12           #endif
13           #ifdef AF_AAL
14           { "AF_AAL", 6, AF_AAL },
15           #endif
16           #ifdef AF_APPLETALK
17           { "AF_APPLETALK", 12, AF_APPLETALK },
18           #endif
19           #ifdef AF_CCITT
20           { "AF_CCITT", 8, AF_CCITT },
21           #endif
22           #ifdef AF_CHAOS
23           { "AF_CHAOS", 8, AF_CHAOS },
24           #endif
25           #ifdef AF_CTF
26           { "AF_CTF", 6, AF_CTF },
27           #endif
28           #ifdef AF_DATAKIT
29           { "AF_DATAKIT", 10, AF_DATAKIT },
30           #endif
31           #ifdef AF_DECnet
32           { "AF_DECnet", 9, AF_DECnet },
33           #endif
34           #ifdef AF_DLI
35           { "AF_DLI", 6, AF_DLI },
36           #endif
37           #ifdef AF_ECMA
38           { "AF_ECMA", 7, AF_ECMA },
39           #endif
40           #ifdef AF_GOSIP
41           { "AF_GOSIP", 8, AF_GOSIP },
42           #endif
43           #ifdef AF_HYLINK
44           { "AF_HYLINK", 9, AF_HYLINK },
45           #endif
46           #ifdef AF_IMPLINK
47           { "AF_IMPLINK", 10, AF_IMPLINK },
48           #endif
49           #ifdef AF_INET
50           { "AF_INET", 7, AF_INET },
51           #endif
52           #ifdef AF_INET6
53           { "AF_INET6", 8, AF_INET6 },
54           #endif
55           #ifdef AF_ISO
56           { "AF_ISO", 6, AF_ISO },
57           #endif
58           #ifdef AF_KEY
59           { "AF_KEY", 6, AF_KEY },
60           #endif
61           #ifdef AF_LAST
62           { "AF_LAST", 7, AF_LAST },
63           #endif
64           #ifdef AF_LAT
65           { "AF_LAT", 6, AF_LAT },
66           #endif
67           #ifdef AF_LINK
68           { "AF_LINK", 7, AF_LINK },
69           #endif
70           #ifdef AF_MAX
71           { "AF_MAX", 6, AF_MAX },
72           #endif
73           #ifdef AF_NBS
74           { "AF_NBS", 6, AF_NBS },
75           #endif
76           #ifdef AF_NIT
77           { "AF_NIT", 6, AF_NIT },
78           #endif
79           #ifdef AF_NS
80           { "AF_NS", 5, AF_NS },
81           #endif
82           #ifdef AF_OSI
83           { "AF_OSI", 6, AF_OSI },
84           #endif
85           #ifdef AF_OSINET
86           { "AF_OSINET", 9, AF_OSINET },
87           #endif
88           #ifdef AF_PUP
89           { "AF_PUP", 6, AF_PUP },
90           #endif
91           #ifdef AF_ROUTE
92           { "AF_ROUTE", 8, AF_ROUTE },
93           #endif
94           #ifdef AF_SNA
95           { "AF_SNA", 6, AF_SNA },
96           #endif
97           #ifdef AF_UNIX
98           { "AF_UNIX", 7, AF_UNIX },
99           #endif
100           #ifdef AF_UNSPEC
101           { "AF_UNSPEC", 9, AF_UNSPEC },
102           #endif
103           #ifdef AF_USER
104           { "AF_USER", 7, AF_USER },
105           #endif
106           #ifdef AF_WAN
107           { "AF_WAN", 6, AF_WAN },
108           #endif
109           #ifdef AF_X25
110           { "AF_X25", 6, AF_X25 },
111           #endif
112           #ifdef AI_ADDRCONFIG
113           { "AI_ADDRCONFIG", 13, AI_ADDRCONFIG },
114           #endif
115           #ifdef AI_ALL
116           { "AI_ALL", 6, AI_ALL },
117           #endif
118           #ifdef AI_CANONIDN
119           { "AI_CANONIDN", 11, AI_CANONIDN },
120           #endif
121           #ifdef AI_CANONNAME
122           { "AI_CANONNAME", 12, AI_CANONNAME },
123           #endif
124           #ifdef AI_IDN
125           { "AI_IDN", 6, AI_IDN },
126           #endif
127           #ifdef AI_IDN_ALLOW_UNASSIGNED
128           { "AI_IDN_ALLOW_UNASSIGNED", 23, AI_IDN_ALLOW_UNASSIGNED },
129           #endif
130           #ifdef AI_IDN_USE_STD3_ASCII_RULES
131           { "AI_IDN_USE_STD3_ASCII_RULES", 27, AI_IDN_USE_STD3_ASCII_RULES },
132           #endif
133           #ifdef AI_NUMERICHOST
134           { "AI_NUMERICHOST", 14, AI_NUMERICHOST },
135           #endif
136           #ifdef AI_NUMERICSERV
137           { "AI_NUMERICSERV", 14, AI_NUMERICSERV },
138           #endif
139           #ifdef AI_PASSIVE
140           { "AI_PASSIVE", 10, AI_PASSIVE },
141           #endif
142           #ifdef AI_V4MAPPED
143           { "AI_V4MAPPED", 11, AI_V4MAPPED },
144           #endif
145           #ifdef EAI_ADDRFAMILY
146           { "EAI_ADDRFAMILY", 14, EAI_ADDRFAMILY },
147           #endif
148           #ifdef EAI_AGAIN
149           { "EAI_AGAIN", 9, EAI_AGAIN },
150           #endif
151           #ifdef EAI_BADFLAGS
152           { "EAI_BADFLAGS", 12, EAI_BADFLAGS },
153           #endif
154           #ifdef EAI_BADHINTS
155           { "EAI_BADHINTS", 12, EAI_BADHINTS },
156           #endif
157           #ifdef EAI_FAIL
158           { "EAI_FAIL", 8, EAI_FAIL },
159           #endif
160           #ifdef EAI_FAMILY
161           { "EAI_FAMILY", 10, EAI_FAMILY },
162           #endif
163           #ifdef EAI_NODATA
164           { "EAI_NODATA", 10, EAI_NODATA },
165           #endif
166           #ifdef EAI_NONAME
167           { "EAI_NONAME", 10, EAI_NONAME },
168           #endif
169           #ifdef EAI_PROTOCOL
170           { "EAI_PROTOCOL", 12, EAI_PROTOCOL },
171           #endif
172           #ifdef EAI_SERVICE
173           { "EAI_SERVICE", 11, EAI_SERVICE },
174           #endif
175           #ifdef EAI_SOCKTYPE
176           { "EAI_SOCKTYPE", 12, EAI_SOCKTYPE },
177           #endif
178           #ifdef EAI_SYSTEM
179           { "EAI_SYSTEM", 10, EAI_SYSTEM },
180           #endif
181           #ifdef IOV_MAX
182           { "IOV_MAX", 7, IOV_MAX },
183           #endif
184           #ifdef IP_ADD_MEMBERSHIP
185           { "IP_ADD_MEMBERSHIP", 17, IP_ADD_MEMBERSHIP },
186           #endif
187           #ifdef IP_ADD_SOURCE_MEMBERSHIP
188           { "IP_ADD_SOURCE_MEMBERSHIP", 24, IP_ADD_SOURCE_MEMBERSHIP },
189           #endif
190           #ifdef IP_DROP_MEMBERSHIP
191           { "IP_DROP_MEMBERSHIP", 18, IP_DROP_MEMBERSHIP },
192           #endif
193           #ifdef IP_DROP_SOURCE_MEMBERSHIP
194           { "IP_DROP_SOURCE_MEMBERSHIP", 25, IP_DROP_SOURCE_MEMBERSHIP },
195           #endif
196           #ifdef IP_HDRINCL
197           { "IP_HDRINCL", 10, IP_HDRINCL },
198           #endif
199           #ifdef IP_MULTICAST_IF
200           { "IP_MULTICAST_IF", 15, IP_MULTICAST_IF },
201           #endif
202           #ifdef IP_MULTICAST_LOOP
203           { "IP_MULTICAST_LOOP", 17, IP_MULTICAST_LOOP },
204           #endif
205           #ifdef IP_MULTICAST_TTL
206           { "IP_MULTICAST_TTL", 16, IP_MULTICAST_TTL },
207           #endif
208           #ifdef IP_OPTIONS
209           { "IP_OPTIONS", 10, IP_OPTIONS },
210           #endif
211           #ifdef IP_RECVOPTS
212           { "IP_RECVOPTS", 11, IP_RECVOPTS },
213           #endif
214           #ifdef IP_RECVRETOPTS
215           { "IP_RECVRETOPTS", 14, IP_RECVRETOPTS },
216           #endif
217           #ifdef IP_RETOPTS
218           { "IP_RETOPTS", 10, IP_RETOPTS },
219           #endif
220           #ifdef IP_TOS
221           { "IP_TOS", 6, IP_TOS },
222           #endif
223           #ifdef IP_TTL
224           { "IP_TTL", 6, IP_TTL },
225           #endif
226           #ifdef IPTOS_LOWDELAY
227           { "IPTOS_LOWDELAY", 14, IPTOS_LOWDELAY },
228           #endif
229           #ifdef IPTOS_THROUGHPUT
230           { "IPTOS_THROUGHPUT", 16, IPTOS_THROUGHPUT },
231           #endif
232           #ifdef IPTOS_RELIABILITY
233           { "IPTOS_RELIABILITY", 17, IPTOS_RELIABILITY },
234           #endif
235           #ifdef IPTOS_MINCOST
236           { "IPTOS_MINCOST", 13, IPTOS_MINCOST },
237           #endif
238           #ifdef IPV6_ADD_MEMBERSHIP
239           { "IPV6_ADD_MEMBERSHIP", 19, IPV6_ADD_MEMBERSHIP },
240           #endif
241           #ifdef IPV6_DROP_MEMBERSHIP
242           { "IPV6_DROP_MEMBERSHIP", 20, IPV6_DROP_MEMBERSHIP },
243           #endif
244           #ifdef IPV6_JOIN_GROUP
245           { "IPV6_JOIN_GROUP", 15, IPV6_JOIN_GROUP },
246           #endif
247           #ifdef IPV6_LEAVE_GROUP
248           { "IPV6_LEAVE_GROUP", 16, IPV6_LEAVE_GROUP },
249           #endif
250           #ifdef IPV6_MTU
251           { "IPV6_MTU", 8, IPV6_MTU },
252           #endif
253           #ifdef IPV6_MTU_DISCOVER
254           { "IPV6_MTU_DISCOVER", 17, IPV6_MTU_DISCOVER },
255           #endif
256           #ifdef IPV6_MULTICAST_HOPS
257           { "IPV6_MULTICAST_HOPS", 19, IPV6_MULTICAST_HOPS },
258           #endif
259           #ifdef IPV6_MULTICAST_IF
260           { "IPV6_MULTICAST_IF", 17, IPV6_MULTICAST_IF },
261           #endif
262           #ifdef IPV6_MULTICAST_LOOP
263           { "IPV6_MULTICAST_LOOP", 19, IPV6_MULTICAST_LOOP },
264           #endif
265           #ifdef IPV6_UNICAST_HOPS
266           { "IPV6_UNICAST_HOPS", 17, IPV6_UNICAST_HOPS },
267           #endif
268           #ifdef IPV6_V6ONLY
269           { "IPV6_V6ONLY", 11, IPV6_V6ONLY },
270           #endif
271           #ifdef MSG_BCAST
272           { "MSG_BCAST", 9, MSG_BCAST },
273           #endif
274           #ifdef MSG_BTAG
275           { "MSG_BTAG", 8, MSG_BTAG },
276           #endif
277           #ifdef MSG_CTLFLAGS
278           { "MSG_CTLFLAGS", 12, MSG_CTLFLAGS },
279           #endif
280           #ifdef MSG_CTLIGNORE
281           { "MSG_CTLIGNORE", 13, MSG_CTLIGNORE },
282           #endif
283           #ifdef MSG_DONTWAIT
284           { "MSG_DONTWAIT", 12, MSG_DONTWAIT },
285           #endif
286           #ifdef MSG_EOF
287           { "MSG_EOF", 7, MSG_EOF },
288           #endif
289           #ifdef MSG_EOR
290           { "MSG_EOR", 7, MSG_EOR },
291           #endif
292           #ifdef MSG_ERRQUEUE
293           { "MSG_ERRQUEUE", 12, MSG_ERRQUEUE },
294           #endif
295           #ifdef MSG_ETAG
296           { "MSG_ETAG", 8, MSG_ETAG },
297           #endif
298           #ifdef MSG_FIN
299           { "MSG_FIN", 7, MSG_FIN },
300           #endif
301           #ifdef MSG_MAXIOVLEN
302           { "MSG_MAXIOVLEN", 13, MSG_MAXIOVLEN },
303           #endif
304           #ifdef MSG_MCAST
305           { "MSG_MCAST", 9, MSG_MCAST },
306           #endif
307           #ifdef MSG_NOSIGNAL
308           { "MSG_NOSIGNAL", 12, MSG_NOSIGNAL },
309           #endif
310           #ifdef MSG_RST
311           { "MSG_RST", 7, MSG_RST },
312           #endif
313           #ifdef MSG_SYN
314           { "MSG_SYN", 7, MSG_SYN },
315           #endif
316           #ifdef MSG_TRUNC
317           { "MSG_TRUNC", 9, MSG_TRUNC },
318           #endif
319           #ifdef MSG_URG
320           { "MSG_URG", 7, MSG_URG },
321           #endif
322           #ifdef MSG_WAITALL
323           { "MSG_WAITALL", 11, MSG_WAITALL },
324           #endif
325           #ifdef MSG_WIRE
326           { "MSG_WIRE", 8, MSG_WIRE },
327           #endif
328           #ifdef NI_DGRAM
329           { "NI_DGRAM", 8, NI_DGRAM },
330           #endif
331           #ifdef NI_IDN
332           { "NI_IDN", 6, NI_IDN },
333           #endif
334           #ifdef NI_IDN_ALLOW_UNASSIGNED
335           { "NI_IDN_ALLOW_UNASSIGNED", 23, NI_IDN_ALLOW_UNASSIGNED },
336           #endif
337           #ifdef NI_IDN_USE_STD3_ASCII_RULES
338           { "NI_IDN_USE_STD3_ASCII_RULES", 27, NI_IDN_USE_STD3_ASCII_RULES },
339           #endif
340           #ifdef NI_NAMEREQD
341           { "NI_NAMEREQD", 11, NI_NAMEREQD },
342           #endif
343           #ifdef NI_NOFQDN
344           { "NI_NOFQDN", 9, NI_NOFQDN },
345           #endif
346           #ifdef NI_NUMERICHOST
347           { "NI_NUMERICHOST", 14, NI_NUMERICHOST },
348           #endif
349           #ifdef NI_NUMERICSERV
350           { "NI_NUMERICSERV", 14, NI_NUMERICSERV },
351           #endif
352           #ifdef PF_802
353           { "PF_802", 6, PF_802 },
354           #endif
355           #ifdef PF_AAL
356           { "PF_AAL", 6, PF_AAL },
357           #endif
358           #ifdef PF_APPLETALK
359           { "PF_APPLETALK", 12, PF_APPLETALK },
360           #endif
361           #ifdef PF_CCITT
362           { "PF_CCITT", 8, PF_CCITT },
363           #endif
364           #ifdef PF_CHAOS
365           { "PF_CHAOS", 8, PF_CHAOS },
366           #endif
367           #ifdef PF_CTF
368           { "PF_CTF", 6, PF_CTF },
369           #endif
370           #ifdef PF_DATAKIT
371           { "PF_DATAKIT", 10, PF_DATAKIT },
372           #endif
373           #ifdef PF_DECnet
374           { "PF_DECnet", 9, PF_DECnet },
375           #endif
376           #ifdef PF_DLI
377           { "PF_DLI", 6, PF_DLI },
378           #endif
379           #ifdef PF_ECMA
380           { "PF_ECMA", 7, PF_ECMA },
381           #endif
382           #ifdef PF_GOSIP
383           { "PF_GOSIP", 8, PF_GOSIP },
384           #endif
385           #ifdef PF_HYLINK
386           { "PF_HYLINK", 9, PF_HYLINK },
387           #endif
388           #ifdef PF_IMPLINK
389           { "PF_IMPLINK", 10, PF_IMPLINK },
390           #endif
391           #ifdef PF_INET
392           { "PF_INET", 7, PF_INET },
393           #endif
394           #ifdef PF_INET6
395           { "PF_INET6", 8, PF_INET6 },
396           #endif
397           #ifdef PF_ISO
398           { "PF_ISO", 6, PF_ISO },
399           #endif
400           #ifdef PF_KEY
401           { "PF_KEY", 6, PF_KEY },
402           #endif
403           #ifdef PF_LAST
404           { "PF_LAST", 7, PF_LAST },
405           #endif
406           #ifdef PF_LAT
407           { "PF_LAT", 6, PF_LAT },
408           #endif
409           #ifdef PF_LINK
410           { "PF_LINK", 7, PF_LINK },
411           #endif
412           #ifdef PF_MAX
413           { "PF_MAX", 6, PF_MAX },
414           #endif
415           #ifdef PF_NBS
416           { "PF_NBS", 6, PF_NBS },
417           #endif
418           #ifdef PF_NIT
419           { "PF_NIT", 6, PF_NIT },
420           #endif
421           #ifdef PF_NS
422           { "PF_NS", 5, PF_NS },
423           #endif
424           #ifdef PF_OSI
425           { "PF_OSI", 6, PF_OSI },
426           #endif
427           #ifdef PF_OSINET
428           { "PF_OSINET", 9, PF_OSINET },
429           #endif
430           #ifdef PF_PUP
431           { "PF_PUP", 6, PF_PUP },
432           #endif
433           #ifdef PF_ROUTE
434           { "PF_ROUTE", 8, PF_ROUTE },
435           #endif
436           #ifdef PF_SNA
437           { "PF_SNA", 6, PF_SNA },
438           #endif
439           #ifdef PF_UNIX
440           { "PF_UNIX", 7, PF_UNIX },
441           #endif
442           #ifdef PF_UNSPEC
443           { "PF_UNSPEC", 9, PF_UNSPEC },
444           #endif
445           #ifdef PF_USER
446           { "PF_USER", 7, PF_USER },
447           #endif
448           #ifdef PF_WAN
449           { "PF_WAN", 6, PF_WAN },
450           #endif
451           #ifdef PF_X25
452           { "PF_X25", 6, PF_X25 },
453           #endif
454           #ifdef SCM_CONNECT
455           { "SCM_CONNECT", 11, SCM_CONNECT },
456           #endif
457           #ifdef SCM_CREDENTIALS
458           { "SCM_CREDENTIALS", 15, SCM_CREDENTIALS },
459           #endif
460           #ifdef SCM_CREDS
461           { "SCM_CREDS", 9, SCM_CREDS },
462           #endif
463           #ifdef SCM_TIMESTAMP
464           { "SCM_TIMESTAMP", 13, SCM_TIMESTAMP },
465           #endif
466           #ifdef SOCK_DGRAM
467           { "SOCK_DGRAM", 10, SOCK_DGRAM },
468           #endif
469           #ifdef SOCK_RAW
470           { "SOCK_RAW", 8, SOCK_RAW },
471           #endif
472           #ifdef SOCK_RDM
473           { "SOCK_RDM", 8, SOCK_RDM },
474           #endif
475           #ifdef SOCK_SEQPACKET
476           { "SOCK_SEQPACKET", 14, SOCK_SEQPACKET },
477           #endif
478           #ifdef SOCK_STREAM
479           { "SOCK_STREAM", 11, SOCK_STREAM },
480           #endif
481           #ifdef SOCK_NONBLOCK
482           { "SOCK_NONBLOCK", 13, SOCK_NONBLOCK },
483           #endif
484           #ifdef SOCK_CLOEXEC
485           { "SOCK_CLOEXEC", 12, SOCK_CLOEXEC },
486           #endif
487           #ifdef SOL_SOCKET
488           { "SOL_SOCKET", 10, SOL_SOCKET },
489           #endif
490           #ifdef SOMAXCONN
491           { "SOMAXCONN", 9, SOMAXCONN },
492           #endif
493           #ifdef SO_ACCEPTCONN
494           { "SO_ACCEPTCONN", 13, SO_ACCEPTCONN },
495           #endif
496           #ifdef SO_ATTACH_FILTER
497           { "SO_ATTACH_FILTER", 16, SO_ATTACH_FILTER },
498           #endif
499           #ifdef SO_BACKLOG
500           { "SO_BACKLOG", 10, SO_BACKLOG },
501           #endif
502           #ifdef SO_BROADCAST
503           { "SO_BROADCAST", 12, SO_BROADCAST },
504           #endif
505           #ifdef SO_CHAMELEON
506           { "SO_CHAMELEON", 12, SO_CHAMELEON },
507           #endif
508           #ifdef SO_DEBUG
509           { "SO_DEBUG", 8, SO_DEBUG },
510           #endif
511           #ifdef SO_DETACH_FILTER
512           { "SO_DETACH_FILTER", 16, SO_DETACH_FILTER },
513           #endif
514           #ifdef SO_DGRAM_ERRIND
515           { "SO_DGRAM_ERRIND", 15, SO_DGRAM_ERRIND },
516           #endif
517           #ifdef SO_DOMAIN
518           { "SO_DOMAIN", 9, SO_DOMAIN },
519           #endif
520           #ifdef SO_DONTLINGER
521           { "SO_DONTLINGER", 13, SO_DONTLINGER },
522           #endif
523           #ifdef SO_DONTROUTE
524           { "SO_DONTROUTE", 12, SO_DONTROUTE },
525           #endif
526           #ifdef SO_ERROR
527           { "SO_ERROR", 8, SO_ERROR },
528           #endif
529           #ifdef SO_FAMILY
530           { "SO_FAMILY", 9, SO_FAMILY },
531           #endif
532           #ifdef SO_KEEPALIVE
533           { "SO_KEEPALIVE", 12, SO_KEEPALIVE },
534           #endif
535           #ifdef SO_LINGER
536           { "SO_LINGER", 9, SO_LINGER },
537           #endif
538           #ifdef SO_OOBINLINE
539           { "SO_OOBINLINE", 12, SO_OOBINLINE },
540           #endif
541           #ifdef SO_PASSCRED
542           { "SO_PASSCRED", 11, SO_PASSCRED },
543           #endif
544           #ifdef SO_PASSIFNAME
545           { "SO_PASSIFNAME", 13, SO_PASSIFNAME },
546           #endif
547           #ifdef SO_PEERCRED
548           { "SO_PEERCRED", 11, SO_PEERCRED },
549           #endif
550           #ifdef SO_PROTOCOL
551           { "SO_PROTOCOL", 11, SO_PROTOCOL },
552           #endif
553           #ifdef SO_PROTOTYPE
554           { "SO_PROTOTYPE", 12, SO_PROTOTYPE },
555           #endif
556           #ifdef SO_RCVBUF
557           { "SO_RCVBUF", 9, SO_RCVBUF },
558           #endif
559           #ifdef SO_RCVLOWAT
560           { "SO_RCVLOWAT", 11, SO_RCVLOWAT },
561           #endif
562           #ifdef SO_RCVTIMEO
563           { "SO_RCVTIMEO", 11, SO_RCVTIMEO },
564           #endif
565           #ifdef SO_REUSEADDR
566           { "SO_REUSEADDR", 12, SO_REUSEADDR },
567           #endif
568           #ifdef SO_REUSEPORT
569           { "SO_REUSEPORT", 12, SO_REUSEPORT },
570           #endif
571           #ifdef SO_SECURITY_AUTHENTICATION
572           { "SO_SECURITY_AUTHENTICATION", 26, SO_SECURITY_AUTHENTICATION },
573           #endif
574           #ifdef SO_SECURITY_ENCRYPTION_NETWORK
575           { "SO_SECURITY_ENCRYPTION_NETWORK", 30, SO_SECURITY_ENCRYPTION_NETWORK },
576           #endif
577           #ifdef SO_SECURITY_ENCRYPTION_TRANSPORT
578           { "SO_SECURITY_ENCRYPTION_TRANSPORT", 32, SO_SECURITY_ENCRYPTION_TRANSPORT },
579           #endif
580           #ifdef SO_SNDBUF
581           { "SO_SNDBUF", 9, SO_SNDBUF },
582           #endif
583           #ifdef SO_SNDLOWAT
584           { "SO_SNDLOWAT", 11, SO_SNDLOWAT },
585           #endif
586           #ifdef SO_SNDTIMEO
587           { "SO_SNDTIMEO", 11, SO_SNDTIMEO },
588           #endif
589           #ifdef SO_STATE
590           { "SO_STATE", 8, SO_STATE },
591           #endif
592           #ifdef SO_TYPE
593           { "SO_TYPE", 7, SO_TYPE },
594           #endif
595           #ifdef SO_USELOOPBACK
596           { "SO_USELOOPBACK", 14, SO_USELOOPBACK },
597           #endif
598           #ifdef SO_XOPEN
599           { "SO_XOPEN", 8, SO_XOPEN },
600           #endif
601           #ifdef SO_XSE
602           { "SO_XSE", 6, SO_XSE },
603           #endif
604           #ifdef TCP_CONGESTION
605           { "TCP_CONGESTION", 14, TCP_CONGESTION },
606           #endif
607           #ifdef TCP_CONNECTIONTIMEOUT
608           { "TCP_CONNECTIONTIMEOUT", 21, TCP_CONNECTIONTIMEOUT },
609           #endif
610           #ifdef TCP_CORK
611           { "TCP_CORK", 8, TCP_CORK },
612           #endif
613           #ifdef TCP_DEFER_ACCEPT
614           { "TCP_DEFER_ACCEPT", 16, TCP_DEFER_ACCEPT },
615           #endif
616           #ifdef TCP_INFO
617           { "TCP_INFO", 8, TCP_INFO },
618           #endif
619           #ifdef TCP_INIT_CWND
620           { "TCP_INIT_CWND", 13, TCP_INIT_CWND },
621           #endif
622           #ifdef TCP_KEEPALIVE
623           { "TCP_KEEPALIVE", 13, TCP_KEEPALIVE },
624           #endif
625           #ifdef TCP_KEEPCNT
626           { "TCP_KEEPCNT", 11, TCP_KEEPCNT },
627           #endif
628           #ifdef TCP_KEEPIDLE
629           { "TCP_KEEPIDLE", 12, TCP_KEEPIDLE },
630           #endif
631           #ifdef TCP_KEEPINTVL
632           { "TCP_KEEPINTVL", 13, TCP_KEEPINTVL },
633           #endif
634           #ifdef TCP_LINGER2
635           { "TCP_LINGER2", 11, TCP_LINGER2 },
636           #endif
637           #ifdef TCP_MAXRT
638           { "TCP_MAXRT", 9, TCP_MAXRT },
639           #endif
640           #ifdef TCP_MAXSEG
641           { "TCP_MAXSEG", 10, TCP_MAXSEG },
642           #endif
643           #ifdef TCP_MD5SIG
644           { "TCP_MD5SIG", 10, TCP_MD5SIG },
645           #endif
646           #ifdef TCP_NODELAY
647           { "TCP_NODELAY", 11, TCP_NODELAY },
648           #endif
649           #ifdef TCP_NOOPT
650           { "TCP_NOOPT", 9, TCP_NOOPT },
651           #endif
652           #ifdef TCP_NOPUSH
653           { "TCP_NOPUSH", 10, TCP_NOPUSH },
654           #endif
655           #ifdef TCP_QUICKACK
656           { "TCP_QUICKACK", 12, TCP_QUICKACK },
657           #endif
658           #ifdef TCP_SACK_ENABLE
659           { "TCP_SACK_ENABLE", 15, TCP_SACK_ENABLE },
660           #endif
661           #ifdef TCP_STDURG
662           { "TCP_STDURG", 10, TCP_STDURG },
663           #endif
664           #ifdef TCP_SYNCNT
665           { "TCP_SYNCNT", 10, TCP_SYNCNT },
666           #endif
667           #ifdef TCP_WINDOW_CLAMP
668           { "TCP_WINDOW_CLAMP", 16, TCP_WINDOW_CLAMP },
669           #endif
670           #ifdef UIO_MAXIOV
671           { "UIO_MAXIOV", 10, UIO_MAXIOV },
672           #endif
673           #ifdef IPPROTO_IP
674           { "IPPROTO_IP", 10, IPPROTO_IP },
675           #endif
676           #ifdef IPPROTO_IPV6
677           { "IPPROTO_IPV6", 12, IPPROTO_IPV6 },
678           #endif
679           #ifdef IPPROTO_RAW
680           { "IPPROTO_RAW", 11, IPPROTO_RAW },
681           #endif
682           #ifdef IPPROTO_ICMP
683           { "IPPROTO_ICMP", 12, IPPROTO_ICMP },
684           #endif
685           #ifdef IPPROTO_TCP
686           { "IPPROTO_TCP", 11, IPPROTO_TCP },
687           #endif
688           #ifdef IPPROTO_UDP
689           { "IPPROTO_UDP", 11, IPPROTO_UDP },
690           #endif
691           #ifdef SHUT_RD
692           { "SHUT_RD", 7, SHUT_RD },
693           #endif
694           #ifdef SHUT_WR
695           { "SHUT_WR", 7, SHUT_WR },
696           #endif
697           #ifdef SHUT_RDWR
698           { "SHUT_RDWR", 9, SHUT_RDWR },
699           #endif
700           #if defined(MSG_CTRUNC) || defined(HAS_MSG_CTRUNC) /* might be an enum */
701           { "MSG_CTRUNC", 10, MSG_CTRUNC },
702           #endif
703           #if defined(MSG_DONTROUTE) || defined(HAS_MSG_DONTROUTE) /* might be an enum */
704           { "MSG_DONTROUTE", 13, MSG_DONTROUTE },
705           #endif
706           #if defined(MSG_OOB) || defined(HAS_MSG_OOB) /* might be an enum */
707           { "MSG_OOB", 7, MSG_OOB },
708           #endif
709           #if defined(MSG_PEEK) || defined(HAS_MSG_PEEK) /* might be an enum */
710           { "MSG_PEEK", 8, MSG_PEEK },
711           #endif
712           #if defined(MSG_PROXY) || defined(HAS_MSG_PROXY) /* might be an enum */
713           { "MSG_PROXY", 9, MSG_PROXY },
714           #endif
715           #if defined(SCM_RIGHTS) || defined(HAS_SCM_RIGHTS) /* might be an enum */
716           { "SCM_RIGHTS", 10, SCM_RIGHTS },
717           #endif
718           #ifndef IPPROTO_IP
719           /* This is the default value: */
720           { "IPPROTO_IP", 10, 0 },
721           #endif
722           #ifndef IPPROTO_IPV6
723           /* This is the default value: */
724           { "IPPROTO_IPV6", 12, 41 },
725           #endif
726           #ifndef IPPROTO_RAW
727           /* This is the default value: */
728           { "IPPROTO_RAW", 11, 255 },
729           #endif
730           #ifndef IPPROTO_ICMP
731           /* This is the default value: */
732           { "IPPROTO_ICMP", 12, 1 },
733           #endif
734           #ifndef IPPROTO_TCP
735           /* This is the default value: */
736           { "IPPROTO_TCP", 11, 6 },
737           #endif
738           #ifndef IPPROTO_UDP
739           /* This is the default value: */
740           { "IPPROTO_UDP", 11, 17 },
741           #endif
742           #ifndef SHUT_RD
743           /* This is the default value: */
744           { "SHUT_RD", 7, 0 },
745           #endif
746           #ifndef SHUT_WR
747           /* This is the default value: */
748           { "SHUT_WR", 7, 1 },
749           #endif
750           #ifndef SHUT_RDWR
751           /* This is the default value: */
752           { "SHUT_RDWR", 9, 2 },
753           #endif
754           { NULL, 0, 0 } };
755           const struct iv_s *value_for_iv = values_for_iv;
756 97944         while (value_for_iv->name) {
757 96672         constant_add_symbol(aTHX_ symbol_table, value_for_iv->name,
758           value_for_iv->namelen, newSViv(value_for_iv->value));
759 96672         ++value_for_iv;
760           }
761           if (C_ARRAY_LENGTH(values_for_notfound) > 1) {
762           #ifndef SYMBIAN
763 636         HV *const constant_missing = get_missing_hash(aTHX);
764           #endif
765           const struct notfound_s *value_for_notfound = values_for_notfound;
766           do {
767            
768           /* Need to add prototypes, else parsing will vary by platform. */
769 53424         HE *he = (HE*) hv_common_key_len(symbol_table,
770           value_for_notfound->name,
771           value_for_notfound->namelen,
772           HV_FETCH_LVALUE, NULL, 0);
773           SV *sv;
774           #ifndef SYMBIAN
775           HEK *hek;
776           #endif
777 53424         if (!he) {
778 0         Perl_croak(aTHX_
779           "Couldn't add key '%s' to %%Socket::",
780           value_for_notfound->name);
781           }
782 53424         sv = HeVAL(he);
783 53424         if (!SvOK(sv) && SvTYPE(sv) != SVt_PVGV) {
784           /* Nothing was here before, so mark a prototype of "" */
785 53424         sv_setpvn(sv, "", 0);
786 0         } else if (SvPOK(sv) && SvCUR(sv) == 0) {
787           /* There is already a prototype of "" - do nothing */
788           } else {
789           /* Someone has been here before us - have to make a real
790           typeglob. */
791           /* It turns out to be incredibly hard to deal with all the
792           corner cases of sub foo (); and reporting errors correctly,
793           so lets cheat a bit. Start with a constant subroutine */
794 0         CV *cv = newCONSTSUB(symbol_table,
795           value_for_notfound->name,
796           &PL_sv_yes);
797           /* and then turn it into a non constant declaration only. */
798 0         SvREFCNT_dec(CvXSUBANY(cv).any_ptr);
799 0         CvCONST_off(cv);
800 0         CvXSUB(cv) = NULL;
801 0         CvXSUBANY(cv).any_ptr = NULL;
802           }
803           #ifndef SYMBIAN
804 53424         hek = HeKEY_hek(he);
805 53424         if (!hv_common(constant_missing, NULL, HEK_KEY(hek),
806           HEK_LEN(hek), HEK_FLAGS(hek), HV_FETCH_ISSTORE,
807           &PL_sv_yes, HEK_HASH(hek)))
808 0         Perl_croak(aTHX_ "Couldn't add key '%s' to missing_hash",
809           value_for_notfound->name);
810           #endif
811 53424         } while ((++value_for_notfound)->name);
812           }
813           #ifdef INADDR_ANY
814           {
815           SV * temp0;
816 636         struct in_addr ip_address; ip_address.s_addr = htonl(INADDR_ANY);
817 636         temp0 = newSVpvn_flags((char *)&ip_address,sizeof(ip_address), SVs_TEMP);
818 636         constant_add_symbol(aTHX_ symbol_table, "INADDR_ANY",
819           10, SvREFCNT_inc(temp0));
820           }
821           #endif
822           #ifdef INADDR_LOOPBACK
823           {
824           SV * temp0;
825 636         struct in_addr ip_address; ip_address.s_addr = htonl(INADDR_LOOPBACK);
826 636         temp0 = newSVpvn_flags((char *)&ip_address,sizeof(ip_address), SVs_TEMP);
827 636         constant_add_symbol(aTHX_ symbol_table, "INADDR_LOOPBACK",
828           15, SvREFCNT_inc(temp0));
829           }
830           #endif
831           #ifdef INADDR_NONE
832           {
833           SV * temp0;
834 636         struct in_addr ip_address; ip_address.s_addr = htonl(INADDR_NONE);
835 636         temp0 = newSVpvn_flags((char *)&ip_address,sizeof(ip_address), SVs_TEMP);
836 636         constant_add_symbol(aTHX_ symbol_table, "INADDR_NONE",
837           11, SvREFCNT_inc(temp0));
838           }
839           #endif
840           #ifdef INADDR_BROADCAST
841           {
842           SV * temp0;
843 636         struct in_addr ip_address; ip_address.s_addr = htonl(INADDR_BROADCAST);
844 636         temp0 = newSVpvn_flags((char *)&ip_address,sizeof(ip_address), SVs_TEMP);
845 636         constant_add_symbol(aTHX_ symbol_table, "INADDR_BROADCAST",
846           16, SvREFCNT_inc(temp0));
847           }
848           #endif
849           #ifdef IN6ADDR_ANY_INIT
850           {
851           SV * temp0;
852 636         struct in6_addr ip6_address = IN6ADDR_ANY_INIT;
853 636         temp0 = newSVpvn_flags((char *)&ip6_address,sizeof(ip6_address), SVs_TEMP);
854 636         constant_add_symbol(aTHX_ symbol_table, "IN6ADDR_ANY",
855           11, SvREFCNT_inc(temp0));
856           }
857           #endif
858           #ifdef IN6ADDR_LOOPBACK_INIT
859           {
860           SV * temp0;
861 636         struct in6_addr ip6_address = IN6ADDR_LOOPBACK_INIT;
862 636         temp0 = newSVpvn_flags((char *)&ip6_address,sizeof(ip6_address), SVs_TEMP);
863 636         constant_add_symbol(aTHX_ symbol_table, "IN6ADDR_LOOPBACK",
864           16, SvREFCNT_inc(temp0));
865           }
866           #endif
867           /* As we've been creating subroutines, we better invalidate any cached
868           methods */
869 636         mro_method_changed_in(symbol_table);
870           }
871            
872           void
873           AUTOLOAD()
874           PROTOTYPE: DISABLE
875           PREINIT:
876 0         SV *sv = newSVpvn_flags(SvPVX(cv), SvCUR(cv), SVs_TEMP | SvUTF8(cv));
877 0         const COP *cop = PL_curcop;
878           PPCODE:
879           #ifndef SYMBIAN
880           /* It's not obvious how to calculate this at C pre-processor time.
881           However, any compiler optimiser worth its salt should be able to
882           remove the dead code, and hopefully the now-obviously-unused static
883           function too. */
884 0         HV *constant_missing = (C_ARRAY_LENGTH(values_for_notfound) > 1)
885           ? get_missing_hash(aTHX) : NULL;
886 0         if ((C_ARRAY_LENGTH(values_for_notfound) > 1)
887 0         ? hv_exists_ent(constant_missing, sv, 0) : 0) {
888 0         sv = newSVpvf("Your vendor has not defined Socket macro %" SVf
889           ", used at %" COP_FILE_F " line %d\n", sv,
890 0         COP_FILE(cop), CopLINE(cop));
891           } else
892           #endif
893           {
894 0         sv = newSVpvf("%"SVf" is not a valid Socket macro at %"
895 0         COP_FILE_F " line %d\n", sv, COP_FILE(cop), CopLINE(cop));
896           }
897 0         croak_sv(sv_2mortal(sv));