This is a requirement for outsourcing line parsing code into a dedicated function. Signed-off-by: Phil Sutter <phil@xxxxxx> --- iptables/nft-shared.h | 1 + iptables/xtables-restore.c | 17 ++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/iptables/nft-shared.h b/iptables/nft-shared.h index 9d62913461fa4..facad6d02a7ec 100644 --- a/iptables/nft-shared.h +++ b/iptables/nft-shared.h @@ -237,6 +237,7 @@ struct nft_xt_restore_parse { int testing; const char *tablename; bool commit; + bool in_table; }; struct nftnl_chain_list; diff --git a/iptables/xtables-restore.c b/iptables/xtables-restore.c index 3bb901913ed58..2519005590ff1 100644 --- a/iptables/xtables-restore.c +++ b/iptables/xtables-restore.c @@ -91,7 +91,6 @@ void xtables_restore_parse(struct nft_handle *h, { const struct builtin_table *curtable = NULL; char buffer[10240]; - int in_table = 0; const struct xtc_ops *ops = &xtc_ops; line = 0; @@ -114,7 +113,7 @@ void xtables_restore_parse(struct nft_handle *h, if (verbose) fputs(buffer, stdout); continue; - } else if ((strcmp(buffer, "COMMIT\n") == 0) && (in_table)) { + } else if ((strcmp(buffer, "COMMIT\n") == 0) && (p->in_table)) { if (!p->testing) { /* Commit per table, although we support * global commit at once, stick by now to @@ -128,9 +127,9 @@ void xtables_restore_parse(struct nft_handle *h, if (cb->abort) ret = cb->abort(h); } - in_table = 0; + p->in_table = 0; - } else if ((buffer[0] == '*') && (!in_table || !p->commit)) { + } else if ((buffer[0] == '*') && (!p->in_table || !p->commit)) { /* New table */ char *table; @@ -158,12 +157,12 @@ void xtables_restore_parse(struct nft_handle *h, } ret = 1; - in_table = 1; + p->in_table = 1; if (cb->table_new) cb->table_new(h, table); - } else if ((buffer[0] == ':') && (in_table)) { + } else if ((buffer[0] == ':') && (p->in_table)) { /* New chain. */ char *policy, *chain = NULL; struct xt_counters count = {}; @@ -226,7 +225,7 @@ void xtables_restore_parse(struct nft_handle *h, ops->strerror(errno)); } ret = 1; - } else if (in_table) { + } else if (p->in_table) { int a; char *pcnt = NULL; char *bcnt = NULL; @@ -281,11 +280,11 @@ void xtables_restore_parse(struct nft_handle *h, exit(1); } } - if (in_table && p->commit) { + if (p->in_table && p->commit) { fprintf(stderr, "%s: COMMIT expected at line %u\n", xt_params->program_name, line + 1); exit(1); - } else if (in_table && cb->commit && !cb->commit(h)) { + } else if (p->in_table && cb->commit && !cb->commit(h)) { xtables_error(OTHER_PROBLEM, "%s: final implicit COMMIT failed", xt_params->program_name); } -- 2.23.0