]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: expr: add and use expr_name helper
authorFlorian Westphal <fw@strlen.de>
Fri, 8 Feb 2019 16:02:19 +0000 (17:02 +0100)
committerFlorian Westphal <fw@strlen.de>
Fri, 8 Feb 2019 20:22:21 +0000 (21:22 +0100)
Currently callers use expr->ops->name, but follouwp patch will remove the
ops pointer from struct expr.  So add this helper and use it everywhere.

Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Pablo Neira Ayuso <pablo@netfilter.org>
include/expression.h
src/evaluate.c
src/expression.c
src/json.c
src/mergesort.c
src/netlink.c
src/netlink_delinearize.c
src/netlink_linearize.c
src/segtree.c

index f018c958d2dcc1a6438e35a741c268f316f3f9fa..8a4cf5b10b8c87ed6fde3b93cf890f1100d04279 100644 (file)
@@ -406,6 +406,8 @@ extern struct expr *symbol_expr_alloc(const struct location *loc,
                                      enum symbol_types type, struct scope *scope,
                                      const char *identifier);
 
+const char *expr_name(const struct expr *e);
+
 static inline void symbol_expr_set_type(struct expr *expr,
                                        const struct datatype *dtype)
 {
index 0bda431d5a165cb72fdbbff32a9868fb8b58faae..be788daab06da334b35e71b9b6cd11f96b395b36 100644 (file)
@@ -449,7 +449,7 @@ static void expr_evaluate_bits(struct eval_ctx *ctx, struct expr **exprp)
                                          &extra_len);
                break;
        default:
-               BUG("Unknown expression %s\n", expr->ops->name);
+               BUG("Unknown expression %s\n", expr_name(expr));
        }
 
        masklen = len + shift;
@@ -1097,7 +1097,7 @@ static int expr_evaluate_binop(struct eval_ctx *ctx, struct expr **expr)
                return expr_binary_error(ctx->msgs, left, op,
                                         "Binary operation (%s) is undefined "
                                         "for %s expressions",
-                                        sym, left->ops->name);
+                                        sym, expr_name(left));
 
        if (!expr_is_constant(right))
                return expr_binary_error(ctx->msgs, right, op,
@@ -1108,7 +1108,7 @@ static int expr_evaluate_binop(struct eval_ctx *ctx, struct expr **expr)
                return expr_binary_error(ctx->msgs, left, op,
                                         "Binary operation (%s) is undefined "
                                         "for %s expressions",
-                                        sym, right->ops->name);
+                                        sym, expr_name(right));
 
        /* The grammar guarantees this */
        assert(expr_basetype(left) == expr_basetype(right));
@@ -1349,7 +1349,7 @@ static int expr_evaluate_map(struct eval_ctx *ctx, struct expr **expr)
                break;
        default:
                BUG("invalid mapping expression %s\n",
-                   map->mappings->ops->name);
+                   expr_name(map->mappings));
        }
 
        if (!datatype_equal(map->map->dtype, map->mappings->set->key->dtype))
@@ -1698,7 +1698,7 @@ static int expr_evaluate_relational(struct eval_ctx *ctx, struct expr **expr)
                                return -1;
                        break;
                default:
-                       BUG("invalid expression type %s\n", right->ops->name);
+                       BUG("invalid expression type %s\n", expr_name(right));
                }
                break;
        case OP_LT:
@@ -1711,7 +1711,7 @@ static int expr_evaluate_relational(struct eval_ctx *ctx, struct expr **expr)
                                        "Relational expression (%s) is undefined "
                                        "for %s expressions",
                                        expr_op_symbols[rel->op],
-                                       left->ops->name);
+                                       expr_name(left));
                default:
                        break;
                }
@@ -1721,7 +1721,7 @@ static int expr_evaluate_relational(struct eval_ctx *ctx, struct expr **expr)
                                        "Relational expression (%s) is undefined "
                                        "for %s expressions",
                                        expr_op_symbols[rel->op],
-                                       right->ops->name);
+                                       expr_name(right));
 
                if (byteorder_conversion(ctx, &rel->left, BYTEORDER_BIG_ENDIAN) < 0)
                        return -1;
@@ -1817,7 +1817,7 @@ static int expr_evaluate(struct eval_ctx *ctx, struct expr **expr)
        if (ctx->nft->debug_mask & NFT_DEBUG_EVALUATION) {
                struct error_record *erec;
                erec = erec_create(EREC_INFORMATIONAL, &(*expr)->location,
-                                  "Evaluate %s", (*expr)->ops->name);
+                                  "Evaluate %s", expr_name(*expr));
                erec_print(&ctx->nft->output, erec, ctx->nft->debug_mask);
                expr_print(*expr, &ctx->nft->output);
                nft_print(&ctx->nft->output, "\n\n");
@@ -1880,7 +1880,7 @@ static int expr_evaluate(struct eval_ctx *ctx, struct expr **expr)
        case EXPR_XFRM:
                return expr_evaluate_xfrm(ctx, expr);
        default:
-               BUG("unknown expression type %s\n", (*expr)->ops->name);
+               BUG("unknown expression type %s\n", expr_name(*expr));
        }
 }
 
@@ -1946,7 +1946,7 @@ static int stmt_evaluate_verdict(struct eval_ctx *ctx, struct stmt *stmt)
        case EXPR_MAP:
                break;
        default:
-               BUG("invalid verdict expression %s\n", stmt->expr->ops->name);
+               BUG("invalid verdict expression %s\n", expr_name(stmt->expr));
        }
        return 0;
 }
@@ -2896,7 +2896,7 @@ static int stmt_evaluate_objref_map(struct eval_ctx *ctx, struct stmt *stmt)
                break;
        default:
                BUG("invalid mapping expression %s\n",
-                   map->mappings->ops->name);
+                   expr_name(map->mappings));
        }
 
        if (!datatype_equal(map->map->dtype, map->mappings->set->key->dtype))
index 62a6f890f814e46263028a0b34b1959e5a060cd7..37b106f82b39cb8366359ea7f11007ae02835c05 100644 (file)
@@ -87,6 +87,11 @@ bool expr_cmp(const struct expr *e1, const struct expr *e2)
        return e1->ops->cmp(e1, e2);
 }
 
+const char *expr_name(const struct expr *e)
+{
+       return e->ops->name;
+}
+
 void expr_describe(const struct expr *expr, struct output_ctx *octx)
 {
        const struct datatype *dtype = expr->dtype;
@@ -1106,7 +1111,7 @@ void range_expr_value_low(mpz_t rop, const struct expr *expr)
        case EXPR_SET_ELEM:
                return range_expr_value_low(rop, expr->key);
        default:
-               BUG("invalid range expression type %s\n", expr->ops->name);
+               BUG("invalid range expression type %s\n", expr_name(expr));
        }
 }
 
@@ -1130,6 +1135,6 @@ void range_expr_value_high(mpz_t rop, const struct expr *expr)
        case EXPR_SET_ELEM:
                return range_expr_value_high(rop, expr->key);
        default:
-               BUG("invalid range expression type %s\n", expr->ops->name);
+               BUG("invalid range expression type %s\n", expr_name(expr));
        }
 }
index fc92d4641fcf51358893d7d0575caac84cff344c..2a70e42f78023f06b1c36624706426e906f7db26 100644 (file)
@@ -39,8 +39,7 @@ static json_t *expr_print_json(const struct expr *expr, struct output_ctx *octx)
        if (expr->ops->json)
                return expr->ops->json(expr, octx);
 
-       printf("warning: expr ops %s have no json callback\n",
-              expr->ops->name);
+       printf("warning: expr ops %s have no json callback\n", expr_name(expr));
 
        fp = octx->output_fp;
        octx->output_fp = fmemopen(buf, 1024, "w");
index a8353203757dd28caaab88b59e4631e2212fbef2..f2e38bc2e48557ea15944c9bd4febb856a86562b 100644 (file)
@@ -44,7 +44,7 @@ static int expr_msort_cmp(const struct expr *e1, const struct expr *e2)
        case EXPR_MAPPING:
                return expr_msort_cmp(e1->left, e2->left);
        default:
-               BUG("Unknown expression %s\n", e1->ops->name);
+               BUG("Unknown expression %s\n", expr_name(e1));
        }
 }
 
index f67f639070756d05b152e89190c586a673fd45af..dfd563a2e94d33e8658e95359959a9c6947201be 100644 (file)
@@ -239,7 +239,7 @@ void netlink_gen_data(const struct expr *expr, struct nft_data_linearize *data)
        case EXPR_VERDICT:
                return netlink_gen_verdict(expr, data);
        default:
-               BUG("invalid data expression type %s\n", expr->ops->name);
+               BUG("invalid data expression type %s\n", expr_name(expr));
        }
 }
 
index db1bf03e5c6ad1198fe3b49467a544af37db4953..d492910c2f93326add872ceadbe2bdf3372023e1 100644 (file)
@@ -1778,7 +1778,7 @@ static void binop_adjust_one(const struct expr *binop, struct expr *value,
                value->len = left->len;
                break;
        default:
-               BUG("unknown expression type %s\n", left->ops->name);
+               BUG("unknown expression type %s\n", expr_name(left));
                break;
        }
 }
@@ -1806,7 +1806,7 @@ static void __binop_adjust(const struct expr *binop, struct expr *right,
                                __binop_adjust(binop, i->key->key, shift);
                                break;
                        default:
-                               BUG("unknown expression type %s\n", i->key->ops->name);
+                               BUG("unknown expression type %s\n", expr_name(i->key));
                        }
                }
                break;
@@ -1815,7 +1815,7 @@ static void __binop_adjust(const struct expr *binop, struct expr *right,
                binop_adjust_one(binop, right->right, shift);
                break;
        default:
-               BUG("unknown expression type %s\n", right->ops->name);
+               BUG("unknown expression type %s\n", expr_name(right));
                break;
        }
 }
@@ -2142,7 +2142,7 @@ static void expr_postprocess(struct rule_pp_ctx *ctx, struct expr **exprp)
                ct_expr_update_type(&ctx->pctx, expr);
                break;
        default:
-               BUG("unknown expression type %s\n", expr->ops->name);
+               BUG("unknown expression type %s\n", expr_name(expr));
        }
 }
 
index 0c8f5fe42814c403c6a5817bd19093eee91dfb7f..9b5fa195fdc0d5bdcdcea87c9c5d9200448bfa8b 100644 (file)
@@ -739,7 +739,7 @@ static void netlink_gen_expr(struct netlink_linearize_ctx *ctx,
        case EXPR_XFRM:
                return netlink_gen_xfrm(ctx, expr, dreg);
        default:
-               BUG("unknown expression type %s\n", expr->ops->name);
+               BUG("unknown expression type %s\n", expr_name(expr));
        }
 }
 
index 5685618b3724ab586ef7a6d683f6bb4d12b78170..5f25c97d85786fa8b505f81722e289f6852e4dca 100644 (file)
@@ -787,7 +787,7 @@ static struct expr *expr_value(struct expr *expr)
        case EXPR_SET_ELEM:
                return expr->key;
        default:
-               BUG("invalid expression type %s\n", expr->ops->name);
+               BUG("invalid expression type %s\n", expr_name(expr));
        }
 }