xref: /dpdk/examples/ip_pipeline/action.h (revision d46fe9448caf68711e805b8fc2d05ef127fde8af)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2018 Intel Corporation
3  */
4 
5 #ifndef _INCLUDE_ACTION_H_
6 #define _INCLUDE_ACTION_H_
7 
8 #include <sys/queue.h>
9 
10 #include <rte_port_in_action.h>
11 #include <rte_table_action.h>
12 
13 #include "common.h"
14 
15 /**
16  * Input port action
17  */
18 struct port_in_action_profile_params {
19 	uint64_t action_mask;
20 	struct rte_port_in_action_fltr_config fltr;
21 	struct rte_port_in_action_lb_config lb;
22 };
23 
24 struct port_in_action_profile {
25 	TAILQ_ENTRY(port_in_action_profile) node;
26 	char name[NAME_SIZE];
27 	struct port_in_action_profile_params params;
28 	struct rte_port_in_action_profile *ap;
29 };
30 
31 TAILQ_HEAD(port_in_action_profile_list, port_in_action_profile);
32 
33 int
34 port_in_action_profile_init(void);
35 
36 struct port_in_action_profile *
37 port_in_action_profile_find(const char *name);
38 
39 struct port_in_action_profile *
40 port_in_action_profile_create(const char *name,
41 	struct port_in_action_profile_params *params);
42 
43 /**
44  * Table action
45  */
46 struct table_action_profile_params {
47 	uint64_t action_mask;
48 	struct rte_table_action_common_config common;
49 	struct rte_table_action_lb_config lb;
50 	struct rte_table_action_mtr_config mtr;
51 	struct rte_table_action_tm_config tm;
52 	struct rte_table_action_encap_config encap;
53 	struct rte_table_action_nat_config nat;
54 	struct rte_table_action_ttl_config ttl;
55 	struct rte_table_action_stats_config stats;
56 	struct rte_table_action_sym_crypto_config sym_crypto;
57 };
58 
59 struct table_action_profile {
60 	TAILQ_ENTRY(table_action_profile) node;
61 	char name[NAME_SIZE];
62 	struct table_action_profile_params params;
63 	struct rte_table_action_profile *ap;
64 };
65 
66 TAILQ_HEAD(table_action_profile_list, table_action_profile);
67 
68 int
69 table_action_profile_init(void);
70 
71 struct table_action_profile *
72 table_action_profile_find(const char *name);
73 
74 struct table_action_profile *
75 table_action_profile_create(const char *name,
76 	struct table_action_profile_params *params);
77 
78 #endif /* _INCLUDE_ACTION_H_ */
79