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