Return to ngx_conf_file.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / nginx / src / core |
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_ */