flowtable 1188 include/net/netfilter/nf_tables.h struct nft_flowtable *flowtable, flowtable 1446 include/net/netfilter/nf_tables.h struct nft_flowtable *flowtable; flowtable 1450 include/net/netfilter/nf_tables.h (((struct nft_trans_flowtable *)trans->data)->flowtable) flowtable 463 net/netfilter/nf_flow_table_core.c int nf_flow_table_init(struct nf_flowtable *flowtable) flowtable 467 net/netfilter/nf_flow_table_core.c INIT_DEFERRABLE_WORK(&flowtable->gc_work, nf_flow_offload_work_gc); flowtable 469 net/netfilter/nf_flow_table_core.c err = rhashtable_init(&flowtable->rhashtable, flowtable 475 net/netfilter/nf_flow_table_core.c &flowtable->gc_work, HZ); flowtable 478 net/netfilter/nf_flow_table_core.c list_add(&flowtable->list, &flowtables); flowtable 502 net/netfilter/nf_flow_table_core.c static void nf_flow_table_iterate_cleanup(struct nf_flowtable *flowtable, flowtable 505 net/netfilter/nf_flow_table_core.c nf_flow_table_iterate(flowtable, nf_flow_table_do_cleanup, dev); flowtable 506 net/netfilter/nf_flow_table_core.c flush_delayed_work(&flowtable->gc_work); flowtable 511 net/netfilter/nf_flow_table_core.c struct nf_flowtable *flowtable; flowtable 514 net/netfilter/nf_flow_table_core.c list_for_each_entry(flowtable, &flowtables, list) flowtable 515 net/netfilter/nf_flow_table_core.c nf_flow_table_iterate_cleanup(flowtable, dev); flowtable 413 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable) flowtable 423 net/netfilter/nf_tables_api.c nft_activate_next(ctx->net, flowtable); flowtable 425 net/netfilter/nf_tables_api.c nft_trans_flowtable(trans) = flowtable; flowtable 432 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable) flowtable 436 net/netfilter/nf_tables_api.c err = nft_trans_flowtable_add(ctx, NFT_MSG_DELFLOWTABLE, flowtable); flowtable 440 net/netfilter/nf_tables_api.c nft_deactivate_next(ctx->net, flowtable); flowtable 975 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable, *nft; flowtable 1005 net/netfilter/nf_tables_api.c list_for_each_entry_safe(flowtable, nft, &ctx->table->flowtables, list) { flowtable 1006 net/netfilter/nf_tables_api.c if (!nft_is_active_next(ctx->net, flowtable)) flowtable 1009 net/netfilter/nf_tables_api.c err = nft_delflowtable(ctx, flowtable); flowtable 5633 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable; flowtable 5635 net/netfilter/nf_tables_api.c list_for_each_entry_rcu(flowtable, &table->flowtables, list) { flowtable 5636 net/netfilter/nf_tables_api.c if (!nla_strcmp(nla, flowtable->name) && flowtable 5637 net/netfilter/nf_tables_api.c nft_active_genmask(flowtable, genmask)) flowtable 5638 net/netfilter/nf_tables_api.c return flowtable; flowtable 5645 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable, flowtable 5652 net/netfilter/nf_tables_api.c flowtable->use--; flowtable 5664 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable; flowtable 5666 net/netfilter/nf_tables_api.c list_for_each_entry(flowtable, &table->flowtables, list) { flowtable 5667 net/netfilter/nf_tables_api.c if (be64_to_cpu(nla_get_be64(nla)) == flowtable->handle && flowtable 5668 net/netfilter/nf_tables_api.c nft_active_genmask(flowtable, genmask)) flowtable 5669 net/netfilter/nf_tables_api.c return flowtable; flowtable 5719 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable) flowtable 5752 net/netfilter/nf_tables_api.c flowtable->hooknum = hooknum; flowtable 5753 net/netfilter/nf_tables_api.c flowtable->priority = priority; flowtable 5754 net/netfilter/nf_tables_api.c flowtable->ops = ops; flowtable 5755 net/netfilter/nf_tables_api.c flowtable->ops_len = n; flowtable 5758 net/netfilter/nf_tables_api.c flowtable->ops[i].pf = NFPROTO_NETDEV; flowtable 5759 net/netfilter/nf_tables_api.c flowtable->ops[i].hooknum = hooknum; flowtable 5760 net/netfilter/nf_tables_api.c flowtable->ops[i].priority = priority; flowtable 5761 net/netfilter/nf_tables_api.c flowtable->ops[i].priv = &flowtable->data; flowtable 5762 net/netfilter/nf_tables_api.c flowtable->ops[i].hook = flowtable->data.type->hook; flowtable 5763 net/netfilter/nf_tables_api.c flowtable->ops[i].dev = dev_array[i]; flowtable 5800 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable) flowtable 5804 net/netfilter/nf_tables_api.c for (i = 0; i < flowtable->ops_len; i++) { flowtable 5805 net/netfilter/nf_tables_api.c if (!flowtable->ops[i].dev) flowtable 5808 net/netfilter/nf_tables_api.c nf_unregister_net_hook(net, &flowtable->ops[i]); flowtable 5820 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable, *ft; flowtable 5839 net/netfilter/nf_tables_api.c flowtable = nft_flowtable_lookup(table, nla[NFTA_FLOWTABLE_NAME], flowtable 5841 net/netfilter/nf_tables_api.c if (IS_ERR(flowtable)) { flowtable 5842 net/netfilter/nf_tables_api.c err = PTR_ERR(flowtable); flowtable 5858 net/netfilter/nf_tables_api.c flowtable = kzalloc(sizeof(*flowtable), GFP_KERNEL); flowtable 5859 net/netfilter/nf_tables_api.c if (!flowtable) flowtable 5862 net/netfilter/nf_tables_api.c flowtable->table = table; flowtable 5863 net/netfilter/nf_tables_api.c flowtable->handle = nf_tables_alloc_handle(table); flowtable 5865 net/netfilter/nf_tables_api.c flowtable->name = nla_strdup(nla[NFTA_FLOWTABLE_NAME], GFP_KERNEL); flowtable 5866 net/netfilter/nf_tables_api.c if (!flowtable->name) { flowtable 5877 net/netfilter/nf_tables_api.c flowtable->data.type = type; flowtable 5878 net/netfilter/nf_tables_api.c err = type->init(&flowtable->data); flowtable 5883 net/netfilter/nf_tables_api.c flowtable); flowtable 5887 net/netfilter/nf_tables_api.c for (i = 0; i < flowtable->ops_len; i++) { flowtable 5888 net/netfilter/nf_tables_api.c if (!flowtable->ops[i].dev) flowtable 5896 net/netfilter/nf_tables_api.c if (flowtable->ops[i].dev == ft->ops[k].dev && flowtable 5897 net/netfilter/nf_tables_api.c flowtable->ops[i].pf == ft->ops[k].pf) { flowtable 5904 net/netfilter/nf_tables_api.c err = nf_register_net_hook(net, &flowtable->ops[i]); flowtable 5909 net/netfilter/nf_tables_api.c err = nft_trans_flowtable_add(&ctx, NFT_MSG_NEWFLOWTABLE, flowtable); flowtable 5913 net/netfilter/nf_tables_api.c list_add_tail_rcu(&flowtable->list, &table->flowtables); flowtable 5918 net/netfilter/nf_tables_api.c i = flowtable->ops_len; flowtable 5921 net/netfilter/nf_tables_api.c nf_unregister_net_hook(net, &flowtable->ops[k]); flowtable 5923 net/netfilter/nf_tables_api.c kfree(flowtable->ops); flowtable 5925 net/netfilter/nf_tables_api.c flowtable->data.type->free(&flowtable->data); flowtable 5929 net/netfilter/nf_tables_api.c kfree(flowtable->name); flowtable 5931 net/netfilter/nf_tables_api.c kfree(flowtable); flowtable 5944 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable; flowtable 5963 net/netfilter/nf_tables_api.c flowtable = nft_flowtable_lookup_byhandle(table, attr, genmask); flowtable 5966 net/netfilter/nf_tables_api.c flowtable = nft_flowtable_lookup(table, attr, genmask); flowtable 5969 net/netfilter/nf_tables_api.c if (IS_ERR(flowtable)) { flowtable 5971 net/netfilter/nf_tables_api.c return PTR_ERR(flowtable); flowtable 5973 net/netfilter/nf_tables_api.c if (flowtable->use > 0) { flowtable 5980 net/netfilter/nf_tables_api.c return nft_delflowtable(&ctx, flowtable); flowtable 5986 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable) flowtable 6003 net/netfilter/nf_tables_api.c if (nla_put_string(skb, NFTA_FLOWTABLE_TABLE, flowtable->table->name) || flowtable 6004 net/netfilter/nf_tables_api.c nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) || flowtable 6005 net/netfilter/nf_tables_api.c nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) || flowtable 6006 net/netfilter/nf_tables_api.c nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle), flowtable 6013 net/netfilter/nf_tables_api.c if (nla_put_be32(skb, NFTA_FLOWTABLE_HOOK_NUM, htonl(flowtable->hooknum)) || flowtable 6014 net/netfilter/nf_tables_api.c nla_put_be32(skb, NFTA_FLOWTABLE_HOOK_PRIORITY, htonl(flowtable->priority))) flowtable 6021 net/netfilter/nf_tables_api.c for (i = 0; i < flowtable->ops_len; i++) { flowtable 6022 net/netfilter/nf_tables_api.c const struct net_device *dev = READ_ONCE(flowtable->ops[i].dev); flowtable 6051 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable; flowtable 6061 net/netfilter/nf_tables_api.c list_for_each_entry_rcu(flowtable, &table->flowtables, list) { flowtable 6062 net/netfilter/nf_tables_api.c if (!nft_is_active(net, flowtable)) flowtable 6077 net/netfilter/nf_tables_api.c table->family, flowtable) < 0) flowtable 6137 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable; flowtable 6162 net/netfilter/nf_tables_api.c flowtable = nft_flowtable_lookup(table, nla[NFTA_FLOWTABLE_NAME], flowtable 6164 net/netfilter/nf_tables_api.c if (IS_ERR(flowtable)) flowtable 6165 net/netfilter/nf_tables_api.c return PTR_ERR(flowtable); flowtable 6174 net/netfilter/nf_tables_api.c flowtable); flowtable 6185 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable, flowtable 6201 net/netfilter/nf_tables_api.c ctx->family, flowtable); flowtable 6214 net/netfilter/nf_tables_api.c static void nf_tables_flowtable_destroy(struct nft_flowtable *flowtable) flowtable 6216 net/netfilter/nf_tables_api.c kfree(flowtable->ops); flowtable 6217 net/netfilter/nf_tables_api.c kfree(flowtable->name); flowtable 6218 net/netfilter/nf_tables_api.c flowtable->data.type->free(&flowtable->data); flowtable 6219 net/netfilter/nf_tables_api.c module_put(flowtable->data.type->owner); flowtable 6220 net/netfilter/nf_tables_api.c kfree(flowtable); flowtable 6254 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable) flowtable 6258 net/netfilter/nf_tables_api.c for (i = 0; i < flowtable->ops_len; i++) { flowtable 6259 net/netfilter/nf_tables_api.c if (flowtable->ops[i].dev != dev) flowtable 6262 net/netfilter/nf_tables_api.c nf_unregister_net_hook(dev_net(dev), &flowtable->ops[i]); flowtable 6263 net/netfilter/nf_tables_api.c flowtable->ops[i].dev = NULL; flowtable 6272 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable; flowtable 6282 net/netfilter/nf_tables_api.c list_for_each_entry(flowtable, &table->flowtables, list) { flowtable 6283 net/netfilter/nf_tables_api.c nft_flowtable_event(event, dev, flowtable); flowtable 7690 net/netfilter/nf_tables_api.c struct nft_flowtable *flowtable, *nf; flowtable 7716 net/netfilter/nf_tables_api.c list_for_each_entry_safe(flowtable, nf, &table->flowtables, list) { flowtable 7717 net/netfilter/nf_tables_api.c list_del(&flowtable->list); flowtable 7719 net/netfilter/nf_tables_api.c nf_tables_flowtable_destroy(flowtable); flowtable 19 net/netfilter/nft_flow_offload.c struct nft_flowtable *flowtable; flowtable 75 net/netfilter/nft_flow_offload.c struct nf_flowtable *flowtable = &priv->flowtable->data; flowtable 127 net/netfilter/nft_flow_offload.c ret = flow_offload_add(flowtable, flow); flowtable 164 net/netfilter/nft_flow_offload.c struct nft_flowtable *flowtable; flowtable 169 net/netfilter/nft_flow_offload.c flowtable = nft_flowtable_lookup(ctx->table, tb[NFTA_FLOW_TABLE_NAME], flowtable 171 net/netfilter/nft_flow_offload.c if (IS_ERR(flowtable)) flowtable 172 net/netfilter/nft_flow_offload.c return PTR_ERR(flowtable); flowtable 174 net/netfilter/nft_flow_offload.c priv->flowtable = flowtable; flowtable 175 net/netfilter/nft_flow_offload.c flowtable->use++; flowtable 186 net/netfilter/nft_flow_offload.c nf_tables_deactivate_flowtable(ctx, priv->flowtable, phase); flowtable 194 net/netfilter/nft_flow_offload.c priv->flowtable->use++; flowtable 207 net/netfilter/nft_flow_offload.c if (nla_put_string(skb, NFTA_FLOW_TABLE_NAME, priv->flowtable->name))