X-Git-Url: http://git.archive.openwrt.org/?p=project%2Ffirewall3.git;a=blobdiff_plain;f=redirects.c;h=15855c9ea74673af8614a7ad7c3ccdc88f1eda08;hp=6d33f905ffbddc1c662dd689fb4e5c5a92ca8768;hb=52d62c3d4654c39b39f4851d2884884e0c104b24;hpb=3a3d85b3c787271e4860ca590d716cf557c1fb7e diff --git a/redirects.c b/redirects.c index 6d33f90..15855c9 100644 --- a/redirects.c +++ b/redirects.c @@ -44,6 +44,9 @@ const struct fw3_option fw3_redirect_opts[] = { FW3_OPT("extra", string, redirect, extra), + FW3_OPT("limit", limit, redirect, limit), + FW3_OPT("limit_burst", int, redirect, limit.burst), + FW3_OPT("utc_time", bool, redirect, time.utc), FW3_OPT("start_date", date, redirect, time.datestart), FW3_OPT("stop_date", date, redirect, time.datestop), @@ -118,7 +121,7 @@ compare_addr(struct fw3_address *a, struct fw3_address *b) if (a->family != FW3_FAMILY_V4) return false; - mask = ~((1 << (32 - a->mask)) - 1); + mask = htonl(~((1 << (32 - a->mask)) - 1)); return ((a->address.v4.s_addr & mask) == (b->address.v4.s_addr & mask)); } @@ -445,6 +448,7 @@ print_redirect(struct fw3_ipt_handle *h, struct fw3_state *state, fw3_ipt_rule_sport_dport(r, spt, dpt); fw3_ipt_rule_mac(r, mac); fw3_ipt_rule_ipset(r, &redir->ipset); + fw3_ipt_rule_limit(r, &redir->limit); fw3_ipt_rule_time(r, &redir->time); fw3_ipt_rule_mark(r, &redir->mark); set_target_nat(r, redir); @@ -463,6 +467,7 @@ print_redirect(struct fw3_ipt_handle *h, struct fw3_state *state, fw3_ipt_rule_sport_dport(r, spt, dpt); fw3_ipt_rule_mac(r, mac); fw3_ipt_rule_ipset(r, &redir->ipset); + fw3_ipt_rule_limit(r, &redir->limit); fw3_ipt_rule_time(r, &redir->time); fw3_ipt_rule_mark(r, &redir->mark); set_target_filter(r, redir); @@ -489,6 +494,7 @@ print_reflection(struct fw3_ipt_handle *h, struct fw3_state *state, case FW3_TABLE_NAT: r = fw3_ipt_rule_create(h, proto, NULL, NULL, ia, ea); fw3_ipt_rule_sport_dport(r, NULL, &redir->port_dest); + fw3_ipt_rule_limit(r, &redir->limit); fw3_ipt_rule_time(r, &redir->time); set_comment(r, redir->name, num, true); set_snat_dnat(r, FW3_FLAG_DNAT, &redir->ip_redir, &redir->port_redir); @@ -496,6 +502,7 @@ print_reflection(struct fw3_ipt_handle *h, struct fw3_state *state, r = fw3_ipt_rule_create(h, proto, NULL, NULL, ia, &redir->ip_redir); fw3_ipt_rule_sport_dport(r, NULL, &redir->port_redir); + fw3_ipt_rule_limit(r, &redir->limit); fw3_ipt_rule_time(r, &redir->time); set_comment(r, redir->name, num, true); set_snat_dnat(r, FW3_FLAG_SNAT, ra, NULL); @@ -505,6 +512,7 @@ print_reflection(struct fw3_ipt_handle *h, struct fw3_state *state, case FW3_TABLE_FILTER: r = fw3_ipt_rule_create(h, proto, NULL, NULL, ia, &redir->ip_redir); fw3_ipt_rule_sport_dport(r, NULL, &redir->port_redir); + fw3_ipt_rule_limit(r, &redir->limit); fw3_ipt_rule_time(r, &redir->time); set_comment(r, redir->name, num, true); fw3_ipt_rule_target(r, "zone_%s_dest_ACCEPT", redir->dest.name);