static void filter_call_init(FilterExprNode *s, GlobalConfig *cfg) { FilterCall *self = (FilterCall *) s; LogExprNode *rule; rule = cfg_tree_get_object(&cfg->tree, ENC_FILTER, self->rule); if (rule) { /* this is quite fragile and would break whenever the parsing code in * cfg-grammar.y changes to parse a filter rule. We assume that a * filter rule has a single child, which contains a LogFilterPipe * instance as its object. */ LogFilterPipe *filter_pipe = (LogFilterPipe *) rule->children->object; self->filter_expr = filter_expr_ref(filter_pipe->expr); filter_expr_init(self->filter_expr, cfg); } else { msg_error("Referenced filter rule not found in filter() expression", evt_tag_str("rule", self->rule), NULL); } }
static WildcardSourceDriver * _create_wildcard_filesource(const gchar *wildcard_config) { cr_assert(_parse_config(wildcard_config), "Parsing the given configuration failed"); cr_assert(cfg_init(configuration), "Config initialization failed"); LogExprNode *expr_node = cfg_tree_get_object(&configuration->tree, ENC_SOURCE, "s_test"); cr_assert(expr_node != NULL); WildcardSourceDriver *driver = (WildcardSourceDriver *)expr_node->children->children->object; cr_assert(driver != NULL); return driver; }
LogRewrite * create_rewrite_rule(const char *raw_rewrite_rule) { char raw_config[1024]; configuration = cfg_new(VERSION_VALUE); snprintf(raw_config, sizeof(raw_config), "rewrite s_test{ %s }; log{ rewrite(s_test); };", raw_rewrite_rule); assert_true(parse_config(raw_config, LL_CONTEXT_ROOT, NULL, NULL), ASSERTION_ERROR("Parsing the given configuration failed")); assert_true(cfg_init(configuration), ASSERTION_ERROR("Config initialization failed")); LogExprNode *expr_node = cfg_tree_get_object(&configuration->tree, ENC_REWRITE, "s_test"); return (LogRewrite *)expr_node->children->object; }