Lines Matching refs:expr

26 #define NFT_MODULE_AUTOLOAD_LIMIT (MODULE_NAME_LEN - sizeof("nft-expr-255-"))
457 struct nft_expr *expr;
459 expr = nft_expr_first(rule);
460 while (nft_expr_more(rule, expr)) {
461 if (expr->ops->activate)
462 expr->ops->activate(ctx, expr);
464 expr = nft_expr_next(expr);
471 struct nft_expr *expr;
473 expr = nft_expr_first(rule);
474 while (nft_expr_more(rule, expr)) {
475 if (expr->ops->deactivate)
476 expr->ops->deactivate(ctx, expr, phase);
478 expr = nft_expr_next(expr);
740 const struct nft_expr *expr,
743 track->regs[dreg].selector = expr;
749 const struct nft_expr *expr, u8 dreg, u8 len)
758 __nft_reg_track_update(track, expr, dreg, i);
3031 * nft_register_expr - register nf_tables expr type
3032 * @type: expr type
3034 * Registers the expr type for use with nf_tables. Returns zero on
3053 * nft_unregister_expr - unregister nf_tables expr type
3054 * @type: expr type
3056 * Unregisters the expr typefor use with nf_tables.
3086 if (nft_request_module(net, "nft-expr-%u-%.*s", family,
3117 if (nft_request_module(net, "nft-expr-%.*s",
3133 const struct nft_expr *expr, bool reset)
3135 if (nla_put_string(skb, NFTA_EXPR_NAME, expr->ops->type->name))
3138 if (expr->ops->dump) {
3143 if (expr->ops->dump(skb, expr, reset) < 0)
3155 const struct nft_expr *expr, bool reset)
3162 if (nf_tables_fill_expr_info(skb, expr, reset) < 0)
3270 struct nft_expr *expr)
3275 expr->ops = ops;
3277 err = ops->init(ctx, expr, (const struct nlattr **)expr_info->tb);
3284 expr->ops = NULL;
3289 struct nft_expr *expr)
3291 const struct nft_expr_type *type = expr->ops->type;
3293 if (expr->ops->destroy)
3294 expr->ops->destroy(ctx, expr);
3302 struct nft_expr *expr;
3315 expr = kzalloc(expr_info.ops->size, GFP_KERNEL_ACCOUNT);
3316 if (expr == NULL)
3319 err = nf_tables_newexpr(ctx, &expr_info, expr);
3323 return expr;
3325 kfree(expr);
3353 void nft_expr_destroy(const struct nft_ctx *ctx, struct nft_expr *expr)
3355 nf_tables_expr_destroy(ctx, expr);
3356 kfree(expr);
3411 const struct nft_expr *expr, *next;
3440 nft_rule_for_each_expr(expr, next, rule) {
3441 if (nft_expr_dump(skb, NFTA_LIST_ELEM, expr, reset) < 0)
3805 struct nft_expr *expr, *next;
3811 expr = nft_expr_first(rule);
3812 while (nft_expr_more(rule, expr)) {
3813 next = nft_expr_next(expr);
3814 nf_tables_expr_destroy(ctx, expr);
3815 expr = next;
3828 struct nft_expr *expr, *last;
3843 nft_rule_for_each_expr(expr, last, rule) {
3844 if (!expr->ops->validate)
3847 err = expr->ops->validate(ctx, expr, &data);
3960 struct nft_expr *expr;
4088 expr = nft_expr_first(rule);
4090 err = nf_tables_newexpr(&ctx, &expr_info[i], expr);
4100 expr = nft_expr_next(expr);
4933 struct nft_expr *expr;
4937 expr = nft_set_elem_expr_alloc(ctx, set, nla[NFTA_SET_EXPR]);
4938 if (IS_ERR(expr)) {
4939 err = PTR_ERR(expr);
4942 exprs[0] = expr;
4962 expr = nft_set_elem_expr_alloc(ctx, set, tmp);
4963 if (IS_ERR(expr)) {
4964 err = PTR_ERR(expr);
4967 exprs[i++] = expr;
5157 desc.expr = true;
5687 struct nft_expr *expr;
5691 nft_setelem_expr_foreach(expr, elem_expr, size)
5695 expr = nft_setelem_expr_at(elem_expr, 0);
5696 if (nft_expr_dump(skb, NFTA_SET_ELEM_EXPR, expr, reset) < 0)
5705 nft_setelem_expr_foreach(expr, elem_expr, size) {
5706 expr = nft_setelem_expr_at(elem_expr, size);
5707 if (nft_expr_dump(skb, NFTA_LIST_ELEM, expr, reset) < 0)
6367 struct nft_expr *expr;
6370 expr = nft_expr_init(ctx, attr);
6371 if (IS_ERR(expr))
6372 return expr;
6375 if (expr->ops->type->flags & NFT_EXPR_GC) {
6383 return expr;
6386 nft_expr_destroy(ctx, expr);
6459 struct nft_expr *expr)
6461 if (expr->ops->destroy_clone) {
6462 expr->ops->destroy_clone(ctx, expr);
6463 module_put(expr->ops->type->owner);
6465 nf_tables_expr_destroy(ctx, expr);
6472 struct nft_expr *expr;
6475 nft_setelem_expr_foreach(expr, elem_expr, size)
6476 __nft_set_elem_expr_destroy(ctx, expr);
6520 struct nft_expr *expr;
6524 expr = kzalloc(set->exprs[i]->ops->size, GFP_KERNEL_ACCOUNT);
6525 if (!expr)
6528 err = nft_expr_clone(expr, set->exprs[i], GFP_KERNEL_ACCOUNT);
6530 kfree(expr);
6533 expr_array[i] = expr;
6553 struct nft_expr *expr;
6566 expr = nft_setelem_expr_at(elem_expr, elem_expr->size);
6567 err = nft_expr_clone(expr, expr_array[i], GFP_KERNEL_ACCOUNT);
6873 struct nft_expr *expr;
6878 expr = nft_set_elem_expr_alloc(ctx, set,
6880 if (IS_ERR(expr))
6881 return PTR_ERR(expr);
6883 expr_array[0] = expr;
6886 if (set->num_exprs && set->exprs[0]->ops != expr->ops) {
6891 struct nft_expr *expr;
6906 expr = nft_set_elem_expr_alloc(ctx, set, tmp);
6907 if (IS_ERR(expr)) {
6908 err = PTR_ERR(expr);
6911 expr_array[i] = expr;
6914 if (set->num_exprs && expr->ops != set->exprs[i]->ops) {
9558 const struct nft_expr *expr)
9565 const struct nft_expr *expr, *last;
9604 nft_rule_for_each_expr(expr, last, rule) {
9605 track.cur = expr;
9607 if (nft_expr_reduce(&track, expr)) {
9608 expr = track.cur;
9612 if (WARN_ON_ONCE(data + size + expr->ops->size > data_boundary))
9615 memcpy(data + size, expr, expr->ops->size);
9616 size += expr->ops->size;
10887 const struct nft_expr *expr, *last;
10899 nft_rule_for_each_expr(expr, last, rule) {
10904 if (strcmp(expr->ops->type->name, "immediate"))
10907 priv = nft_expr_priv(expr);