diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-10-26 13:15:10 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-10-30 09:29:05 +0100 |
commit | 3fdc7541fba079f9626bcb1605368a7da3a8d81a (patch) | |
tree | 8e83aa0d4ceb4f8f66325776b80301cf68afa42d /src/json.c | |
parent | 6b53baa89f5b6a0c1d2520820d9654418cda7105 (diff) |
src: add multidevice support for netdev chain
This patch allows you to specify multiple netdevices to be bound to the
netdev basechain, eg.
# nft add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0\; }
json codebase has been updated to support for one single device with the
existing representation, no support for multidevice is included in this
patch.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/json.c')
-rw-r--r-- | src/json.c | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -222,9 +222,9 @@ static json_t *rule_print_json(struct output_ctx *octx, static json_t *chain_print_json(const struct chain *chain) { + int priority, policy, n = 0; + struct expr *dev, *expr; json_t *root, *tmp; - int priority; - int policy; root = json_pack("{s:s, s:s, s:s, s:I}", "family", family2str(chain->handle.family), @@ -243,8 +243,17 @@ static json_t *chain_print_json(const struct chain *chain) chain->hooknum), "prio", priority, "policy", chain_policy2str(policy)); - if (chain->dev) - json_object_set_new(tmp, "dev", json_string(chain->dev)); + if (chain->dev_expr) { + list_for_each_entry(expr, &chain->dev_expr->expressions, list) { + dev = expr; + n++; + } + } + + if (n == 1) { + json_object_set_new(tmp, "dev", + json_string(dev->identifier)); + } json_object_update(root, tmp); json_decref(tmp); } |