Back to home page

Nginx displayed by LXR

Source navigation ]
Diff markup ]
Identifier search ]
general search ]
 
 
Version: nginx-1.15.11 ]​[ nginx-1.14.2 ]​

0001 
0002 /*
0003  * Copyright (C) Igor Sysoev
0004  * Copyright (C) Maxim Dounin
0005  * Copyright (C) Nginx, Inc.
0006  */
0007 
0008 
0009 #ifndef _NGX_MODULE_H_INCLUDED_
0010 #define _NGX_MODULE_H_INCLUDED_
0011 
0012 
0013 #include <ngx_config.h>
0014 #include <ngx_core.h>
0015 #include <nginx.h>
0016 
0017 
0018 #define NGX_MODULE_UNSET_INDEX  (ngx_uint_t) -1
0019 
0020 
0021 #define NGX_MODULE_SIGNATURE_0                                                \
0022     ngx_value(NGX_PTR_SIZE) ","                                               \
0023     ngx_value(NGX_SIG_ATOMIC_T_SIZE) ","                                      \
0024     ngx_value(NGX_TIME_T_SIZE) ","
0025 
0026 #if (NGX_HAVE_KQUEUE)
0027 #define NGX_MODULE_SIGNATURE_1   "1"
0028 #else
0029 #define NGX_MODULE_SIGNATURE_1   "0"
0030 #endif
0031 
0032 #if (NGX_HAVE_IOCP)
0033 #define NGX_MODULE_SIGNATURE_2   "1"
0034 #else
0035 #define NGX_MODULE_SIGNATURE_2   "0"
0036 #endif
0037 
0038 #if (NGX_HAVE_FILE_AIO || NGX_COMPAT)
0039 #define NGX_MODULE_SIGNATURE_3   "1"
0040 #else
0041 #define NGX_MODULE_SIGNATURE_3   "0"
0042 #endif
0043 
0044 #if (NGX_HAVE_AIO_SENDFILE || NGX_COMPAT)
0045 #define NGX_MODULE_SIGNATURE_4   "1"
0046 #else
0047 #define NGX_MODULE_SIGNATURE_4   "0"
0048 #endif
0049 
0050 #if (NGX_HAVE_EVENTFD)
0051 #define NGX_MODULE_SIGNATURE_5   "1"
0052 #else
0053 #define NGX_MODULE_SIGNATURE_5   "0"
0054 #endif
0055 
0056 #if (NGX_HAVE_EPOLL)
0057 #define NGX_MODULE_SIGNATURE_6   "1"
0058 #else
0059 #define NGX_MODULE_SIGNATURE_6   "0"
0060 #endif
0061 
0062 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
0063 #define NGX_MODULE_SIGNATURE_7   "1"
0064 #else
0065 #define NGX_MODULE_SIGNATURE_7   "0"
0066 #endif
0067 
0068 #if (NGX_HAVE_INET6)
0069 #define NGX_MODULE_SIGNATURE_8   "1"
0070 #else
0071 #define NGX_MODULE_SIGNATURE_8   "0"
0072 #endif
0073 
0074 #define NGX_MODULE_SIGNATURE_9   "1"
0075 #define NGX_MODULE_SIGNATURE_10  "1"
0076 
0077 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
0078 #define NGX_MODULE_SIGNATURE_11  "1"
0079 #else
0080 #define NGX_MODULE_SIGNATURE_11  "0"
0081 #endif
0082 
0083 #define NGX_MODULE_SIGNATURE_12  "1"
0084 
0085 #if (NGX_HAVE_SETFIB)
0086 #define NGX_MODULE_SIGNATURE_13  "1"
0087 #else
0088 #define NGX_MODULE_SIGNATURE_13  "0"
0089 #endif
0090 
0091 #if (NGX_HAVE_TCP_FASTOPEN)
0092 #define NGX_MODULE_SIGNATURE_14  "1"
0093 #else
0094 #define NGX_MODULE_SIGNATURE_14  "0"
0095 #endif
0096 
0097 #if (NGX_HAVE_UNIX_DOMAIN)
0098 #define NGX_MODULE_SIGNATURE_15  "1"
0099 #else
0100 #define NGX_MODULE_SIGNATURE_15  "0"
0101 #endif
0102 
0103 #if (NGX_HAVE_VARIADIC_MACROS)
0104 #define NGX_MODULE_SIGNATURE_16  "1"
0105 #else
0106 #define NGX_MODULE_SIGNATURE_16  "0"
0107 #endif
0108 
0109 #define NGX_MODULE_SIGNATURE_17  "0"
0110 #define NGX_MODULE_SIGNATURE_18  "0"
0111 
0112 #if (NGX_HAVE_OPENAT)
0113 #define NGX_MODULE_SIGNATURE_19  "1"
0114 #else
0115 #define NGX_MODULE_SIGNATURE_19  "0"
0116 #endif
0117 
0118 #if (NGX_HAVE_ATOMIC_OPS)
0119 #define NGX_MODULE_SIGNATURE_20  "1"
0120 #else
0121 #define NGX_MODULE_SIGNATURE_20  "0"
0122 #endif
0123 
0124 #if (NGX_HAVE_POSIX_SEM)
0125 #define NGX_MODULE_SIGNATURE_21  "1"
0126 #else
0127 #define NGX_MODULE_SIGNATURE_21  "0"
0128 #endif
0129 
0130 #if (NGX_THREADS || NGX_COMPAT)
0131 #define NGX_MODULE_SIGNATURE_22  "1"
0132 #else
0133 #define NGX_MODULE_SIGNATURE_22  "0"
0134 #endif
0135 
0136 #if (NGX_PCRE)
0137 #define NGX_MODULE_SIGNATURE_23  "1"
0138 #else
0139 #define NGX_MODULE_SIGNATURE_23  "0"
0140 #endif
0141 
0142 #if (NGX_HTTP_SSL || NGX_COMPAT)
0143 #define NGX_MODULE_SIGNATURE_24  "1"
0144 #else
0145 #define NGX_MODULE_SIGNATURE_24  "0"
0146 #endif
0147 
0148 #define NGX_MODULE_SIGNATURE_25  "1"
0149 
0150 #if (NGX_HTTP_GZIP)
0151 #define NGX_MODULE_SIGNATURE_26  "1"
0152 #else
0153 #define NGX_MODULE_SIGNATURE_26  "0"
0154 #endif
0155 
0156 #define NGX_MODULE_SIGNATURE_27  "1"
0157 
0158 #if (NGX_HTTP_X_FORWARDED_FOR)
0159 #define NGX_MODULE_SIGNATURE_28  "1"
0160 #else
0161 #define NGX_MODULE_SIGNATURE_28  "0"
0162 #endif
0163 
0164 #if (NGX_HTTP_REALIP)
0165 #define NGX_MODULE_SIGNATURE_29  "1"
0166 #else
0167 #define NGX_MODULE_SIGNATURE_29  "0"
0168 #endif
0169 
0170 #if (NGX_HTTP_HEADERS)
0171 #define NGX_MODULE_SIGNATURE_30  "1"
0172 #else
0173 #define NGX_MODULE_SIGNATURE_30  "0"
0174 #endif
0175 
0176 #if (NGX_HTTP_DAV)
0177 #define NGX_MODULE_SIGNATURE_31  "1"
0178 #else
0179 #define NGX_MODULE_SIGNATURE_31  "0"
0180 #endif
0181 
0182 #if (NGX_HTTP_CACHE)
0183 #define NGX_MODULE_SIGNATURE_32  "1"
0184 #else
0185 #define NGX_MODULE_SIGNATURE_32  "0"
0186 #endif
0187 
0188 #if (NGX_HTTP_UPSTREAM_ZONE)
0189 #define NGX_MODULE_SIGNATURE_33  "1"
0190 #else
0191 #define NGX_MODULE_SIGNATURE_33  "0"
0192 #endif
0193 
0194 #if (NGX_COMPAT)
0195 #define NGX_MODULE_SIGNATURE_34  "1"
0196 #else
0197 #define NGX_MODULE_SIGNATURE_34  "0"
0198 #endif
0199 
0200 #define NGX_MODULE_SIGNATURE                                                  \
0201     NGX_MODULE_SIGNATURE_0 NGX_MODULE_SIGNATURE_1 NGX_MODULE_SIGNATURE_2      \
0202     NGX_MODULE_SIGNATURE_3 NGX_MODULE_SIGNATURE_4 NGX_MODULE_SIGNATURE_5      \
0203     NGX_MODULE_SIGNATURE_6 NGX_MODULE_SIGNATURE_7 NGX_MODULE_SIGNATURE_8      \
0204     NGX_MODULE_SIGNATURE_9 NGX_MODULE_SIGNATURE_10 NGX_MODULE_SIGNATURE_11    \
0205     NGX_MODULE_SIGNATURE_12 NGX_MODULE_SIGNATURE_13 NGX_MODULE_SIGNATURE_14   \
0206     NGX_MODULE_SIGNATURE_15 NGX_MODULE_SIGNATURE_16 NGX_MODULE_SIGNATURE_17   \
0207     NGX_MODULE_SIGNATURE_18 NGX_MODULE_SIGNATURE_19 NGX_MODULE_SIGNATURE_20   \
0208     NGX_MODULE_SIGNATURE_21 NGX_MODULE_SIGNATURE_22 NGX_MODULE_SIGNATURE_23   \
0209     NGX_MODULE_SIGNATURE_24 NGX_MODULE_SIGNATURE_25 NGX_MODULE_SIGNATURE_26   \
0210     NGX_MODULE_SIGNATURE_27 NGX_MODULE_SIGNATURE_28 NGX_MODULE_SIGNATURE_29   \
0211     NGX_MODULE_SIGNATURE_30 NGX_MODULE_SIGNATURE_31 NGX_MODULE_SIGNATURE_32   \
0212     NGX_MODULE_SIGNATURE_33 NGX_MODULE_SIGNATURE_34
0213 
0214 
0215 #define NGX_MODULE_V1                                                         \
0216     NGX_MODULE_UNSET_INDEX, NGX_MODULE_UNSET_INDEX,                           \
0217     NULL, 0, 0, nginx_version, NGX_MODULE_SIGNATURE
0218 
0219 #define NGX_MODULE_V1_PADDING  0, 0, 0, 0, 0, 0, 0, 0
0220 
0221 
0222 struct ngx_module_s {
0223     ngx_uint_t            ctx_index;
0224     ngx_uint_t            index;
0225 
0226     char                 *name;
0227 
0228     ngx_uint_t            spare0;
0229     ngx_uint_t            spare1;
0230 
0231     ngx_uint_t            version;
0232     const char           *signature;
0233 
0234     void                 *ctx;
0235     ngx_command_t        *commands;
0236     ngx_uint_t            type;
0237 
0238     ngx_int_t           (*init_master)(ngx_log_t *log);
0239 
0240     ngx_int_t           (*init_module)(ngx_cycle_t *cycle);
0241 
0242     ngx_int_t           (*init_process)(ngx_cycle_t *cycle);
0243     ngx_int_t           (*init_thread)(ngx_cycle_t *cycle);
0244     void                (*exit_thread)(ngx_cycle_t *cycle);
0245     void                (*exit_process)(ngx_cycle_t *cycle);
0246 
0247     void                (*exit_master)(ngx_cycle_t *cycle);
0248 
0249     uintptr_t             spare_hook0;
0250     uintptr_t             spare_hook1;
0251     uintptr_t             spare_hook2;
0252     uintptr_t             spare_hook3;
0253     uintptr_t             spare_hook4;
0254     uintptr_t             spare_hook5;
0255     uintptr_t             spare_hook6;
0256     uintptr_t             spare_hook7;
0257 };
0258 
0259 
0260 typedef struct {
0261     ngx_str_t             name;
0262     void               *(*create_conf)(ngx_cycle_t *cycle);
0263     char               *(*init_conf)(ngx_cycle_t *cycle, void *conf);
0264 } ngx_core_module_t;
0265 
0266 
0267 ngx_int_t ngx_preinit_modules(void);
0268 ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle);
0269 ngx_int_t ngx_init_modules(ngx_cycle_t *cycle);
0270 ngx_int_t ngx_count_modules(ngx_cycle_t *cycle, ngx_uint_t type);
0271 
0272 
0273 ngx_int_t ngx_add_module(ngx_conf_t *cf, ngx_str_t *file,
0274     ngx_module_t *module, char **order);
0275 
0276 
0277 extern ngx_module_t  *ngx_modules[];
0278 extern ngx_uint_t     ngx_max_module;
0279 
0280 extern char          *ngx_module_names[];
0281 
0282 
0283 #endif /* _NGX_MODULE_H_INCLUDED_ */