modstack.h File Reference

This file contains functions to help maintain a stack of modules. More...

Data Structures

struct  module_stack
 Stack of modules. More...
 

Functions

void modstack_init (struct module_stack *stack)
 Init a stack of modules. More...
 
void modstack_free (struct module_stack *stack)
 Free the stack of modules. More...
 
int modstack_call_startup (struct module_stack *stack, const char *module_conf, struct module_env *env)
 Initialises modules and assignes ids. More...
 
int modstack_config (struct module_stack *stack, const char *module_conf)
 Read config file module settings and set up the modfunc block. More...
 
struct module_func_blockmodule_factory (const char **str)
 Get funcblock for module name. More...
 
const char ** module_list_avail (void)
 Get list of modules available. More...
 
int modstack_call_init (struct module_stack *stack, const char *module_conf, struct module_env *env)
 Init modules. More...
 
void modstack_call_deinit (struct module_stack *stack, struct module_env *env)
 Deinit the modules. More...
 
void modstack_call_destartup (struct module_stack *stack, struct module_env *env)
 Destartup the modules, close, delete. More...
 
int modstack_find (struct module_stack *stack, const char *name)
 Find index of module by name. More...
 
size_t mod_get_mem (struct module_env *env, const char *name)
 fetch memory for a module by name, returns 0 if module not there
 

Detailed Description

This file contains functions to help maintain a stack of modules.

Function Documentation

◆ modstack_init()

void modstack_init ( struct module_stack stack)

Init a stack of modules.

Parameters
stackinitialised as empty.

References module_stack::mod, and module_stack::num.

Referenced by ub_ctx_create_nopipe().

◆ modstack_free()

void modstack_free ( struct module_stack stack)

Free the stack of modules.

Parameters
stackstack that frees up memory.

References module_stack::mod, and module_stack::num.

Referenced by daemon_delete(), modstack_call_init(), and ub_ctx_create().

◆ modstack_call_startup()

int modstack_call_startup ( struct module_stack stack,
const char *  module_conf,
struct module_env env 
)

Initialises modules and assignes ids.

Calls module_startup().

Parameters
stackExpected empty, filled according to module_conf
module_confstring what modules to initialize
envmodule environment which is inited by the modules. environment should have a superalloc, cfg,
Returns
on false a module init failed.

References module_stack::num.

Referenced by context_finalize(), and daemon_privileged().

◆ modstack_config()

int modstack_config ( struct module_stack stack,
const char *  module_conf 
)

Read config file module settings and set up the modfunc block.

Parameters
stackthe stack of modules (empty before call).
module_confstring what modules to insert.
Returns
false on error

References count_modules(), log_err(), MAX_MODULE, module_stack::mod, module_factory(), module_stack::num, VERB_QUERY, and verbose().

Referenced by modstack_call_init().

◆ module_factory()

struct module_func_block* module_factory ( const char **  str)

Get funcblock for module name.

Parameters
strstring with module name. Advanced to next value on success. The string is assumed whitespace separated list of module names.
Returns
funcblock or NULL on error.

Referenced by modstack_config().

◆ module_list_avail()

const char** module_list_avail ( void  )

Get list of modules available.

Returns
list of modules available. Static strings, ends with NULL.

Get list of modules available.

Referenced by check_modules_exist(), and print_build_options().

◆ modstack_call_init()

int modstack_call_init ( struct module_stack stack,
const char *  module_conf,
struct module_env env 
)

Init modules.

Calls module_init().

Parameters
stackIt is modstack_setupped().
module_confmodule ordering to check against the ordering in stack. fails on changed ordering.
envmodule environment which is inited by the modules. environment should have a superalloc, cfg, env.need_to_validate is set by the modules.
Returns
on false a module init failed.

References module_func_block::destartup, fptr_ok, fptr_whitelist_mod_init(), module_func_block::init, log_err(), module_stack::mod, modstack_config(), modstack_free(), module_func_block::name, module_env::need_to_validate, module_stack::num, module_func_block::startup, VERB_OPS, and verbose().

Referenced by context_finalize(), and daemon_setup_modules().

◆ modstack_call_deinit()

void modstack_call_deinit ( struct module_stack stack,
struct module_env env 
)

Deinit the modules.

Parameters
stackmade empty.
envmodule env for module deinit() calls.

References module_func_block::deinit, fptr_ok, fptr_whitelist_mod_deinit(), module_stack::mod, and module_stack::num.

Referenced by daemon_delete(), daemon_setup_modules(), and ub_ctx_create().

◆ modstack_call_destartup()

void modstack_call_destartup ( struct module_stack stack,
struct module_env env 
)

Destartup the modules, close, delete.

Parameters
stackmade empty.
envmodule env for module destartup() calls.

References module_func_block::destartup, fptr_ok, fptr_whitelist_mod_destartup(), module_stack::mod, and module_stack::num.

Referenced by daemon_delete(), and ub_ctx_create().

◆ modstack_find()

int modstack_find ( struct module_stack stack,
const char *  name 
)

Find index of module by name.

Parameters
stackto look in
namethe name to look for
Returns
-1 on failure, otherwise index number.

References module_stack::mod, module_func_block::name, and module_stack::num.

Referenced by do_set_option(), get_queries_ratelimit(), get_rrset_bogus(), iterator_set_ip46_support(), mod_get_mem(), reply_and_prefetch(), set_neg_cache_stats(), and zonemd_dnssec_verify_rrset().