src/core/ngx_module.h - nginx-1.31.9 nginx/ @ 2a3a19c6f

Data types defined

Macros defined

Source code


  1. /*
  2. * Copyright (C) Igor Sysoev
  3. * Copyright (C) Maxim Dounin
  4. * Copyright (C) Nginx, Inc.
  5. */


  6. #ifndef _NGX_MODULE_H_INCLUDED_
  7. ‌#define _NGX_MODULE_H_INCLUDED_


  8. #include <ngx_config.h>
  9. #include <ngx_core.h>
  10. #include <nginx.h>


  11. ‌#define NGX_MODULE_UNSET_INDEX  (ngx_uint_t) -1


  12. ‌#define NGX_MODULE_SIGNATURE_0                                                \
  13.     ngx_value(NGX_PTR_SIZE) ","                                               \
  14.     ngx_value(NGX_SIG_ATOMIC_T_SIZE) ","                                      \
  15.     ngx_value(NGX_TIME_T_SIZE) ","

  16. #if (NGX_HAVE_KQUEUE)
  17. ‌#define NGX_MODULE_SIGNATURE_1   "1"
  18. #else
  19. ‌#define NGX_MODULE_SIGNATURE_1   "0"
  20. #endif

  21. ‌#define NGX_MODULE_SIGNATURE_2   "0"

  22. #if (NGX_HAVE_FILE_AIO || NGX_COMPAT)
  23. ‌#define NGX_MODULE_SIGNATURE_3   "1"
  24. #else
  25. ‌#define NGX_MODULE_SIGNATURE_3   "0"
  26. #endif

  27. #if (NGX_HAVE_SENDFILE_NODISKIO || NGX_COMPAT)
  28. ‌#define NGX_MODULE_SIGNATURE_4   "1"
  29. #else
  30. ‌#define NGX_MODULE_SIGNATURE_4   "0"
  31. #endif

  32. #if (NGX_HAVE_EVENTFD)
  33. ‌#define NGX_MODULE_SIGNATURE_5   "1"
  34. #else
  35. ‌#define NGX_MODULE_SIGNATURE_5   "0"
  36. #endif

  37. #if (NGX_HAVE_EPOLL)
  38. ‌#define NGX_MODULE_SIGNATURE_6   "1"
  39. #else
  40. ‌#define NGX_MODULE_SIGNATURE_6   "0"
  41. #endif

  42. #if (NGX_HAVE_KEEPALIVE_TUNABLE)
  43. ‌#define NGX_MODULE_SIGNATURE_7   "1"
  44. #else
  45. ‌#define NGX_MODULE_SIGNATURE_7   "0"
  46. #endif

  47. #if (NGX_HAVE_INET6)
  48. ‌#define NGX_MODULE_SIGNATURE_8   "1"
  49. #else
  50. ‌#define NGX_MODULE_SIGNATURE_8   "0"
  51. #endif

  52. ‌#define NGX_MODULE_SIGNATURE_9   "1"
  53. ‌#define NGX_MODULE_SIGNATURE_10  "1"

  54. #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
  55. ‌#define NGX_MODULE_SIGNATURE_11  "1"
  56. #else
  57. ‌#define NGX_MODULE_SIGNATURE_11  "0"
  58. #endif

  59. ‌#define NGX_MODULE_SIGNATURE_12  "1"

  60. #if (NGX_HAVE_SETFIB)
  61. ‌#define NGX_MODULE_SIGNATURE_13  "1"
  62. #else
  63. ‌#define NGX_MODULE_SIGNATURE_13  "0"
  64. #endif

  65. #if (NGX_HAVE_TCP_FASTOPEN)
  66. ‌#define NGX_MODULE_SIGNATURE_14  "1"
  67. #else
  68. ‌#define NGX_MODULE_SIGNATURE_14  "0"
  69. #endif

  70. #if (NGX_HAVE_UNIX_DOMAIN)
  71. ‌#define NGX_MODULE_SIGNATURE_15  "1"
  72. #else
  73. ‌#define NGX_MODULE_SIGNATURE_15  "0"
  74. #endif

  75. #if (NGX_HAVE_VARIADIC_MACROS)
  76. ‌#define NGX_MODULE_SIGNATURE_16  "1"
  77. #else
  78. ‌#define NGX_MODULE_SIGNATURE_16  "0"
  79. #endif

  80. ‌#define NGX_MODULE_SIGNATURE_17  "0"

  81. #if (NGX_QUIC || NGX_COMPAT)
  82. ‌#define NGX_MODULE_SIGNATURE_18  "1"
  83. #else
  84. ‌#define NGX_MODULE_SIGNATURE_18  "0"
  85. #endif

  86. #if (NGX_HAVE_OPENAT)
  87. ‌#define NGX_MODULE_SIGNATURE_19  "1"
  88. #else
  89. ‌#define NGX_MODULE_SIGNATURE_19  "0"
  90. #endif

  91. #if (NGX_HAVE_ATOMIC_OPS)
  92. ‌#define NGX_MODULE_SIGNATURE_20  "1"
  93. #else
  94. ‌#define NGX_MODULE_SIGNATURE_20  "0"
  95. #endif

  96. #if (NGX_HAVE_POSIX_SEM)
  97. ‌#define NGX_MODULE_SIGNATURE_21  "1"
  98. #else
  99. ‌#define NGX_MODULE_SIGNATURE_21  "0"
  100. #endif

  101. #if (NGX_THREADS || NGX_COMPAT)
  102. ‌#define NGX_MODULE_SIGNATURE_22  "1"
  103. #else
  104. ‌#define NGX_MODULE_SIGNATURE_22  "0"
  105. #endif

  106. #if (NGX_PCRE)
  107. ‌#define NGX_MODULE_SIGNATURE_23  "1"
  108. #else
  109. ‌#define NGX_MODULE_SIGNATURE_23  "0"
  110. #endif

  111. #if (NGX_HTTP_SSL || NGX_COMPAT)
  112. ‌#define NGX_MODULE_SIGNATURE_24  "1"
  113. #else
  114. ‌#define NGX_MODULE_SIGNATURE_24  "0"
  115. #endif

  116. ‌#define NGX_MODULE_SIGNATURE_25  "1"

  117. #if (NGX_HTTP_GZIP)
  118. ‌#define NGX_MODULE_SIGNATURE_26  "1"
  119. #else
  120. ‌#define NGX_MODULE_SIGNATURE_26  "0"
  121. #endif

  122. ‌#define NGX_MODULE_SIGNATURE_27  "1"

  123. #if (NGX_HTTP_X_FORWARDED_FOR)
  124. ‌#define NGX_MODULE_SIGNATURE_28  "1"
  125. #else
  126. ‌#define NGX_MODULE_SIGNATURE_28  "0"
  127. #endif

  128. #if (NGX_HTTP_REALIP)
  129. ‌#define NGX_MODULE_SIGNATURE_29  "1"
  130. #else
  131. ‌#define NGX_MODULE_SIGNATURE_29  "0"
  132. #endif

  133. #if (NGX_HTTP_HEADERS)
  134. ‌#define NGX_MODULE_SIGNATURE_30  "1"
  135. #else
  136. ‌#define NGX_MODULE_SIGNATURE_30  "0"
  137. #endif

  138. #if (NGX_HTTP_DAV)
  139. ‌#define NGX_MODULE_SIGNATURE_31  "1"
  140. #else
  141. ‌#define NGX_MODULE_SIGNATURE_31  "0"
  142. #endif

  143. #if (NGX_HTTP_CACHE)
  144. ‌#define NGX_MODULE_SIGNATURE_32  "1"
  145. #else
  146. ‌#define NGX_MODULE_SIGNATURE_32  "0"
  147. #endif

  148. #if (NGX_HTTP_UPSTREAM_ZONE)
  149. ‌#define NGX_MODULE_SIGNATURE_33  "1"
  150. #else
  151. ‌#define NGX_MODULE_SIGNATURE_33  "0"
  152. #endif

  153. #if (NGX_COMPAT)
  154. ‌#define NGX_MODULE_SIGNATURE_34  "1"
  155. #else
  156. ‌#define NGX_MODULE_SIGNATURE_34  "0"
  157. #endif

  158. ‌#define NGX_MODULE_SIGNATURE                                                  \
  159.     NGX_MODULE_SIGNATURE_0 NGX_MODULE_SIGNATURE_1 NGX_MODULE_SIGNATURE_2      \
  160.     NGX_MODULE_SIGNATURE_3 NGX_MODULE_SIGNATURE_4 NGX_MODULE_SIGNATURE_5      \
  161.     NGX_MODULE_SIGNATURE_6 NGX_MODULE_SIGNATURE_7 NGX_MODULE_SIGNATURE_8      \
  162.     NGX_MODULE_SIGNATURE_9 NGX_MODULE_SIGNATURE_10 NGX_MODULE_SIGNATURE_11    \
  163.     NGX_MODULE_SIGNATURE_12 NGX_MODULE_SIGNATURE_13 NGX_MODULE_SIGNATURE_14   \
  164.     NGX_MODULE_SIGNATURE_15 NGX_MODULE_SIGNATURE_16 NGX_MODULE_SIGNATURE_17   \
  165.     NGX_MODULE_SIGNATURE_18 NGX_MODULE_SIGNATURE_19 NGX_MODULE_SIGNATURE_20   \
  166.     NGX_MODULE_SIGNATURE_21 NGX_MODULE_SIGNATURE_22 NGX_MODULE_SIGNATURE_23   \
  167.     NGX_MODULE_SIGNATURE_24 NGX_MODULE_SIGNATURE_25 NGX_MODULE_SIGNATURE_26   \
  168.     NGX_MODULE_SIGNATURE_27 NGX_MODULE_SIGNATURE_28 NGX_MODULE_SIGNATURE_29   \
  169.     NGX_MODULE_SIGNATURE_30 NGX_MODULE_SIGNATURE_31 NGX_MODULE_SIGNATURE_32   \
  170.     NGX_MODULE_SIGNATURE_33 NGX_MODULE_SIGNATURE_34


  171. ‌#define NGX_MODULE_V1                                                         \
  172.     NGX_MODULE_UNSET_INDEX, NGX_MODULE_UNSET_INDEX,                           \
  173.     NULL, 0, 0, nginx_version, NGX_MODULE_SIGNATURE

  174. ‌#define NGX_MODULE_V1_PADDING  0, 0, 0, 0, 0, 0, 0, 0


  175. ‌struct ngx_module_s {
  176.     ngx_uint_t            ctx_index;
  177.     ngx_uint_t            index;

  178.     char                 *name;

  179.     ngx_uint_t            spare0;
  180.     ngx_uint_t            spare1;

  181.     ngx_uint_t            version;
  182.     const char           *signature;

  183.     void                 *ctx;
  184.     ngx_command_t        *commands;
  185.     ngx_uint_t            type;

  186.     ngx_int_t           (*init_master)(ngx_log_t *log);

  187.     ngx_int_t           (*init_module)(ngx_cycle_t *cycle);

  188.     ngx_int_t           (*init_process)(ngx_cycle_t *cycle);
  189.     ngx_int_t           (*init_thread)(ngx_cycle_t *cycle);
  190.     void                (*exit_thread)(ngx_cycle_t *cycle);
  191.     void                (*exit_process)(ngx_cycle_t *cycle);

  192.     void                (*exit_master)(ngx_cycle_t *cycle);

  193.     uintptr_t             spare_hook0;
  194.     uintptr_t             spare_hook1;
  195.     uintptr_t             spare_hook2;
  196.     uintptr_t             spare_hook3;
  197.     uintptr_t             spare_hook4;
  198.     uintptr_t             spare_hook5;
  199.     uintptr_t             spare_hook6;
  200.     uintptr_t             spare_hook7;
  201. };


  202. ‌typedef struct {
  203.     ngx_str_t             name;
  204.     void               *(*create_conf)(ngx_cycle_t *cycle);
  205.     char               *(*init_conf)(ngx_cycle_t *cycle, void *conf);
  206. ‌} ngx_core_module_t;


  207. ngx_int_t ngx_preinit_modules(void);
  208. ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle);
  209. ngx_int_t ngx_init_modules(ngx_cycle_t *cycle);
  210. ngx_int_t ngx_count_modules(ngx_cycle_t *cycle, ngx_uint_t type);


  211. ngx_int_t ngx_add_module(ngx_conf_t *cf, ngx_str_t *file,
  212.     ngx_module_t *module, char **order);


  213. extern ngx_module_t  *ngx_modules[];
  214. extern ngx_uint_t     ngx_max_module;

  215. extern char          *ngx_module_names[];


  216. #endif /* _NGX_MODULE_H_INCLUDED_ */