X-Git-Url: http://git.archive.openwrt.org/?a=blobdiff_plain;f=forwards.c;h=9b369f386979d1acb5f0dc74b8bda1c474ae3e90;hb=6039c7f4b0052c4da21520cdd604f04a5a67f50d;hp=5911732799969a9f14d1d1686bf28adc178fafd4;hpb=be8ead27f625b3e4ed383f270dcfee2d158231ec;p=project%2Ffirewall3.git diff --git a/forwards.c b/forwards.c index 5911732..9b369f3 100644 --- a/forwards.c +++ b/forwards.c @@ -54,7 +54,8 @@ fw3_load_forwards(struct fw3_state *state, struct uci_package *p) forward->enabled = true; - fw3_parse_options(forward, fw3_forward_opts, s); + if (!fw3_parse_options(forward, fw3_forward_opts, s)) + warn_elem(e, "has invalid options"); if (!forward->enabled) { @@ -83,21 +84,18 @@ fw3_load_forwards(struct fw3_state *state, struct uci_package *p) continue; } + list_add_tail(&forward->list, &state->forwards); + continue; + } + + list_for_each_entry(forward, &state->forwards, list) + { /* NB: forward family... */ if (forward->_dest) { - setbit(forward->_dest->flags[0], FW3_FLAG_ACCEPT); - setbit(forward->_dest->flags[1], FW3_FLAG_ACCEPT); - - if (forward->_src && - (forward->_src->conntrack || forward->_dest->conntrack)) - { - forward->_src->conntrack = forward->_dest->conntrack = true; - } + fw3_setbit(forward->_dest->flags[0], FW3_FLAG_ACCEPT); + fw3_setbit(forward->_dest->flags[1], FW3_FLAG_ACCEPT); } - - list_add_tail(&forward->list, &state->forwards); - continue; } }