26#ifndef APACHE_HTTP_CONFIG_H
27#define APACHE_HTTP_CONFIG_H
76#if defined(AP_HAVE_DESIGNATED_INITIALIZER) || defined(DOXYGEN)
84 const char *(*no_args) (
cmd_parms *parms,
void *mconfig);
86 const char *(*raw_args) (
cmd_parms *parms,
void *mconfig,
89 const char *(*take_argv) (
cmd_parms *parms,
void *mconfig,
92 const char *(*take1) (
cmd_parms *parms,
void *mconfig,
const char *w);
94 const char *(*take2) (
cmd_parms *parms,
void *mconfig,
const char *w,
97 const char *(*take3) (
cmd_parms *parms,
void *mconfig,
const char *w,
98 const char *w2,
const char *w3);
100 const char *(*flag) (
cmd_parms *parms,
void *mconfig,
int on);
104# define AP_NO_ARGS func.no_args
106# define AP_RAW_ARGS func.raw_args
108# define AP_TAKE_ARGV func.take_argv
110# define AP_TAKE1 func.take1
112# define AP_TAKE2 func.take2
114# define AP_TAKE3 func.take3
116# define AP_FLAG func.flag
119# define AP_INIT_NO_ARGS(directive, func, mconfig, where, help) \
120 { directive, { .no_args=func }, mconfig, where, RAW_ARGS, help }
122# define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help) \
123 { directive, { .raw_args=func }, mconfig, where, RAW_ARGS, help }
125# define AP_INIT_TAKE_ARGV(directive, func, mconfig, where, help) \
126 { directive, { .take_argv=func }, mconfig, where, TAKE_ARGV, help }
128# define AP_INIT_TAKE1(directive, func, mconfig, where, help) \
129 { directive, { .take1=func }, mconfig, where, TAKE1, help }
131# define AP_INIT_ITERATE(directive, func, mconfig, where, help) \
132 { directive, { .take1=func }, mconfig, where, ITERATE, help }
134# define AP_INIT_TAKE2(directive, func, mconfig, where, help) \
135 { directive, { .take2=func }, mconfig, where, TAKE2, help }
137# define AP_INIT_TAKE12(directive, func, mconfig, where, help) \
138 { directive, { .take2=func }, mconfig, where, TAKE12, help }
140# define AP_INIT_ITERATE2(directive, func, mconfig, where, help) \
141 { directive, { .take2=func }, mconfig, where, ITERATE2, help }
143# define AP_INIT_TAKE13(directive, func, mconfig, where, help) \
144 { directive, { .take3=func }, mconfig, where, TAKE13, help }
146# define AP_INIT_TAKE23(directive, func, mconfig, where, help) \
147 { directive, { .take3=func }, mconfig, where, TAKE23, help }
149# define AP_INIT_TAKE123(directive, func, mconfig, where, help) \
150 { directive, { .take3=func }, mconfig, where, TAKE123, help }
152# define AP_INIT_TAKE3(directive, func, mconfig, where, help) \
153 { directive, { .take3=func }, mconfig, where, TAKE3, help }
155# define AP_INIT_FLAG(directive, func, mconfig, where, help) \
156 { directive, { .flag=func }, mconfig, where, FLAG, help }
160typedef const char *(*cmd_func) ();
162# define AP_NO_ARGS func
163# define AP_RAW_ARGS func
164# define AP_TAKE_ARGV func
165# define AP_TAKE1 func
166# define AP_TAKE2 func
167# define AP_TAKE3 func
170# define AP_INIT_NO_ARGS(directive, func, mconfig, where, help) \
171 { directive, func, mconfig, where, RAW_ARGS, help }
172# define AP_INIT_RAW_ARGS(directive, func, mconfig, where, help) \
173 { directive, func, mconfig, where, RAW_ARGS, help }
174# define AP_INIT_TAKE_ARGV(directive, func, mconfig, where, help) \
175 { directive, func, mconfig, where, TAKE_ARGV, help }
176# define AP_INIT_TAKE1(directive, func, mconfig, where, help) \
177 { directive, func, mconfig, where, TAKE1, help }
178# define AP_INIT_ITERATE(directive, func, mconfig, where, help) \
179 { directive, func, mconfig, where, ITERATE, help }
180# define AP_INIT_TAKE2(directive, func, mconfig, where, help) \
181 { directive, func, mconfig, where, TAKE2, help }
182# define AP_INIT_TAKE12(directive, func, mconfig, where, help) \
183 { directive, func, mconfig, where, TAKE12, help }
184# define AP_INIT_ITERATE2(directive, func, mconfig, where, help) \
185 { directive, func, mconfig, where, ITERATE2, help }
186# define AP_INIT_TAKE13(directive, func, mconfig, where, help) \
187 { directive, func, mconfig, where, TAKE13, help }
188# define AP_INIT_TAKE23(directive, func, mconfig, where, help) \
189 { directive, func, mconfig, where, TAKE23, help }
190# define AP_INIT_TAKE123(directive, func, mconfig, where, help) \
191 { directive, func, mconfig, where, TAKE123, help }
192# define AP_INIT_TAKE3(directive, func, mconfig, where, help) \
193 { directive, func, mconfig, where, TAKE3, help }
194# define AP_INIT_FLAG(directive, func, mconfig, where, help) \
195 { directive, func, mconfig, where, FLAG, help }
240#define ACCESS_CONF 64
242#define EXEC_ON_READ 256
248#define NONFATAL_OVERRIDE 512
249#define NONFATAL_UNKNOWN 1024
250#define NONFATAL_ALL (NONFATAL_OVERRIDE|NONFATAL_UNKNOWN)
252#define PROXY_CONF 2048
255#define OR_ALL (OR_LIMIT|OR_OPTIONS|OR_FILEINFO|OR_AUTHCFG|OR_INDEXES)
264#define DECLINE_CMD "\a\b"
336#define AP_MODULE_FLAG_NONE (0)
337#define AP_MODULE_FLAG_ALWAYS_MERGE (1 << 0)
431#ifdef AP_MAYBE_UNUSED
432#elif defined(__GNUC__)
433# define AP_MAYBE_UNUSED(x) x __attribute__((unused))
434#elif defined(__LCLINT__)
435# define AP_MAYBE_UNUSED(x) x
437# define AP_MAYBE_UNUSED(x) x
453#define APLOG_USE_MODULE(foo) \
454 extern module AP_MODULE_DECLARE_DATA foo##_module; \
455 AP_MAYBE_UNUSED(static int * const aplog_module_index) = &(foo##_module.module_index)
464#define AP_DECLARE_MODULE(foo) \
465 APLOG_USE_MODULE(foo); \
466 module AP_MODULE_DECLARE_DATA foo##_module
483#define STANDARD_MODULE_STUFF this_module_needs_to_be_ported_to_apache_2_0
486#define STANDARD20_MODULE_STUFF MODULE_MAGIC_NUMBER_MAJOR, \
487 MODULE_MAGIC_NUMBER_MINOR, \
492 MODULE_MAGIC_COOKIE, \
496#define MPM20_MODULE_STUFF MODULE_MAGIC_NUMBER_MAJOR, \
497 MODULE_MAGIC_NUMBER_MINOR, \
536#define AP_MODULE_FLAGS_MMN_MAJOR 20120211
537#define AP_MODULE_FLAGS_MMN_MINOR 70
538#define AP_MODULE_HAS_FLAGS(m) \
539 AP_MODULE_MAGIC_AT_LEAST(AP_MODULE_FLAGS_MMN_MAJOR, \
540 AP_MODULE_FLAGS_MMN_MINOR)
548#if !defined(AP_DEBUG)
550#define ap_get_module_config(v,m) \
551 (((void **)(v))[(m)->module_index])
552#define ap_set_module_config(v,m,val) \
553 ((((void **)(v))[(m)->module_index]) = (val))
602 int index,
int level);
604#if !defined(AP_DEBUG)
606#define ap_get_conn_logconf(c) \
607 ((c)->log ? (c)->log : \
608 &(c)->base_server->log)
610#define ap_get_conn_server_logconf(c,s) \
611 ( ( (c)->log != &(c)->base_server->log && (c)->log != NULL ) ? \
615#define ap_get_request_logconf(r) \
616 ((r)->log ? (r)->log : \
617 (r)->connection->log ? (r)->connection->log : \
620#define ap_get_module_loglevel(l,i) \
621 (((i) < 0 || (l)->module_levels == NULL || (l)->module_levels[i] < 0) ? \
623 (l)->module_levels[i])
625#define ap_get_server_module_loglevel(s,i) \
626 (ap_get_module_loglevel(&(s)->log,i))
628#define ap_get_conn_module_loglevel(c,i) \
629 (ap_get_module_loglevel(ap_get_conn_logconf(c),i))
631#define ap_get_conn_server_module_loglevel(c,s,i) \
632 (ap_get_module_loglevel(ap_get_conn_server_logconf(c,s),i))
634#define ap_get_request_module_loglevel(r,i) \
635 (ap_get_module_loglevel(ap_get_request_logconf(r),i))
902 char *orig_directive);
958#define NOT_IN_VIRTUALHOST 0x01
959#define NOT_IN_LIMIT 0x02
960#define NOT_IN_DIRECTORY 0x04
961#define NOT_IN_LOCATION 0x08
962#define NOT_IN_FILES 0x10
963#define NOT_IN_HTACCESS 0x20
964#define NOT_IN_PROXY 0x40
966#define NOT_IN_DIR_LOC_FILE (NOT_IN_DIRECTORY|NOT_IN_LOCATION|NOT_IN_FILES)
968#define NOT_IN_DIR_CONTEXT (NOT_IN_LIMIT|NOT_IN_DIR_LOC_FILE|NOT_IN_PROXY)
970#define GLOBAL_ONLY (NOT_IN_VIRTUALHOST|NOT_IN_DIR_CONTEXT)
1061 const char *config_name,
1436 const
char **full_name);
Symbol export macros and hook functions.
#define AP_DECLARE_NONSTD(type)
#define AP_DECLARE_HOOK(ret, name, args)
const command_rec * ap_find_command_in_modules(const char *cmd_name, module **mod)
const char * ap_init_virtual_host(apr_pool_t *p, const char *hostname, server_rec *main_server, server_rec **ps)
ap_conf_vector_t * ap_merge_per_dir_configs(apr_pool_t *p, ap_conf_vector_t *base, ap_conf_vector_t *new_conf)
void * ap_set_config_vectors(server_rec *server, ap_conf_vector_t *section_vector, const char *section, module *mod, apr_pool_t *pconf)
ap_conf_vector_t * ap_create_conn_config(apr_pool_t *p)
const command_rec * ap_find_command(const char *name, const command_rec *cmds)
int ap_parse_htaccess(ap_conf_vector_t **result, request_rec *r, int override, int override_opts, apr_table_t *override_list, const char *d, const char *access_names)
int ap_invoke_handler(request_rec *r)
ap_conf_vector_t * ap_create_per_dir_config(apr_pool_t *p)
static apr_pool_t * pconf
request_rec int int apr_table_t * override_list
void ap_register_hooks(module *m, apr_pool_t *p)
const char * ap_parse_log_level(const char *str, int *val)
const char * ap_build_cont_config(apr_pool_t *p, apr_pool_t *temp_pool, cmd_parms *parms, ap_directive_t **current, ap_directive_t **curr_parent, char *orig_directive)
char * ap_runtime_dir_relative(apr_pool_t *p, const char *fname)
#define ap_get_module_config(v, m)
ap_conf_vector_t * ap_create_request_config(apr_pool_t *p)
apr_status_t ap_pool_cleanup_set_null(void *data)
apr_status_t ap_open_htaccess(request_rec *r, const char *dir_name, const char *access_name, ap_configfile_t **conffile, const char **full_name)
ap_dir_match_t * ap_dir_cfgmatch(cmd_parms *cmd, int flags, const char *(*cb)(ap_dir_match_t *w, const char *fname), void *ctx) __attribute__((nonnull(1
const char * ap_setup_prelinked_modules(process_rec *process)
ap_module_symbol_t ap_prelinked_module_symbols[]
const char * ap_build_config(cmd_parms *parms, apr_pool_t *conf_pool, apr_pool_t *temp_pool, ap_directive_t **conftree)
void ap_set_module_loglevel(apr_pool_t *p, struct ap_logconf *l, int index, int level)
#define ap_get_request_module_loglevel(r, i)
const char *(* cmd_func)()
const char * ap_set_string_slot_lower(cmd_parms *cmd, void *struct_ptr, const char *arg)
const char * ap_pcfg_strerror(apr_pool_t *p, ap_configfile_t *cfp, apr_status_t rc)
int ap_cfg_closefile(ap_configfile_t *cfp)
const char * ap_process_fnmatch_configs(server_rec *s, const char *fname, ap_directive_t **conftree, apr_pool_t *p, apr_pool_t *ptemp, int optional)
void ap_remove_loaded_module(module *mod)
void ap_run_rewrite_args(process_rec *process)
apr_status_t ap_pcfg_openfile(ap_configfile_t **ret_cfg, apr_pool_t *p, const char *name)
const char * ap_soak_end_container(cmd_parms *cmd, char *directive)
struct ap_conf_vector_t ap_conf_vector_t
#define ap_get_server_module_loglevel(s, i)
ap_conf_vector_t * section_vector
int ap_exists_directive(apr_pool_t *p, const char *name)
#define ap_get_conn_server_module_loglevel(c, s, i)
const char * ap_set_deprecated(cmd_parms *cmd, void *struct_ptr, const char *arg)
int ap_get_module_flags(const module *m)
void ap_show_directives(void)
void ap_fixup_virtual_hosts(apr_pool_t *p, server_rec *main_server)
const char * ap_set_flag_slot_char(cmd_parms *cmd, void *struct_ptr, int arg)
const char * ap_set_int_slot(cmd_parms *cmd, void *struct_ptr, const char *arg)
int ap_process_config_tree(server_rec *s, ap_directive_t *conftree, apr_pool_t *p, apr_pool_t *ptemp)
char * ap_server_root_relative(apr_pool_t *p, const char *fname)
#define ap_get_conn_module_loglevel(c, i)
const char * ap_set_string_slot(cmd_parms *cmd, void *struct_ptr, const char *arg)
const char * ap_find_module_short_name(int module_index)
#define ap_set_module_config(v, m, val)
apr_status_t ap_cfg_getc(char *ch, ap_configfile_t *cfp)
void ap_reserve_module_slots(int count)
void ap_remove_module(module *m)
const char * ap_add_module(module *m, apr_pool_t *p, const char *s)
void ap_merge_log_config(const struct ap_logconf *old_conf, struct ap_logconf *new_conf)
request_rec int int override_opts
void * ap_retained_data_create(const char *key, apr_size_t size)
const char * ap_add_loaded_module(module *mod, apr_pool_t *p, const char *s)
int ap_method_is_limited(cmd_parms *cmd, const char *method)
ap_configfile_t * ap_pcfg_open_custom(apr_pool_t *p, const char *descr, void *param, apr_status_t(*getc_func)(char *ch, void *param), apr_status_t(*gets_func)(void *buf, apr_size_t bufsiz, void *param), apr_status_t(*close_func)(void *param))
request_rec int int apr_table_t const char * path
server_rec * ap_read_config(process_rec *process, apr_pool_t *temp_pool, const char *config_name, ap_directive_t **conftree)
const char * ap_set_flag_slot(cmd_parms *cmd, void *struct_ptr, int arg)
ap_conf_vector_t const char * section
void ap_single_module_configure(apr_pool_t *p, server_rec *s, module *m)
const char server_rec server_rec ** ps
void * ap_retained_data_get(const char *key)
const char * ap_set_file_slot(cmd_parms *cmd, void *struct_ptr, const char *arg)
const char * ap_walk_config(ap_directive_t *conftree, cmd_parms *parms, ap_conf_vector_t *section_vector)
apr_status_t ap_cfg_getline(char *buf, apr_size_t bufsize, ap_configfile_t *cfp)
const char * ap_find_module_name(module *m)
request_rec int int apr_table_t const char const char * access_name
const char * ap_process_resource_config(server_rec *s, const char *fname, ap_directive_t **conftree, apr_pool_t *p, apr_pool_t *ptemp)
void ap_reset_module_loglevels(struct ap_logconf *l, int val)
ap_conf_vector_t ap_conf_vector_t * new_conf
void ap_reserve_module_slots_directive(const char *directive)
const char * ap_show_mpm(void)
void ap_show_modules(void)
const char server_rec * main_server
struct ap_logconf * ap_new_log_config(apr_pool_t *p, const struct ap_logconf *old)
const unsigned char * buf
apr_brigade_flush void * ctx
const char apr_ssize_t int flags
apr_memcache_server_t * server
const char * ap_check_cmd_context(cmd_parms *cmd, unsigned forbidden)
apr_array_header_t ** result
apr_vformatter_buff_t * c
apr_int32_t apr_int32_t on
apr_uint32_t apr_pool_t apr_uint32_t apr_pollset_method_e method
const char apr_status_t(*) apr_pool_t *poo __attribute__)((nonnull(2, 4)))
const char const char *const * args
static apr_pool_t * pchild
static int check_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static void child_init(apr_pool_t *p, server_rec *s)
static int post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static int pre_config(apr_pool_t *pconf, apr_pool_t *plog, apr_pool_t *ptemp)
apr_status_t(* getch)(char *ch, void *param)
apr_status_t(* close)(void *param)
apr_status_t(* getstr)(void *buf, apr_size_t bufsiz, void *param)
Structure used to build the config tree.
Structure for handling HTTP methods.
This structure is used to assign symbol names to module pointers.
ap_directive_t * directive
apr_table_t * override_list
const ap_directive_t * err_directive
ap_configfile_t * config_file
apr_array_header_t * limited_xmethods
struct ap_conf_vector_t * context
ap_method_list_t * xlimited
Structure to store things which are per connection.
void(* rewrite_args)(process_rec *process)
void(* register_hooks)(apr_pool_t *p)
struct module_struct * next
void * dynamic_load_handle
A structure that represents one process.
A structure that represents the current request.
A structure to store information for each virtual server.