diff options
author | Phil Sutter <phil@nwl.cc> | 2023-03-29 18:26:23 +0200 |
---|---|---|
committer | Phil Sutter <phil@nwl.cc> | 2023-05-03 19:09:29 +0200 |
commit | 674e7c0f639f2322dcc7eee67aa9c3d52fa3ee65 (patch) | |
tree | 9e9f1c04fa097f015da5a7063905857672b274ea /iptables/nft-bridge.c | |
parent | 46ed4d264ce44dd0a01723a1e326eedc0da822ba (diff) |
nft: Extract rule parsing callbacks from nft_family_ops
Introduce struct nft_ruleparse_ops holding the family-specific
expression parsers and integrate it into nft_family_ops for now.
Signed-off-by: Phil Sutter <phil@nwl.cc>
Diffstat (limited to 'iptables/nft-bridge.c')
-rw-r--r-- | iptables/nft-bridge.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/iptables/nft-bridge.c b/iptables/nft-bridge.c index 22860d6b..0c9e1238 100644 --- a/iptables/nft-bridge.c +++ b/iptables/nft-bridge.c @@ -560,8 +560,8 @@ static void nft_bridge_parse_lookup(struct nft_xt_ctx *ctx, match->m->u.user.revision = match->revision; xs_init_match(match); - if (ctx->h->ops->parse_match != NULL) - ctx->h->ops->parse_match(match, ctx->cs); + if (ctx->h->ops->rule_parse->match != NULL) + ctx->h->ops->rule_parse->match(match, ctx->cs); } if (!match) return; @@ -984,15 +984,19 @@ static int nft_bridge_xlate(const struct iptables_command_state *cs, return ret; } +static struct nft_ruleparse_ops nft_ruleparse_ops_bridge = { + .meta = nft_bridge_parse_meta, + .payload = nft_bridge_parse_payload, + .lookup = nft_bridge_parse_lookup, + .match = nft_bridge_parse_match, + .target = nft_bridge_parse_target, +}; + struct nft_family_ops nft_family_ops_bridge = { .add = nft_bridge_add, .is_same = nft_bridge_is_same, .print_payload = NULL, - .parse_meta = nft_bridge_parse_meta, - .parse_payload = nft_bridge_parse_payload, - .parse_lookup = nft_bridge_parse_lookup, - .parse_match = nft_bridge_parse_match, - .parse_target = nft_bridge_parse_target, + .rule_parse = &nft_ruleparse_ops_bridge, .print_table_header = nft_bridge_print_table_header, .print_header = nft_bridge_print_header, .print_rule = nft_bridge_print_rule, |