diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-08-18 17:43:28 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2014-08-19 21:37:40 +0200 |
commit | 838915373efe11e388e57703e9733e42f42bd5da (patch) | |
tree | bfceea443c8bd3b8c4352c2ed3379db0a485c51a /src | |
parent | 17ab8231cf9ff2a64c186a8104138688291c0760 (diff) |
src: don't return error in netlink_linearize_rule()
This function converts the rule from the list of statements to the
netlink message format. The only two possible errors that can make
this function to fail are memory exhaustion and malformed statements
which inmediately stop the execution of nft.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/netlink.c | 16 | ||||
-rw-r--r-- | src/netlink_linearize.c | 5 |
2 files changed, 9 insertions, 12 deletions
diff --git a/src/netlink.c b/src/netlink.c index dc7a7c4b..102f799a 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -354,16 +354,14 @@ int netlink_add_rule_batch(struct netlink_ctx *ctx, int err; nlr = alloc_nft_rule(&rule->handle); - err = netlink_linearize_rule(ctx, nlr, rule); - if (err == 0) { - err = mnl_nft_rule_batch_add(nlr, flags | NLM_F_EXCL, - ctx->seqnum); - if (err < 0) - netlink_io_error(ctx, &rule->location, - "Could not add rule to batch: %s", - strerror(errno)); - } + netlink_linearize_rule(ctx, nlr, rule); + err = mnl_nft_rule_batch_add(nlr, flags | NLM_F_EXCL, ctx->seqnum); nft_rule_free(nlr); + if (err < 0) { + netlink_io_error(ctx, &rule->location, + "Could not add rule to batch: %s", + strerror(errno)); + } return err; } diff --git a/src/netlink_linearize.c b/src/netlink_linearize.c index f5ce19c9..5eecd791 100644 --- a/src/netlink_linearize.c +++ b/src/netlink_linearize.c @@ -746,8 +746,8 @@ static void netlink_gen_stmt(struct netlink_linearize_ctx *ctx, } } -int netlink_linearize_rule(struct netlink_ctx *ctx, struct nft_rule *nlr, - const struct rule *rule) +void netlink_linearize_rule(struct netlink_ctx *ctx, struct nft_rule *nlr, + const struct rule *rule) { struct netlink_linearize_ctx lctx; const struct stmt *stmt; @@ -760,5 +760,4 @@ int netlink_linearize_rule(struct netlink_ctx *ctx, struct nft_rule *nlr, netlink_gen_stmt(&lctx, stmt); netlink_dump_rule(nlr); - return 0; } |