Annotation of embedaddon/nginx/src/core/ngx_conf_file.h, revision 1.1.1.1
1.1 misho 1:
2: /*
3: * Copyright (C) Igor Sysoev
4: * Copyright (C) Nginx, Inc.
5: */
6:
7:
8: #ifndef _NGX_HTTP_CONF_FILE_H_INCLUDED_
9: #define _NGX_HTTP_CONF_FILE_H_INCLUDED_
10:
11:
12: #include <ngx_config.h>
13: #include <ngx_core.h>
14:
15:
16: /*
17: * AAAA number of arguments
18: * FF command flags
19: * TT command type, i.e. HTTP "location" or "server" command
20: */
21:
22: #define NGX_CONF_NOARGS 0x00000001
23: #define NGX_CONF_TAKE1 0x00000002
24: #define NGX_CONF_TAKE2 0x00000004
25: #define NGX_CONF_TAKE3 0x00000008
26: #define NGX_CONF_TAKE4 0x00000010
27: #define NGX_CONF_TAKE5 0x00000020
28: #define NGX_CONF_TAKE6 0x00000040
29: #define NGX_CONF_TAKE7 0x00000080
30:
31: #define NGX_CONF_MAX_ARGS 8
32:
33: #define NGX_CONF_TAKE12 (NGX_CONF_TAKE1|NGX_CONF_TAKE2)
34: #define NGX_CONF_TAKE13 (NGX_CONF_TAKE1|NGX_CONF_TAKE3)
35:
36: #define NGX_CONF_TAKE23 (NGX_CONF_TAKE2|NGX_CONF_TAKE3)
37:
38: #define NGX_CONF_TAKE123 (NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3)
39: #define NGX_CONF_TAKE1234 (NGX_CONF_TAKE1|NGX_CONF_TAKE2|NGX_CONF_TAKE3 \
40: |NGX_CONF_TAKE4)
41:
42: #define NGX_CONF_ARGS_NUMBER 0x000000ff
43: #define NGX_CONF_BLOCK 0x00000100
44: #define NGX_CONF_FLAG 0x00000200
45: #define NGX_CONF_ANY 0x00000400
46: #define NGX_CONF_1MORE 0x00000800
47: #define NGX_CONF_2MORE 0x00001000
48: #define NGX_CONF_MULTI 0x00000000 /* compatibility */
49:
50: #define NGX_DIRECT_CONF 0x00010000
51:
52: #define NGX_MAIN_CONF 0x01000000
53: #define NGX_ANY_CONF 0x0F000000
54:
55:
56:
57: #define NGX_CONF_UNSET -1
58: #define NGX_CONF_UNSET_UINT (ngx_uint_t) -1
59: #define NGX_CONF_UNSET_PTR (void *) -1
60: #define NGX_CONF_UNSET_SIZE (size_t) -1
61: #define NGX_CONF_UNSET_MSEC (ngx_msec_t) -1
62:
63:
64: #define NGX_CONF_OK NULL
65: #define NGX_CONF_ERROR (void *) -1
66:
67: #define NGX_CONF_BLOCK_START 1
68: #define NGX_CONF_BLOCK_DONE 2
69: #define NGX_CONF_FILE_DONE 3
70:
71: #define NGX_CORE_MODULE 0x45524F43 /* "CORE" */
72: #define NGX_CONF_MODULE 0x464E4F43 /* "CONF" */
73:
74:
75: #define NGX_MAX_CONF_ERRSTR 1024
76:
77:
78: struct ngx_command_s {
79: ngx_str_t name;
80: ngx_uint_t type;
81: char *(*set)(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
82: ngx_uint_t conf;
83: ngx_uint_t offset;
84: void *post;
85: };
86:
87: #define ngx_null_command { ngx_null_string, 0, NULL, 0, 0, NULL }
88:
89:
90: struct ngx_open_file_s {
91: ngx_fd_t fd;
92: ngx_str_t name;
93:
94: void (*flush)(ngx_open_file_t *file, ngx_log_t *log);
95: void *data;
96: };
97:
98:
99: #define NGX_MODULE_V1 0, 0, 0, 0, 0, 0, 1
100: #define NGX_MODULE_V1_PADDING 0, 0, 0, 0, 0, 0, 0, 0
101:
102: struct ngx_module_s {
103: ngx_uint_t ctx_index;
104: ngx_uint_t index;
105:
106: ngx_uint_t spare0;
107: ngx_uint_t spare1;
108: ngx_uint_t spare2;
109: ngx_uint_t spare3;
110:
111: ngx_uint_t version;
112:
113: void *ctx;
114: ngx_command_t *commands;
115: ngx_uint_t type;
116:
117: ngx_int_t (*init_master)(ngx_log_t *log);
118:
119: ngx_int_t (*init_module)(ngx_cycle_t *cycle);
120:
121: ngx_int_t (*init_process)(ngx_cycle_t *cycle);
122: ngx_int_t (*init_thread)(ngx_cycle_t *cycle);
123: void (*exit_thread)(ngx_cycle_t *cycle);
124: void (*exit_process)(ngx_cycle_t *cycle);
125:
126: void (*exit_master)(ngx_cycle_t *cycle);
127:
128: uintptr_t spare_hook0;
129: uintptr_t spare_hook1;
130: uintptr_t spare_hook2;
131: uintptr_t spare_hook3;
132: uintptr_t spare_hook4;
133: uintptr_t spare_hook5;
134: uintptr_t spare_hook6;
135: uintptr_t spare_hook7;
136: };
137:
138:
139: typedef struct {
140: ngx_str_t name;
141: void *(*create_conf)(ngx_cycle_t *cycle);
142: char *(*init_conf)(ngx_cycle_t *cycle, void *conf);
143: } ngx_core_module_t;
144:
145:
146: typedef struct {
147: ngx_file_t file;
148: ngx_buf_t *buffer;
149: ngx_uint_t line;
150: } ngx_conf_file_t;
151:
152:
153: typedef char *(*ngx_conf_handler_pt)(ngx_conf_t *cf,
154: ngx_command_t *dummy, void *conf);
155:
156:
157: struct ngx_conf_s {
158: char *name;
159: ngx_array_t *args;
160:
161: ngx_cycle_t *cycle;
162: ngx_pool_t *pool;
163: ngx_pool_t *temp_pool;
164: ngx_conf_file_t *conf_file;
165: ngx_log_t *log;
166:
167: void *ctx;
168: ngx_uint_t module_type;
169: ngx_uint_t cmd_type;
170:
171: ngx_conf_handler_pt handler;
172: char *handler_conf;
173: };
174:
175:
176: typedef char *(*ngx_conf_post_handler_pt) (ngx_conf_t *cf,
177: void *data, void *conf);
178:
179: typedef struct {
180: ngx_conf_post_handler_pt post_handler;
181: } ngx_conf_post_t;
182:
183:
184: typedef struct {
185: ngx_conf_post_handler_pt post_handler;
186: char *old_name;
187: char *new_name;
188: } ngx_conf_deprecated_t;
189:
190:
191: typedef struct {
192: ngx_conf_post_handler_pt post_handler;
193: ngx_int_t low;
194: ngx_int_t high;
195: } ngx_conf_num_bounds_t;
196:
197:
198: typedef struct {
199: ngx_str_t name;
200: ngx_uint_t value;
201: } ngx_conf_enum_t;
202:
203:
204: #define NGX_CONF_BITMASK_SET 1
205:
206: typedef struct {
207: ngx_str_t name;
208: ngx_uint_t mask;
209: } ngx_conf_bitmask_t;
210:
211:
212:
213: char * ngx_conf_deprecated(ngx_conf_t *cf, void *post, void *data);
214: char *ngx_conf_check_num_bounds(ngx_conf_t *cf, void *post, void *data);
215:
216:
217: #define ngx_get_conf(conf_ctx, module) conf_ctx[module.index]
218:
219:
220:
221: #define ngx_conf_init_value(conf, default) \
222: if (conf == NGX_CONF_UNSET) { \
223: conf = default; \
224: }
225:
226: #define ngx_conf_init_ptr_value(conf, default) \
227: if (conf == NGX_CONF_UNSET_PTR) { \
228: conf = default; \
229: }
230:
231: #define ngx_conf_init_uint_value(conf, default) \
232: if (conf == NGX_CONF_UNSET_UINT) { \
233: conf = default; \
234: }
235:
236: #define ngx_conf_init_size_value(conf, default) \
237: if (conf == NGX_CONF_UNSET_SIZE) { \
238: conf = default; \
239: }
240:
241: #define ngx_conf_init_msec_value(conf, default) \
242: if (conf == NGX_CONF_UNSET_MSEC) { \
243: conf = default; \
244: }
245:
246: #define ngx_conf_merge_value(conf, prev, default) \
247: if (conf == NGX_CONF_UNSET) { \
248: conf = (prev == NGX_CONF_UNSET) ? default : prev; \
249: }
250:
251: #define ngx_conf_merge_ptr_value(conf, prev, default) \
252: if (conf == NGX_CONF_UNSET_PTR) { \
253: conf = (prev == NGX_CONF_UNSET_PTR) ? default : prev; \
254: }
255:
256: #define ngx_conf_merge_uint_value(conf, prev, default) \
257: if (conf == NGX_CONF_UNSET_UINT) { \
258: conf = (prev == NGX_CONF_UNSET_UINT) ? default : prev; \
259: }
260:
261: #define ngx_conf_merge_msec_value(conf, prev, default) \
262: if (conf == NGX_CONF_UNSET_MSEC) { \
263: conf = (prev == NGX_CONF_UNSET_MSEC) ? default : prev; \
264: }
265:
266: #define ngx_conf_merge_sec_value(conf, prev, default) \
267: if (conf == NGX_CONF_UNSET) { \
268: conf = (prev == NGX_CONF_UNSET) ? default : prev; \
269: }
270:
271: #define ngx_conf_merge_size_value(conf, prev, default) \
272: if (conf == NGX_CONF_UNSET_SIZE) { \
273: conf = (prev == NGX_CONF_UNSET_SIZE) ? default : prev; \
274: }
275:
276: #define ngx_conf_merge_off_value(conf, prev, default) \
277: if (conf == NGX_CONF_UNSET) { \
278: conf = (prev == NGX_CONF_UNSET) ? default : prev; \
279: }
280:
281: #define ngx_conf_merge_str_value(conf, prev, default) \
282: if (conf.data == NULL) { \
283: if (prev.data) { \
284: conf.len = prev.len; \
285: conf.data = prev.data; \
286: } else { \
287: conf.len = sizeof(default) - 1; \
288: conf.data = (u_char *) default; \
289: } \
290: }
291:
292: #define ngx_conf_merge_bufs_value(conf, prev, default_num, default_size) \
293: if (conf.num == 0) { \
294: if (prev.num) { \
295: conf.num = prev.num; \
296: conf.size = prev.size; \
297: } else { \
298: conf.num = default_num; \
299: conf.size = default_size; \
300: } \
301: }
302:
303: #define ngx_conf_merge_bitmask_value(conf, prev, default) \
304: if (conf == 0) { \
305: conf = (prev == 0) ? default : prev; \
306: }
307:
308:
309: char *ngx_conf_param(ngx_conf_t *cf);
310: char *ngx_conf_parse(ngx_conf_t *cf, ngx_str_t *filename);
311: char *ngx_conf_include(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
312:
313:
314: ngx_int_t ngx_conf_full_name(ngx_cycle_t *cycle, ngx_str_t *name,
315: ngx_uint_t conf_prefix);
316: ngx_open_file_t *ngx_conf_open_file(ngx_cycle_t *cycle, ngx_str_t *name);
317: void ngx_cdecl ngx_conf_log_error(ngx_uint_t level, ngx_conf_t *cf,
318: ngx_err_t err, const char *fmt, ...);
319:
320:
321: char *ngx_conf_set_flag_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
322: char *ngx_conf_set_str_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
323: char *ngx_conf_set_str_array_slot(ngx_conf_t *cf, ngx_command_t *cmd,
324: void *conf);
325: char *ngx_conf_set_keyval_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
326: char *ngx_conf_set_num_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
327: char *ngx_conf_set_size_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
328: char *ngx_conf_set_off_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
329: char *ngx_conf_set_msec_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
330: char *ngx_conf_set_sec_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
331: char *ngx_conf_set_bufs_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
332: char *ngx_conf_set_enum_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
333: char *ngx_conf_set_bitmask_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
334:
335:
336: extern ngx_uint_t ngx_max_module;
337: extern ngx_module_t *ngx_modules[];
338:
339:
340: #endif /* _NGX_HTTP_CONF_FILE_H_INCLUDED_ */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>