diff options
author | Florian Westphal <fw@strlen.de> | 2022-11-23 14:44:22 +0100 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2022-11-23 15:05:12 +0100 |
commit | 83241d3f173dd57c3fdc347490213776a070fa40 (patch) | |
tree | 585c10b01325e714857fb6e99406ddf6fa70c345 /iptables/nft-shared.h | |
parent | 25883ce88bfba087ef142cb909d59dbbc1818b32 (diff) |
iptables-nft: exit nonzero when iptables-save cannot decode all expressions
We always return 0, even if we printed some error message half-way.
Increment an error counter whenever an error message was printed so that
the chain-loop can exit with an error if this counter is nonzero.
Another effect is that iptables-save will no longer print the COMMIT line anmore.
Reported-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'iptables/nft-shared.h')
-rw-r--r-- | iptables/nft-shared.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/iptables/nft-shared.h b/iptables/nft-shared.h index 3d935d53..e2c3ac7b 100644 --- a/iptables/nft-shared.h +++ b/iptables/nft-shared.h @@ -159,7 +159,7 @@ struct nft_family_ops { void (*parse_target)(struct xtables_target *t, struct iptables_command_state *cs); void (*init_cs)(struct iptables_command_state *cs); - void (*rule_to_cs)(struct nft_handle *h, const struct nftnl_rule *r, + bool (*rule_to_cs)(struct nft_handle *h, const struct nftnl_rule *r, struct iptables_command_state *cs); void (*clear_cs)(struct iptables_command_state *cs); int (*xlate)(const struct iptables_command_state *cs, @@ -213,7 +213,7 @@ int parse_meta(struct nft_xt_ctx *ctx, struct nftnl_expr *e, uint8_t key, unsigned char *outiface_mask, uint8_t *invflags); void __get_cmp_data(struct nftnl_expr *e, void *data, size_t dlen, uint8_t *op); void get_cmp_data(struct nftnl_expr *e, void *data, size_t dlen, bool *inv); -void nft_rule_to_iptables_command_state(struct nft_handle *h, +bool nft_rule_to_iptables_command_state(struct nft_handle *h, const struct nftnl_rule *r, struct iptables_command_state *cs); void nft_clear_iptables_command_state(struct iptables_command_state *cs); |