summaryrefslogtreecommitdiffstats
path: root/src/rule.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2018-05-03 12:11:32 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2018-05-06 22:48:30 +0200
commitf2be4af9094d47dbd9c028e02ceb8b9d16cd4c02 (patch)
tree597ce3844fb864fc2348e225d48c69ee1fff6f56 /src/rule.c
parentcf6464267f49866b24a9b185498abf9b57433ecd (diff)
src: add chain_spec
Store location object in handle to improve error reporting. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/rule.c')
-rw-r--r--src/rule.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/rule.c b/src/rule.c
index 6c2b4eea..bbf23a6b 100644
--- a/src/rule.c
+++ b/src/rule.c
@@ -31,7 +31,7 @@
void handle_free(struct handle *h)
{
xfree(h->table.name);
- xfree(h->chain);
+ xfree(h->chain.name);
xfree(h->set);
xfree(h->flowtable);
}
@@ -42,8 +42,8 @@ void handle_merge(struct handle *dst, const struct handle *src)
dst->family = src->family;
if (dst->table.name == NULL && src->table.name != NULL)
dst->table.name = xstrdup(src->table.name);
- if (dst->chain == NULL && src->chain != NULL)
- dst->chain = xstrdup(src->chain);
+ if (dst->chain.name == NULL && src->chain.name != NULL)
+ dst->chain.name = xstrdup(src->chain.name);
if (dst->set == NULL && src->set != NULL)
dst->set = xstrdup(src->set);
if (dst->flowtable == NULL && src->flowtable != NULL)
@@ -620,7 +620,7 @@ struct chain *chain_alloc(const char *name)
init_list_head(&chain->rules);
init_list_head(&chain->scope.symbols);
if (name != NULL)
- chain->handle.chain = xstrdup(name);
+ chain->handle.chain.name = xstrdup(name);
chain->policy = -1;
return chain;
@@ -658,7 +658,7 @@ struct chain *chain_lookup(const struct table *table, const struct handle *h)
struct chain *chain;
list_for_each_entry(chain, &table->chains, list) {
- if (!strcmp(chain->handle.chain, h->chain))
+ if (!strcmp(chain->handle.chain.name, h->chain.name))
return chain;
}
return NULL;
@@ -746,7 +746,7 @@ static const char *chain_policy2str(uint32_t policy)
static void chain_print_declaration(const struct chain *chain,
struct output_ctx *octx)
{
- nft_print(octx, "\tchain %s {", chain->handle.chain);
+ nft_print(octx, "\tchain %s {", chain->handle.chain.name);
if (octx->handle > 0)
nft_print(octx, " # handle %" PRIu64, chain->handle.handle.id);
nft_print(octx, "\n");
@@ -777,7 +777,7 @@ static void chain_print(const struct chain *chain, struct output_ctx *octx)
void chain_print_plain(const struct chain *chain, struct output_ctx *octx)
{
nft_print(octx, "chain %s %s %s", family2str(chain->handle.family),
- chain->handle.table.name, chain->handle.chain);
+ chain->handle.table.name, chain->handle.chain.name);
if (chain->flags & CHAIN_F_BASECHAIN) {
nft_print(octx, " { type %s hook %s priority %d; policy %s; }",
@@ -1754,7 +1754,7 @@ static int do_list_chain(struct netlink_ctx *ctx, struct cmd *cmd,
list_for_each_entry(chain, &table->chains, list) {
if (chain->handle.family != cmd->handle.family ||
- strcmp(cmd->handle.chain, chain->handle.chain) != 0)
+ strcmp(cmd->handle.chain.name, chain->handle.chain.name) != 0)
continue;
chain_print(chain, ctx->octx);