helpers: implement explicit CT helper assignment support
[project/firewall3.git] / defaults.c
index 2dbbb633e2e442b10c5d0f15de034ae934df864a..7b2d9e6f357f2aecdbbc12904882c7651d8b9173 100644 (file)
@@ -54,6 +54,7 @@ const struct fw3_option fw3_flag_opts[] = {
        FW3_OPT("accept_redirects",    bool,     defaults, accept_redirects),
        FW3_OPT("accept_source_route", bool,     defaults, accept_source_route),
 
+       FW3_OPT("auto_helper",         bool,     defaults, auto_helper),
        FW3_OPT("custom_chains",       bool,     defaults, custom_chains),
        FW3_OPT("disable_ipv6",        bool,     defaults, disable_ipv6),
 
@@ -93,6 +94,7 @@ fw3_load_defaults(struct fw3_state *state, struct uci_package *p)
        defs->tcp_syncookies       = true;
        defs->tcp_window_scaling   = true;
        defs->custom_chains        = true;
+       defs->auto_helper          = true;
 
        uci_foreach_element(&p->sections, e)
        {
@@ -107,7 +109,8 @@ fw3_load_defaults(struct fw3_state *state, struct uci_package *p)
                        continue;
                }
 
-               fw3_parse_options(&state->defaults, fw3_flag_opts, s);
+               if(!fw3_parse_options(&state->defaults, fw3_flag_opts, s))
+                       warn_elem(e, "has invalid options");
 
                check_policy(e, &defs->policy_input, "input");
                check_policy(e, &defs->policy_output, "output");
@@ -154,7 +157,7 @@ fw3_print_default_chains(struct fw3_ipt_handle *handle, struct fw3_state *state,
                        continue;
 
                if (c->flag &&
-                   !hasbit(defs->flags[handle->family == FW3_FAMILY_V6], c->flag))
+                   !fw3_hasbit(defs->flags[handle->family == FW3_FAMILY_V6], c->flag))
                        continue;
 
                fw3_ipt_create_chain(handle, c->format);