From: Jan Engelhardt Date: Fri, 12 Jun 2009 18:35:42 +0000 (+0200) Subject: iptables: allow for parse-less extensions X-Git-Tag: v1.4.5~18 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=92edcb0cf517ddb7976e396eabc7a79f8a1016ba;p=thirdparty%2Fiptables.git iptables: allow for parse-less extensions This means we can do some code removal in extensions. Signed-off-by: Jan Engelhardt --- diff --git a/ip6tables.c b/ip6tables.c index 31c4b451..71ff46f5 100644 --- a/ip6tables.c +++ b/ip6tables.c @@ -1699,13 +1699,14 @@ int do_command6(int argc, char *argv[], char **table, struct ip6tc_handle **hand exit_tryhelp(2); default: - if (!target - || !(target->parse(c - target->option_offset, + if (target == NULL || target->parse == NULL || + !target->parse(c - target->option_offset, argv, invert, &target->tflags, - &fw, &target->t))) { + &fw, &target->t)) { for (matchp = matches; matchp; matchp = matchp->next) { - if (matchp->completed) + if (matchp->completed || + matchp->match->parse == NULL) continue; if (matchp->match->parse(c - matchp->match->option_offset, argv, invert, diff --git a/iptables.c b/iptables.c index 7c075dac..cc175767 100644 --- a/iptables.c +++ b/iptables.c @@ -1727,13 +1727,14 @@ int do_command(int argc, char *argv[], char **table, struct iptc_handle **handle exit_tryhelp(2); default: - if (!target - || !(target->parse(c - target->option_offset, + if (target == NULL || target->parse == NULL || + !target->parse(c - target->option_offset, argv, invert, &target->tflags, - &fw, &target->t))) { + &fw, &target->t)) { for (matchp = matches; matchp; matchp = matchp->next) { - if (matchp->completed) + if (matchp->completed || + matchp->match->parse == NULL) continue; if (matchp->match->parse(c - matchp->match->option_offset, argv, invert,