NVIDIA DOCA SDK Data Center on a Chip Framework Documentation
doca_flow_ct.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2022 NVIDIA CORPORATION & AFFILIATES, ALL RIGHTS RESERVED.
3  *
4  * This software product is a proprietary product of NVIDIA CORPORATION &
5  * AFFILIATES (the "Company") and all right, title, and interest in and to the
6  * software product, including all associated intellectual property rights, are
7  * and shall remain exclusively with the Company.
8  *
9  * This software product is governed by the End User License Agreement
10  * provided with the software product.
11  *
12  */
13 
24 #ifndef DOCA_FLOW_CT_H_
25 #define DOCA_FLOW_CT_H_
26 
27 #include <stdbool.h>
28 #include <stdint.h>
29 #include <stdio.h>
30 
31 #include <doca_compat.h>
32 #include <doca_dev.h>
33 #include <doca_error.h>
34 #include <doca_flow.h>
35 #include <doca_flow_net.h>
36 #include <doca_bitfield.h>
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
45 #define DOCA_FLOW_CT_ACTION_HANDLE_INVALID (UINT32_MAX)
46 
50 #define DOCA_FLOW_CT_MARK_FROM_DPDK(_mark) (DOCA_BETOH32((_mark) + 1) >> 8)
51 
64 };
65 
72 typedef void (*doca_flow_ct_entry_finalize_cb)(struct doca_flow_pipe *pipe, void *entry, uint16_t queue, void *usr_ctx);
73 
77 typedef void (*doca_flow_ct_stats_update_cb)(struct doca_flow_pipe *pipe,
78  void *priv_data,
79  struct doca_flow_resource_query *stats_origin,
80  struct doca_flow_resource_query *stats_reply);
81 
86  uint32_t n_total_conns;
87  uint32_t n_total_counters;
88  void *user_ctx;
89 };
90 
95  uint32_t v;
96  struct {
97  uint32_t valid : 1;
98  uint32_t ctr_origin : 1;
99  uint32_t ctr_reply : 1;
100  uint32_t ctr_shared : 1;
101  uint32_t is_tcp : 1;
102  uint32_t conn_version : 11;
103  uint32_t timeout : 16;
104  };
105 };
106 
111  enum doca_flow_entry_op op;
112  uint32_t aging_conn_id;
114 };
115 
126  uint32_t n);
128  void (*aging_timer_cb)(struct doca_flow_ct_aging_ctx *ctx, uint64_t current_time_s);
130 };
131 
135 struct doca_flow_ct_cfg;
136 
146 doca_error_t doca_flow_ct_cfg_create(struct doca_flow_ct_cfg **cfg);
147 
157 doca_error_t doca_flow_ct_cfg_destroy(struct doca_flow_ct_cfg *cfg);
158 
170 doca_error_t doca_flow_ct_cfg_set_flags(struct doca_flow_ct_cfg *cfg, uint32_t flags);
171 
183 doca_error_t doca_flow_ct_cfg_set_queues(struct doca_flow_ct_cfg *cfg, uint32_t n_queues);
184 
196 doca_error_t doca_flow_ct_cfg_set_queue_depth(struct doca_flow_ct_cfg *cfg, uint32_t queue_depth);
197 
209 doca_error_t doca_flow_ct_cfg_set_ctrl_queues(struct doca_flow_ct_cfg *cfg, uint32_t n_ctrl_queues);
210 
222 doca_error_t doca_flow_ct_cfg_set_user_actions(struct doca_flow_ct_cfg *cfg, uint32_t n_user_actions);
223 
240  uint32_t n_ipv4,
241  uint32_t n_ipv6,
242  uint32_t n_total);
243 
256  uint32_t max_connections_per_zone);
257 
269 doca_error_t doca_flow_ct_cfg_set_counter_asymmetric(struct doca_flow_ct_cfg *cfg, uint32_t n_counter_asymmetric);
270 
282 doca_error_t doca_flow_ct_cfg_set_entry_private_data_size(struct doca_flow_ct_cfg *cfg, uint32_t entry_priv_data_size);
283 
297 
310  doca_flow_ct_stats_update_cb stats_update_cb);
311 
323 doca_error_t doca_flow_ct_cfg_set_aging_core(struct doca_flow_ct_cfg *cfg, uint32_t aging_core);
324 
336 doca_error_t doca_flow_ct_cfg_set_aging_query_delay(struct doca_flow_ct_cfg *cfg, uint32_t aging_query_delay_s);
337 
350  struct doca_flow_ct_aging_ops *aging_ops);
351 
363 doca_error_t doca_flow_ct_cfg_set_dup_filter_size(struct doca_flow_ct_cfg *cfg, uint32_t dup_filter_sz);
364 
383  bool direction,
384  bool match_inner,
385  struct doca_flow_meta *zone_match_mask,
386  struct doca_flow_meta *meta_modify_mask);
387 
406 doca_error_t doca_flow_ct_init(const struct doca_flow_ct_cfg *cfg);
407 
421 doca_error_t doca_flow_ct_cap_is_dev_supported(const struct doca_devinfo *devinfo);
422 
432 
444 void doca_flow_ct_meta_prepare(struct doca_flow_meta *meta, uint32_t zone, bool is_reply);
445 
455 void doca_flow_ct_meta_mask_prepare(struct doca_flow_meta *meta, bool is_reply);
456 
468 void doca_flow_ct_meta_set_match_zone(struct doca_flow_meta *meta, uint32_t zone, bool is_reply);
478 uint32_t doca_flow_ct_meta_get_zone_offset(bool is_reply);
479 
480 /*********** start of aging plugin API ***************/
481 
486  uint32_t ctr_id;
487  bool inuse;
488 };
489 
505  uint32_t n);
506 
522  uint32_t n);
523 
528  uint32_t ctr_id;
529  uint16_t last_hit_s;
530  uint64_t total_bytes;
531  uint64_t total_pkts;
532 };
533 
548  struct doca_flow_ct_aging_counter *ctrs,
549  uint32_t n);
550 
555  uint32_t aging_conn_id;
557  uint32_t ctr_origin_id;
558  uint32_t ctr_reply_id;
559 };
560 
574  uint32_t n);
575 
587 void doca_flow_ct_aging_conn_timeout(struct doca_flow_ct_aging_ctx *ctx, uint32_t *aging_conn_ids, uint32_t n);
588 
589 /*********** end of aging plugin API ***************/
590 
591 /*********** start of management mode API ***************/
592 
599  union {
600  uint32_t action_handle;
602  struct {
603  uint8_t action_idx;
605  struct doca_flow_meta meta;
609  union {
610  struct doca_flow_ct_ip4 ip4;
612  struct doca_flow_ct_ip6 ip6;
614  };
615  } data;
616  };
617 };
618 
631  uint8_t next_proto;
633 };
634 
647  uint8_t next_proto;
649 };
650 
655  union {
656  struct doca_flow_ct_match4 ipv4;
657  struct doca_flow_ct_match6 ipv6;
658  };
659 };
660 
691 };
692 
725 doca_error_t doca_flow_ct_entries_process(struct doca_flow_port *port,
726  uint16_t pipe_queue,
727  uint32_t min_room,
728  uint32_t max_processed_entries,
729  uint32_t *queue_room);
730 
762  struct doca_flow_pipe *pipe,
763  uint32_t flags,
764  struct doca_flow_ct_match *match_origin,
765  uint32_t hash_origin,
766  struct doca_flow_ct_match *match_reply,
767  uint32_t hash_reply,
768  struct doca_flow_pipe_entry **entry,
769  bool *conn_found);
770 
788  struct doca_flow_pipe *pipe,
789  struct doca_flow_pipe_entry *entry);
790 
823  struct doca_flow_pipe *pipe,
824  uint32_t flags,
825  struct doca_flow_ct_match *match_origin,
826  struct doca_flow_ct_match *match_reply,
827  const struct doca_flow_ct_actions *actions_origin,
828  const struct doca_flow_ct_actions *actions_reply,
829  uint32_t fwd_handle_origin,
830  uint32_t fwd_handle_reply,
831  uint32_t timeout_s,
832  void *usr_ctx,
833  struct doca_flow_pipe_entry *entry);
834 
860  struct doca_flow_pipe *pipe,
861  uint32_t flags,
862  struct doca_flow_ct_match *match,
863  const struct doca_flow_ct_actions *actions,
864  uint32_t fwd_handle,
865  struct doca_flow_pipe_entry *entry);
866 
893  struct doca_flow_pipe *pipe,
894  uint32_t flags,
895  struct doca_flow_pipe_entry *entry,
896  const struct doca_flow_ct_actions *actions_origin,
897  const struct doca_flow_ct_actions *actions_reply,
898  uint32_t fwd_handle_origin,
899  uint32_t fwd_handle_reply,
900  uint32_t timeout_s);
901 
922  struct doca_flow_pipe *pipe,
923  uint32_t flags,
924  struct doca_flow_pipe_entry *entry);
925 
948  struct doca_flow_pipe *pipe,
949  uint32_t flags,
950  struct doca_flow_pipe_entry *entry,
951  struct doca_flow_ct_match *match_origin,
952  struct doca_flow_ct_match *match_reply,
953  uint64_t *entry_flags);
954 
982  struct doca_flow_pipe *pipe,
983  uint32_t flags,
984  struct doca_flow_pipe_entry *entry,
985  struct doca_flow_resource_query *stats_origin,
986  struct doca_flow_resource_query *stats_reply,
987  uint64_t *last_hit_s);
988 
1003 void *doca_flow_ct_entry_get_priv_data(uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry);
1004 
1019 uint32_t doca_flow_ct_entry_get_conn_id(uint16_t queue,
1020  struct doca_flow_pipe *pipe,
1021  struct doca_flow_pipe_entry *entry);
1022 
1038  struct doca_flow_pipe *pipe,
1039  struct doca_flow_pipe_entry *entry);
1061  struct doca_flow_pipe *pipe,
1062  uint32_t conn_id,
1063  struct doca_flow_pipe_entry **entry,
1064  void **priv_data);
1065 
1066 /*********** end of management mode API ***************/
1067 
1090  struct doca_flow_pipe *pipe,
1091  const struct doca_flow_ct_actions actions[],
1092  uint32_t nb_actions,
1093  uint32_t actions_handles[]);
1094 
1116  struct doca_flow_pipe *pipe,
1117  const struct doca_flow_ct_actions actions[],
1118  uint32_t nb_actions,
1119  uint32_t actions_handles[]);
1136  struct doca_flow_pipe *pipe,
1137  uint32_t actions_handles[],
1138  uint32_t nb_actions);
1139 
1160 doca_error_t doca_flow_ct_fwd_register(struct doca_flow_port *port,
1161  uint32_t fwd_count,
1162  struct doca_flow_fwd fwd[],
1163  uint32_t fwd_handle[]);
1164 
1165 #ifdef __cplusplus
1166 } /* extern "C" */
1167 #endif
1168 
1171 #endif /* DOCA_FLOW_CT_H_ */
static void entry_finalize_cb(struct doca_flow_pipe *pipe, void *entry, uint16_t ct_queue, void *usr_ctx)
static struct doca_flow_actions actions
Definition: flow_parser.c:107
static struct doca_flow_fwd fwd
Definition: flow_parser.c:109
static struct doca_flow_pipe_entry * entry[MAX_ENTRIES]
#define DOCA_EXPERIMENTAL
To set a Symbol (or specifically a function) as experimental.
Definition: doca_compat.h:103
enum doca_error doca_error_t
DOCA API return codes.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entries_process(struct doca_flow_port *port, uint16_t pipe_queue, uint32_t min_room, uint32_t max_processed_entries, uint32_t *queue_room)
Process CT entries in queue.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_aging_counter_state_get(struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_counter_state *ctrs, uint32_t n)
Get counter state inside aging plugin timer callback.
DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_zone_offset(bool is_reply)
Get zone data bit offset in meta data field.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_direction(struct doca_flow_ct_cfg *cfg, bool direction, bool match_inner, struct doca_flow_meta *zone_match_mask, struct doca_flow_meta *meta_modify_mask)
Set CT configuration origin and reply direction.
DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_match_zone(struct doca_flow_meta *meta, uint32_t zone, bool is_reply)
Set meta match zone data to doca_flow meta.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_query_entry(uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_pipe_entry *entry, struct doca_flow_resource_query *stats_origin, struct doca_flow_resource_query *stats_reply, uint64_t *last_hit_s)
Extract information about specific entry.
DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_conn_id(uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry)
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_create(struct doca_flow_ct_cfg **cfg)
Create CT configuration.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_flags(struct doca_flow_ct_cfg *cfg, uint32_t flags)
Set CT flags.
void(* doca_flow_ct_entry_finalize_cb)(struct doca_flow_pipe *pipe, void *entry, uint16_t queue, void *usr_ctx)
Definition: doca_flow_ct.h:72
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_aging_query_delay(struct doca_flow_ct_cfg *cfg, uint32_t aging_query_delay_s)
Set aging query delay in seconds.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_fwd_register(struct doca_flow_port *port, uint32_t fwd_count, struct doca_flow_fwd fwd[], uint32_t fwd_handle[])
CT register multiple forwards pipes.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entry_prepare_rollback(uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry)
Free the CT entry that hasn't been added to CT pipe.
DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_update(struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_conn_update_info *info, uint32_t n)
Update connection counter inside aging plugin timer callback.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_aging_plugin_ops(struct doca_flow_ct_cfg *cfg, struct doca_flow_ct_aging_ops *aging_ops)
Set aging plugin callbacks.
DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_timeout(struct doca_flow_ct_aging_ctx *ctx, uint32_t *aging_conn_ids, uint32_t n)
Remove timeout connections inside aging plugin timer callback.
DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_aging_conn_id(uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry)
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_user_actions(struct doca_flow_ct_cfg *cfg, uint32_t n_user_actions)
Set number of user actions.
void(* doca_flow_ct_stats_update_cb)(struct doca_flow_pipe *pipe, void *priv_data, struct doca_flow_resource_query *stats_origin, struct doca_flow_resource_query *stats_reply)
Definition: doca_flow_ct.h:77
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_status_update_cb(struct doca_flow_ct_cfg *cfg, doca_flow_ct_stats_update_cb stats_update_cb)
Set status update callback to notify on counter changes.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_ctrl_queues(struct doca_flow_ct_cfg *cfg, uint32_t n_ctrl_queues)
Set number of control queues.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_queues(struct doca_flow_ct_cfg *cfg, uint32_t n_queues)
Set number of hardware queues.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_aging_counter_state_set(struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_counter_state *ctrs, uint32_t n)
Set counter state inside aging plugin timer callback.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_actions_add_shared(uint16_t ctrl_queue, struct doca_flow_pipe *pipe, const struct doca_flow_ct_actions actions[], uint32_t nb_actions, uint32_t actions_handles[])
Add shared modify-action.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_add_entry(uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_ct_match *match_origin, struct doca_flow_ct_match *match_reply, const struct doca_flow_ct_actions *actions_origin, const struct doca_flow_ct_actions *actions_reply, uint32_t fwd_handle_origin, uint32_t fwd_handle_reply, uint32_t timeout_s, void *usr_ctx, struct doca_flow_pipe_entry *entry)
Add new entry to doca flow CT pipe.
DOCA_EXPERIMENTAL void doca_flow_ct_destroy(void)
Destroy the doca flow ct.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_dup_filter_size(struct doca_flow_ct_cfg *cfg, uint32_t dup_filter_sz)
Set Number of connections to cache in duplication filter.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cap_is_dev_supported(const struct doca_devinfo *devinfo)
Check if doca device supported by CT.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_actions_update_shared(uint16_t ctrl_queue, struct doca_flow_pipe *pipe, const struct doca_flow_ct_actions actions[], uint32_t nb_actions, uint32_t actions_handles[])
Update shared modify-action.
DOCA_EXPERIMENTAL void doca_flow_ct_meta_prepare(struct doca_flow_meta *meta, uint32_t zone, bool is_reply)
Prepare meta with zone and default CT type.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_aging_core(struct doca_flow_ct_cfg *cfg, uint32_t aging_core)
Set core ID to run aging thread on.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_update_entry(uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_pipe_entry *entry, const struct doca_flow_ct_actions *actions_origin, const struct doca_flow_ct_actions *actions_reply, uint32_t fwd_handle_origin, uint32_t fwd_handle_reply, uint32_t timeout_s)
Update CT entry meta or counter.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_aging_counter_query(struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_counter *ctrs, uint32_t n)
Get counter statistics inside aging plugin timer callback.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_get_entry(uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_pipe_entry *entry, struct doca_flow_ct_match *match_origin, struct doca_flow_ct_match *match_reply, uint64_t *entry_flags)
Get CT entry match pattern.
doca_flow_ct_entry_flags
doca flow CT entry operation flags
Definition: doca_flow_ct.h:664
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_init(const struct doca_flow_ct_cfg *cfg)
Initialize the doca flow ct.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_queue_depth(struct doca_flow_ct_cfg *cfg, uint32_t queue_depth)
Set queue depth.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_connections(struct doca_flow_ct_cfg *cfg, uint32_t n_ipv4, uint32_t n_ipv6, uint32_t n_total)
Set number of ARM sessions.
doca_flow_ct_flags
CT flags.
Definition: doca_flow_ct.h:55
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entry_get_by_id(uint16_t queue, struct doca_flow_pipe *pipe, uint32_t conn_id, struct doca_flow_pipe_entry **entry, void **priv_data)
Retrieves the entry from CT pipe based on the given connection ID.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_entry_finalize_cb(struct doca_flow_ct_cfg *cfg, doca_flow_ct_entry_finalize_cb entry_finalize_cb)
Set entry finalize callback to query connection final stats.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_actions_rm_shared(uint16_t ctrl_queue, struct doca_flow_pipe *pipe, uint32_t actions_handles[], uint32_t nb_actions)
Remove shared modify-action.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_rm_entry(uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_pipe_entry *entry)
remove CT entry.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entry_prepare(uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_ct_match *match_origin, uint32_t hash_origin, struct doca_flow_ct_match *match_reply, uint32_t hash_reply, struct doca_flow_pipe_entry **entry, bool *conn_found)
Lookup recent CT entry and create on miss.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_max_connections_per_zone(struct doca_flow_ct_cfg *cfg, uint32_t max_connections_per_zone)
Set maximum number of connections per zone.
DOCA_EXPERIMENTAL void * doca_flow_ct_entry_get_priv_data(uint16_t queue, struct doca_flow_pipe *pipe, struct doca_flow_pipe_entry *entry)
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_entry_add_dir(uint16_t queue, struct doca_flow_pipe *pipe, uint32_t flags, struct doca_flow_ct_match *match, const struct doca_flow_ct_actions *actions, uint32_t fwd_handle, struct doca_flow_pipe_entry *entry)
Add missing direction rule to CT connection.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_destroy(struct doca_flow_ct_cfg *cfg)
Destroy CT configuration.
DOCA_EXPERIMENTAL void doca_flow_ct_meta_mask_prepare(struct doca_flow_meta *meta, bool is_reply)
Prepare meta as mask with zone and CT type.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_entry_private_data_size(struct doca_flow_ct_cfg *cfg, uint32_t entry_priv_data_size)
Set entry private data size.
DOCA_EXPERIMENTAL doca_error_t doca_flow_ct_cfg_set_counter_asymmetric(struct doca_flow_ct_cfg *cfg, uint32_t n_counter_asymmetric)
Set number of asymmetric counter connections.
@ DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_REPLY
Definition: doca_flow_ct.h:677
@ DOCA_FLOW_CT_ENTRY_FLAGS_DIR_ORIGIN
Definition: doca_flow_ct.h:667
@ DOCA_FLOW_CT_ENTRY_FLAGS_IPV6_REPLY
Definition: doca_flow_ct.h:673
@ DOCA_FLOW_CT_ENTRY_FLAGS_NO_WAIT
Definition: doca_flow_ct.h:665
@ DOCA_FLOW_CT_ENTRY_FLAGS_DIR_REPLY
Definition: doca_flow_ct.h:669
@ DOCA_FLOW_CT_ENTRY_FLAGS_IPV6_ORIGIN
Definition: doca_flow_ct.h:671
@ DOCA_FLOW_CT_ENTRY_FLAGS_ALLOC_ON_MISS
Definition: doca_flow_ct.h:683
@ DOCA_FLOW_CT_ENTRY_FLAGS_ENTRY_FINALIZE
Definition: doca_flow_ct.h:681
@ DOCA_FLOW_CT_ENTRY_FLAGS_DUP_FILTER_REPLY
Definition: doca_flow_ct.h:687
@ DOCA_FLOW_CT_ENTRY_FLAGS_STATS_UPDATES
Definition: doca_flow_ct.h:689
@ DOCA_FLOW_CT_ENTRY_FLAGS_DUP_FILTER_ORIGIN
Definition: doca_flow_ct.h:685
@ DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_ORIGIN
Definition: doca_flow_ct.h:675
@ DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_SHARED
Definition: doca_flow_ct.h:679
@ DOCA_FLOW_CT_FLAG_NO_COUNTER
Definition: doca_flow_ct.h:60
@ DOCA_FLOW_CT_FLAG_NO_AGING
Definition: doca_flow_ct.h:58
@ DOCA_FLOW_CT_FLAG_WIRE_TO_WIRE
Definition: doca_flow_ct.h:61
@ DOCA_FLOW_CT_FLAG_ASYMMETRIC_TUNNEL
Definition: doca_flow_ct.h:59
@ DOCA_FLOW_CT_FLAG_STATS
Definition: doca_flow_ct.h:56
@ DOCA_FLOW_CT_FLAG_WORKER_STATS
Definition: doca_flow_ct.h:57
@ DOCA_FLOW_CT_FLAG_DUP_FILTER_UDP_ONLY
Definition: doca_flow_ct.h:62
doca_flow_entry_op
doca flow entry operation
Definition: doca_flow.h:146
doca_flow_resource_type
doca flow resource type
Definition: doca_flow.h:612
uint32_t doca_be32_t
Definition: doca_types.h:121
const struct ip_frag_config * cfg
Definition: ip_frag_dp.c:0
struct doca_flow_header_l4_port l4_port
Definition: doca_flow_ct.h:607
struct doca_flow_meta meta
Definition: doca_flow_ct.h:605
struct doca_flow_ct_ip4 ip4
Definition: doca_flow_ct.h:610
enum doca_flow_resource_type resource_type
Definition: doca_flow_ct.h:597
struct doca_flow_ct_actions::@121::@123 data
struct doca_flow_ct_ip6 ip6
Definition: doca_flow_ct.h:612
CT aging user plugin connection event.
Definition: doca_flow_ct.h:110
enum doca_flow_entry_op op
Definition: doca_flow_ct.h:111
union doca_flow_ct_aging_conn conn
Definition: doca_flow_ct.h:113
Connection update information.
Definition: doca_flow_ct.h:554
union doca_flow_ct_aging_conn conn_info
Definition: doca_flow_ct.h:556
CT aging counter state.
Definition: doca_flow_ct.h:485
Counter statistics.
Definition: doca_flow_ct.h:527
CT aging user plugin context.
Definition: doca_flow_ct.h:85
CT aging user plugin callbacks.
Definition: doca_flow_ct.h:119
void(* aging_shutdown_cb)(struct doca_flow_ct_aging_ctx *ctx)
Definition: doca_flow_ct.h:122
void(* conn_sync_cb)(struct doca_flow_ct_aging_ctx *ctx, struct doca_flow_ct_aging_conn_event *conn, uint32_t n)
Definition: doca_flow_ct.h:124
void(* aging_timer_cb)(struct doca_flow_ct_aging_ctx *ctx, uint64_t current_time_s)
Definition: doca_flow_ct.h:128
doca_error_t(* aging_init_cb)(struct doca_flow_ct_aging_ctx *ctx)
Definition: doca_flow_ct.h:120
doca flow CT IPv4 match pattern
Definition: doca_flow_ct.h:622
struct doca_flow_header_l4_port l4_port
Definition: doca_flow_ct.h:623
doca_be32_t src_ip
Definition: doca_flow_ct.h:625
doca_be32_t metadata
Definition: doca_flow_ct.h:629
doca_be32_t dst_ip
Definition: doca_flow_ct.h:627
doca flow CT IPv6 match pattern
Definition: doca_flow_ct.h:638
doca_be32_t metadata
Definition: doca_flow_ct.h:645
struct doca_flow_header_l4_port l4_port
Definition: doca_flow_ct.h:639
doca_be32_t src_ip[4]
Definition: doca_flow_ct.h:641
doca_be32_t dst_ip[4]
Definition: doca_flow_ct.h:643
doca flow CT match pattern
Definition: doca_flow_ct.h:654
struct doca_flow_ct_match4 ipv4
Definition: doca_flow_ct.h:656
struct doca_flow_ct_match6 ipv6
Definition: doca_flow_ct.h:657
forwarding configuration
Definition: doca_flow.h:779
doca flow tcp or udp port header in match data
doca flow meta data
Definition: doca_flow.h:358
flow resource query
Definition: doca_flow.h:1101
CT aging connection info.
Definition: doca_flow_ct.h:94
struct upf_accel_ctx * ctx