gboolean cfg_init(GlobalConfig *cfg) { gint regerr; if (cfg->file_template_name && !(cfg->file_template = cfg_tree_lookup_template(&cfg->tree, cfg->file_template_name))) msg_error("Error resolving file template", evt_tag_str("name", cfg->file_template_name), NULL); if (cfg->proto_template_name && !(cfg->proto_template = cfg_tree_lookup_template(&cfg->tree, cfg->proto_template_name))) msg_error("Error resolving protocol template", evt_tag_str("name", cfg->proto_template_name), NULL); if (cfg->bad_hostname_re) { if ((regerr = regcomp(&cfg->bad_hostname, cfg->bad_hostname_re, REG_NOSUB | REG_EXTENDED)) != 0) { gchar buf[256]; regerror(regerr, &cfg->bad_hostname, buf, sizeof(buf)); msg_error("Error compiling bad_hostname regexp", evt_tag_str("error", buf), NULL); } else { cfg->bad_hostname_compiled = TRUE; } } if (!rcptid_init(cfg->state, cfg->use_uniqid)) return FALSE; stats_reinit(&cfg->stats_options); log_tags_reinit_stats(cfg); dns_caching_update_options(&cfg->dns_cache_options); hostname_reinit(cfg->custom_domain); host_resolve_options_init(&cfg->host_resolve_options, cfg); log_template_options_init(&cfg->template_options, cfg); if (!cfg_init_modules(cfg)) return FALSE; return cfg_tree_start(&cfg->tree); }
/* NOTE: _init needs to be idempotent when called multiple times w/o invoking _destroy */ void log_source_options_init(LogSourceOptions *options, GlobalConfig *cfg, const gchar *group_name) { gchar *source_group_name; if (options->keep_hostname == -1) options->keep_hostname = cfg->keep_hostname; if (options->chain_hostnames == -1) options->chain_hostnames = cfg->chain_hostnames; if (options->keep_timestamp == -1) options->keep_timestamp = cfg->keep_timestamp; options->group_name = group_name; source_group_name = g_strdup_printf(".source.%s", group_name); options->source_group_tag = log_tags_get_by_name(source_group_name); g_free(source_group_name); host_resolve_options_init(&options->host_resolve_options, cfg); }