X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=postlicyd%2Fconfig.c;h=ec634804aa1240eb1b8ddfda2568f1ab2dab5f3c;hb=db33734000d10dde33e52777bc76b0ee398be406;hp=67cfb29eb6553571cde13d75914ac64c91cb1cef;hpb=dd53acce112e59a9ba35e3389c9bad4ea81480ca;p=apps%2Fpfixtools.git 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);