xref: /third_party/node/src/node_constants.cc (revision 1cb0ef41)
1// Copyright Joyent, Inc. and other Node contributors.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and associated documentation files (the
5// "Software"), to deal in the Software without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Software, and to permit
8// persons to whom the Software is furnished to do so, subject to the
9// following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Software.
13//
14// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20// USE OR OTHER DEALINGS IN THE SOFTWARE.
21
22#include "env-inl.h"
23#include "node_constants.h"
24#include "node_internals.h"
25#include "util-inl.h"
26
27#include "zlib.h"
28
29#if !defined(_MSC_VER)
30#include <unistd.h>
31#endif
32
33#include <fcntl.h>
34#include <sys/types.h>
35#include <sys/stat.h>
36
37
38#if HAVE_OPENSSL
39#include <openssl/ec.h>
40#include <openssl/ssl.h>
41#ifndef OPENSSL_NO_ENGINE
42#include <openssl/engine.h>
43#endif  // !OPENSSL_NO_ENGINE
44#endif  // HAVE_OPENSSL
45
46#if defined(__POSIX__)
47#include <dlfcn.h>
48#endif
49
50#if defined(_WIN32)
51#include <io.h>  // _S_IREAD _S_IWRITE
52#ifndef S_IRUSR
53#define S_IRUSR _S_IREAD
54#endif  // S_IRUSR
55#ifndef S_IWUSR
56#define S_IWUSR _S_IWRITE
57#endif  // S_IWUSR
58#endif
59
60#include <cerrno>
61#include <csignal>
62#include <limits>
63
64namespace node {
65
66using v8::Local;
67using v8::Object;
68
69namespace {
70
71void DefineErrnoConstants(Local<Object> target) {
72#ifdef E2BIG
73  NODE_DEFINE_CONSTANT(target, E2BIG);
74#endif
75
76#ifdef EACCES
77  NODE_DEFINE_CONSTANT(target, EACCES);
78#endif
79
80#ifdef EADDRINUSE
81  NODE_DEFINE_CONSTANT(target, EADDRINUSE);
82#endif
83
84#ifdef EADDRNOTAVAIL
85  NODE_DEFINE_CONSTANT(target, EADDRNOTAVAIL);
86#endif
87
88#ifdef EAFNOSUPPORT
89  NODE_DEFINE_CONSTANT(target, EAFNOSUPPORT);
90#endif
91
92#ifdef EAGAIN
93  NODE_DEFINE_CONSTANT(target, EAGAIN);
94#endif
95
96#ifdef EALREADY
97  NODE_DEFINE_CONSTANT(target, EALREADY);
98#endif
99
100#ifdef EBADF
101  NODE_DEFINE_CONSTANT(target, EBADF);
102#endif
103
104#ifdef EBADMSG
105  NODE_DEFINE_CONSTANT(target, EBADMSG);
106#endif
107
108#ifdef EBUSY
109  NODE_DEFINE_CONSTANT(target, EBUSY);
110#endif
111
112#ifdef ECANCELED
113  NODE_DEFINE_CONSTANT(target, ECANCELED);
114#endif
115
116#ifdef ECHILD
117  NODE_DEFINE_CONSTANT(target, ECHILD);
118#endif
119
120#ifdef ECONNABORTED
121  NODE_DEFINE_CONSTANT(target, ECONNABORTED);
122#endif
123
124#ifdef ECONNREFUSED
125  NODE_DEFINE_CONSTANT(target, ECONNREFUSED);
126#endif
127
128#ifdef ECONNRESET
129  NODE_DEFINE_CONSTANT(target, ECONNRESET);
130#endif
131
132#ifdef EDEADLK
133  NODE_DEFINE_CONSTANT(target, EDEADLK);
134#endif
135
136#ifdef EDESTADDRREQ
137  NODE_DEFINE_CONSTANT(target, EDESTADDRREQ);
138#endif
139
140#ifdef EDOM
141  NODE_DEFINE_CONSTANT(target, EDOM);
142#endif
143
144#ifdef EDQUOT
145  NODE_DEFINE_CONSTANT(target, EDQUOT);
146#endif
147
148#ifdef EEXIST
149  NODE_DEFINE_CONSTANT(target, EEXIST);
150#endif
151
152#ifdef EFAULT
153  NODE_DEFINE_CONSTANT(target, EFAULT);
154#endif
155
156#ifdef EFBIG
157  NODE_DEFINE_CONSTANT(target, EFBIG);
158#endif
159
160#ifdef EHOSTUNREACH
161  NODE_DEFINE_CONSTANT(target, EHOSTUNREACH);
162#endif
163
164#ifdef EIDRM
165  NODE_DEFINE_CONSTANT(target, EIDRM);
166#endif
167
168#ifdef EILSEQ
169  NODE_DEFINE_CONSTANT(target, EILSEQ);
170#endif
171
172#ifdef EINPROGRESS
173  NODE_DEFINE_CONSTANT(target, EINPROGRESS);
174#endif
175
176#ifdef EINTR
177  NODE_DEFINE_CONSTANT(target, EINTR);
178#endif
179
180#ifdef EINVAL
181  NODE_DEFINE_CONSTANT(target, EINVAL);
182#endif
183
184#ifdef EIO
185  NODE_DEFINE_CONSTANT(target, EIO);
186#endif
187
188#ifdef EISCONN
189  NODE_DEFINE_CONSTANT(target, EISCONN);
190#endif
191
192#ifdef EISDIR
193  NODE_DEFINE_CONSTANT(target, EISDIR);
194#endif
195
196#ifdef ELOOP
197  NODE_DEFINE_CONSTANT(target, ELOOP);
198#endif
199
200#ifdef EMFILE
201  NODE_DEFINE_CONSTANT(target, EMFILE);
202#endif
203
204#ifdef EMLINK
205  NODE_DEFINE_CONSTANT(target, EMLINK);
206#endif
207
208#ifdef EMSGSIZE
209  NODE_DEFINE_CONSTANT(target, EMSGSIZE);
210#endif
211
212#ifdef EMULTIHOP
213  NODE_DEFINE_CONSTANT(target, EMULTIHOP);
214#endif
215
216#ifdef ENAMETOOLONG
217  NODE_DEFINE_CONSTANT(target, ENAMETOOLONG);
218#endif
219
220#ifdef ENETDOWN
221  NODE_DEFINE_CONSTANT(target, ENETDOWN);
222#endif
223
224#ifdef ENETRESET
225  NODE_DEFINE_CONSTANT(target, ENETRESET);
226#endif
227
228#ifdef ENETUNREACH
229  NODE_DEFINE_CONSTANT(target, ENETUNREACH);
230#endif
231
232#ifdef ENFILE
233  NODE_DEFINE_CONSTANT(target, ENFILE);
234#endif
235
236#ifdef ENOBUFS
237  NODE_DEFINE_CONSTANT(target, ENOBUFS);
238#endif
239
240#ifdef ENODATA
241  NODE_DEFINE_CONSTANT(target, ENODATA);
242#endif
243
244#ifdef ENODEV
245  NODE_DEFINE_CONSTANT(target, ENODEV);
246#endif
247
248#ifdef ENOENT
249  NODE_DEFINE_CONSTANT(target, ENOENT);
250#endif
251
252#ifdef ENOEXEC
253  NODE_DEFINE_CONSTANT(target, ENOEXEC);
254#endif
255
256#ifdef ENOLCK
257  NODE_DEFINE_CONSTANT(target, ENOLCK);
258#endif
259
260#ifdef ENOLINK
261  NODE_DEFINE_CONSTANT(target, ENOLINK);
262#endif
263
264#ifdef ENOMEM
265  NODE_DEFINE_CONSTANT(target, ENOMEM);
266#endif
267
268#ifdef ENOMSG
269  NODE_DEFINE_CONSTANT(target, ENOMSG);
270#endif
271
272#ifdef ENOPROTOOPT
273  NODE_DEFINE_CONSTANT(target, ENOPROTOOPT);
274#endif
275
276#ifdef ENOSPC
277  NODE_DEFINE_CONSTANT(target, ENOSPC);
278#endif
279
280#ifdef ENOSR
281  NODE_DEFINE_CONSTANT(target, ENOSR);
282#endif
283
284#ifdef ENOSTR
285  NODE_DEFINE_CONSTANT(target, ENOSTR);
286#endif
287
288#ifdef ENOSYS
289  NODE_DEFINE_CONSTANT(target, ENOSYS);
290#endif
291
292#ifdef ENOTCONN
293  NODE_DEFINE_CONSTANT(target, ENOTCONN);
294#endif
295
296#ifdef ENOTDIR
297  NODE_DEFINE_CONSTANT(target, ENOTDIR);
298#endif
299
300#ifdef ENOTEMPTY
301  NODE_DEFINE_CONSTANT(target, ENOTEMPTY);
302#endif
303
304#ifdef ENOTSOCK
305  NODE_DEFINE_CONSTANT(target, ENOTSOCK);
306#endif
307
308#ifdef ENOTSUP
309  NODE_DEFINE_CONSTANT(target, ENOTSUP);
310#endif
311
312#ifdef ENOTTY
313  NODE_DEFINE_CONSTANT(target, ENOTTY);
314#endif
315
316#ifdef ENXIO
317  NODE_DEFINE_CONSTANT(target, ENXIO);
318#endif
319
320#ifdef EOPNOTSUPP
321  NODE_DEFINE_CONSTANT(target, EOPNOTSUPP);
322#endif
323
324#ifdef EOVERFLOW
325  NODE_DEFINE_CONSTANT(target, EOVERFLOW);
326#endif
327
328#ifdef EPERM
329  NODE_DEFINE_CONSTANT(target, EPERM);
330#endif
331
332#ifdef EPIPE
333  NODE_DEFINE_CONSTANT(target, EPIPE);
334#endif
335
336#ifdef EPROTO
337  NODE_DEFINE_CONSTANT(target, EPROTO);
338#endif
339
340#ifdef EPROTONOSUPPORT
341  NODE_DEFINE_CONSTANT(target, EPROTONOSUPPORT);
342#endif
343
344#ifdef EPROTOTYPE
345  NODE_DEFINE_CONSTANT(target, EPROTOTYPE);
346#endif
347
348#ifdef ERANGE
349  NODE_DEFINE_CONSTANT(target, ERANGE);
350#endif
351
352#ifdef EROFS
353  NODE_DEFINE_CONSTANT(target, EROFS);
354#endif
355
356#ifdef ESPIPE
357  NODE_DEFINE_CONSTANT(target, ESPIPE);
358#endif
359
360#ifdef ESRCH
361  NODE_DEFINE_CONSTANT(target, ESRCH);
362#endif
363
364#ifdef ESTALE
365  NODE_DEFINE_CONSTANT(target, ESTALE);
366#endif
367
368#ifdef ETIME
369  NODE_DEFINE_CONSTANT(target, ETIME);
370#endif
371
372#ifdef ETIMEDOUT
373  NODE_DEFINE_CONSTANT(target, ETIMEDOUT);
374#endif
375
376#ifdef ETXTBSY
377  NODE_DEFINE_CONSTANT(target, ETXTBSY);
378#endif
379
380#ifdef EWOULDBLOCK
381  NODE_DEFINE_CONSTANT(target, EWOULDBLOCK);
382#endif
383
384#ifdef EXDEV
385  NODE_DEFINE_CONSTANT(target, EXDEV);
386#endif
387}
388
389void DefineWindowsErrorConstants(Local<Object> target) {
390#ifdef WSAEINTR
391  NODE_DEFINE_CONSTANT(target, WSAEINTR);
392#endif
393
394#ifdef WSAEBADF
395  NODE_DEFINE_CONSTANT(target, WSAEBADF);
396#endif
397
398#ifdef WSAEACCES
399  NODE_DEFINE_CONSTANT(target, WSAEACCES);
400#endif
401
402#ifdef WSAEFAULT
403  NODE_DEFINE_CONSTANT(target, WSAEFAULT);
404#endif
405
406#ifdef WSAEINVAL
407  NODE_DEFINE_CONSTANT(target, WSAEINVAL);
408#endif
409
410#ifdef WSAEMFILE
411  NODE_DEFINE_CONSTANT(target, WSAEMFILE);
412#endif
413
414#ifdef WSAEWOULDBLOCK
415  NODE_DEFINE_CONSTANT(target, WSAEWOULDBLOCK);
416#endif
417
418#ifdef WSAEINPROGRESS
419  NODE_DEFINE_CONSTANT(target, WSAEINPROGRESS);
420#endif
421
422#ifdef WSAEALREADY
423  NODE_DEFINE_CONSTANT(target, WSAEALREADY);
424#endif
425
426#ifdef WSAENOTSOCK
427  NODE_DEFINE_CONSTANT(target, WSAENOTSOCK);
428#endif
429
430#ifdef WSAEDESTADDRREQ
431  NODE_DEFINE_CONSTANT(target, WSAEDESTADDRREQ);
432#endif
433
434#ifdef WSAEMSGSIZE
435  NODE_DEFINE_CONSTANT(target, WSAEMSGSIZE);
436#endif
437
438#ifdef WSAEPROTOTYPE
439  NODE_DEFINE_CONSTANT(target, WSAEPROTOTYPE);
440#endif
441
442#ifdef WSAENOPROTOOPT
443  NODE_DEFINE_CONSTANT(target, WSAENOPROTOOPT);
444#endif
445
446#ifdef WSAEPROTONOSUPPORT
447  NODE_DEFINE_CONSTANT(target, WSAEPROTONOSUPPORT);
448#endif
449
450#ifdef WSAESOCKTNOSUPPORT
451  NODE_DEFINE_CONSTANT(target, WSAESOCKTNOSUPPORT);
452#endif
453
454#ifdef WSAEOPNOTSUPP
455  NODE_DEFINE_CONSTANT(target, WSAEOPNOTSUPP);
456#endif
457
458#ifdef WSAEPFNOSUPPORT
459  NODE_DEFINE_CONSTANT(target, WSAEPFNOSUPPORT);
460#endif
461
462#ifdef WSAEAFNOSUPPORT
463  NODE_DEFINE_CONSTANT(target, WSAEAFNOSUPPORT);
464#endif
465
466#ifdef WSAEADDRINUSE
467  NODE_DEFINE_CONSTANT(target, WSAEADDRINUSE);
468#endif
469
470#ifdef WSAEADDRNOTAVAIL
471  NODE_DEFINE_CONSTANT(target, WSAEADDRNOTAVAIL);
472#endif
473
474#ifdef WSAENETDOWN
475  NODE_DEFINE_CONSTANT(target, WSAENETDOWN);
476#endif
477
478#ifdef WSAENETUNREACH
479  NODE_DEFINE_CONSTANT(target, WSAENETUNREACH);
480#endif
481
482#ifdef WSAENETRESET
483  NODE_DEFINE_CONSTANT(target, WSAENETRESET);
484#endif
485
486#ifdef WSAECONNABORTED
487  NODE_DEFINE_CONSTANT(target, WSAECONNABORTED);
488#endif
489
490#ifdef WSAECONNRESET
491  NODE_DEFINE_CONSTANT(target, WSAECONNRESET);
492#endif
493
494#ifdef WSAENOBUFS
495  NODE_DEFINE_CONSTANT(target, WSAENOBUFS);
496#endif
497
498#ifdef WSAEISCONN
499  NODE_DEFINE_CONSTANT(target, WSAEISCONN);
500#endif
501
502#ifdef WSAENOTCONN
503  NODE_DEFINE_CONSTANT(target, WSAENOTCONN);
504#endif
505
506#ifdef WSAESHUTDOWN
507  NODE_DEFINE_CONSTANT(target, WSAESHUTDOWN);
508#endif
509
510#ifdef WSAETOOMANYREFS
511  NODE_DEFINE_CONSTANT(target, WSAETOOMANYREFS);
512#endif
513
514#ifdef WSAETIMEDOUT
515  NODE_DEFINE_CONSTANT(target, WSAETIMEDOUT);
516#endif
517
518#ifdef WSAECONNREFUSED
519  NODE_DEFINE_CONSTANT(target, WSAECONNREFUSED);
520#endif
521
522#ifdef WSAELOOP
523  NODE_DEFINE_CONSTANT(target, WSAELOOP);
524#endif
525
526#ifdef WSAENAMETOOLONG
527  NODE_DEFINE_CONSTANT(target, WSAENAMETOOLONG);
528#endif
529
530#ifdef WSAEHOSTDOWN
531  NODE_DEFINE_CONSTANT(target, WSAEHOSTDOWN);
532#endif
533
534#ifdef WSAEHOSTUNREACH
535  NODE_DEFINE_CONSTANT(target, WSAEHOSTUNREACH);
536#endif
537
538#ifdef WSAENOTEMPTY
539  NODE_DEFINE_CONSTANT(target, WSAENOTEMPTY);
540#endif
541
542#ifdef WSAEPROCLIM
543  NODE_DEFINE_CONSTANT(target, WSAEPROCLIM);
544#endif
545
546#ifdef WSAEUSERS
547  NODE_DEFINE_CONSTANT(target, WSAEUSERS);
548#endif
549
550#ifdef WSAEDQUOT
551  NODE_DEFINE_CONSTANT(target, WSAEDQUOT);
552#endif
553
554#ifdef WSAESTALE
555  NODE_DEFINE_CONSTANT(target, WSAESTALE);
556#endif
557
558#ifdef WSAEREMOTE
559  NODE_DEFINE_CONSTANT(target, WSAEREMOTE);
560#endif
561
562#ifdef WSASYSNOTREADY
563  NODE_DEFINE_CONSTANT(target, WSASYSNOTREADY);
564#endif
565
566#ifdef WSAVERNOTSUPPORTED
567  NODE_DEFINE_CONSTANT(target, WSAVERNOTSUPPORTED);
568#endif
569
570#ifdef WSANOTINITIALISED
571  NODE_DEFINE_CONSTANT(target, WSANOTINITIALISED);
572#endif
573
574#ifdef WSAEDISCON
575  NODE_DEFINE_CONSTANT(target, WSAEDISCON);
576#endif
577
578#ifdef WSAENOMORE
579  NODE_DEFINE_CONSTANT(target, WSAENOMORE);
580#endif
581
582#ifdef WSAECANCELLED
583  NODE_DEFINE_CONSTANT(target, WSAECANCELLED);
584#endif
585
586#ifdef WSAEINVALIDPROCTABLE
587  NODE_DEFINE_CONSTANT(target, WSAEINVALIDPROCTABLE);
588#endif
589
590#ifdef WSAEINVALIDPROVIDER
591  NODE_DEFINE_CONSTANT(target, WSAEINVALIDPROVIDER);
592#endif
593
594#ifdef WSAEPROVIDERFAILEDINIT
595  NODE_DEFINE_CONSTANT(target, WSAEPROVIDERFAILEDINIT);
596#endif
597
598#ifdef WSASYSCALLFAILURE
599  NODE_DEFINE_CONSTANT(target, WSASYSCALLFAILURE);
600#endif
601
602#ifdef WSASERVICE_NOT_FOUND
603  NODE_DEFINE_CONSTANT(target, WSASERVICE_NOT_FOUND);
604#endif
605
606#ifdef WSATYPE_NOT_FOUND
607  NODE_DEFINE_CONSTANT(target, WSATYPE_NOT_FOUND);
608#endif
609
610#ifdef WSA_E_NO_MORE
611  NODE_DEFINE_CONSTANT(target, WSA_E_NO_MORE);
612#endif
613
614#ifdef WSA_E_CANCELLED
615  NODE_DEFINE_CONSTANT(target, WSA_E_CANCELLED);
616#endif
617
618#ifdef WSAEREFUSED
619  NODE_DEFINE_CONSTANT(target, WSAEREFUSED);
620#endif
621}
622
623void DefineSignalConstants(Local<Object> target) {
624#ifdef SIGHUP
625  NODE_DEFINE_CONSTANT(target, SIGHUP);
626#endif
627
628#ifdef SIGINT
629  NODE_DEFINE_CONSTANT(target, SIGINT);
630#endif
631
632#ifdef SIGQUIT
633  NODE_DEFINE_CONSTANT(target, SIGQUIT);
634#endif
635
636#ifdef SIGILL
637  NODE_DEFINE_CONSTANT(target, SIGILL);
638#endif
639
640#ifdef SIGTRAP
641  NODE_DEFINE_CONSTANT(target, SIGTRAP);
642#endif
643
644#ifdef SIGABRT
645  NODE_DEFINE_CONSTANT(target, SIGABRT);
646#endif
647
648#ifdef SIGIOT
649  NODE_DEFINE_CONSTANT(target, SIGIOT);
650#endif
651
652#ifdef SIGBUS
653  NODE_DEFINE_CONSTANT(target, SIGBUS);
654#endif
655
656#ifdef SIGFPE
657  NODE_DEFINE_CONSTANT(target, SIGFPE);
658#endif
659
660#ifdef SIGKILL
661  NODE_DEFINE_CONSTANT(target, SIGKILL);
662#endif
663
664#ifdef SIGUSR1
665  NODE_DEFINE_CONSTANT(target, SIGUSR1);
666#endif
667
668#ifdef SIGSEGV
669  NODE_DEFINE_CONSTANT(target, SIGSEGV);
670#endif
671
672#ifdef SIGUSR2
673  NODE_DEFINE_CONSTANT(target, SIGUSR2);
674#endif
675
676#ifdef SIGPIPE
677  NODE_DEFINE_CONSTANT(target, SIGPIPE);
678#endif
679
680#ifdef SIGALRM
681  NODE_DEFINE_CONSTANT(target, SIGALRM);
682#endif
683
684  NODE_DEFINE_CONSTANT(target, SIGTERM);
685
686#ifdef SIGCHLD
687  NODE_DEFINE_CONSTANT(target, SIGCHLD);
688#endif
689
690#ifdef SIGSTKFLT
691  NODE_DEFINE_CONSTANT(target, SIGSTKFLT);
692#endif
693
694
695#ifdef SIGCONT
696  NODE_DEFINE_CONSTANT(target, SIGCONT);
697#endif
698
699#ifdef SIGSTOP
700  NODE_DEFINE_CONSTANT(target, SIGSTOP);
701#endif
702
703#ifdef SIGTSTP
704  NODE_DEFINE_CONSTANT(target, SIGTSTP);
705#endif
706
707#ifdef SIGBREAK
708  NODE_DEFINE_CONSTANT(target, SIGBREAK);
709#endif
710
711#ifdef SIGTTIN
712  NODE_DEFINE_CONSTANT(target, SIGTTIN);
713#endif
714
715#ifdef SIGTTOU
716  NODE_DEFINE_CONSTANT(target, SIGTTOU);
717#endif
718
719#ifdef SIGURG
720  NODE_DEFINE_CONSTANT(target, SIGURG);
721#endif
722
723#ifdef SIGXCPU
724  NODE_DEFINE_CONSTANT(target, SIGXCPU);
725#endif
726
727#ifdef SIGXFSZ
728  NODE_DEFINE_CONSTANT(target, SIGXFSZ);
729#endif
730
731#ifdef SIGVTALRM
732  NODE_DEFINE_CONSTANT(target, SIGVTALRM);
733#endif
734
735#ifdef SIGPROF
736  NODE_DEFINE_CONSTANT(target, SIGPROF);
737#endif
738
739#ifdef SIGWINCH
740  NODE_DEFINE_CONSTANT(target, SIGWINCH);
741#endif
742
743#ifdef SIGIO
744  NODE_DEFINE_CONSTANT(target, SIGIO);
745#endif
746
747#ifdef SIGPOLL
748  NODE_DEFINE_CONSTANT(target, SIGPOLL);
749#endif
750
751#ifdef SIGLOST
752  NODE_DEFINE_CONSTANT(target, SIGLOST);
753#endif
754
755#ifdef SIGPWR
756  NODE_DEFINE_CONSTANT(target, SIGPWR);
757#endif
758
759#ifdef SIGINFO
760  NODE_DEFINE_CONSTANT(target, SIGINFO);
761#endif
762
763#ifdef SIGSYS
764  NODE_DEFINE_CONSTANT(target, SIGSYS);
765#endif
766
767#ifdef SIGUNUSED
768  NODE_DEFINE_CONSTANT(target, SIGUNUSED);
769#endif
770}
771
772void DefinePriorityConstants(Local<Object> target) {
773#ifdef UV_PRIORITY_LOW
774# define PRIORITY_LOW UV_PRIORITY_LOW
775  NODE_DEFINE_CONSTANT(target, PRIORITY_LOW);
776# undef PRIORITY_LOW
777#endif
778
779#ifdef UV_PRIORITY_BELOW_NORMAL
780# define PRIORITY_BELOW_NORMAL UV_PRIORITY_BELOW_NORMAL
781  NODE_DEFINE_CONSTANT(target, PRIORITY_BELOW_NORMAL);
782# undef PRIORITY_BELOW_NORMAL
783#endif
784
785#ifdef UV_PRIORITY_NORMAL
786# define PRIORITY_NORMAL UV_PRIORITY_NORMAL
787  NODE_DEFINE_CONSTANT(target, PRIORITY_NORMAL);
788# undef PRIORITY_NORMAL
789#endif
790
791#ifdef UV_PRIORITY_ABOVE_NORMAL
792# define PRIORITY_ABOVE_NORMAL UV_PRIORITY_ABOVE_NORMAL
793  NODE_DEFINE_CONSTANT(target, PRIORITY_ABOVE_NORMAL);
794# undef PRIORITY_ABOVE_NORMAL
795#endif
796
797#ifdef UV_PRIORITY_HIGH
798# define PRIORITY_HIGH UV_PRIORITY_HIGH
799  NODE_DEFINE_CONSTANT(target, PRIORITY_HIGH);
800# undef PRIORITY_HIGH
801#endif
802
803#ifdef UV_PRIORITY_HIGHEST
804# define PRIORITY_HIGHEST UV_PRIORITY_HIGHEST
805  NODE_DEFINE_CONSTANT(target, PRIORITY_HIGHEST);
806# undef PRIORITY_HIGHEST
807#endif
808}
809
810void DefineCryptoConstants(Local<Object> target) {
811#ifdef OPENSSL_VERSION_NUMBER
812    NODE_DEFINE_CONSTANT(target, OPENSSL_VERSION_NUMBER);
813#endif
814
815#ifdef SSL_OP_ALL
816    NODE_DEFINE_CONSTANT(target, SSL_OP_ALL);
817#endif
818
819#ifdef SSL_OP_ALLOW_NO_DHE_KEX
820    NODE_DEFINE_CONSTANT(target, SSL_OP_ALLOW_NO_DHE_KEX);
821#endif
822
823#ifdef SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION
824    NODE_DEFINE_CONSTANT(target, SSL_OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION);
825#endif
826
827#ifdef SSL_OP_CIPHER_SERVER_PREFERENCE
828    NODE_DEFINE_CONSTANT(target, SSL_OP_CIPHER_SERVER_PREFERENCE);
829#endif
830
831#ifdef SSL_OP_CISCO_ANYCONNECT
832    NODE_DEFINE_CONSTANT(target, SSL_OP_CISCO_ANYCONNECT);
833#endif
834
835#ifdef SSL_OP_COOKIE_EXCHANGE
836    NODE_DEFINE_CONSTANT(target, SSL_OP_COOKIE_EXCHANGE);
837#endif
838
839#ifdef SSL_OP_CRYPTOPRO_TLSEXT_BUG
840    NODE_DEFINE_CONSTANT(target, SSL_OP_CRYPTOPRO_TLSEXT_BUG);
841#endif
842
843#ifdef SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
844    NODE_DEFINE_CONSTANT(target, SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS);
845#endif
846
847#ifdef SSL_OP_EPHEMERAL_RSA
848    NODE_DEFINE_CONSTANT(target, SSL_OP_EPHEMERAL_RSA);
849#endif
850
851#ifdef SSL_OP_LEGACY_SERVER_CONNECT
852    NODE_DEFINE_CONSTANT(target, SSL_OP_LEGACY_SERVER_CONNECT);
853#endif
854
855#ifdef SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER
856    NODE_DEFINE_CONSTANT(target, SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER);
857#endif
858
859#ifdef SSL_OP_MICROSOFT_SESS_ID_BUG
860    NODE_DEFINE_CONSTANT(target, SSL_OP_MICROSOFT_SESS_ID_BUG);
861#endif
862
863#ifdef SSL_OP_MSIE_SSLV2_RSA_PADDING
864    NODE_DEFINE_CONSTANT(target, SSL_OP_MSIE_SSLV2_RSA_PADDING);
865#endif
866
867#ifdef SSL_OP_NETSCAPE_CA_DN_BUG
868    NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_CA_DN_BUG);
869#endif
870
871#ifdef SSL_OP_NETSCAPE_CHALLENGE_BUG
872    NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_CHALLENGE_BUG);
873#endif
874
875#ifdef SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG
876    NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG);
877#endif
878
879#ifdef SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG
880    NODE_DEFINE_CONSTANT(target, SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG);
881#endif
882
883#ifdef SSL_OP_NO_COMPRESSION
884    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_COMPRESSION);
885#endif
886
887#ifdef SSL_OP_NO_ENCRYPT_THEN_MAC
888    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_ENCRYPT_THEN_MAC);
889#endif
890
891#ifdef SSL_OP_NO_QUERY_MTU
892    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_QUERY_MTU);
893#endif
894
895#ifdef SSL_OP_NO_RENEGOTIATION
896    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_RENEGOTIATION);
897#endif
898
899#ifdef SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION
900    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION);
901#endif
902
903#ifdef SSL_OP_NO_SSLv2
904    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_SSLv2);
905#endif
906
907#ifdef SSL_OP_NO_SSLv3
908    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_SSLv3);
909#endif
910
911#ifdef SSL_OP_NO_TICKET
912    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TICKET);
913#endif
914
915#ifdef SSL_OP_NO_TLSv1
916    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1);
917#endif
918
919#ifdef SSL_OP_NO_TLSv1_1
920    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_1);
921#endif
922
923#ifdef SSL_OP_NO_TLSv1_2
924    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_2);
925#endif
926
927#ifdef SSL_OP_NO_TLSv1_3
928    NODE_DEFINE_CONSTANT(target, SSL_OP_NO_TLSv1_3);
929#endif
930
931#ifdef SSL_OP_PKCS1_CHECK_1
932    NODE_DEFINE_CONSTANT(target, SSL_OP_PKCS1_CHECK_1);
933#endif
934
935#ifdef SSL_OP_PKCS1_CHECK_2
936    NODE_DEFINE_CONSTANT(target, SSL_OP_PKCS1_CHECK_2);
937#endif
938
939#ifdef SSL_OP_PRIORITIZE_CHACHA
940    NODE_DEFINE_CONSTANT(target, SSL_OP_PRIORITIZE_CHACHA);
941#endif
942
943#ifdef SSL_OP_SINGLE_DH_USE
944    NODE_DEFINE_CONSTANT(target, SSL_OP_SINGLE_DH_USE);
945#endif
946
947#ifdef SSL_OP_SINGLE_ECDH_USE
948    NODE_DEFINE_CONSTANT(target, SSL_OP_SINGLE_ECDH_USE);
949#endif
950
951#ifdef SSL_OP_SSLEAY_080_CLIENT_DH_BUG
952    NODE_DEFINE_CONSTANT(target, SSL_OP_SSLEAY_080_CLIENT_DH_BUG);
953#endif
954
955#ifdef SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG
956    NODE_DEFINE_CONSTANT(target, SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG);
957#endif
958
959#ifdef SSL_OP_TLS_BLOCK_PADDING_BUG
960    NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_BLOCK_PADDING_BUG);
961#endif
962
963#ifdef SSL_OP_TLS_D5_BUG
964    NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_D5_BUG);
965#endif
966
967#ifdef SSL_OP_TLS_ROLLBACK_BUG
968    NODE_DEFINE_CONSTANT(target, SSL_OP_TLS_ROLLBACK_BUG);
969#endif
970
971# ifndef OPENSSL_NO_ENGINE
972
973# ifdef ENGINE_METHOD_RSA
974    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_RSA);
975# endif
976
977# ifdef ENGINE_METHOD_DSA
978    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DSA);
979# endif
980
981# ifdef ENGINE_METHOD_DH
982    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DH);
983# endif
984
985# ifdef ENGINE_METHOD_RAND
986    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_RAND);
987# endif
988
989# ifdef ENGINE_METHOD_EC
990    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_EC);
991# endif
992
993# ifdef ENGINE_METHOD_CIPHERS
994    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_CIPHERS);
995# endif
996
997# ifdef ENGINE_METHOD_DIGESTS
998    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_DIGESTS);
999# endif
1000
1001# ifdef ENGINE_METHOD_PKEY_METHS
1002    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_PKEY_METHS);
1003# endif
1004
1005# ifdef ENGINE_METHOD_PKEY_ASN1_METHS
1006    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_PKEY_ASN1_METHS);
1007# endif
1008
1009# ifdef ENGINE_METHOD_ALL
1010    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_ALL);
1011# endif
1012
1013# ifdef ENGINE_METHOD_NONE
1014    NODE_DEFINE_CONSTANT(target, ENGINE_METHOD_NONE);
1015# endif
1016
1017# endif  // !OPENSSL_NO_ENGINE
1018
1019#ifdef DH_CHECK_P_NOT_SAFE_PRIME
1020    NODE_DEFINE_CONSTANT(target, DH_CHECK_P_NOT_SAFE_PRIME);
1021#endif
1022
1023#ifdef DH_CHECK_P_NOT_PRIME
1024    NODE_DEFINE_CONSTANT(target, DH_CHECK_P_NOT_PRIME);
1025#endif
1026
1027#ifdef DH_UNABLE_TO_CHECK_GENERATOR
1028    NODE_DEFINE_CONSTANT(target, DH_UNABLE_TO_CHECK_GENERATOR);
1029#endif
1030
1031#ifdef DH_NOT_SUITABLE_GENERATOR
1032    NODE_DEFINE_CONSTANT(target, DH_NOT_SUITABLE_GENERATOR);
1033#endif
1034
1035#define ALPN_ENABLED 1
1036    NODE_DEFINE_CONSTANT(target, ALPN_ENABLED);
1037
1038#ifdef RSA_PKCS1_PADDING
1039    NODE_DEFINE_CONSTANT(target, RSA_PKCS1_PADDING);
1040#endif
1041
1042#ifdef RSA_SSLV23_PADDING
1043    NODE_DEFINE_CONSTANT(target, RSA_SSLV23_PADDING);
1044#endif
1045
1046#ifdef RSA_NO_PADDING
1047    NODE_DEFINE_CONSTANT(target, RSA_NO_PADDING);
1048#endif
1049
1050#ifdef RSA_PKCS1_OAEP_PADDING
1051    NODE_DEFINE_CONSTANT(target, RSA_PKCS1_OAEP_PADDING);
1052#endif
1053
1054#ifdef RSA_X931_PADDING
1055    NODE_DEFINE_CONSTANT(target, RSA_X931_PADDING);
1056#endif
1057
1058#ifdef RSA_PKCS1_PSS_PADDING
1059    NODE_DEFINE_CONSTANT(target, RSA_PKCS1_PSS_PADDING);
1060#endif
1061
1062#ifdef RSA_PSS_SALTLEN_DIGEST
1063    NODE_DEFINE_CONSTANT(target, RSA_PSS_SALTLEN_DIGEST);
1064#endif
1065
1066#ifdef RSA_PSS_SALTLEN_MAX_SIGN
1067    NODE_DEFINE_CONSTANT(target, RSA_PSS_SALTLEN_MAX_SIGN);
1068#endif
1069
1070#ifdef RSA_PSS_SALTLEN_AUTO
1071    NODE_DEFINE_CONSTANT(target, RSA_PSS_SALTLEN_AUTO);
1072#endif
1073
1074#ifdef DEFAULT_CIPHER_LIST_CORE
1075  NODE_DEFINE_STRING_CONSTANT(target,
1076                              "defaultCoreCipherList",
1077                              DEFAULT_CIPHER_LIST_CORE);
1078#endif
1079
1080#ifdef TLS1_VERSION
1081  NODE_DEFINE_CONSTANT(target, TLS1_VERSION);
1082#endif
1083
1084#ifdef TLS1_1_VERSION
1085  NODE_DEFINE_CONSTANT(target, TLS1_1_VERSION);
1086#endif
1087
1088#ifdef TLS1_2_VERSION
1089  NODE_DEFINE_CONSTANT(target, TLS1_2_VERSION);
1090#endif
1091
1092#ifdef TLS1_3_VERSION
1093  NODE_DEFINE_CONSTANT(target, TLS1_3_VERSION);
1094#endif
1095
1096#if HAVE_OPENSSL
1097  // NOTE: These are not defines
1098  NODE_DEFINE_CONSTANT(target, POINT_CONVERSION_COMPRESSED);
1099
1100  NODE_DEFINE_CONSTANT(target, POINT_CONVERSION_UNCOMPRESSED);
1101
1102  NODE_DEFINE_CONSTANT(target, POINT_CONVERSION_HYBRID);
1103#endif
1104}
1105
1106void DefineSystemConstants(Local<Object> target) {
1107  NODE_DEFINE_CONSTANT(target, UV_FS_SYMLINK_DIR);
1108  NODE_DEFINE_CONSTANT(target, UV_FS_SYMLINK_JUNCTION);
1109  // file access modes
1110  NODE_DEFINE_CONSTANT(target, O_RDONLY);
1111  NODE_DEFINE_CONSTANT(target, O_WRONLY);
1112  NODE_DEFINE_CONSTANT(target, O_RDWR);
1113
1114  // file types from readdir
1115  NODE_DEFINE_CONSTANT(target, UV_DIRENT_UNKNOWN);
1116  NODE_DEFINE_CONSTANT(target, UV_DIRENT_FILE);
1117  NODE_DEFINE_CONSTANT(target, UV_DIRENT_DIR);
1118  NODE_DEFINE_CONSTANT(target, UV_DIRENT_LINK);
1119  NODE_DEFINE_CONSTANT(target, UV_DIRENT_FIFO);
1120  NODE_DEFINE_CONSTANT(target, UV_DIRENT_SOCKET);
1121  NODE_DEFINE_CONSTANT(target, UV_DIRENT_CHAR);
1122  NODE_DEFINE_CONSTANT(target, UV_DIRENT_BLOCK);
1123
1124  NODE_DEFINE_CONSTANT(target, S_IFMT);
1125  NODE_DEFINE_CONSTANT(target, S_IFREG);
1126  NODE_DEFINE_CONSTANT(target, S_IFDIR);
1127  NODE_DEFINE_CONSTANT(target, S_IFCHR);
1128#ifdef S_IFBLK
1129  NODE_DEFINE_CONSTANT(target, S_IFBLK);
1130#endif
1131
1132#ifdef S_IFIFO
1133  NODE_DEFINE_CONSTANT(target, S_IFIFO);
1134#endif
1135
1136#ifdef S_IFLNK
1137  NODE_DEFINE_CONSTANT(target, S_IFLNK);
1138#endif
1139
1140#ifdef S_IFSOCK
1141  NODE_DEFINE_CONSTANT(target, S_IFSOCK);
1142#endif
1143
1144#ifdef O_CREAT
1145  NODE_DEFINE_CONSTANT(target, O_CREAT);
1146#endif
1147
1148#ifdef O_EXCL
1149  NODE_DEFINE_CONSTANT(target, O_EXCL);
1150#endif
1151
1152NODE_DEFINE_CONSTANT(target, UV_FS_O_FILEMAP);
1153
1154#ifdef O_NOCTTY
1155  NODE_DEFINE_CONSTANT(target, O_NOCTTY);
1156#endif
1157
1158#ifdef O_TRUNC
1159  NODE_DEFINE_CONSTANT(target, O_TRUNC);
1160#endif
1161
1162#ifdef O_APPEND
1163  NODE_DEFINE_CONSTANT(target, O_APPEND);
1164#endif
1165
1166#ifdef O_DIRECTORY
1167  NODE_DEFINE_CONSTANT(target, O_DIRECTORY);
1168#endif
1169
1170#ifdef O_EXCL
1171  NODE_DEFINE_CONSTANT(target, O_EXCL);
1172#endif
1173
1174#ifdef O_NOATIME
1175  NODE_DEFINE_CONSTANT(target, O_NOATIME);
1176#endif
1177
1178#ifdef O_NOFOLLOW
1179  NODE_DEFINE_CONSTANT(target, O_NOFOLLOW);
1180#endif
1181
1182#ifdef O_SYNC
1183  NODE_DEFINE_CONSTANT(target, O_SYNC);
1184#endif
1185
1186#ifdef O_DSYNC
1187  NODE_DEFINE_CONSTANT(target, O_DSYNC);
1188#endif
1189
1190
1191#ifdef O_SYMLINK
1192  NODE_DEFINE_CONSTANT(target, O_SYMLINK);
1193#endif
1194
1195#ifdef O_DIRECT
1196  NODE_DEFINE_CONSTANT(target, O_DIRECT);
1197#endif
1198
1199#ifdef O_NONBLOCK
1200  NODE_DEFINE_CONSTANT(target, O_NONBLOCK);
1201#endif
1202
1203#ifdef S_IRWXU
1204  NODE_DEFINE_CONSTANT(target, S_IRWXU);
1205#endif
1206
1207#ifdef S_IRUSR
1208  NODE_DEFINE_CONSTANT(target, S_IRUSR);
1209#endif
1210
1211#ifdef S_IWUSR
1212  NODE_DEFINE_CONSTANT(target, S_IWUSR);
1213#endif
1214
1215#ifdef S_IXUSR
1216  NODE_DEFINE_CONSTANT(target, S_IXUSR);
1217#endif
1218
1219#ifdef S_IRWXG
1220  NODE_DEFINE_CONSTANT(target, S_IRWXG);
1221#endif
1222
1223#ifdef S_IRGRP
1224  NODE_DEFINE_CONSTANT(target, S_IRGRP);
1225#endif
1226
1227#ifdef S_IWGRP
1228  NODE_DEFINE_CONSTANT(target, S_IWGRP);
1229#endif
1230
1231#ifdef S_IXGRP
1232  NODE_DEFINE_CONSTANT(target, S_IXGRP);
1233#endif
1234
1235#ifdef S_IRWXO
1236  NODE_DEFINE_CONSTANT(target, S_IRWXO);
1237#endif
1238
1239#ifdef S_IROTH
1240  NODE_DEFINE_CONSTANT(target, S_IROTH);
1241#endif
1242
1243#ifdef S_IWOTH
1244  NODE_DEFINE_CONSTANT(target, S_IWOTH);
1245#endif
1246
1247#ifdef S_IXOTH
1248  NODE_DEFINE_CONSTANT(target, S_IXOTH);
1249#endif
1250
1251#ifdef F_OK
1252  NODE_DEFINE_CONSTANT(target, F_OK);
1253#endif
1254
1255#ifdef R_OK
1256  NODE_DEFINE_CONSTANT(target, R_OK);
1257#endif
1258
1259#ifdef W_OK
1260  NODE_DEFINE_CONSTANT(target, W_OK);
1261#endif
1262
1263#ifdef X_OK
1264  NODE_DEFINE_CONSTANT(target, X_OK);
1265#endif
1266
1267#ifdef UV_FS_COPYFILE_EXCL
1268# define COPYFILE_EXCL UV_FS_COPYFILE_EXCL
1269  NODE_DEFINE_CONSTANT(target, UV_FS_COPYFILE_EXCL);
1270  NODE_DEFINE_CONSTANT(target, COPYFILE_EXCL);
1271# undef COPYFILE_EXCL
1272#endif
1273
1274#ifdef UV_FS_COPYFILE_FICLONE
1275# define COPYFILE_FICLONE UV_FS_COPYFILE_FICLONE
1276  NODE_DEFINE_CONSTANT(target, UV_FS_COPYFILE_FICLONE);
1277  NODE_DEFINE_CONSTANT(target, COPYFILE_FICLONE);
1278# undef COPYFILE_FICLONE
1279#endif
1280
1281#ifdef UV_FS_COPYFILE_FICLONE_FORCE
1282# define COPYFILE_FICLONE_FORCE UV_FS_COPYFILE_FICLONE_FORCE
1283  NODE_DEFINE_CONSTANT(target, UV_FS_COPYFILE_FICLONE_FORCE);
1284  NODE_DEFINE_CONSTANT(target, COPYFILE_FICLONE_FORCE);
1285# undef COPYFILE_FICLONE_FORCE
1286#endif
1287}
1288
1289void DefineDLOpenConstants(Local<Object> target) {
1290#ifdef RTLD_LAZY
1291  NODE_DEFINE_CONSTANT(target, RTLD_LAZY);
1292#endif
1293
1294#ifdef RTLD_NOW
1295  NODE_DEFINE_CONSTANT(target, RTLD_NOW);
1296#endif
1297
1298#ifdef RTLD_GLOBAL
1299  NODE_DEFINE_CONSTANT(target, RTLD_GLOBAL);
1300#endif
1301
1302#ifdef RTLD_LOCAL
1303  NODE_DEFINE_CONSTANT(target, RTLD_LOCAL);
1304#endif
1305
1306#ifdef RTLD_DEEPBIND
1307  NODE_DEFINE_CONSTANT(target, RTLD_DEEPBIND);
1308#endif
1309}
1310
1311void DefineTraceConstants(Local<Object> target) {
1312  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_BEGIN);
1313  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_END);
1314  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_COMPLETE);
1315  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_INSTANT);
1316  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ASYNC_BEGIN);
1317  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ASYNC_STEP_INTO);
1318  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ASYNC_STEP_PAST);
1319  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ASYNC_END);
1320  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_NESTABLE_ASYNC_BEGIN);
1321  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_NESTABLE_ASYNC_END);
1322  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_NESTABLE_ASYNC_INSTANT);
1323  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_FLOW_BEGIN);
1324  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_FLOW_STEP);
1325  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_FLOW_END);
1326  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_METADATA);
1327  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_COUNTER);
1328  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_SAMPLE);
1329  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_CREATE_OBJECT);
1330  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_SNAPSHOT_OBJECT);
1331  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_DELETE_OBJECT);
1332  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_MEMORY_DUMP);
1333  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_MARK);
1334  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_CLOCK_SYNC);
1335  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_ENTER_CONTEXT);
1336  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_LEAVE_CONTEXT);
1337  NODE_DEFINE_CONSTANT(target, TRACE_EVENT_PHASE_LINK_IDS);
1338}
1339
1340}  // anonymous namespace
1341
1342void DefineConstants(v8::Isolate* isolate, Local<Object> target) {
1343  Environment* env = Environment::GetCurrent(isolate);
1344
1345  Local<Object> os_constants = Object::New(isolate);
1346  CHECK(os_constants->SetPrototype(env->context(),
1347                                   Null(env->isolate())).FromJust());
1348
1349  Local<Object> err_constants = Object::New(isolate);
1350  CHECK(err_constants->SetPrototype(env->context(),
1351                                    Null(env->isolate())).FromJust());
1352
1353  Local<Object> sig_constants = Object::New(isolate);
1354  CHECK(sig_constants->SetPrototype(env->context(),
1355                                    Null(env->isolate())).FromJust());
1356
1357  Local<Object> priority_constants = Object::New(isolate);
1358  CHECK(priority_constants->SetPrototype(env->context(),
1359                                         Null(env->isolate())).FromJust());
1360
1361  Local<Object> fs_constants = Object::New(isolate);
1362  CHECK(fs_constants->SetPrototype(env->context(),
1363                                   Null(env->isolate())).FromJust());
1364
1365  Local<Object> crypto_constants = Object::New(isolate);
1366  CHECK(crypto_constants->SetPrototype(env->context(),
1367                                       Null(env->isolate())).FromJust());
1368
1369  Local<Object> zlib_constants = Object::New(isolate);
1370  CHECK(zlib_constants->SetPrototype(env->context(),
1371                                     Null(env->isolate())).FromJust());
1372
1373  Local<Object> dlopen_constants = Object::New(isolate);
1374  CHECK(dlopen_constants->SetPrototype(env->context(),
1375                                       Null(env->isolate())).FromJust());
1376
1377  Local<Object> trace_constants = Object::New(isolate);
1378  CHECK(trace_constants->SetPrototype(env->context(),
1379                                      Null(env->isolate())).FromJust());
1380
1381  DefineErrnoConstants(err_constants);
1382  DefineWindowsErrorConstants(err_constants);
1383  DefineSignalConstants(sig_constants);
1384  DefinePriorityConstants(priority_constants);
1385  DefineSystemConstants(fs_constants);
1386  DefineCryptoConstants(crypto_constants);
1387  DefineZlibConstants(zlib_constants);
1388  DefineDLOpenConstants(dlopen_constants);
1389  DefineTraceConstants(trace_constants);
1390
1391  // Define libuv constants.
1392  NODE_DEFINE_CONSTANT(os_constants, UV_UDP_REUSEADDR);
1393
1394  os_constants->Set(env->context(),
1395                    OneByteString(isolate, "dlopen"),
1396                    dlopen_constants).Check();
1397  os_constants->Set(env->context(),
1398                    OneByteString(isolate, "errno"),
1399                    err_constants).Check();
1400  os_constants->Set(env->context(),
1401                    OneByteString(isolate, "signals"),
1402                    sig_constants).Check();
1403  os_constants->Set(env->context(),
1404                    OneByteString(isolate, "priority"),
1405                    priority_constants).Check();
1406  target->Set(env->context(),
1407              OneByteString(isolate, "os"),
1408              os_constants).Check();
1409  target->Set(env->context(),
1410              OneByteString(isolate, "fs"),
1411              fs_constants).Check();
1412  target->Set(env->context(),
1413              OneByteString(isolate, "crypto"),
1414              crypto_constants).Check();
1415  target->Set(env->context(),
1416              OneByteString(isolate, "zlib"),
1417              zlib_constants).Check();
1418  target->Set(env->context(),
1419              OneByteString(isolate, "trace"),
1420              trace_constants).Check();
1421}
1422
1423}  // namespace node
1424