From: Florent Bruneau Date: Mon, 15 Sep 2008 13:59:42 +0000 (+0200) Subject: filter_params_t -> filter_param_t X-Git-Url: http://git.madism.org/?p=apps%2Fpfixtools.git;a=commitdiff_plain;h=db33734000d10dde33e52777bc76b0ee398be406 filter_params_t -> filter_param_t Signed-off-by: Florent Bruneau --- diff --git a/postlicyd/config.c b/postlicyd/config.c index 67cfb29..ec63480 100644 --- a/postlicyd/config.c +++ b/postlicyd/config.c @@ -34,7 +34,6 @@ */ #include "file.h" -#include "filter.h" #include "config.h" #include "str.h" @@ -42,12 +41,6 @@ config_param_register("first_filter"); -struct config_t { - A(filter_t) filters; - A(filter_params_t) params; - int entry_point; -}; - static inline config_t *config_new(void) { config_t *config = p_new(config_t, 1); @@ -83,6 +76,23 @@ static bool config_second_pass(config_t *config) } }} + config->entry_point = -1; + foreach (filter_param_t *param, config->params) { + switch (param->type) { + case ATK_FIRST_FILTER: + config->entry_point = filter_find_with_name(&config->filters, + param->value); + break; + default: break; + } + }} + array_deep_wipe(config->params, filter_params_wipe); + + if (config->entry_point == -1) { + ok = false; + syslog(LOG_ERR, "no entry point defined"); + } + return ok; } @@ -238,7 +248,7 @@ read_param_value: READ_BLANK(goto badeof); READ_STRING("parameter value", value, value_len, ;); { - filter_params_t param; + filter_param_t param; param.type = param_tokenize(key, key_len); if (param.type != ATK_UNKNOWN) { param.value = m_strdup(value); diff --git a/postlicyd/config.h b/postlicyd/config.h index f823bce..00d4324 100644 --- a/postlicyd/config.h +++ b/postlicyd/config.h @@ -36,8 +36,16 @@ #ifndef PFIXTOOLS_CONFIG_H #define PFIXTOOLS_CONFIG_H +#include "filter.h" + typedef struct config_t config_t; +struct config_t { + A(filter_t) filters; + A(filter_param_t) params; + int entry_point; +}; + __attribute__((nonnull(1))) config_t *config_read(const char *file); diff --git a/postlicyd/filter.c b/postlicyd/filter.c index bbb08c5..f00a89a 100644 --- a/postlicyd/filter.c +++ b/postlicyd/filter.c @@ -154,7 +154,7 @@ bool filter_set_type(filter_t *filter, const char *type, ssize_t len) bool filter_add_param(filter_t *filter, const char *name, ssize_t name_len, const char *value, ssize_t value_len) { - filter_params_t param; + filter_param_t param; param.type = param_tokenize(name, name_len); if (param.type == ATK_UNKNOWN) { syslog(LOG_ERR, "unknown parameter %.*s", name_len, name); diff --git a/postlicyd/filter.h b/postlicyd/filter.h index 5037868..12bde4b 100644 --- a/postlicyd/filter.h +++ b/postlicyd/filter.h @@ -56,11 +56,11 @@ typedef struct filter_hook_t { } filter_hook_t; ARRAY(filter_hook_t) -typedef struct filter_params_t { +typedef struct filter_param_t { filter_param_id_t type; char *value; -} filter_params_t; -ARRAY(filter_params_t) +} filter_param_t; +ARRAY(filter_param_t) typedef struct filter_t { char *name; @@ -69,7 +69,7 @@ typedef struct filter_t { A(filter_hook_t) hooks; void *data; - A(filter_params_t) params; + A(filter_param_t) params; } filter_t; ARRAY(filter_t) @@ -154,7 +154,7 @@ static inline void filter_hook_wipe(filter_hook_t *hook) } __attribute__((nonnull(1))) -static inline void filter_params_wipe(filter_params_t *param) +static inline void filter_params_wipe(filter_param_t *param) { p_delete(¶m->value); } diff --git a/postlicyd/rbl.c b/postlicyd/rbl.c index ed4ab2b..3651563 100644 --- a/postlicyd/rbl.c +++ b/postlicyd/rbl.c @@ -252,7 +252,7 @@ static bool rbl_filter_constructor(filter_t *filter) return false; \ } - foreach (filter_params_t *param, filter->params) { + foreach (filter_param_t *param, filter->params) { switch (param->type) { /* file parameter is: * [no]lock:weight:filename