Home
last modified time | relevance | path

Searched refs:flowtable (Results 1 – 12 of 12) sorted by relevance

/linux/Documentation/networking/
H A Dnf_flowtable.rst4 Netfilter's flowtable infrastructure
7 This documentation describes the Netfilter flowtable infrastructure which allows
8 you to define a fastpath through the flowtable datapath. This infrastructure
9 also provides hardware offload support. The flowtable supports for the layer 3
17 flowtable through your ruleset. The flowtable infrastructure provides a rule
18 action that allows you to specify when to add a flow to the flowtable.
20 A packet that finds a matching entry in the flowtable (ie. flowtable hit) is
24 there is no matching entry in the flowtable (ie. flowtable miss), the packet
27 The flowtable uses a resizable hashtable. Lookups are based on the following
32 The 'flow add' action allows you to populate the flowtable, the user selectively
[all …]
/linux/net/netfilter/
H A Dnf_flow_table_offload.c26 struct nf_flowtable *flowtable;
801 const struct nf_flowtable *flowtable = offload->flowtable; in nf_flow_offload_destroy()
830 if (flowtable->type->action(net, flow, dir, flow_rule) < 0) in nf_flow_offload_init()
870 struct net *net = read_pnet(&offload->flowtable->net); in nf_flow_offload_tuple()
900 static int nf_flow_offload_tuple(struct nf_flowtable *flowtable, in flow_offload_rule_add()
919 down_read(&flowtable->flow_block_lock); in flow_offload_work_add()
928 up_read(&flowtable->flow_block_lock); in flow_offload_work_del()
940 return nf_flow_offload_tuple(offload->flowtable, offload->flow, in flow_offload_tuple_stats()
942 offload->flowtable in flow_offload_tuple_stats()
24 struct nf_flowtable *flowtable; global() member
737 const struct nf_flowtable *flowtable = offload->flowtable; nf_flow_offload_rule_alloc() local
836 nf_flow_offload_tuple(struct nf_flowtable * flowtable,struct flow_offload * flow,struct nf_flow_rule * flow_rule,enum flow_offload_tuple_dir dir,int priority,int cmd,struct flow_stats * stats,struct list_head * block_cb_list) nf_flow_offload_tuple() argument
1017 nf_flow_offload_work_alloc(struct nf_flowtable * flowtable,struct flow_offload * flow,unsigned int cmd) nf_flow_offload_work_alloc() argument
1040 nf_flow_offload_add(struct nf_flowtable * flowtable,struct flow_offload * flow) nf_flow_offload_add() argument
1052 nf_flow_offload_del(struct nf_flowtable * flowtable,struct flow_offload * flow) nf_flow_offload_del() argument
1065 nf_flow_offload_stats(struct nf_flowtable * flowtable,struct flow_offload * flow) nf_flow_offload_stats() argument
1082 nf_flow_table_offload_flush_cleanup(struct nf_flowtable * flowtable) nf_flow_table_offload_flush_cleanup() argument
1090 nf_flow_table_offload_flush(struct nf_flowtable * flowtable) nf_flow_table_offload_flush() argument
1099 nf_flow_table_block_setup(struct nf_flowtable * flowtable,struct flow_block_offload * bo,enum flow_block_command cmd) nf_flow_table_block_setup() argument
1129 nf_flow_table_block_offload_init(struct flow_block_offload * bo,struct net * net,enum flow_block_command cmd,struct nf_flowtable * flowtable,struct netlink_ext_ack * extack) nf_flow_table_block_offload_init() argument
1144 struct nf_flowtable *flowtable = block_cb->indr.data; nf_flow_table_indr_cleanup() local
1156 nf_flow_table_indr_offload_cmd(struct flow_block_offload * bo,struct nf_flowtable * flowtable,struct net_device * dev,enum flow_block_command cmd,struct netlink_ext_ack * extack) nf_flow_table_indr_offload_cmd() argument
1169 nf_flow_table_offload_cmd(struct flow_block_offload * bo,struct nf_flowtable * flowtable,struct net_device * dev,enum flow_block_command cmd,struct netlink_ext_ack * extack) nf_flow_table_offload_cmd() argument
1187 nf_flow_table_offload_setup(struct nf_flowtable * flowtable,struct net_device * dev,enum flow_block_command cmd) nf_flow_table_offload_setup() argument
[all...]
H A Dnft_flow_offload.c21 struct nft_flowtable *flowtable; member
55 struct nf_flowtable *flowtable = &priv->flowtable->data; in nft_flow_offload_eval() local
109 if (nft_flow_route(pkt, ct, &route, dir, priv->flowtable) < 0) in nft_flow_offload_eval()
121 ret = flow_offload_add(flowtable, flow); in nft_flow_offload_eval()
162 struct nft_flowtable *flowtable; in nft_flow_offload_init() local
167 flowtable = nft_flowtable_lookup(ctx->net, ctx->table, in nft_flow_offload_init()
169 if (IS_ERR(flowtable)) in nft_flow_offload_init()
170 return PTR_ERR(flowtable); in nft_flow_offload_init()
172 if (!nft_use_inc(&flowtable->use)) in nft_flow_offload_init()
175 priv->flowtable = flowtable; in nft_flow_offload_init()
[all …]
H A Dnf_flow_table_core.c422 void (*iter)(struct nf_flowtable *flowtable, in nf_flow_table_iterate() argument
692 int nf_flow_table_init(struct nf_flowtable *flowtable) in nf_flow_table_init() argument
696 INIT_DELAYED_WORK(&flowtable->gc_work, nf_flow_offload_work_gc); in nf_flow_table_init()
697 flow_block_init(&flowtable->flow_block); in nf_flow_table_init()
698 init_rwsem(&flowtable->flow_block_lock); in nf_flow_table_init()
700 err = rhashtable_init(&flowtable->rhashtable, in nf_flow_table_init()
706 &flowtable->gc_work, HZ); in nf_flow_table_init()
709 list_add(&flowtable->list, &flowtables); in nf_flow_table_init()
732 void nf_flow_table_gc_cleanup(struct nf_flowtable *flowtable, in nf_flow_table_gc_cleanup() argument
735 nf_flow_table_iterate(flowtable, nf_flow_table_do_cleanup, dev); in nf_flow_table_gc_cleanup()
[all …]
H A Dnf_tables_api.c905 struct nft_flowtable *flowtable) in nft_trans_flowtable_add() argument
915 nft_activate_next(ctx->net, flowtable); in nft_trans_flowtable_add()
918 nft_trans_flowtable(trans) = flowtable; in nft_trans_flowtable_add()
925 struct nft_flowtable *flowtable) in nft_delflowtable() argument
929 trans = nft_trans_flowtable_add(ctx, NFT_MSG_DELFLOWTABLE, flowtable); in nft_delflowtable()
933 nft_deactivate_next(ctx->net, flowtable); in nft_delflowtable()
1683 struct nft_flowtable *flowtable, *nft; in nft_flush_table() local
1715 list_for_each_entry_safe(flowtable, nft, &ctx->table->flowtables, list) { in nft_flush_table()
1716 if (!nft_is_active_next(ctx->net, flowtable)) in nft_flush_table()
1719 err = nft_delflowtable(ctx, flowtable); in nft_flush_table()
8720 struct nft_flowtable *flowtable; nft_flowtable_lookup() local
8733 nf_tables_deactivate_flowtable(const struct nft_ctx * ctx,struct nft_flowtable * flowtable,enum nft_trans_phase phase) nf_tables_deactivate_flowtable() argument
8753 struct nft_flowtable *flowtable; nft_flowtable_lookup_byhandle() local
8778 nft_flowtable_parse_hook(const struct nft_ctx * ctx,const struct nlattr * const nla[],struct nft_flowtable_hook * flowtable_hook,struct nft_flowtable * flowtable,struct netlink_ext_ack * extack,bool add) nft_flowtable_parse_hook() argument
8887 nft_unregister_flowtable_ops(struct net * net,struct nft_flowtable * flowtable,struct nf_hook_ops * ops) nft_unregister_flowtable_ops() argument
8896 __nft_unregister_flowtable_net_hooks(struct net * net,struct nft_flowtable * flowtable,struct list_head * hook_list,bool release_netdev) __nft_unregister_flowtable_net_hooks() argument
8914 nft_unregister_flowtable_net_hooks(struct net * net,struct nft_flowtable * flowtable,struct list_head * hook_list) nft_unregister_flowtable_net_hooks() argument
8921 nft_register_flowtable_ops(struct net * net,struct nft_flowtable * flowtable,struct nf_hook_ops * ops) nft_register_flowtable_ops() argument
8943 nft_register_flowtable_net_hooks(struct net * net,struct nft_table * table,struct list_head * hook_list,struct nft_flowtable * flowtable) nft_register_flowtable_net_hooks() argument
8998 nft_flowtable_update(struct nft_ctx * ctx,const struct nlmsghdr * nlh,struct nft_flowtable * flowtable,struct netlink_ext_ack * extack) nft_flowtable_update() argument
9099 struct nft_flowtable *flowtable; nf_tables_newflowtable() local
9235 nft_delflowtable_hook(struct nft_ctx * ctx,struct nft_flowtable * flowtable,struct netlink_ext_ack * extack) nft_delflowtable_hook() argument
9290 struct nft_flowtable *flowtable; nf_tables_delflowtable() local
9341 nf_tables_fill_flowtable_info(struct sk_buff * skb,struct net * net,u32 portid,u32 seq,int event,u32 flags,int family,struct nft_flowtable * flowtable,struct list_head * hook_list) nf_tables_fill_flowtable_info() argument
9413 struct nft_flowtable *flowtable; nf_tables_dump_flowtable() local
9500 struct nft_flowtable *flowtable; nf_tables_getflowtable() local
9554 nf_tables_flowtable_notify(struct nft_ctx * ctx,struct nft_flowtable * flowtable,struct list_head * hook_list,int event) nf_tables_flowtable_notify() argument
9587 nf_tables_flowtable_destroy(struct nft_flowtable * flowtable) nf_tables_flowtable_destroy() argument
9653 nft_flowtable_event(unsigned long event,struct net_device * dev,struct nft_flowtable * flowtable,bool changename) nft_flowtable_event() argument
9710 struct nft_flowtable *flowtable; __nf_tables_flowtable_event() local
11884 struct nft_flowtable *flowtable; __nft_release_hook() local
11910 struct nft_flowtable *flowtable, *nf; __nft_release_table() local
[all...]
H A Dnf_flow_table_xdp.c133 int nf_flow_offload_xdp_setup(struct nf_flowtable *flowtable, in nf_flow_offload_xdp_setup() argument
139 return nf_flowtable_by_dev_insert(flowtable, dev); in nf_flow_offload_xdp_setup()
141 nf_flowtable_by_dev_remove(flowtable, dev); in nf_flow_offload_xdp_setup()
H A Dnf_flow_table_path.c94 unsigned char *ha, struct nf_flowtable *flowtable) in nft_dev_path_info() argument
179 if (nf_flowtable_hw_offload(flowtable) && in nft_dev_path_info()
/linux/include/net/netfilter/
H A Dnf_flow_table.h89 static inline bool nf_flowtable_hw_offload(struct nf_flowtable *flowtable) in nf_flowtable_hw_offload() argument
91 return flowtable->flags & NF_FLOWTABLE_HW_OFFLOAD; in nf_flowtable_hw_offload()
313 void nf_flow_table_gc_cleanup(struct nf_flowtable *flowtable,
334 int nf_flow_offload_xdp_setup(struct nf_flowtable *flowtable,
356 void nf_flow_offload_add(struct nf_flowtable *flowtable,
358 void nf_flow_offload_del(struct nf_flowtable *flowtable,
360 void nf_flow_offload_stats(struct nf_flowtable *flowtable,
363 void nf_flow_table_offload_flush(struct nf_flowtable *flowtable);
364 void nf_flow_table_offload_flush_cleanup(struct nf_flowtable *flowtable);
366 int nf_flow_table_offload_setup(struct nf_flowtable *flowtable,
H A Dnf_tables.h1505 struct nft_flowtable *flowtable,
1835 struct nft_flowtable *flowtable; member
1844 nft_trans_container_flowtable(trans)->flowtable
/linux/tools/testing/selftests/net/netfilter/
H A Dnft_interface_stress.sh59 flowtable ft_${i} {
105 flowtable ft_wild {
H A Dnft_flowtable.sh164 flowtable f1 {
/linux/drivers/net/ethernet/airoha/
H A DKconfig32 Enable Aiorha flowtable statistic counters.