X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=forwards.c;h=158ccbffdcabce7b0522adf594576b22c28802c3;hp=9abe4bf1d95302b14543175ad925c03cced34b59;hb=54c0625e83a5ddf77e1753885c96f488ba38f78a;hpb=275a37dbf280bd471ebb2c673267c49a81071bbb diff --git a/forwards.c b/forwards.c index 9abe4bf..158ccbf 100644 --- a/forwards.c +++ b/forwards.c @@ -19,12 +19,16 @@ #include "forwards.h" -static struct fw3_option forward_opts[] = { +const struct fw3_option fw3_forward_opts[] = { + FW3_OPT("enabled", bool, forward, enabled), + FW3_OPT("name", string, forward, name), FW3_OPT("family", family, forward, family), FW3_OPT("src", device, forward, src), FW3_OPT("dest", device, forward, dest), + + { } }; @@ -51,7 +55,15 @@ fw3_load_forwards(struct fw3_state *state, struct uci_package *p) memset(forward, 0, sizeof(*forward)); - fw3_parse_options(forward, forward_opts, ARRAY_SIZE(forward_opts), s); + forward->enabled = true; + + fw3_parse_options(forward, fw3_forward_opts, s); + + if (!forward->enabled) + { + fw3_free_forward(forward); + continue; + } if (forward->src.invert || forward->dest.invert) { @@ -123,10 +135,7 @@ print_forward(enum fw3_table table, enum fw3_family family, s = forward->_src ? forward->_src->name : "*"; d = forward->_dest ? forward->_dest->name : "*"; - if (forward->name) - info(" * Forward '%s'", forward->name); - else - info(" * Forward %s->%s", s, d); + info(" * Forward '%s' -> '%s'", s, d); if (!fw3_is_family(forward->_src, family) || !fw3_is_family(forward->_dest, family))