From d9c6a5d0977a6d8bbe772dbc31a2c4f58eec1708 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Thu, 19 Jul 2018 18:31:55 +0200 Subject: xtables: merge {ip,arp}tables_command_state structs Differences between both structs are marginal (apart from arptables_command_state being much smaller), so merge them into one. Struct iptables_command_state is already shared between iptables, ip6tables and ebtables. Signed-off-by: Phil Sutter Signed-off-by: Florian Westphal --- iptables/nft-arp.c | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'iptables/nft-arp.c') diff --git a/iptables/nft-arp.c b/iptables/nft-arp.c index 4eacc61b..7b70ef22 100644 --- a/iptables/nft-arp.c +++ b/iptables/nft-arp.c @@ -139,8 +139,8 @@ static void print_mac_and_mask(const unsigned char *mac, const unsigned char *ma static int nft_arp_add(struct nftnl_rule *r, void *data) { - struct arptables_command_state *cs = data; - struct arpt_entry *fw = &cs->fw; + struct iptables_command_state *cs = data; + struct arpt_entry *fw = &cs->arp; uint32_t op; int ret = 0; @@ -260,8 +260,8 @@ static uint16_t ipt_to_arpt_flags(uint8_t invflags) static void nft_arp_parse_meta(struct nft_xt_ctx *ctx, struct nftnl_expr *e, void *data) { - struct arptables_command_state *cs = data; - struct arpt_entry *fw = &cs->fw; + struct iptables_command_state *cs = data; + struct arpt_entry *fw = &cs->arp; uint8_t flags = 0; parse_meta(e, ctx->meta.key, fw->arp.iniface, fw->arp.iniface_mask, @@ -273,7 +273,7 @@ static void nft_arp_parse_meta(struct nft_xt_ctx *ctx, struct nftnl_expr *e, static void nft_arp_parse_target(struct xtables_target *target, void *data) { - struct arptables_command_state *cs = data; + struct iptables_command_state *cs = data; cs->target = target; } @@ -281,7 +281,7 @@ static void nft_arp_parse_target(struct xtables_target *target, void *data) static void nft_arp_parse_immediate(const char *jumpto, bool nft_goto, void *data) { - struct arptables_command_state *cs = data; + struct iptables_command_state *cs = data; cs->jumpto = jumpto; } @@ -294,8 +294,8 @@ static void parse_mask_ipv4(struct nft_xt_ctx *ctx, struct in_addr *mask) static void nft_arp_parse_payload(struct nft_xt_ctx *ctx, struct nftnl_expr *e, void *data) { - struct arptables_command_state *cs = data; - struct arpt_entry *fw = &cs->fw; + struct iptables_command_state *cs = data; + struct arpt_entry *fw = &cs->arp; struct in_addr addr; unsigned short int ar_hrd, ar_pro, ar_op, ar_hln; bool inv; @@ -365,14 +365,14 @@ static void nft_arp_parse_payload(struct nft_xt_ctx *ctx, } } -void nft_rule_to_arptables_command_state(struct nftnl_rule *r, - struct arptables_command_state *cs) +void nft_rule_to_arptables_command_state(const struct nftnl_rule *r, + struct iptables_command_state *cs) { struct nftnl_expr_iter *iter; struct nftnl_expr *expr; int family = nftnl_rule_get_u32(r, NFTNL_RULE_FAMILY); struct nft_xt_ctx ctx = { - .state.cs_arp = cs, + .state.cs = cs, .family = family, }; @@ -387,7 +387,7 @@ void nft_rule_to_arptables_command_state(struct nftnl_rule *r, nftnl_expr_get_str(expr, NFTNL_EXPR_NAME); if (strcmp(name, "counter") == 0) - nft_parse_counter(expr, &ctx.state.cs_arp->fw.counters); + nft_parse_counter(expr, &ctx.state.cs->arp.counters); else if (strcmp(name, "payload") == 0) nft_parse_payload(&ctx, expr); else if (strcmp(name, "meta") == 0) @@ -581,27 +581,27 @@ static void nft_arp_print_firewall(struct nftnl_rule *r, unsigned int num, unsigned int format) { - struct arptables_command_state cs = {}; + struct iptables_command_state cs = {}; nft_rule_to_arptables_command_state(r, &cs); if (format & FMT_LINENUMBERS) printf("%u ", num); - print_fw_details(&cs.fw, format); + print_fw_details(&cs.arp, format); if (cs.jumpto != NULL && strcmp(cs.jumpto, "") != 0) { printf("-j %s", cs.jumpto); } else if (cs.target) { printf("-j %s", cs.target->name); - cs.target->print(&cs.fw, cs.target->t, format & FMT_NUMERIC); + cs.target->print(&cs.arp, cs.target->t, format & FMT_NUMERIC); } if (!(format & FMT_NOCOUNTS)) { printf(", pcnt="); - xtables_print_num(cs.fw.counters.pcnt, format); + xtables_print_num(cs.arp.counters.pcnt, format); printf("-- bcnt="); - xtables_print_num(cs.fw.counters.bcnt, format); + xtables_print_num(cs.arp.counters.bcnt, format); } if (!(format & FMT_NONEWLINE)) @@ -637,13 +637,13 @@ static bool nft_arp_is_same(const void *data_a, static bool nft_arp_rule_find(struct nft_family_ops *ops, struct nftnl_rule *r, void *data) { - const struct arptables_command_state *cs = data; - struct arptables_command_state this = {}; + const struct iptables_command_state *cs = data; + struct iptables_command_state this = {}; /* Delete by matching rule case */ nft_rule_to_arptables_command_state(r, &this); - if (!nft_arp_is_same(cs, &this)) + if (!nft_arp_is_same(&cs->arp, &this.arp)) return false; if (!compare_targets(cs->target, this.target)) -- cgit v1.2.3