3. Data Structures

Here are the data structures with brief descriptions:

Convenience type for representing opaque data
IPSec encryption key
Action description
Action descriptor field
Action descriptor array
Doca flow actions information
Doca flow global configuration
Doca flow crypto action information
Doca flow crypto encap action information
Doca flow ct global configuration
Doca flow CT match pattern
Doca flow CT IPv4 match pattern
Doca flow CT IPv6 match pattern
CT packet meta data
Doca flow encap data information
Forwarding configuration
Doca flow GENEVE option single DW
Bindable object configuration
Forwarding configuration wrapper
Pipeline configuration wrapper
Doca flow eth header
Doca flow vlan header
Doca flow packet format
Doca flow GENEVE header
Doca flow icmp header in match data
Doca flow ipv4 header in match data
Doca flow ipv6 header in match data
Doca flow tcp or udp port header in match data
Doca flow MPLS header
Doca flow tcp header in match data
Doca flow udp header in match data
Doca flow ip address
Doca flow matcher information
Doca flow meta data
Doca flow mirror target
Doca monitor action configuration
User configuration structure using to create parser for single GENEVE TLV option
Doca flow parser meta data
Pipe attributes
Pipeline configuration
Doca flow port configuration
Doca flow push data information
Flow query result
Doca flow crypto resource configuration
Doca flow meter resource configuration
Doca flow mirror resource configuration
Doca flow rss resource configuration
Doca flow resource quota
Doca flow shared resource configuration
Flow shared resources query result
Doca flow tunnel information
Struct to represent a gather list
IPSec sa egress attributes - attributes for outgoing data
IPSec sa egress attributes - attributes for incoming data
IPSec sa sn attributes - attributes for sequence number - only if SN or AR enabled
IPSec attributes for create
IPSec sa events attributes - when turned on will trigger an event
Registers log source on program start
This struct provides meta data for a pcc user algo
Data structure to describe CPU mask for doca_rmax internal thread
Completion returned by input stream describing the incoming packets
Detailed completion error information


Direction config

Public Variables

bool  match_inner


bool direction_cfg::match_inner [inherited]

match packet inner layer

doca_flow_meta * direction_cfg::meta_modify_mask [inherited]

meta mask to modify

doca_flow_meta * direction_cfg::zone_match_mask [inherited]

Zone mask to match

[DOCA Types]

Public Variables

void * ptr
uint64_t  u64


void * doca_data::ptr [inherited]

Data as a pointer

uint64_t doca_data::u64 [inherited]

Data as a 64-bit unsigned integer


Public Variables

uint64_t  implicit_iv
void * raw_key
uint32_t  salt
enumdoca_encryption_key_type type


uint64_t doca_encryption_key::implicit_iv [inherited]

The IV is inserted into the GCM engine is calculated by

void * doca_encryption_key::raw_key [inherited]

Raw key buffer. Actual size of this buffer defined by type.

uint32_t doca_encryption_key::salt [inherited]

The salt is inserted into the GCM engine is calculated by

enumdoca_encryption_key_typedoca_encryption_key::type [inherited]

size of enc key


Field based on a string that is composed out of struct members separated by a dot.

The 1st segment determines the field location in packet "outer", "inner", "tunnel". The 2nd segment determines the protocol. The 3rd segment determines the field.

E.g. "outer.eth.src_mac" "tunnel.gre.protocol" "inner.ipv4.next_proto"

Public Variables

uint32_t  bit_offset
const char * field_string


uint32_t doca_flow_action_desc_field::bit_offset [inherited]

Field bit offset.

const char * doca_flow_action_desc_field::field_string [inherited]

Field selection by string.


Public Variables

uint8_t  nb_action_desc


doca_flow_action_desc * doca_flow_action_descs::desc_array [inherited]

action descriptor array pointer.

uint8_t doca_flow_action_descs::nb_action_desc [inherited]

maximum number of action descriptor array.


Public Variables

uint8_t  action_idx
struct doca_flow_crypto_action crypto
struct doca_flow_crypto_encap_action crypto_encap
bool  decap
struct doca_flow_encap_action encap
uint32_t  flags
bool  has_crypto_encap
bool  has_encap
bool  has_push
struct doca_flow_meta meta
struct doca_flow_header_format outer
struct doca_flow_parser_meta parser_meta
bool  pop
struct doca_flow_push_action push
struct doca_flow_tun tun


uint8_t doca_flow_actions::action_idx [inherited]

index according to place provided on creation

struct doca_flow_crypto_actiondoca_flow_actions::crypto [inherited]

crypto action information

struct doca_flow_crypto_encap_actiondoca_flow_actions::crypto_encap [inherited]

header/trailer reformat data information

bool doca_flow_actions::decap [inherited]

when true, will do decap

struct doca_flow_encap_actiondoca_flow_actions::encap [inherited]

encap data information

uint32_t doca_flow_actions::flags [inherited]

action flags

bool doca_flow_actions::has_crypto_encap [inherited]

when true, do crypto reformat header/trailer

bool doca_flow_actions::has_encap [inherited]

when true, will do encap

bool doca_flow_actions::has_push [inherited]

when true, push header

struct doca_flow_metadoca_flow_actions::meta [inherited]

modify meta data, pipe action as mask

struct doca_flow_header_formatdoca_flow_actions::outer [inherited]

modify outer headers

struct doca_flow_parser_metadoca_flow_actions::parser_meta [inherited]

copy from read-only meta data, pipe action as mask

bool doca_flow_actions::pop [inherited]

when true, pop header

struct doca_flow_push_actiondoca_flow_actions::push [inherited]

push header data information nat64 action

struct doca_flow_tundoca_flow_actions::tun [inherited]

modify tunnel headers


Public Variables

doca_flow_entry_process_cb cb
uint64_t  flags
const char * mode_args
uint8_t  nr_acl_collisions
uint32_t  nr_shared_resources[DOCA_FLOW_SHARED_RESOURCE_MAX]
doca_flow_pipe_process_cb pipe_process_cb
uint32_t  queue_depth
uint16_t  queues
struct doca_flow_resources resource
const uint8_t * rss_key
uint32_t  rss_key_len
doca_flow_shared_resource_unbind_cb unbind_cb


doca_flow_entry_process_cbdoca_flow_cfg::cb [inherited]

callback for entry create/destroy

uint64_t doca_flow_cfg::flags [inherited]

configuraton flags

const char * doca_flow_cfg::mode_args [inherited]

set doca flow architecture mode switch, vnf

uint8_t doca_flow_cfg::nr_acl_collisions [inherited]

number of pre-configured collisions for the acl module, default to 3, max to 8

uint32_t doca_flow_cfg::nr_shared_resources[DOCA_FLOW_SHARED_RESOURCE_MAX] [inherited]

total shared resource per type

doca_flow_pipe_process_cbdoca_flow_cfg::pipe_process_cb [inherited]

callback for pipe process completions

uint32_t doca_flow_cfg::queue_depth [inherited]

Number of pre-configured queue_size, default to 128

uint16_t doca_flow_cfg::queues [inherited]

queue id for each offload thread

struct doca_flow_resourcesdoca_flow_cfg::resource [inherited]

resource quota

const uint8_t * doca_flow_cfg::rss_key [inherited]

RSS optional hash key.

uint32_t doca_flow_cfg::rss_key_len [inherited]

RSS hash key length in bytes.

doca_flow_shared_resource_unbind_cbdoca_flow_cfg::unbind_cb [inherited]

callback for unbinding of a shared resource


Public Variables

enumdoca_flow_crypto_action_type action_type
uint32_t  crypto_id
enumdoca_flow_crypto_protocol_type proto_type
bool  sn_en


enumdoca_flow_crypto_action_typedoca_flow_crypto_action::action_type [inherited]

crypto action type - none/encrypt/decrypt

uint32_t doca_flow_crypto_action::crypto_id [inherited]

shared resource id represents session

enumdoca_flow_crypto_protocol_typedoca_flow_crypto_action::proto_type [inherited]

crypto action protocol - none/esp/psp

bool doca_flow_crypto_action::sn_en [inherited]

Enable SN/ESN generation on egress and antireplay on ingress


Public Variables

enumdoca_flow_crypto_encap_action_type action_type
uint16_t  data_size
uint8_t  encap_data[DOCA_FLOW_CRYPTO_HEADER_LEN_MAX]
uint16_t  icv_size
enumdoca_flow_crypto_encap_net_type net_type


enumdoca_flow_crypto_encap_action_typedoca_flow_crypto_encap_action::action_type [inherited]

action type - encap or decap

uint16_t doca_flow_crypto_encap_action::data_size [inherited]

reformat header length in bytes

uint8_t doca_flow_crypto_encap_action::encap_data[DOCA_FLOW_CRYPTO_HEADER_LEN_MAX] [inherited]

reformat header data to insert

uint16_t doca_flow_crypto_encap_action::icv_size [inherited]

trailer size in bytes

enumdoca_flow_crypto_encap_net_typedoca_flow_crypto_encap_action::net_type [inherited]

network type - mode, protocol, header

[flow net define]

doca flow CT ipV4

Public Variables

doca_be32_t dst_ip
doca_be32_t src_ip


doca_be32_tdoca_flow_ct_ip4::dst_ip [inherited]

ip dst address

doca_be32_tdoca_flow_ct_ip4::src_ip [inherited]

ip src address

[flow net define]

doca flow CT ipV6

Public Variables

doca_be32_t dst_ip[4]
doca_be32_t src_ip[4]


doca_be32_tdoca_flow_ct_ip6::dst_ip[4] [inherited]

ip dst address

doca_be32_tdoca_flow_ct_ip6::src_ip[4] [inherited]

ip src address


Public Variables

doca_be32_t dst_ip
struct doca_flow_header_l4_port l4_port
uint8_t  next_proto
doca_be32_t src_ip
uint32_t  zone


doca_be32_tdoca_flow_ct_match4::dst_ip [inherited]

ip dst address

struct doca_flow_header_l4_portdoca_flow_ct_match4::l4_port [inherited]

UDP or TCP source and destination port

uint8_t doca_flow_ct_match4::next_proto [inherited]

ip next protocol

doca_be32_tdoca_flow_ct_match4::src_ip [inherited]

ip src address

uint32_t doca_flow_ct_match4::zone [inherited]

meta to match


Public Variables

doca_be32_t dst_ip[4]
struct doca_flow_header_l4_port l4_port
uint8_t  next_proto
doca_be32_t src_ip[4]
uint32_t  zone


doca_be32_tdoca_flow_ct_match6::dst_ip[4] [inherited]

ip dst address

struct doca_flow_header_l4_portdoca_flow_ct_match6::l4_port [inherited]

UDP or TCP source and destination port

uint8_t doca_flow_ct_match6::next_proto [inherited]

ip next protocol

doca_be32_tdoca_flow_ct_match6::src_ip[4] [inherited]

ip src address

uint32_t doca_flow_ct_match6::zone [inherited]

zone ID


Public Variables

uint32_t  data
uint32_t  hairpin
uint32_t  src
uint32_t  type
uint32_t  u32


uint32_t doca_flow_ct_meta::data [inherited]

Combination of reserved, zone, user action data and user data.

uint32_t doca_flow_ct_meta::hairpin [inherited]

Subject to forward using hairpin.

uint32_t doca_flow_ct_meta::src [inherited]

Source port in multi-port E-Switch mode

uint32_t doca_flow_ct_meta::type [inherited]

Refer to doca_flow_ct_meta_type.

uint32_t doca_flow_ct_meta::u32 [inherited]

CPU endian.


Public Variables

struct doca_flow_header_format outer
struct doca_flow_tun tun


struct doca_flow_header_formatdoca_flow_encap_action::outer [inherited]

outer header format

struct doca_flow_tundoca_flow_encap_action::tun [inherited]

tunnel info


Public Variables

uint32_t  idx
doca_flow_pipe * next_pipe
int  num_of_queues
doca_flow_fwd::@9::@17  ordered_list_pipe
doca_flow_pipe * pipe
uint16_t  port_id
enumdoca_flow_rss_hash_function rss_hash_func
uint32_t  rss_inner_flags
uint32_t  rss_outer_flags
uint16_t * rss_queues
uint32_t  shared_rss_id
doca_flow_target * target
enumdoca_flow_fwd_type type


uint32_t doca_flow_fwd::idx [inherited]

Index of the ordered list pipe entry.

doca_flow_pipe * doca_flow_fwd::next_pipe [inherited]

next pipe pointer

int doca_flow_fwd::num_of_queues [inherited]

number of queues

doca_flow_fwd::@9::@17 doca_flow_fwd::ordered_list_pipe [inherited]

next ordered list pipe configuration

doca_flow_pipe * doca_flow_fwd::pipe [inherited]

Ordered list pipe to select an entry from.

uint16_t doca_flow_fwd::port_id [inherited]

destination port id

enumdoca_flow_rss_hash_functiondoca_flow_fwd::rss_hash_func [inherited]

hash function

uint32_t doca_flow_fwd::rss_inner_flags [inherited]

rss offload outer types

uint32_t doca_flow_fwd::rss_outer_flags [inherited]

rss offload outer types

uint16_t * doca_flow_fwd::rss_queues [inherited]

rss queues array

uint32_t doca_flow_fwd::shared_rss_id [inherited]

shared rss id, only for pipe's fwd is NULL

doca_flow_target * doca_flow_fwd::target [inherited]

pointer to target handler

enumdoca_flow_fwd_typedoca_flow_fwd::type [inherited]

indicate the forwarding type

[flow net define]

This object describes single DW (4-bytes) from GENEVE option header. It describes either the first DW in the option including class, type and length or any other data DW.

Public Variables

doca_be16_t class_id
doca_be32_t data
uint8_t  type


doca_be16_tdoca_flow_geneve_option::class_id [inherited]

option class

doca_be32_tdoca_flow_geneve_option::data [inherited]

4 bytes of option data.

uint8_t doca_flow_geneve_option::type [inherited]

option type


Public Variables

uint64_t  pipe_id
uint32_t  port_id
enumdoca_flow_grpc_bindable_obj_type type


uint64_t doca_flow_grpc_bindable_obj::pipe_id [inherited]

pipe id if type is pipe

uint32_t doca_flow_grpc_bindable_obj::port_id [inherited]

port id if type is port

enumdoca_flow_grpc_bindable_obj_typedoca_flow_grpc_bindable_obj::type [inherited]

bindable object type


Public Variables

uint64_t  next_pipe_id


doca_flow_fwd * doca_flow_grpc_fwd::fwd [inherited]

doca flow fwd struct

uint64_t doca_flow_grpc_fwd::next_pipe_id [inherited]

next pipe id

[flow net define]

Public Variables

uint8_t  dst_mac[DOCA_ETHER_ADDR_LEN]
uint8_t  src_mac[DOCA_ETHER_ADDR_LEN]
doca_be16_t type


uint8_t doca_flow_header_eth::dst_mac[DOCA_ETHER_ADDR_LEN] [inherited]

destination mac address

uint8_t doca_flow_header_eth::src_mac[DOCA_ETHER_ADDR_LEN] [inherited]

source mac address

doca_be16_tdoca_flow_header_eth::type [inherited]

eth type

[flow net define]

Public Variables

doca_be16_t next_proto
uint8_t  o_c
uint8_t  ver_opt_len
doca_be32_t vni


doca_be16_tdoca_flow_header_geneve::next_proto [inherited]

next protocol

uint8_t doca_flow_header_geneve::o_c [inherited]

OAM packet (1) + critical options present (1) + reserved (6).

uint8_t doca_flow_header_geneve::ver_opt_len [inherited]

version (2) + options length (6).

doca_be32_tdoca_flow_header_geneve::vni [inherited]

geneve vni (24) + reserved (8).

[flow net define]

Public Variables

uint8_t  code
doca_be16_t ident
uint8_t  type


uint8_t doca_flow_header_icmp::code [inherited]

icmp code.

doca_be16_tdoca_flow_header_icmp::ident [inherited]

icmp identifier.

uint8_t doca_flow_header_icmp::type [inherited]

icmp type

[flow net define]

Public Variables

uint8_t  dscp_ecn
doca_be32_t dst_ip
uint8_t  next_proto
doca_be32_t src_ip
uint16_t  total_len
uint8_t  ttl
uint8_t  version_ihl


uint8_t doca_flow_header_ip4::dscp_ecn [inherited]

dscp and ecn

doca_be32_tdoca_flow_header_ip4::dst_ip [inherited]

ip dst address

uint8_t doca_flow_header_ip4::next_proto [inherited]

ip next protocol

doca_be32_tdoca_flow_header_ip4::src_ip [inherited]

ip src address

uint16_t doca_flow_header_ip4::total_len [inherited]

packet total length

uint8_t doca_flow_header_ip4::ttl [inherited]

time to live

uint8_t doca_flow_header_ip4::version_ihl [inherited]

version and internet header length

[flow net define]

Public Variables

uint8_t  dscp_ecn
doca_be32_t dst_ip[4]
uint8_t  hop_limit
uint8_t  next_proto
uint16_t  payload_len
doca_be32_t src_ip[4]


uint8_t doca_flow_header_ip6::dscp_ecn [inherited]

dscp and ecn

doca_be32_tdoca_flow_header_ip6::dst_ip[4] [inherited]

ip dst address

uint8_t doca_flow_header_ip6::hop_limit [inherited]

hop limit

uint8_t doca_flow_header_ip6::next_proto [inherited]

ip next protocol

uint16_t doca_flow_header_ip6::payload_len [inherited]

payload length

doca_be32_tdoca_flow_header_ip6::src_ip[4] [inherited]

ip src address

[flow net define]


‎ 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Label | TC |S| TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Public Variables

doca_be32_t label


doca_be32_tdoca_flow_header_mpls::label [inherited]

MPLS label.

[flow net define]

Public Variables

uint8_t  data_offset
uint8_t  flags
struct doca_flow_header_l4_port l4_port


uint8_t doca_flow_header_tcp::data_offset [inherited]

tcp data offset

uint8_t doca_flow_header_tcp::flags [inherited]

tcp flags

struct doca_flow_header_l4_portdoca_flow_header_tcp::l4_port [inherited]

tcp source and destination port

[flow net define]

Public Variables

doca_be32_t ipv4_addr
doca_be32_t ipv6_addr[4]
enumdoca_flow_l3_type type


doca_be32_tdoca_flow_ip_addr::ipv4_addr [inherited]

ipv4 address if type is ipv4

doca_be32_tdoca_flow_ip_addr::ipv6_addr[4] [inherited]

ipv6 address if type is ipv6

enumdoca_flow_l3_typedoca_flow_ip_addr::type [inherited]

ip address type


Public Variables

uint32_t  flags
struct doca_flow_header_format inner
struct doca_flow_meta meta
struct doca_flow_header_format outer
struct doca_flow_parser_meta parser_meta
struct doca_flow_tun tun


uint32_t doca_flow_match::flags [inherited]

match items which are no value

struct doca_flow_header_formatdoca_flow_match::inner [inherited]

inner layer header format

struct doca_flow_metadoca_flow_match::meta [inherited]

Programmable meta data.

struct doca_flow_header_formatdoca_flow_match::outer [inherited]

outer layer header format

struct doca_flow_parser_metadoca_flow_match::parser_meta [inherited]

Read-only meta data.

struct doca_flow_tundoca_flow_match::tun [inherited]

tunnel info


Meta data known as scratch data can be used to match or modify within pipes. Meta data can be set with value in previous pipes and match in later pipes. User can customize meta data structure as long as overall size doens't exceed limit. To match meta data, mask must be specified when creating pipe. Struct must be aligned to 32 bits. No initial value for Meta data, must match after setting value.

Public Variables

uint32_t  mark
uint32_t  pkt_meta


uint32_t doca_flow_meta::mark [inherited]

Mark id.

uint32_t doca_flow_meta::pkt_meta [inherited]

Shared with application via packet.

uint32_t doca_flow_meta::u32[DOCA_FLOW_META_SCRATCH_PAD_MAX] [inherited]

Programmable user data.


Public Variables

struct doca_flow_encap_action encap
struct doca_flow_fwd fwd
bool  has_encap


struct doca_flow_encap_actiondoca_flow_mirror_target::encap [inherited]

Encap data.

struct doca_flow_fwddoca_flow_mirror_target::fwd [inherited]

Mirror target, must be filled.

bool doca_flow_mirror_target::has_encap [inherited]

Encap mirrored packets.


Public Variables

bool  aging_enabled
uint32_t  aging_sec
uint64_t  cbs
uint64_t  cir
enumdoca_flow_resource_type counter_type
enumdoca_flow_meter_limit_type limit_type
enum doca_flow_meter_color  meter_init_color
enumdoca_flow_resource_type meter_type
uint32_t  shared_counter_id
uint32_t  shared_meter_id
uint32_t  shared_mirror_id


bool doca_flow_monitor::aging_enabled [inherited]

Specify if aging is enabled

uint32_t doca_flow_monitor::aging_sec [inherited]

aging time in seconds.

uint64_t doca_flow_monitor::cbs [inherited]

Committed Burst Size (bytes).

uint64_t doca_flow_monitor::cir [inherited]

Committed Information Rate (bytes/second).

enumdoca_flow_resource_typedoca_flow_monitor::counter_type [inherited]

Type of counter configuration.

enumdoca_flow_meter_limit_typedoca_flow_monitor::limit_type [inherited]

Meter rate limit type: bytes / packets per second

enum doca_flow_meter_color doca_flow_monitor::meter_init_color [inherited]

meter initial color

enumdoca_flow_resource_typedoca_flow_monitor::meter_type [inherited]

Type of meter configuration.

uint32_t doca_flow_monitor::shared_counter_id [inherited]

shared counter id

uint32_t doca_flow_monitor::shared_meter_id [inherited]

shared meter id

uint32_t doca_flow_monitor::shared_mirror_id [inherited]

shared mirror id.


Ordered list configuration.

Public Variables

const * elements
uint32_t  idx
uint32_t  size


const * doca_flow_ordered_list::elements [inherited]

An array of DOCA flow structure pointers, depending on types.

uint32_t doca_flow_ordered_list::idx [inherited]

List index among the lists of the pipe. At pipe creation, it must match the list position in the array of lists. At entry insertion, it determines which list to use.

uint32_t doca_flow_ordered_list::size [inherited]

Number of elements in the list.


Public Variables

enumdoca_flow_parser_geneve_opt_mode match_on_class_mode
doca_be16_t option_class
uint8_t  option_len
uint8_t  option_type


doca_be32_tdoca_flow_parser_geneve_opt_cfg::data_mask[DOCA_FLOW_GENEVE_DATA_OPTION_LEN_MAX] [inherited]

Data mask describing which DWs should be sampled.

enumdoca_flow_parser_geneve_opt_modedoca_flow_parser_geneve_opt_cfg::match_on_class_mode [inherited]

Indicator about class field role in this option.

doca_be16_tdoca_flow_parser_geneve_opt_cfg::option_class [inherited]

The class of the GENEVE TLV option.

uint8_t doca_flow_parser_geneve_opt_cfg::option_len [inherited]

The length of the GENEVE TLV option data in DW granularity.

uint8_t doca_flow_parser_geneve_opt_cfg::option_type [inherited]

The type of the GENEVE TLV option.


Parser meta data known as read-only hardware data that can be used to match.

Public Variables

uint8_t  inner_ip4_checksum_ok
uint8_t  inner_ip_fragmented
enumdoca_flow_l2_meta inner_l2_type
uint8_t  inner_l3_ok
enumdoca_flow_l3_meta inner_l3_type
uint8_t  inner_l4_ok
enumdoca_flow_l4_meta inner_l4_type
uint8_t  ipsec_syndrome
enum doca_flow_meter_color  meter_color
uint8_t  outer_ip4_checksum_ok
uint8_t  outer_ip_fragmented
enumdoca_flow_l2_meta outer_l2_type
uint8_t  outer_l3_ok
enumdoca_flow_l3_meta outer_l3_type
uint8_t  outer_l4_ok
enumdoca_flow_l4_meta outer_l4_type
uint32_t  port_meta
uint16_t  random


uint8_t doca_flow_parser_meta::inner_ip4_checksum_ok [inherited]

Whether inner IPv4 checksum is valid.

uint8_t doca_flow_parser_meta::inner_ip_fragmented [inherited]

Whether inner IP packet is fragmented.

enumdoca_flow_l2_metadoca_flow_parser_meta::inner_l2_type [inherited]

Innermost L2 packet type.

uint8_t doca_flow_parser_meta::inner_l3_ok [inherited]

Whether inner L3 layer is valid without checksum.

enumdoca_flow_l3_metadoca_flow_parser_meta::inner_l3_type [inherited]

Innermost L3 packet type.

uint8_t doca_flow_parser_meta::inner_l4_ok [inherited]

Whether inner L4 layer is valid inculiding checksum.

enumdoca_flow_l4_metadoca_flow_parser_meta::inner_l4_type [inherited]

Innermost L4 packet type.

uint8_t doca_flow_parser_meta::ipsec_syndrome [inherited]

IPsec decrypt/authentication syndrome.

enum doca_flow_meter_color doca_flow_parser_meta::meter_color [inherited]

Meter colors: Green, Yellow, Red.

uint8_t doca_flow_parser_meta::outer_ip4_checksum_ok [inherited]

Whether outer IPv4 checksum is valid.

uint8_t doca_flow_parser_meta::outer_ip_fragmented [inherited]

Whether outer IP packet is fragmented.

enumdoca_flow_l2_metadoca_flow_parser_meta::outer_l2_type [inherited]

Outermost L2 packet type.

uint8_t doca_flow_parser_meta::outer_l3_ok [inherited]

Whether outer L3 layer is valid without checksum.

enumdoca_flow_l3_metadoca_flow_parser_meta::outer_l3_type [inherited]

Outermost L3 packet type.

uint8_t doca_flow_parser_meta::outer_l4_ok [inherited]

Whether outer L4 layer is valid inculiding checksum.

enumdoca_flow_l4_metadoca_flow_parser_meta::outer_l4_type [inherited]

Outermost L4 packet type.

uint32_t doca_flow_parser_meta::port_meta [inherited]

Programmable source vport.

uint16_t doca_flow_parser_meta::random [inherited]

Matches a random value. This value is not based on the packet data/headers. Application shouldn't assume that this value is kept during the packet lifetime.


Public Variables

uint8_t  congestion_level_threshold
enumdoca_flow_direction_info dir_info
enumdoca_flow_pipe_domain domain
bool  enable_strict_matching
bool  is_resizable
bool  is_root
bool  miss_counter
const char * name
uint8_t  nb_actions
uint32_t  nb_flows
uint8_t  nb_ordered_lists
enumdoca_flow_pipe_type type
void * user_ctx


uint8_t doca_flow_pipe_attr::congestion_level_threshold [inherited]

Congestion threshold for pipe in percentage (0,100] - pipe notification

enumdoca_flow_direction_infodoca_flow_pipe_attr::dir_info [inherited]

Optional direction hint for driver optimization, supported in switch mode only

enumdoca_flow_pipe_domaindoca_flow_pipe_attr::domain [inherited]

pipe steering domain.

bool doca_flow_pipe_attr::enable_strict_matching [inherited]

pipe supports strict matching or not. If true, relaxed matching is turned off

bool doca_flow_pipe_attr::is_resizable [inherited]

pipe supports the resize operation

bool doca_flow_pipe_attr::is_root [inherited]

pipeline is root or not. If true it means the pipe is a root pipe executed on packet arrival.

bool doca_flow_pipe_attr::miss_counter [inherited]

Counter pipe miss flow and query with doca_flow_query_pipe_miss()

const char * doca_flow_pipe_attr::name [inherited]

name for the pipeline

uint8_t doca_flow_pipe_attr::nb_actions [inherited]

maximum number of doca flow action array, default is 1 if not set

uint32_t doca_flow_pipe_attr::nb_flows [inherited]

maximum number of flow rules, default is 8k if not set

uint8_t doca_flow_pipe_attr::nb_ordered_lists [inherited]

number of ordered lists in the array, default 0, mutually exclusive with nb_actions

enumdoca_flow_pipe_typedoca_flow_pipe_attr::type [inherited]

type of pipe. enum doca_flow_pipe_type

void * doca_flow_pipe_attr::user_ctx [inherited]

Pipe user context - pipe notification


Public Variables

struct doca_flow_pipe_attr attr
doca_flow_port * port


* doca_flow_pipe_cfg::action_descs [inherited]

action array descriptions

* doca_flow_pipe_cfg::actions [inherited]

actions array for the pipeline

* doca_flow_pipe_cfg::actions_masks [inherited]

actions mask array for the pipeline

struct doca_flow_pipe_attrdoca_flow_pipe_cfg::attr [inherited]

attributes of pipe

doca_flow_match * doca_flow_pipe_cfg::match [inherited]

matcher for the pipeline

doca_flow_match * doca_flow_pipe_cfg::match_mask [inherited]

match mask for the pipeline

doca_flow_monitor * doca_flow_pipe_cfg::monitor [inherited]

monitor for the pipeline

* doca_flow_pipe_cfg::ordered_lists [inherited]

array of ordered list types

doca_flow_port * doca_flow_pipe_cfg::port [inherited]

port for the pipeline


Public Variables

void * dev
const char * devargs
uint16_t  port_id
uint16_t  priv_data_size
enumdoca_flow_port_type type


void * doca_flow_port_cfg::dev [inherited]

port's dev

const char * doca_flow_port_cfg::devargs [inherited]

specific per port type cfg

uint16_t doca_flow_port_cfg::port_id [inherited]

dpdk port id

uint16_t doca_flow_port_cfg::priv_data_size [inherited]

user private data size

enumdoca_flow_port_typedoca_flow_port_cfg::type [inherited]

mapping type of port


Public Variables

uint64_t  total_bytes
uint64_t  total_pkts


uint64_t doca_flow_query::total_bytes [inherited]

total bytes hit this flow

uint64_t doca_flow_query::total_pkts [inherited]

total packets hit this flow


Public Variables

enumdoca_flow_meter_algorithm_type alg
uint64_t  cbs
uint64_t  cir
enumdoca_flow_meter_color_mode color_mode
uint64_t  ebs
uint64_t  eir
enumdoca_flow_meter_limit_type limit_type
uint64_t  pbs
uint64_t  pir


enumdoca_flow_meter_algorithm_typedoca_flow_resource_meter_cfg::alg [inherited]

Meter algorithm by RFCs

uint64_t doca_flow_resource_meter_cfg::cbs [inherited]

Committed Burst Size (bytes or packets).

uint64_t doca_flow_resource_meter_cfg::cir [inherited]

Committed Information Rate (bytes or packets per second).

enumdoca_flow_meter_color_modedoca_flow_resource_meter_cfg::color_mode [inherited]

Meter color mode: blind / aware

uint64_t doca_flow_resource_meter_cfg::ebs [inherited]

Excess Burst Size (EBS) (bytes or packets).

uint64_t doca_flow_resource_meter_cfg::eir [inherited]

Excess Information Rate (bytes or packets per seconds).

enumdoca_flow_meter_limit_typedoca_flow_resource_meter_cfg::limit_type [inherited]

Meter rate limit type: bytes / packets per second

uint64_t doca_flow_resource_meter_cfg::pbs [inherited]

Peak Burst Size (bytes or packets).

uint64_t doca_flow_resource_meter_cfg::pir [inherited]

Peak Information Rate (bytes or packets per seconds).


Public Variables

struct doca_flow_fwd fwd
int  nr_targets


struct doca_flow_fwddoca_flow_resource_mirror_cfg::fwd [inherited]

Original packet dst, can be filled optional.

int doca_flow_resource_mirror_cfg::nr_targets [inherited]

Mirror target number.

doca_flow_mirror_target * doca_flow_resource_mirror_cfg::target [inherited]

Mirror target pointer.


Public Variables

uint32_t  inner_flags
int  nr_queues
uint32_t  outer_flags
uint16_t * queues_array
enumdoca_flow_rss_hash_function rss_hash_func


uint32_t doca_flow_resource_rss_cfg::inner_flags [inherited]

rss offload inner types

int doca_flow_resource_rss_cfg::nr_queues [inherited]

number of queues

uint32_t doca_flow_resource_rss_cfg::outer_flags [inherited]

rss offload outer types

uint16_t * doca_flow_resource_rss_cfg::queues_array [inherited]

rss queues array

enumdoca_flow_rss_hash_functiondoca_flow_resource_rss_cfg::rss_hash_func [inherited]

hash function


Public Variables

uint32_t  nb_counters
uint32_t  nb_meters


uint32_t doca_flow_resources::nb_counters [inherited]

Number of counters to configure

uint32_t doca_flow_resources::nb_meters [inherited]

Number of traffic meters to configure

[flow net define]

Public Variables

doca_be32_t esp_sn
doca_be32_t esp_spi
struct doca_flow_header_geneve geneve
union doca_flow_geneve_option geneve_options[DOCA_FLOW_GENEVE_OPT_LEN_MAX]
doca_be32_t gre_key
doca_be32_t gtp_teid
bool  key_present
struct doca_flow_header_mpls mpls[DOCA_FLOW_MPLS_LABELS_MAX]
doca_be16_t protocol
enumdoca_flow_tun_type type
doca_be32_t vxlan_tun_id


doca_be32_tdoca_flow_tun::esp_sn [inherited]

ipsec sequence number

doca_be32_tdoca_flow_tun::esp_spi [inherited]

ipsec session parameter index

struct doca_flow_header_genevedoca_flow_tun::geneve [inherited]

geneve header

union doca_flow_geneve_optiondoca_flow_tun::geneve_options[DOCA_FLOW_GENEVE_OPT_LEN_MAX] [inherited]

geneve options as array of doca_be32_t

doca_be32_tdoca_flow_tun::gre_key [inherited]

gre key

doca_be32_tdoca_flow_tun::gtp_teid [inherited]

gtp teid

bool doca_flow_tun::key_present [inherited]

gre key is present

struct doca_flow_header_mplsdoca_flow_tun::mpls[DOCA_FLOW_MPLS_LABELS_MAX] [inherited]

mpls labels

doca_be16_tdoca_flow_tun::protocol [inherited]

next protocol

enumdoca_flow_tun_typedoca_flow_tun::type [inherited]

tunnel type

doca_be32_tdoca_flow_tun::vxlan_tun_id [inherited]

vxlan vni(24) + reserved (8).

[DOCA Types]

Public Variables

void * addr
uint64_t  len


void * doca_gather_list::addr [inherited]

Address of buffer in the list

uint64_t doca_gather_list::len [inherited]

Length of current buffer in bytes

doca_gather_list * doca_gather_list::next [inherited]

Pointer to next buffer in the list


Public Variables

uint32_t  sn_inc_enable


uint32_t doca_ipsec_sa_attr_egress::sn_inc_enable [inherited]

when set sn increment offloaded


Public Variables

uint32_t  antireplay_enable
enumdoca_ipsec_replay_win_size replay_win_sz


uint32_t doca_ipsec_sa_attr_ingress::antireplay_enable [inherited]

when enabled activates anti-replay protection window.

enumdoca_ipsec_replay_win_sizedoca_ipsec_sa_attr_ingress::replay_win_sz [inherited]

Anti replay window size to enable sequence replay attack handling.


Public Variables

uint32_t  esn_enable
uint32_t  esn_overlap
uint64_t  sn_initial


uint32_t doca_ipsec_sa_attr_sn::esn_enable [inherited]

when set esn is enabled

uint32_t doca_ipsec_sa_attr_sn::esn_overlap [inherited]

new/old indication of the High sequence number MSB - when set is old

uint64_t doca_ipsec_sa_attr_sn::sn_initial [inherited]

set the initial sequence number - in antireplay set the lower bound of the window


Public Variables

uint32_t  esn_overlap_event_arm
uint32_t  hard_lifetime_arm
uint32_t  remove_flow_enable
uint32_t  remove_flow_packet_count
uint32_t  remove_flow_soft_lifetime
uint32_t  soft_lifetime_arm


uint32_t doca_ipsec_sa_event_attrs::esn_overlap_event_arm [inherited]

1 when armed/to arm 0 otherwise.

uint32_t doca_ipsec_sa_event_attrs::hard_lifetime_arm [inherited]

1 when armed/to arm 0 otherwise.

uint32_t doca_ipsec_sa_event_attrs::remove_flow_enable [inherited]

1 when remove flow enabled/to enable; 0 otherwise.

uint32_t doca_ipsec_sa_event_attrs::remove_flow_packet_count [inherited]

Packet counter, Decrements for every packet passing through the SA. Event are triggered occurs when the counter reaches soft- lifetime and hard-lifetime (0). When counter reaches hard-lifetime, all passing packets will return a relevant Syndrome.

uint32_t doca_ipsec_sa_event_attrs::remove_flow_soft_lifetime [inherited]

Soft Lifetime threshold value. When remove_flow_packet_count reaches this value a soft lifetime event is triggered (if armed). See remove_flow_packet_count field in this struct fro more details.

uint32_t doca_ipsec_sa_event_attrs::soft_lifetime_arm [inherited]

1 when armed/to arm 0 otherwise.

[Logging Management]

Should be used to register the log source. For example:


void foo { DOCA_LOG_INFO("Message"); }


The macro also takes care of the dtor() logic on teardown.

Public Variables

uint64_t  algo_desc_addr
uint32_t  algo_desc_size
uint32_t  algo_id
uint32_t  algo_major_version
uint32_t  algo_minor_version


uint64_t doca_pcc_dev_algo_meta_data::algo_desc_addr [inherited]

pointer to description string

uint32_t doca_pcc_dev_algo_meta_data::algo_desc_size [inherited]

size of description string (null terminated)

uint32_t doca_pcc_dev_algo_meta_data::algo_id [inherited]

algo unique identifier

uint32_t doca_pcc_dev_algo_meta_data::algo_major_version [inherited]

algo major version

uint32_t doca_pcc_dev_algo_meta_data::algo_minor_version [inherited]

algo minor version


gid struct

Public Variables

uint8_t  raw[DOCA_GID_BYTE_LENGTH]


uint8_t doca_rdma_gid::raw[DOCA_GID_BYTE_LENGTH] [inherited]

The raw value of the GID

[DOCA RMAX engine]

Public Variables

doca_rmax_cpu_mask_t cpu_bits[DOCA_RMAX_CPU_SETSIZE/DOCA_RMAX_NCPUBITS]


doca_rmax_cpu_mask_tdoca_rmax_cpu_affinity_mask::cpu_bits[DOCA_RMAX_CPU_SETSIZE/DOCA_RMAX_NCPUBITS] [inherited]

CPU is included in affinity mask if the corresponding bit is set

[DOCA RMAX engine]

Input stream starts to receive packets right after start and attaching any flow.

Public Variables

uint32_t  elements_count
uint32_t  memblk_ptr_arr_len
uint32_t  seqn_first
uint64_t  ts_first
uint64_t  ts_last


uint32_t doca_rmax_in_stream_completion::elements_count [inherited]

Number of packets received

* doca_rmax_in_stream_completion::memblk_ptr_arr [inherited]

Array of pointers to the beginning of the memory block as configured by input stream create step. The offset between packets inside memory block can be queried by doca_rmax_in_stream_get_memblk_stride_size

uint32_t doca_rmax_in_stream_completion::memblk_ptr_arr_len [inherited]

Number of memory blocks placed in memblk_ptr_arr. See doca_rmax_in_stream_get_memblks_count.

uint32_t doca_rmax_in_stream_completion::seqn_first [inherited]

Sequnce number of the first packet

uint64_t doca_rmax_in_stream_completion::ts_first [inherited]

Time of arrival of the first packet

uint64_t doca_rmax_in_stream_completion::ts_last [inherited]

Time of arrival of the last packet

[DOCA RMAX engine]

Public Variables

int  code
const char * message


int doca_rmax_stream_error::code [inherited]

Raw Rivermax error code

const char * doca_rmax_stream_error::message [inherited]

Human-readable error

© Copyright 2023, NVIDIA. Last updated on Feb 8, 2024.