This file contains functions for the config file. More...
#include "config.h"#include <ctype.h>#include <stdarg.h>#include <errno.h>#include "util/log.h"#include "util/configyyrename.h"#include "util/config_file.h"#include "util/configparser.h"#include "util/net_help.h"#include "util/data/msgparse.h"#include "util/module.h"#include "util/regional.h"#include "util/fptr_wlist.h"#include "util/data/dname.h"#include "util/random.h"#include "util/rtt.h"#include "services/cache/infra.h"#include "sldns/wire2str.h"#include "sldns/parseutil.h"#include "iterator/iterator.h"#include "util/iana_ports.inc"Data Structures | |
| struct | config_collate_arg |
| collate func arg More... | |
Macros | |
| #define | IS_NUMBER_OR_ZERO if(atoi(val) == 0 && strcmp(val, "0") != 0) return 0 |
| check that the value passed is >= 0 | |
| #define | IS_NONZERO_NUMBER if(atoi(val) == 0) return 0 |
| check that the value passed is > 0 | |
| #define | IS_POW2_NUMBER if(atoi(val) == 0 || !is_pow2((size_t)atoi(val))) return 0 |
| check that the value passed is not 0 and a power of 2 | |
| #define | IS_YES_OR_NO if(strcmp(val, "yes") != 0 && strcmp(val, "no") != 0) return 0 |
| check that the value passed is yes or no | |
| #define | S_NUMBER_OR_ZERO(str, var) |
| put integer_or_zero into variable | |
| #define | S_NUMBER_NONZERO(str, var) |
| put integer_nonzero into variable | |
| #define | S_UNSIGNED_OR_ZERO(str, var) |
| put integer_or_zero into unsigned | |
| #define | S_SIZET_OR_ZERO(str, var) |
| put integer_or_zero into size_t | |
| #define | S_SIZET_NONZERO(str, var) |
| put integer_nonzero into size_t | |
| #define | S_YNO(str, var) |
| put yesno into variable | |
| #define | S_MEMSIZE(str, var) |
| put memsize into variable | |
| #define | S_POW2(str, var) |
| put pow2 number into variable | |
| #define | S_STR(str, var) |
| put string into variable | |
| #define | S_STRLIST(str, var) |
| put string into strlist | |
| #define | S_STRLIST_UNIQ(str, var) |
| put string into strlist if not present yet | |
| #define | S_STRLIST_APPEND(str, var) |
| append string to strlist | |
| #define | O_DEC(opt, str, var) |
| compare and print decimal option | |
| #define | O_UNS(opt, str, var) |
| compare and print unsigned option | |
| #define | O_YNO(opt, str, var) |
| compare and print yesno option | |
| #define | O_STR(opt, str, var) |
| compare and print string option | |
| #define | O_IFC(opt, str, num, arr) |
| compare and print array option | |
| #define | O_MEM(opt, str, var) |
| compare and print memorysize option | |
| #define | O_LST(opt, name, lst) |
| compare and print list option | |
| #define | O_LS2(opt, name, lst) |
| compare and print list option | |
| #define | O_LS3(opt, name, lst) |
| compare and print list option | |
| #define | O_LTG(opt, name, lst) |
| compare and print taglist option | |
| #define | SET_AUTO_SLAB(var, name, val) |
Functions | |
| static void | init_outgoing_availports (int *array, int num) |
| init ports possible for use | |
| static void | init_cookie_secret (uint8_t *cookie_secret, size_t cookie_secret_len) |
| init cookie with random data | |
| struct config_file * | config_create (void) |
| Create config file structure. | |
| struct config_file * | config_create_forlib (void) |
| Create config file structure for library use. | |
| static int | probe_maxrto (int useful_server_top_timeout) |
| Set PROBE_MAXRTO based on current RTT_MAX_TIMEOUT (USEFUL_SERVER_TOP_TIMEOUT) configuration. | |
| int | config_apply_max_rtt (int max_rtt) |
| Apply the relevant changes that rely upon RTT_MAX_TIMEOUT. | |
| int | config_set_option (struct config_file *cfg, const char *opt, const char *val) |
| Set the given keyword to the given value. | |
| void | config_print_func (char *line, void *arg) |
| function to print to a file, use as func with config_get_option. | |
| void | config_collate_func (char *line, void *arg) |
| function to collate the text strings into a strlist_head. | |
| int | config_get_option_list (struct config_file *cfg, const char *opt, struct config_strlist **list) |
| Get an option and return strlist. | |
| int | config_get_option_collate (struct config_file *cfg, const char *opt, char **str) |
| Get an option and collate results into string. | |
| char * | config_collate_cat (struct config_strlist *list) |
| take a strlist_head list and return a malloc string. | |
| int | config_get_option (struct config_file *cfg, const char *opt, void(*func)(char *, void *), void *arg) |
| Call print routine for the given option. | |
| static void | create_cfg_parser (struct config_file *cfg, char *filename, const char *chroot) |
| initialize the global cfg_parser object | |
| void | config_auto_slab_values (struct config_file *cfg) |
| If _slabs values are not explicitly configured, 0 value, put them in a pow2 value close to the number of threads used. | |
| int | config_read (struct config_file *cfg, const char *filename, const char *chroot) |
| Read the config file from the specified filename. | |
| struct config_stub * | cfg_stub_find (struct config_stub ***pp, const char *nm) |
| Find stub in config list, also returns prevptr (for deletion). | |
| void | config_delstrlist (struct config_strlist *p) |
| Delete items in config string list. | |
| void | config_deldblstrlist (struct config_str2list *p) |
| Delete items in config double string list. | |
| void | config_deltrplstrlist (struct config_str3list *p) |
| Delete items in config triple string list. | |
| void | config_delauth (struct config_auth *p) |
| Delete an auth item. | |
| void | config_delauths (struct config_auth *p) |
| Delete items in config auth list. | |
| void | config_delstub (struct config_stub *p) |
| Delete a stub item. | |
| void | config_delstubs (struct config_stub *p) |
| Delete items in config stub list. | |
| void | config_delview (struct config_view *p) |
| Delete a view item. | |
| void | config_delviews (struct config_view *p) |
| Delete items in config view list. | |
| void | config_del_strarray (char **array, int num) |
| delete string array | |
| void | config_del_strbytelist (struct config_strbytelist *p) |
| delete stringbytelist | |
| void | config_delete (struct config_file *cfg) |
| Destroy the config file structure. | |
| static int | extract_port_from_str (const char *str, int max_port) |
| int | cfg_mark_ports (const char *str, int allow, int *avail, int num) |
| Mark "number" or "low-high" as available or not in ports array. | |
| int | cfg_scan_ports (int *avail, int num) |
| Scan ports available. | |
| int | cfg_condense_ports (struct config_file *cfg, int **avail) |
| Get a condensed list of ports returned. | |
| void | cfg_apply_local_port_policy (struct config_file *cfg, int num) |
| Apply system specific port range policy. | |
| static void | ub_c_error_va_list (const char *fmt, va_list args) |
| print error with file and line number | |
| void | ub_c_error_msg (const char *fmt,...) |
| print error with file and line number | |
| void | ub_c_error (const char *str) |
| parsing helpers: print error with file and line numbers | |
| int | ub_c_wrap (void) |
| wrap function | |
| int | cfg_strlist_append (struct config_strlist_head *list, char *item) |
| Append text at end of list. | |
| int | cfg_region_strlist_insert (struct regional *region, struct config_strlist **head, char *item) |
| insert with region for allocation. | |
| struct config_strlist * | cfg_strlist_find (struct config_strlist *head, const char *item) |
| Find string in strlist. | |
| int | cfg_strlist_insert (struct config_strlist **head, char *item) |
| Insert string into strlist. | |
| int | cfg_strlist_append_ex (struct config_strlist **head, char *item) |
| Searches the end of a string list and appends the given text. | |
| int | cfg_str2list_insert (struct config_str2list **head, char *item, char *i2) |
| Insert string into str2list. | |
| int | cfg_str3list_insert (struct config_str3list **head, char *item, char *i2, char *i3) |
| Insert string into str3list. | |
| int | cfg_strbytelist_insert (struct config_strbytelist **head, char *item, uint8_t *i2, size_t i2len) |
| Insert string into strbytelist. | |
| time_t | cfg_convert_timeval (const char *str) |
| Convert 14digit to time value. | |
| int | cfg_count_numbers (const char *s) |
| Count number of values in the string. | |
| static int | isalldigit (const char *str, size_t l) |
| all digit number | |
| int | cfg_parse_memsize (const char *str, size_t *res) |
| Convert a 'nice' memory or file size into a bytecount From '100k' to 102400. | |
| int | find_tag_id (struct config_file *cfg, const char *tag) |
| Find tag ID in the tag list. | |
| int | config_add_tag (struct config_file *cfg, const char *tag) |
| Add a tag name to the config. | |
| static void | cfg_set_bit (uint8_t *bitlist, size_t len, int id) |
| set a bit in a bit array | |
| uint8_t * | config_parse_taglist (struct config_file *cfg, char *str, size_t *listlen) |
| parse taglist from string into bytestring with bitlist. | |
| uint8_t * | cfg_parse_nsid (const char *str, uint16_t *nsid_len) |
| Parse nsid from string into binary nsid. | |
| char * | config_taglist2str (struct config_file *cfg, uint8_t *taglist, size_t taglen) |
| convert tag bitlist to a malloced string with tag names. | |
| int | taglist_intersect (uint8_t *list1, size_t list1len, const uint8_t *list2, size_t list2len) |
| see if two taglists intersect (have tags in common). | |
| void | config_apply (struct config_file *config) |
| Apply config to global constants; this routine is called in single thread. | |
| void | config_lookup_uid (struct config_file *cfg) |
| Find username, sets cfg_uid and cfg_gid. | |
| static size_t | strlen_after_chroot (const char *fname, struct config_file *cfg, int use_chdir) |
| Calculate string length of full pathname in original filesys. | |
| char * | fname_after_chroot (const char *fname, struct config_file *cfg, int use_chdir) |
| Convert a filename to full pathname in original filesys. | |
| static char * | next_space_pos (const char *str) |
| return next space character in string | |
| static char * | last_space_pos (const char *str) |
| return last space character in string | |
| int | cfg_parse_local_zone (struct config_file *cfg, const char *val) |
| Parse local-zone directive into two strings and register it in the config. | |
| char * | cfg_ptr_reverse (char *str) |
| Convert a ptr shorthand into a full reverse-notation PTR record. | |
| int | options_remote_is_address (struct config_file *cfg) |
| check if config for remote control turns on IP-address interface with certificates or a named pipe without certificates. | |
| int | if_listens_on (const char *ifname, int default_port, int port, struct config_strlist *additional_ports) |
| Return true if interface will listen to specific port(s). | |
| int | if_is_ssl (const char *ifname, int default_port, int ssl_port, struct config_strlist *tls_additional_port) |
| see if interface will listen on ssl; its port number == the ssl port number or any of the additional ports | |
| int | if_is_pp2 (const char *ifname, int default_port, struct config_strlist *proxy_protocol_port) |
| see if interface will listen on PROXYv2; its port number == any of the proxy ports number | |
| int | if_is_https (const char *ifname, int default_port, int https_port) |
| see if interface will listen on https; its port number == the https port number | |
| int | if_is_dnscrypt (const char *ifname, int default_port, int dnscrypt_port) |
| see if interface will listen on DNSCRYPT; its port number == the dnscrypt port number | |
| size_t | getmem_str (char *str) |
| get memory for string | |
| int | if_is_quic (const char *ifname, int default_port, int quic_port) |
| see if interface will listen on quic; its port number == the quic port number | |
| int | cfg_has_https (struct config_file *cfg) |
| Return true if the config contains settings that enable https. | |
| int | cfg_has_quic (struct config_file *cfg) |
| Return true if the config contains settings that enable quic. | |
Variables | |
| uid_t | cfg_uid = (uid_t)-1 |
| from cfg username, after daemonize setup performed | |
| gid_t | cfg_gid = (gid_t)-1 |
| from cfg username, after daemonize setup performed | |
| int | autr_permit_small_holddown = 0 |
| for debug allow small timeout values for fast rollovers | |
| size_t | stream_wait_max = 4 * 1024 * 1024 |
| size (in bytes) of stream wait buffers max | |
| size_t | http2_query_buffer_max = 4 * 1024 * 1024 |
| size (in bytes) of all total HTTP2 query buffers max | |
| size_t | http2_response_buffer_max = 4 * 1024 * 1024 |
| size (in bytes) of all total HTTP2 response buffers max | |
| struct config_parser_state * | cfg_parser = 0 |
| global config during parsing | |
This file contains functions for the config file.
| #define S_NUMBER_OR_ZERO | ( | str, | |
| var | |||
| ) |
put integer_or_zero into variable
| #define S_NUMBER_NONZERO | ( | str, | |
| var | |||
| ) |
put integer_nonzero into variable
| #define S_UNSIGNED_OR_ZERO | ( | str, | |
| var | |||
| ) |
put integer_or_zero into unsigned
| #define S_SIZET_OR_ZERO | ( | str, | |
| var | |||
| ) |
put integer_or_zero into size_t
| #define S_SIZET_NONZERO | ( | str, | |
| var | |||
| ) |
put integer_nonzero into size_t
| #define S_YNO | ( | str, | |
| var | |||
| ) |
put yesno into variable
| #define S_MEMSIZE | ( | str, | |
| var | |||
| ) |
put memsize into variable
| #define S_POW2 | ( | str, | |
| var | |||
| ) |
put pow2 number into variable
| #define S_STR | ( | str, | |
| var | |||
| ) |
put string into variable
| #define S_STRLIST | ( | str, | |
| var | |||
| ) |
put string into strlist
| #define S_STRLIST_UNIQ | ( | str, | |
| var | |||
| ) |
put string into strlist if not present yet
| #define S_STRLIST_APPEND | ( | str, | |
| var | |||
| ) |
append string to strlist
| #define O_DEC | ( | opt, | |
| str, | |||
| var | |||
| ) |
compare and print decimal option
| #define O_UNS | ( | opt, | |
| str, | |||
| var | |||
| ) |
compare and print unsigned option
| #define O_YNO | ( | opt, | |
| str, | |||
| var | |||
| ) |
compare and print yesno option
| #define O_STR | ( | opt, | |
| str, | |||
| var | |||
| ) |
compare and print string option
| #define O_IFC | ( | opt, | |
| str, | |||
| num, | |||
| arr | |||
| ) |
compare and print array option
| #define O_MEM | ( | opt, | |
| str, | |||
| var | |||
| ) |
compare and print memorysize option
| #define O_LST | ( | opt, | |
| name, | |||
| lst | |||
| ) |
compare and print list option
| #define O_LS2 | ( | opt, | |
| name, | |||
| lst | |||
| ) |
compare and print list option
| #define O_LS3 | ( | opt, | |
| name, | |||
| lst | |||
| ) |
compare and print list option
| #define O_LTG | ( | opt, | |
| name, | |||
| lst | |||
| ) |
compare and print taglist option
| #define SET_AUTO_SLAB | ( | var, | |
| name, | |||
| val | |||
| ) |
| struct config_file * config_create | ( | void | ) |
Create config file structure.
Filled with default values.
References config_file::acls, config_file::add_holddown, config_file::aggressive_nsec, config_file::auths, config_file::auto_trust_anchor_file_list, config_file::bogus_ttl, config_file::caps_whitelist, config_file::chrootdir, config_delete(), config_file::control_cert_file, config_file::control_ifs, config_file::control_key_file, config_file::control_port, config_file::control_use_cert, config_file::cookie_secret, config_file::cookie_secret_file, config_file::cookie_secret_len, config_file::del_holddown, config_file::delay_close, config_file::deny_any, config_file::directory, config_file::disable_dnssec_lame_check, config_file::disable_edns_do, config_file::discard_timeout, config_file::dns_error_reporting, config_file::dnscrypt, config_file::dnscrypt_nonce_cache_size, config_file::dnscrypt_nonce_cache_slabs, config_file::dnscrypt_port, config_file::dnscrypt_provider, config_file::dnscrypt_provider_cert, config_file::dnscrypt_provider_cert_rotated, config_file::dnscrypt_secret_key, config_file::dnscrypt_shared_secret_cache_size, config_file::dnscrypt_shared_secret_cache_slabs, config_file::dnstap_bidirectional, config_file::dnstap_socket_path, config_file::dnstap_tls, config_file::do_answer_cookie, config_file::do_daemonize, config_file::do_ip4, config_file::do_ip6, config_file::do_tcp, config_file::do_tcp_keepalive, config_file::do_udp, config_file::domain_insecure, config_file::donotquery_localhost, config_file::donotqueryaddrs, config_file::dynlib_file, config_file::ede, config_file::ede_serve_expired, config_file::edns_buffer_size, config_file::edns_client_string_opcode, config_file::edns_client_strings, config_file::fast_server_num, config_file::fast_server_permil, config_strlist_head::first, config_file::forwards, config_file::harden_algo_downgrade, config_file::harden_below_nxdomain, config_file::harden_dnssec_stripped, config_file::harden_glue, config_file::harden_large_queries, config_file::harden_referral_path, config_file::harden_short_bufsize, config_file::harden_unknown_additional, config_file::harden_unverified_glue, config_file::hide_http_user_agent, config_file::hide_identity, config_file::hide_trustanchor, config_file::hide_version, config_file::host_ttl, config_file::http_endpoint, config_file::http_max_streams, config_file::http_nodelay, config_file::http_query_buffer_size, config_file::http_response_buffer_size, config_file::http_user_agent, config_file::https_port, config_file::identity, config_file::if_automatic, config_file::if_automatic_ports, config_file::ifs, config_file::ignore_cd, config_file::incoming_num_tcp, config_file::infra_cache_max_rtt, config_file::infra_cache_min_rtt, config_file::infra_cache_numhosts, config_file::infra_cache_slabs, config_file::infra_keep_probing, init_cookie_secret(), init_outgoing_availports(), config_file::insecure_lan_zones, config_file::ip_dscp, config_file::ip_freebind, config_file::ip_ratelimit, config_file::ip_ratelimit_backoff, config_file::ip_ratelimit_cookie, config_file::ip_ratelimit_factor, config_file::ip_ratelimit_size, config_file::ip_ratelimit_slabs, config_file::ip_transparent, config_file::iter_scrub_cname, config_file::iter_scrub_ns, config_file::iter_scrub_promiscuous, config_file::jostle_time, config_file::keep_missing, config_file::key_cache_size, config_file::key_cache_slabs, config_strlist_head::last, config_file::local_data, config_file::local_zone_overrides, config_file::local_zones, config_file::local_zones_disable_default, config_file::local_zones_nodefault, config_file::log_destaddr, config_file::log_identity, config_file::log_local_actions, config_file::log_queries, config_file::log_replies, config_file::log_servfail, config_file::log_tag_queryreply, config_file::log_time_ascii, config_file::log_time_iso, config_file::logfile, config_file::max_global_quota, config_file::max_negative_ttl, config_file::max_query_restarts, config_file::max_reuse_tcp_queries, config_file::max_sent_count, config_file::max_ttl, config_file::min_negative_ttl, config_file::min_ttl, config_file::module_conf, config_file::msg_buffer_size, config_file::msg_cache_size, config_file::msg_cache_slabs, config_file::neg_cache_size, config_file::nsid_cfg_str, config_file::num_ifs, config_file::num_out_ifs, config_file::num_queries_per_thread, config_file::num_threads, config_file::out_ifs, config_file::outbound_msg_retry, config_file::outgoing_avail_ports, config_file::outgoing_num_ports, config_file::outgoing_num_tcp, config_file::outgoing_tcp_mss, config_file::pad_queries, config_file::pad_queries_block_size, config_file::pad_responses, config_file::pad_responses_block_size, config_file::permit_small_holddown, config_file::pidfile, config_file::port, config_file::prefetch, config_file::prefetch_key, config_file::private_address, config_file::private_domain, config_file::python_script, config_file::qname_minimisation, config_file::qname_minimisation_strict, config_file::quic_port, config_file::quic_size, config_file::ratelimit, config_file::ratelimit_backoff, config_file::ratelimit_below_domain, config_file::ratelimit_factor, config_file::ratelimit_for_domain, config_file::ratelimit_size, config_file::ratelimit_slabs, config_file::remote_control_enable, config_file::root_hints, config_file::root_key_sentinel, config_file::rrset_cache_size, config_file::rrset_cache_slabs, config_file::serve_expired, config_file::serve_expired_client_timeout, config_file::serve_expired_reply_ttl, config_file::serve_expired_ttl, config_file::serve_expired_ttl_reset, config_file::serve_original_ttl, config_file::server_cert_file, config_file::server_key_file, config_file::shm_enable, config_file::shm_key, config_file::so_rcvbuf, config_file::so_reuseport, config_file::so_sndbuf, config_file::sock_queue_timeout, config_file::ssl_port, config_file::ssl_service_key, config_file::ssl_service_pem, config_file::ssl_upstream, config_file::stat_cumulative, config_file::stat_extended, config_file::stat_inhibit_zero, config_file::stat_interval, config_file::stream_wait_size, config_file::stubs, config_file::target_fetch_policy, config_file::tcp_auth_query_timeout, config_file::tcp_connection_limits, config_file::tcp_idle_timeout, config_file::tcp_keepalive_timeout, config_file::tcp_mss, config_file::tcp_reuse_timeout, config_file::tcp_upstream, config_file::tls_cert_bundle, config_file::tls_use_sni, config_file::tls_win_cert, config_file::trust_anchor_file_list, config_file::trust_anchor_list, config_file::trust_anchor_signaling, config_file::trusted_keys_file_list, config_file::udp_connect, config_file::udp_upstream_without_downstream, config_file::unblock_lan_zones, config_file::unwanted_threshold, config_file::use_caps_bits_for_id, config_file::use_syslog, config_file::use_systemd, config_file::username, config_file::val_clean_additional, config_file::val_date_override, config_file::val_log_level, config_file::val_log_squelch, config_file::val_max_restart, config_file::val_nsec3_key_iterations, config_file::val_permissive_mode, config_file::val_sig_skew_max, config_file::val_sig_skew_min, config_file::verbosity, config_file::version, config_file::views, config_file::wait_limit, config_file::wait_limit_cookie, config_file::wait_limit_cookie_netblock, config_file::wait_limit_netblock, and config_file::zonemd_permissive_mode.
Referenced by authtest_addzone(), checkconf(), config_create_forlib(), fr_read_config(), go(), infra_test(), print_stats_shm(), run_daemon(), service_init(), and zonemd_verify_test().
| struct config_file * config_create_forlib | ( | void | ) |
Create config file structure for library use.
Filled with default values.
References config_file::chrootdir, config_create(), config_file::dnscrypt_nonce_cache_slabs, config_file::dnscrypt_shared_secret_cache_slabs, config_file::donotquery_localhost, config_file::harden_short_bufsize, config_file::infra_cache_slabs, config_file::ip_ratelimit_slabs, config_file::key_cache_size, config_file::key_cache_slabs, config_file::msg_cache_size, config_file::msg_cache_slabs, config_file::neg_cache_size, config_file::outgoing_num_ports, config_file::outgoing_num_tcp, config_file::ratelimit_slabs, config_file::rrset_cache_size, config_file::rrset_cache_slabs, config_file::use_syslog, config_file::val_log_level, config_file::val_log_squelch, and config_file::verbosity.
Referenced by ub_ctx_create_nopipe().
| int config_apply_max_rtt | ( | int | max_rtt | ) |
Apply the relevant changes that rely upon RTT_MAX_TIMEOUT.
Apply the relevant changes that rely upon RTT_MAX_TIMEOUT; exported for unit test.
References BLACKLIST_PENALTY, PROBE_MAXRTO, probe_maxrto(), and USEFUL_SERVER_TOP_TIMEOUT.
Referenced by config_apply(), config_set_option(), and infra_test().
| int config_set_option | ( | struct config_file * | config, |
| const char * | option, | ||
| const char * | value | ||
| ) |
Set the given keyword to the given value.
| config | where to store config |
| option | option name, including the ':' character. |
| value | value, this string is copied if needed, or parsed. The caller owns the value string. |
References config_file::add_holddown, config_file::aggressive_nsec, config_file::auto_trust_anchor_file_list, autr_permit_small_holddown, config_file::bogus_ttl, config_file::caps_whitelist, cfg_convert_timeval(), cfg_mark_ports(), cfg_parse_local_zone(), cfg_parse_nsid(), cfg_ptr_reverse(), cfg_strlist_insert(), config_file::chrootdir, config_add_tag(), config_apply_max_rtt(), config_file::control_cert_file, config_file::control_ifs, config_file::control_key_file, config_file::control_port, config_file::cookie_secret_file, config_file::del_holddown, config_file::delay_close, config_file::deny_any, config_file::directory, config_file::disable_dnssec_lame_check, config_file::disable_edns_do, config_file::discard_timeout, dns_error_reporting(), config_file::dnscrypt, config_file::dnscrypt_nonce_cache_size, config_file::dnscrypt_nonce_cache_slabs, config_file::dnscrypt_port, config_file::dnscrypt_provider, config_file::dnscrypt_provider_cert, config_file::dnscrypt_provider_cert_rotated, config_file::dnscrypt_secret_key, config_file::dnscrypt_shared_secret_cache_size, config_file::dnscrypt_shared_secret_cache_slabs, config_file::dnstap, config_file::dnstap_bidirectional, config_file::dnstap_identity, config_file::dnstap_ip, config_file::dnstap_log_client_query_messages, config_file::dnstap_log_client_response_messages, config_file::dnstap_log_forwarder_query_messages, config_file::dnstap_log_forwarder_response_messages, config_file::dnstap_log_resolver_query_messages, config_file::dnstap_log_resolver_response_messages, config_file::dnstap_sample_rate, config_file::dnstap_send_identity, config_file::dnstap_send_version, config_file::dnstap_socket_path, config_file::dnstap_tls, config_file::dnstap_tls_cert_bundle, config_file::dnstap_tls_client_cert_file, config_file::dnstap_tls_client_key_file, config_file::dnstap_tls_server_name, config_file::dnstap_version, config_file::do_answer_cookie, config_file::do_daemonize, config_file::do_ip4, config_file::do_ip6, config_file::do_tcp, config_file::do_tcp_keepalive, config_file::do_udp, config_file::domain_insecure, config_file::donotquery_localhost, config_file::donotqueryaddrs, config_file::dynlib_file, config_file::ede, config_file::ede_serve_expired, config_file::edns_buffer_size, config_file::fast_server_num, config_file::fast_server_permil, config_file::harden_algo_downgrade, config_file::harden_below_nxdomain, config_file::harden_dnssec_stripped, config_file::harden_glue, config_file::harden_large_queries, config_file::harden_referral_path, config_file::harden_short_bufsize, config_file::harden_unknown_additional, config_file::harden_unverified_glue, config_file::hide_http_user_agent, config_file::hide_identity, config_file::hide_trustanchor, config_file::hide_version, config_file::host_ttl, config_file::http_endpoint, config_file::http_max_streams, config_file::http_nodelay, config_file::http_notls_downstream, config_file::http_query_buffer_size, config_file::http_response_buffer_size, config_file::http_user_agent, config_file::https_port, config_file::identity, config_file::if_automatic, config_file::if_automatic_ports, config_file::ignore_cd, config_file::incoming_num_tcp, config_file::infra_cache_max_rtt, config_file::infra_cache_min_rtt, config_file::infra_cache_numhosts, config_file::infra_cache_slabs, infra_dp_ratelimit, infra_ip_ratelimit, infra_ip_ratelimit_cookie, config_file::infra_keep_probing, config_file::insecure_lan_zones, config_file::ip_dscp, config_file::ip_freebind, config_file::ip_ratelimit, config_file::ip_ratelimit_backoff, config_file::ip_ratelimit_cookie, config_file::ip_ratelimit_factor, config_file::ip_ratelimit_size, config_file::ip_ratelimit_slabs, config_file::ip_transparent, IS_NUMBER_OR_ZERO, IS_YES_OR_NO, config_file::iter_scrub_cname, config_file::iter_scrub_ns, config_file::iter_scrub_promiscuous, config_file::jostle_time, config_file::keep_missing, config_file::key_cache_size, config_file::key_cache_slabs, config_file::local_data, config_file::log_destaddr, config_file::log_identity, config_file::log_local_actions, config_file::log_queries, config_file::log_replies, config_file::log_servfail, log_set_time_asc(), log_set_time_iso(), config_file::log_tag_queryreply, config_file::log_time_ascii, config_file::log_time_iso, config_file::logfile, config_file::max_global_quota, MAX_NEG_TTL, config_file::max_negative_ttl, config_file::max_query_restarts, config_file::max_reuse_tcp_queries, config_file::max_sent_count, config_file::max_ttl, MAX_TTL, MIN_NEG_TTL, config_file::min_negative_ttl, config_file::min_ttl, MIN_TTL, config_file::module_conf, config_file::msg_buffer_size, config_file::msg_cache_size, config_file::msg_cache_slabs, config_file::neg_cache_size, config_file::nsid_cfg_str, config_file::num_out_ifs, config_file::num_queries_per_thread, config_file::out_ifs, config_file::outbound_msg_retry, config_file::outgoing_avail_ports, config_file::outgoing_num_ports, config_file::outgoing_num_tcp, config_file::outgoing_tcp_mss, config_file::pad_queries, config_file::pad_queries_block_size, config_file::pad_responses, config_file::pad_responses_block_size, config_file::permit_small_holddown, config_file::pidfile, config_file::port, config_file::prefer_ip4, config_file::prefer_ip6, config_file::prefetch, config_file::prefetch_key, config_file::private_address, config_file::private_domain, config_file::proxy_protocol_port, config_file::python_script, config_file::qname_minimisation, config_file::qname_minimisation_strict, config_file::quic_port, config_file::quic_size, config_file::ratelimit, config_file::ratelimit_backoff, config_file::ratelimit_factor, config_file::ratelimit_size, config_file::ratelimit_slabs, config_file::remote_control_enable, config_file::root_hints, config_file::root_key_sentinel, config_file::rrset_cache_size, config_file::rrset_cache_slabs, RTT_MAX_TIMEOUT, RTT_MIN_TIMEOUT, S_MEMSIZE, S_NUMBER_NONZERO, S_NUMBER_OR_ZERO, S_POW2, S_SIZET_NONZERO, S_SIZET_OR_ZERO, S_STR, S_STRLIST, S_STRLIST_APPEND, S_STRLIST_UNIQ, S_UNSIGNED_OR_ZERO, S_YNO, config_file::serve_expired, SERVE_EXPIRED, config_file::serve_expired_client_timeout, config_file::serve_expired_reply_ttl, SERVE_EXPIRED_REPLY_TTL, config_file::serve_expired_ttl, SERVE_EXPIRED_TTL, config_file::serve_expired_ttl_reset, SERVE_EXPIRED_TTL_RESET, config_file::serve_original_ttl, config_file::server_cert_file, config_file::server_key_file, config_file::shm_enable, config_file::shm_key, config_file::so_rcvbuf, config_file::so_reuseport, config_file::so_sndbuf, config_file::sock_queue_timeout, config_file::ssl_port, config_file::ssl_service_key, config_file::ssl_service_pem, config_file::ssl_upstream, config_file::stat_cumulative, config_file::stat_extended, config_file::stat_inhibit_zero, config_file::stat_interval, config_file::stream_wait_size, config_file::target_fetch_policy, config_file::tcp_auth_query_timeout, config_file::tcp_idle_timeout, config_file::tcp_keepalive_timeout, config_file::tcp_mss, config_file::tcp_reuse_timeout, config_file::tcp_upstream, config_file::tls_additional_port, config_file::tls_cert_bundle, config_file::tls_ciphers, config_file::tls_ciphersuites, config_file::tls_session_ticket_keys, config_file::tls_use_sni, config_file::tls_win_cert, config_file::trust_anchor_file_list, config_file::trust_anchor_list, config_file::trust_anchor_signaling, config_file::trusted_keys_file_list, config_file::udp_connect, config_file::udp_upstream_without_downstream, config_file::unblock_lan_zones, config_file::unwanted_threshold, config_file::use_caps_bits_for_id, config_file::use_syslog, config_file::use_systemd, config_file::username, config_file::val_clean_additional, config_file::val_date_override, config_file::val_log_level, config_file::val_log_squelch, config_file::val_max_restart, config_file::val_nsec3_key_iterations, config_file::val_permissive_mode, config_file::val_sig_skew_max, config_file::val_sig_skew_min, verbosity, config_file::version, config_file::wait_limit, config_file::wait_limit_cookie, and config_file::zonemd_permissive_mode.
Referenced by do_set_option(), and ub_ctx_set_option().
| void config_print_func | ( | char * | line, |
| void * | arg | ||
| ) |
function to print to a file, use as func with config_get_option.
| line | text to print. appended. |
| arg | pass a FILE*, like stdout. |
Referenced by fptr_whitelist_print_func(), and print_option().
| void config_collate_func | ( | char * | line, |
| void * | arg | ||
| ) |
function to collate the text strings into a strlist_head.
| line | text to append. |
| arg | pass a strlist_head structure. zeroed on start. |
References cfg_strlist_append(), config_collate_arg::list, and config_collate_arg::status.
Referenced by config_get_option_list(), and fptr_whitelist_print_func().
| int config_get_option_list | ( | struct config_file * | cfg, |
| const char * | opt, | ||
| struct config_strlist ** | list | ||
| ) |
Get an option and return strlist.
| cfg | config file |
| opt | option name. |
| list | list is returned here. malloced, caller must free it. |
References config_collate_func(), config_delstrlist(), config_get_option(), config_strlist_head::first, config_collate_arg::list, and config_collate_arg::status.
Referenced by config_get_option_collate().
| int config_get_option_collate | ( | struct config_file * | cfg, |
| const char * | opt, | ||
| char ** | str | ||
| ) |
Get an option and collate results into string.
| cfg | config file |
| opt | option name. |
| str | string. malloced, caller must free it. |
References config_collate_cat(), config_delstrlist(), config_get_option_list(), and config_strlist::str.
Referenced by ub_ctx_get_option().
| char * config_collate_cat | ( | struct config_strlist * | list | ) |
take a strlist_head list and return a malloc string.
separated with newline.
| list | strlist first to collate. zeroes return "". |
References config_strlist::next, and config_strlist::str.
Referenced by config_get_option_collate().
| int config_get_option | ( | struct config_file * | cfg, |
| const char * | opt, | ||
| void(*)(char *, void *) | func, | ||
| void * | arg | ||
| ) |
Call print routine for the given option.
| cfg | config. |
| opt | option name without trailing :. This is different from config_set_option. |
| func | print func, called as (str, arg) for every data element. |
| arg | user argument for print func. |
References dns_error_reporting(), fptr_ok, fptr_whitelist_print_func(), log_time_iso, logfile, O_DEC, O_IFC, O_LS2, O_LS3, O_LST, O_LTG, O_MEM, O_STR, O_UNS, O_YNO, and verbosity.
Referenced by config_get_option_list(), do_get_option(), and print_option().
| void config_auto_slab_values | ( | struct config_file * | config | ) |
If _slabs values are not explicitly configured, 0 value, put them in a pow2 value close to the number of threads used.
Starts at the current default 4. If num_threads is in between two pow2 values, 1/3 of the way stays with the lower pow2 value. Exported for unit testing.
| config | where the _slabs values reside. |
References config_parser_state::cfg, log_assert, and config_file::num_threads.
Referenced by authtest_addzone(), config_read(), infra_test(), run_daemon(), service_init(), and zonemd_verify_test().
| int config_read | ( | struct config_file * | config, |
| const char * | filename, | ||
| const char * | chroot | ||
| ) |
Read the config file from the specified filename.
| config | where options are stored into, must be freshly created. |
| filename | name of configfile. If NULL nothing is done. |
| chroot | if not NULL, the chroot dir currently in use (for include). |
References config_parser_state::cfg, cfg_parser, config_parser_state::chroot, config_auto_slab_values(), config_read(), create_cfg_parser(), config_file::dnscrypt, config_file::dnscrypt_port, config_parser_state::errors, config_parser_state::filename, log_err(), ub_c_in, ub_c_parse(), VERB_QUERY, and verbose().
Referenced by checkconf(), config_read(), fr_read_config(), go(), print_stats_shm(), run_daemon(), service_init(), and ub_ctx_config().
| struct config_stub * cfg_stub_find | ( | struct config_stub *** | pp, |
| const char * | nm | ||
| ) |
Find stub in config list, also returns prevptr (for deletion).
| pp | call routine with pointer to a pointer to the start of the list, if the stub is found, on exit, the value contains a pointer to the next pointer that points to the found element (or to the list start pointer if it is the first element). |
| nm | name of stub to find. |
References config_stub::name, and config_stub::next.
Referenced by ub_ctx_set_stub().
| void config_delstrlist | ( | struct config_strlist * | list | ) |
Delete items in config string list.
| list | list. |
References config_strlist::next, and config_strlist::str.
Referenced by config_delauth(), config_delete(), config_delstub(), config_delview(), config_get_option_collate(), config_get_option_list(), dump_lruhash(), fast_reload_thread_desetup(), fr_main_perform_printout(), fr_printq_delete(), lz_freeup_cfg(), main(), print_dp_main(), remove_configfile(), and replay_moment_delete().
| void config_deldblstrlist | ( | struct config_str2list * | list | ) |
Delete items in config double string list.
| list | list. |
References config_str2list::next, config_str2list::str, and config_str2list::str2.
Referenced by config_delete(), config_delview(), lz_freeup_cfg(), read_acl_interface_view(), read_acl_view(), and respip_conf_actions_test().
| void config_deltrplstrlist | ( | struct config_str3list * | list | ) |
Delete items in config triple string list.
| list | list. |
References config_str3list::next, config_str3list::str, config_str3list::str2, and config_str3list::str3.
Referenced by config_delete(), read_acl_interface_tag_actions(), read_acl_interface_tag_datas(), read_acl_tag_actions(), and read_acl_tag_datas().
| void config_delauth | ( | struct config_auth * | p | ) |
Delete an auth item.
| p | auth item |
References config_auth::allow_notify, config_delstrlist(), config_auth::masters, config_auth::name, config_auth::rpz_action_override, config_auth::rpz_cname, config_auth::rpz_log_name, config_auth::rpz_taglist, config_auth::urls, and config_auth::zonefile.
Referenced by config_delauths().
| void config_delauths | ( | struct config_auth * | list | ) |
Delete items in config auth list.
| list | list. |
References config_delauth(), and config_auth::next.
Referenced by config_delete().
| void config_delstub | ( | struct config_stub * | p | ) |
Delete a stub item.
| p | stub item |
References config_stub::addrs, config_delstrlist(), config_stub::hosts, and config_stub::name.
Referenced by config_delstubs(), and ub_ctx_set_stub().
| void config_delstubs | ( | struct config_stub * | list | ) |
Delete items in config stub list.
| list | list. |
References config_delstub(), and config_stub::next.
Referenced by config_delete(), and ub_ctx_set_fwd().
| void config_delview | ( | struct config_view * | p | ) |
Delete a view item.
| p | view item |
References config_deldblstrlist(), config_delstrlist(), config_view::local_data, config_view::local_zones, config_view::local_zones_nodefault, and config_view::name.
Referenced by config_delviews().
| void config_delviews | ( | struct config_view * | list | ) |
Delete items in config view list.
| list | list. |
References config_delview(), and config_view::next.
Referenced by config_delete().
| void config_delete | ( | struct config_file * | config | ) |
Destroy the config file structure.
| config | to delete. |
References config_file::acl_tag_actions, config_file::acl_tag_datas, config_file::acl_tags, config_file::acl_view, config_file::acls, config_file::auths, config_file::auto_trust_anchor_file_list, config_file::caps_whitelist, config_file::chrootdir, config_del_strarray(), config_del_strbytelist(), config_delauths(), config_deldblstrlist(), config_delstrlist(), config_delstubs(), config_deltrplstrlist(), config_delviews(), config_file::control_cert_file, config_file::control_ifs, config_file::control_key_file, config_file::cookie_secret_file, config_file::directory, config_file::dns64_ignore_aaaa, config_file::dnstap_identity, config_file::dnstap_ip, config_file::dnstap_socket_path, config_file::dnstap_tls_cert_bundle, config_file::dnstap_tls_client_cert_file, config_file::dnstap_tls_client_key_file, config_file::dnstap_tls_server_name, config_file::dnstap_version, config_file::domain_insecure, config_file::donotqueryaddrs, config_file::dynlib_file, config_file::edns_client_strings, config_strlist_head::first, config_file::forwards, config_file::http_endpoint, config_file::http_user_agent, config_file::identity, config_file::if_automatic_ports, config_file::ifs, config_file::interface_actions, config_file::interface_tag_actions, config_file::interface_tag_datas, config_file::interface_tags, config_file::interface_view, config_file::local_data, config_file::local_zone_overrides, config_file::local_zone_tags, config_file::local_zones, config_file::local_zones_nodefault, log_ident_revert_to_default(), config_file::log_identity, config_file::logfile, config_file::module_conf, config_file::nsid_cfg_str, config_file::num_ifs, config_file::num_out_ifs, config_file::num_tags, config_file::out_ifs, config_file::outgoing_avail_ports, config_file::pidfile, config_file::private_address, config_file::private_domain, config_file::proxy_protocol_port, config_file::python_script, config_file::ratelimit_below_domain, config_file::ratelimit_for_domain, config_file::respip_actions, config_file::respip_tags, config_file::root_hints, config_file::server_cert_file, config_file::server_key_file, config_file::ssl_service_key, config_file::ssl_service_pem, config_file::stubs, config_file::tagname, config_file::target_fetch_policy, config_file::tcp_connection_limits, config_file::tls_additional_port, config_file::tls_cert_bundle, config_file::tls_ciphers, config_file::tls_ciphersuites, config_file::tls_session_ticket_keys, config_file::trust_anchor_file_list, config_file::trust_anchor_list, config_file::trusted_keys_file_list, config_file::username, config_file::val_nsec3_key_iterations, config_file::version, config_file::views, config_file::wait_limit_cookie_netblock, and config_file::wait_limit_netblock.
Referenced by authtest_addzone(), checkconf(), config_create(), fr_construct_clear(), fr_load_config(), fr_read_config(), go(), infra_test(), print_stats_shm(), run_daemon(), service_deinit(), service_init(), service_main(), ub_ctx_create(), ub_ctx_create_nopipe(), ub_ctx_delete(), and zonemd_verify_test().
| int cfg_mark_ports | ( | const char * | str, |
| int | allow, | ||
| int * | avail, | ||
| int | num | ||
| ) |
Mark "number" or "low-high" as available or not in ports array.
| str | string in input |
| allow | give true if this range is permitted. |
| avail | the array from cfg. |
| num | size of the array (65536). |
References log_err(), and log_warn().
Referenced by config_set_option().
| int cfg_scan_ports | ( | int * | avail, |
| int | num | ||
| ) |
Scan ports available.
| avail | the array from cfg. |
| num | size of the array (65536). |
Referenced by cfg_condense_ports().
| int cfg_condense_ports | ( | struct config_file * | cfg, |
| int ** | avail | ||
| ) |
Get a condensed list of ports returned.
allocated.
| cfg | config file. |
| avail | the available ports array is returned here. |
References cfg_scan_ports(), log_assert, and config_file::outgoing_avail_ports.
Referenced by libworker_setup().
| void cfg_apply_local_port_policy | ( | struct config_file * | cfg, |
| int | num | ||
| ) |
Apply system specific port range policy.
| cfg | config file. |
| num | size of the array (65536). |
References log_err(), and config_file::outgoing_avail_ports.
Referenced by context_finalize().
| int cfg_strlist_append | ( | struct config_strlist_head * | list, |
| char * | item | ||
| ) |
Append text at end of list.
| list | list head. zeroed at start. |
| item | new item. malloced by caller. if NULL the insertion fails. |
References config_strlist_head::first, config_strlist_head::last, config_strlist::next, and config_strlist::str.
Referenced by config_collate_func(), fr_output_text(), main(), and spool_txt_string().
| struct config_strlist * cfg_strlist_find | ( | struct config_strlist * | head, |
| const char * | item | ||
| ) |
Find string in strlist.
| head | pointer to strlist head variable. |
| item | the item to search for. |
References config_strlist::next, and config_strlist::str.
| int cfg_strlist_insert | ( | struct config_strlist ** | head, |
| char * | item | ||
| ) |
Insert string into strlist.
| head | pointer to strlist head variable. |
| item | new item. malloced by caller. If NULL the insertion fails. |
References config_strlist::next, and config_strlist::str.
Referenced by cfg_parse_local_zone(), config_set_option(), dnsc_load_local_data(), read_file_content(), setup_config(), spool_auto_file(), spool_temp_file(), ub_ctx_add_ta(), ub_ctx_add_ta_autr(), ub_ctx_add_ta_file(), ub_ctx_hosts(), ub_ctx_set_fwd(), ub_ctx_set_stub(), ub_ctx_trustedkeys(), and zonemd_verify_test().
| int cfg_strlist_append_ex | ( | struct config_strlist ** | head, |
| char * | item | ||
| ) |
Searches the end of a string list and appends the given text.
| head | pointer to strlist head variable. |
| item | new item. malloced by caller. if NULL the insertion fails. |
References config_strlist::next, and config_strlist::str.
| int cfg_str2list_insert | ( | struct config_str2list ** | head, |
| char * | item, | ||
| char * | i2 | ||
| ) |
Insert string into str2list.
| head | pointer to str2list head variable. |
| item | new item. malloced by caller. If NULL the insertion fails. |
| i2 | 2nd string, malloced by caller. If NULL the insertion fails. |
References config_str2list::next, config_str2list::str, and config_str2list::str2.
Referenced by cfg_insert_respip_data(), cfg_parse_local_zone(), dnsc_load_local_data(), respip_conf_actions_test(), respip_view_conf_actions_test(), and views_apply_cfg().
| int cfg_str3list_insert | ( | struct config_str3list ** | head, |
| char * | item, | ||
| char * | i2, | ||
| char * | i3 | ||
| ) |
Insert string into str3list.
| head | pointer to str3list head variable. |
| item | new item. malloced by caller. If NULL the insertion fails. |
| i2 | 2nd string, malloced by caller. If NULL the insertion fails. |
| i3 | 3rd string, malloced by caller. If NULL the insertion fails. |
References config_str3list::next, config_str3list::str, config_str3list::str2, and config_str3list::str3.
| int cfg_strbytelist_insert | ( | struct config_strbytelist ** | head, |
| char * | item, | ||
| uint8_t * | i2, | ||
| size_t | i2len | ||
| ) |
Insert string into strbytelist.
| head | pointer to strbytelist head variable. |
| item | new item. malloced by caller. If NULL the insertion fails. |
| i2 | 2nd string, malloced by caller. If NULL the insertion fails. |
| i2len | length of the i2 bytestring. |
References config_strbytelist::next, config_strbytelist::str, and config_strbytelist::str2.
| time_t cfg_convert_timeval | ( | const char * | str | ) |
Convert 14digit to time value.
| str | string of 14 digits |
References sldns_mktime_from_utc().
Referenced by config_set_option(), verifytest_file(), and zonemd_verify_test().
| int cfg_count_numbers | ( | const char * | str | ) |
Count number of values in the string.
format ::= (sp num)+ sp num ::= [-](0-9)+ sp ::= (space|tab)*
| str | string |
Referenced by read_fetch_policy(), and val_env_parse_key_iter().
| int cfg_parse_memsize | ( | const char * | str, |
| size_t * | res | ||
| ) |
Convert a 'nice' memory or file size into a bytecount From '100k' to 102400.
and so on. Understands kKmMgG. k=1024, m=1024*1024, g=1024*1024*1024.
| str | string |
| res | result is stored here, size in bytes. |
References isalldigit(), and log_err().
Referenced by config_memsize_test(), and main().
| int find_tag_id | ( | struct config_file * | cfg, |
| const char * | tag | ||
| ) |
Find tag ID in the tag list.
| cfg | the config structure. |
| tag | string with tag name to search for. |
References config_file::num_tags, and config_file::tagname.
Referenced by acl_list_tag_action_cfg(), acl_list_tag_data_cfg(), acl_view_tag_checks(), config_add_tag(), and config_parse_taglist().
| int config_add_tag | ( | struct config_file * | cfg, |
| const char * | tag | ||
| ) |
Add a tag name to the config.
It is added at the end with a new ID value.
| cfg | the config structure. |
| tag | string (which is copied) with the name. |
References find_tag_id(), config_file::num_tags, and config_file::tagname.
Referenced by config_set_option().
| uint8_t * config_parse_taglist | ( | struct config_file * | cfg, |
| char * | str, | ||
| size_t * | listlen | ||
| ) |
parse taglist from string into bytestring with bitlist.
| cfg | the config structure (with tagnames) |
| str | the string to parse. Parse puts 0 bytes in string. |
| listlen | returns length of in bytes. |
References cfg_set_bit(), find_tag_id(), log_err(), and config_file::num_tags.
| uint8_t * cfg_parse_nsid | ( | const char * | str, |
| uint16_t * | nsid_len | ||
| ) |
Parse nsid from string into binary nsid.
nsid is either a hexadecimal string or an ascii string prepended with ascii_ in which case the characters after ascii_ are simply copied.
| str | the string to parse. |
| nsid_len | returns length of nsid in bytes. |
References sldns_hexdigit_to_int().
Referenced by config_set_option().
| char * config_taglist2str | ( | struct config_file * | cfg, |
| uint8_t * | taglist, | ||
| size_t | len | ||
| ) |
convert tag bitlist to a malloced string with tag names.
For debug output.
| cfg | the config structure (with tagnames) |
| taglist | the tag bitlist. |
| len | length of the tag bitlist. |
References config_file::tagname.
| int taglist_intersect | ( | uint8_t * | list1, |
| size_t | list1len, | ||
| const uint8_t * | list2, | ||
| size_t | list2len | ||
| ) |
see if two taglists intersect (have tags in common).
| list1 | first tag bitlist. |
| list1len | length in bytes of first list. |
| list2 | second tag bitlist. |
| list2len | length in bytes of second list. |
Referenced by config_tag_test(), local_zones_tags_lookup(), respip_rewrite_reply(), rpz_callback_from_iterator_cname(), and rpz_callback_from_iterator_module().
| void config_apply | ( | struct config_file * | config | ) |
Apply config to global constants; this routine is called in single thread.
| config | to apply. Side effect: global constants change. |
References autr_permit_small_holddown, config_apply_max_rtt(), EDNS_ADVERTISED_SIZE, config_file::edns_buffer_size, http2_query_buffer_max, http2_response_buffer_max, config_file::http_query_buffer_size, config_file::http_response_buffer_size, config_file::infra_cache_max_rtt, config_file::infra_cache_min_rtt, log_set_time_asc(), log_set_time_iso(), config_file::log_tag_queryreply, LOG_TAG_QUERYREPLY, config_file::log_time_ascii, config_file::log_time_iso, MAX_GLOBAL_QUOTA, config_file::max_global_quota, MAX_NEG_TTL, config_file::max_negative_ttl, config_file::max_ttl, MAX_TTL, MIN_NEG_TTL, config_file::min_negative_ttl, config_file::min_ttl, MIN_TTL, MINIMAL_RESPONSES, config_file::permit_small_holddown, RRSET_ROUNDROBIN, RTT_MAX_TIMEOUT, RTT_MIN_TIMEOUT, config_file::serve_expired, SERVE_EXPIRED, config_file::serve_expired_reply_ttl, SERVE_EXPIRED_REPLY_TTL, config_file::serve_expired_ttl, SERVE_EXPIRED_TTL, config_file::serve_expired_ttl_reset, SERVE_EXPIRED_TTL_RESET, config_file::serve_original_ttl, SERVE_ORIGINAL_TTL, stream_wait_max, config_file::stream_wait_size, and UNKNOWN_SERVER_NICENESS.
Referenced by context_finalize(), daemon_apply_cfg(), and fr_reload_config().
| void config_lookup_uid | ( | struct config_file * | config | ) |
Find username, sets cfg_uid and cfg_gid.
| config | the config structure. |
References cfg_gid, cfg_uid, and config_file::username.
Referenced by run_daemon().
|
static |
Calculate string length of full pathname in original filesys.
| fname | the path name to convert. Must not be null or empty. |
| cfg | config struct for chroot and chdir (if set). |
| use_chdir | if false, only chroot is applied. |
References config_file::chrootdir, and config_file::directory.
Referenced by fname_after_chroot().
| char * fname_after_chroot | ( | const char * | fname, |
| struct config_file * | cfg, | ||
| int | use_chdir | ||
| ) |
Convert a filename to full pathname in original filesys.
| fname | the path name to convert. Must not be null or empty. |
| cfg | config struct for chroot and chdir (if set). |
| use_chdir | if false, only chroot is applied. |
References config_file::chrootdir, config_file::directory, and strlen_after_chroot().
Referenced by check_chroot_filelist_wild(), check_chroot_string(), morechecks(), perform_setup(), print_option(), and setup_ctx().
| int cfg_parse_local_zone | ( | struct config_file * | cfg, |
| const char * | val | ||
| ) |
Parse local-zone directive into two strings and register it in the config.
| cfg | to put it in. |
| val | argument strings to local-zone, "example.com nodefault". |
References cfg_str2list_insert(), cfg_strlist_insert(), last_space_pos(), config_file::local_zones, config_file::local_zones_nodefault, log_err(), and next_space_pos().
Referenced by config_set_option().
| char * cfg_ptr_reverse | ( | char * | str | ) |
Convert a ptr shorthand into a full reverse-notation PTR record.
| str | input string, "IP name" |
References addr_is_ip6(), ipstrtoaddr(), last_space_pos(), log_err(), and next_space_pos().
Referenced by config_set_option().
| int if_listens_on | ( | const char * | ifname, |
| int | default_port, | ||
| int | port, | ||
| struct config_strlist * | additional_ports | ||
| ) |
Return true if interface will listen to specific port(s).
| ifname | the interface as configured in the configuration file. |
| default_port | the default port to use as the interface port if ifname does not include a port via the '@' notation. |
| port | port to check for, if 0 it will not be checked. |
| additional_ports | additional configured ports, if any (nonNULL) to be checked against. |
References config_strlist::next, and config_strlist::str.
Referenced by if_is_dnscrypt(), if_is_https(), if_is_pp2(), if_is_quic(), if_is_ssl(), and ports_create_if().
| int cfg_has_https | ( | struct config_file * | cfg | ) |
Return true if the config contains settings that enable https.
| cfg | config information. |
References config_file::https_port, if_is_https(), config_file::ifs, config_file::num_ifs, and config_file::port.
Referenced by checkrlimits(), and service_init().
| int cfg_has_quic | ( | struct config_file * | cfg | ) |
Return true if the config contains settings that enable quic.
| cfg | config information. |
References if_is_quic(), config_file::ifs, config_file::num_ifs, config_file::port, and config_file::quic_port.
Referenced by service_init().
| int autr_permit_small_holddown = 0 |
for debug allow small timeout values for fast rollovers
debug and enable small timeouts
Referenced by autr_probe_timer(), calc_next_probe(), config_apply(), config_set_option(), and set_tp_times().
| struct config_parser_state* cfg_parser = 0 |
global config during parsing
global config parser object used during config parsing
Referenced by config_read(), create_cfg_parser(), ub_c_error(), and ub_c_error_va_list().