static LogPipe * log_filter_pipe_clone(LogPipe *s) { LogFilterPipe *self = (LogFilterPipe *) s; return log_filter_pipe_new(filter_expr_ref(self->expr)); }
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 FilterExprNode * _init_filter_from_log_node(GlobalConfig *cfg, LogExprNode *node) { LogFilterPipe *filter_pipe = (LogFilterPipe *) node->children->object; FilterExprNode *selected_filter = filter_expr_ref(filter_pipe->expr); filter_expr_init(selected_filter, cfg); return selected_filter; }
static LogPipe * log_rewrite_set_clone(LogPipe *s) { LogRewriteSet *self = (LogRewriteSet *) s; LogRewriteSet *cloned; cloned = (LogRewriteSet *) log_rewrite_set_new(log_template_ref(self->value_template), s->cfg); cloned->super.value_handle = self->super.value_handle; if (self->super.condition) cloned->super.condition = filter_expr_ref(self->super.condition); return &cloned->super.super; }