1. Modules
Here is a list of all modules:
- DOCA AES-GCM Engine
- DOCA App Shield
- DOCA Arg Parser
- DOCA Core
- DOCA Comch
- DOCA Comm Channel
- DOCA Compatibility Management
- DOCA Compress Engine
- DOCA Environment Configurations
- DOCA Device Emulation
- DOCA DMA Engine
- DOCA DPA
- DOCA Erasure Coding Engine
- DOCA ETH
- DOCA Flow
- DOCA GPUNetIO Engine
- DOCA Logging Management
- DOCA PCC
- DOCA RDMA
- DOCA RMAX Engine
- DOCA SHA Engine
- DOCA Telemetry
- DOCA UROM (Unified Resource and Offload Manager)
- DOCA Version Management
DOCA App Shield library let you to monitor operation system that resides on the host. This is done with the DPU DMA capabilities. Please follow the programmer guide for system configurations.
Modules
Defines
- #define doca_apsh_attst_info_get ( attestation, attr )
- Get attribute value for a attestation.
- #define doca_apsh_envar_info_get ( envar, attr )
- Get attribute value for an environment variable.
- #define doca_apsh_handle_info_get ( handle, attr )
- Get attribute value for a handle.
- #define doca_apsh_injection_detect_info_get ( suspected_injection, attr )
- Get attribute value for a suspected_injection.
- #define doca_apsh_ldrmodule_info_get ( ldrmodule, attr )
- Get attribute value for a ldrmodule.
- #define doca_apsh_lib_info_get ( lib, attr )
- Get attribute value for a lib.
- #define doca_apsh_module_info_get ( module, attr )
- Get attribute value for a module.
- #define doca_apsh_netscan_info_get ( connection, attr )
- Get attribute value for a connection.
- #define doca_apsh_privilege_info_get ( privilege, attr )
- Get attribute value for a privilege.
- #define doca_apsh_process_info_get ( process, attr )
- Get attribute value for a process.
- #define doca_apsh_process_parameters_info_get ( process_parameters, attr )
- get attribute value for a process-parameter
- #define doca_apsh_sid_info_get ( sid, attr )
- Get attribute value for a SID.
- #define doca_apsh_sys_config ( system, attr, value )
- configure attribute value for a system, such as: hashtest limit, symbols map ...
- #define doca_apsh_thread_info_get ( thread, attr )
- Get attribute value for a thread.
- #define doca_apsh_vad_info_get ( vad, attr )
- Get attribute value for a vad.
- #define doca_apsh_yara_info_get ( yara, attr )
- Get attribute value for a yara.
Functions
- const DOCA_EXPERIMENTAL void* __doca_apsh_attst_info_get ( doca_apsh_attestation* attestation, doca_apsh_attestation_attr attr )
- Shadow function - get attribute value for a attestation.
- const DOCA_EXPERIMENTAL void* __doca_apsh_envar_info_get ( doca_apsh_envar* envar, doca_apsh_envar_attr attr )
- Shadow function - get attribute value for an environment variable.
- const DOCA_EXPERIMENTAL void* __doca_apsh_handle_info_get ( doca_apsh_handle* handle, doca_apsh_handle_attr attr )
- Shadow function - get attribute value for a handle.
- const DOCA_EXPERIMENTAL void* __doca_apsh_injection_detect_info_get ( doca_apsh_injection_detect* suspected_injection, doca_apsh_injection_detect_attr attr )
- Shadow function - get attribute value for a suspected_injection.
- const DOCA_EXPERIMENTAL void* __doca_apsh_ldrmodule_info_get ( doca_apsh_ldrmodule* ldrmodule, doca_apsh_ldrmodule_attr attr )
- Shadow function - get attribute value for a modules.
- const DOCA_EXPERIMENTAL void* __doca_apsh_lib_info_get ( doca_apsh_lib* lib, doca_apsh_lib_attr attr )
- Shadow function - get attribute value for a lib.
- const DOCA_EXPERIMENTAL void* __doca_apsh_module_info_get ( doca_apsh_module* module, doca_apsh_module_attr attr )
- Shadow function - get attribute value for a module.
- const DOCA_EXPERIMENTAL void* __doca_apsh_netscan_info_get ( doca_apsh_netscan* connection, doca_apsh_netscan_attr attr )
- Shadow function - get attribute value for a connection.
- const DOCA_EXPERIMENTAL void* __doca_apsh_privilege_info_get ( doca_apsh_privilege* privilege, doca_apsh_privilege_attr attr )
- Shadow function - get attribute value for a privilege.
- const DOCA_EXPERIMENTAL void* __doca_apsh_process_info_get ( doca_apsh_process* process, doca_apsh_process_attr attr )
- Shadow function - get attribute value for a process.
- const DOCA_EXPERIMENTAL void* __doca_apsh_process_parameters_info_get ( doca_apsh_process_parameters* process_parameters, doca_apsh_process_parameters_attr attr )
- Shadow function - get attribute value for a process-parameter.
- const DOCA_EXPERIMENTAL void* __doca_apsh_sid_info_get ( doca_apsh_sid* sid, doca_apsh_sid_attr attr )
- Shadow function - get attribute value for a SID.
- doca_error_t __doca_apsh_sys_config ( doca_apsh_system* system, doca_apsh_system_config_attr attr, void* value )
- Shadow function - configure attribute value for a system.
- const DOCA_EXPERIMENTAL void* __doca_apsh_thread_info_get ( doca_apsh_thread* thread, doca_apsh_thread_attr attr )
- Shadow function - get attribute value for a thread.
- const DOCA_EXPERIMENTAL void* __doca_apsh_vad_info_get ( doca_apsh_vad* vad, doca_apsh_vad_attr attr )
- Shadow function - get attribute value for a vad.
- const DOCA_EXPERIMENTAL void* __doca_apsh_yara_info_get ( doca_apsh_yara* yara, doca_apsh_yara_attr attr )
- Shadow function - get attribute value for a yara.
- DOCA_EXPERIMENTAL void doca_apsh_attestation_free ( doca_apsh_attestation** attestation )
- Destroys a attestation context.
- doca_error_t doca_apsh_attestation_get ( doca_apsh_process* process, const char* exec_hash_map_path, doca_apsh_attestation*** attestation, int* attestation_size )
- Get current process attestation.
- doca_error_t doca_apsh_attst_refresh ( doca_apsh_attestation*** attestation, int* attestation_size )
- refresh single attestation handler of a process with new snapshot
- DOCA_EXPERIMENTAL doca_apsh_ctx* doca_apsh_create ( void )
- Create a new apsh handler.
- DOCA_EXPERIMENTAL void doca_apsh_destroy ( doca_apsh_ctx* ctx )
- Free the APSH memory and close connections.
- doca_error_t doca_apsh_dma_dev_set ( doca_apsh_ctx* ctx, doca_dev* dma_dev )
- Set apsh dma device.
- DOCA_EXPERIMENTAL void doca_apsh_envars_free ( doca_apsh_envar** envars )
- Destroys a envars context.
- doca_error_t doca_apsh_envars_get ( doca_apsh_process* process, doca_apsh_envar*** envars, int* envars_size )
- Get array of current process environment variables.
- DOCA_EXPERIMENTAL void doca_apsh_handles_free ( doca_apsh_handle** handles )
- Destroys a handles context.
- doca_error_t doca_apsh_handles_get ( doca_apsh_process* process, doca_apsh_handle*** handles, int* handles_size )
- Get array of current process handles.
- DOCA_EXPERIMENTAL void doca_apsh_injection_detect_free ( doca_apsh_injection_detect** suspected_injections )
- Destroys an injection_detect context.
- doca_error_t doca_apsh_injection_detect_get ( doca_apsh_process* process, doca_apsh_injection_detect*** suspected_injections, int* suspected_injections_size )
- Get suspected code injections of current process.
- DOCA_EXPERIMENTAL void doca_apsh_ldrmodules_free ( doca_apsh_ldrmodule** ldrmodules )
- Destroys a ldrmodules context.
- doca_error_t doca_apsh_ldrmodules_get ( doca_apsh_process* process, doca_apsh_ldrmodule*** ldrmodules, int* ldrmodules_size )
- Get array of current process modules.
- DOCA_EXPERIMENTAL void doca_apsh_libs_free ( doca_apsh_lib** libs )
- Destroys a libs context.
- doca_error_t doca_apsh_libs_get ( doca_apsh_process* process, doca_apsh_lib*** libs, int* libs_size )
- Get array of current process loadable libraries.
- DOCA_EXPERIMENTAL void doca_apsh_module_free ( doca_apsh_module** modules )
- Destroys a modules array.
- doca_error_t doca_apsh_modules_get ( doca_apsh_system* system, doca_apsh_module*** modules, int* modules_size )
- Get array of current modules installed on the system.
- DOCA_EXPERIMENTAL void doca_apsh_netscan_free ( doca_apsh_netscan** connections )
- Destroys a netscan context.
- doca_error_t doca_apsh_netscan_get ( doca_apsh_system* system, doca_apsh_netscan*** connections, int* connections_size )
- Get array of current connections.
- DOCA_EXPERIMENTAL void doca_apsh_privileges_free ( doca_apsh_privilege** privileges )
- Destroys a privileges context.
- doca_error_t doca_apsh_privileges_get ( doca_apsh_process* process, doca_apsh_privilege*** privileges, int* privileges_size )
- Get array of current process privileges.
- DOCA_EXPERIMENTAL void doca_apsh_process_parameters_free ( doca_apsh_process_parameters* process_parameters )
- Destroys a process-parameters context.
- doca_error_t doca_apsh_process_parameters_get ( doca_apsh_process* process, doca_apsh_process_parameters** process_parameters )
- Get current process parameters.
- DOCA_EXPERIMENTAL void doca_apsh_processes_free ( doca_apsh_process** processes )
- Destroys a process context.
- doca_error_t doca_apsh_processes_get ( doca_apsh_system* system, doca_apsh_process*** processes, int* processes_size )
- Get array of current processes running on the system.
- DOCA_EXPERIMENTAL void doca_apsh_sids_free ( doca_apsh_sid** sids )
- Destroys a SIDs context.
- doca_error_t doca_apsh_sids_get ( doca_apsh_process* process, doca_apsh_sid*** sids, int* sids_size )
- Get array of current process SIDs.
- doca_error_t doca_apsh_start ( doca_apsh_ctx* ctx )
- Start apsh handler.
- doca_error_t doca_apsh_sys_dev_set ( doca_apsh_system* system, doca_dev_rep* dev )
- Set system device.
- doca_error_t doca_apsh_sys_kpgd_file_set ( doca_apsh_system* system, const char* system_kpgd_file_path )
- Set system kpgd file.
- doca_error_t doca_apsh_sys_mem_region_set ( doca_apsh_system* system, const char* system_mem_region_path )
- Set system allowed memory regions.
- doca_error_t doca_apsh_sys_os_symbol_map_set ( doca_apsh_system* system, const char* system_os_symbol_map_path )
- Set system os symbol map.
- doca_error_t doca_apsh_sys_os_type_set ( doca_apsh_system* system, doca_apsh_system_os os_type )
- Set system os type.
- doca_error_t doca_apsh_sys_set_scan_window_size ( doca_apsh_system* system, uint32_t scan_window_size )
- Set system yara scan window size.
- doca_error_t doca_apsh_sys_set_scan_window_step ( doca_apsh_system* system, uint32_t scan_window_step )
- Set system yara scan window step.
- DOCA_EXPERIMENTAL doca_apsh_system* doca_apsh_system_create ( doca_apsh_ctx* ctx )
- Create a new system handler.
- DOCA_EXPERIMENTAL void doca_apsh_system_destroy ( doca_apsh_system* system )
- Destroy system handler.
- doca_error_t doca_apsh_system_start ( doca_apsh_system* system )
- Start system handler.
- DOCA_EXPERIMENTAL void doca_apsh_threads_free ( doca_apsh_thread** threads )
- Destroys a threads context.
- doca_error_t doca_apsh_threads_get ( doca_apsh_process* process, doca_apsh_thread*** threads, int* threads_size )
- Get array of current process threads.
- DOCA_EXPERIMENTAL void doca_apsh_vads_free ( doca_apsh_vad** vads )
- Destroys a vads context.
- doca_error_t doca_apsh_vads_get ( doca_apsh_process* process, doca_apsh_vad*** vads, int* vads_size )
- Get array of current process vads - virtual address descriptor.
- DOCA_EXPERIMENTAL void doca_apsh_yara_free ( doca_apsh_yara** yara_matches )
- Destroys a yara context.
- doca_error_t doca_apsh_yara_get ( doca_apsh_process* process, doca_apsh_yara_rule ** yara_rules_arr, uint32_t yara_rules_arr_size, uint64_t scan_type, doca_apsh_yara*** yara_matches, int* yara_matches_size )
- Scan current process with yara rules. The scanning is done with a window size and step that are set by doca_apsh_sys_set_scan_window_size and doca_apsh_sys_set_scan_window_step.
Defines
- #define doca_apsh_attst_info_get ( attestation, attr )
Get the requested info from attestation handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_attst_info_get(attestation, attr))
Parameters
- attestation
- single attestation handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_envar_info_get ( envar, attr )
Get the requested info from envar handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_envar_info_get(envar, attr))
Parameters
- envar
- single envar handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_handle_info_get ( handle, attr )
Get the requested info from handle handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_handle_info_get(handle, attr))
Parameters
- handle
- single handle handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_injection_detect_info_get ( suspected_injection, attr )
Get the requested info from suspected_injection handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_injection_detect_info_get(suspected_injection, attr))
Parameters
- suspected_injection
- single injection_detect handler
- attr
- Attribute to get the info on the suspected injection
- #define doca_apsh_ldrmodule_info_get ( ldrmodule, attr )
Get the requested info from ldrmodule handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_ldrmodule_info_get(ldrmodule, attr))
Parameters
- ldrmodule
- single ldrmodule handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_lib_info_get ( lib, attr )
Get the requested info from lib handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_lib_info_get(lib, attr))
Parameters
- lib
- single lib handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_module_info_get ( module, attr )
Get the requested info from module handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_module_info_get(module, attr))
Parameters
- module
- single module handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_netscan_info_get ( connection, attr )
Get the requested info from connection handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_netscan_info_get(connection, attr))
Parameters
- connection
- single connection handler
- attr
- Attribute to get the info on the connection
- #define doca_apsh_privilege_info_get ( privilege, attr )
Get the requested info from privilege handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_privilege_info_get(privilege, attr))
Parameters
- privilege
- single privilege handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_process_info_get ( process, attr )
Get the requested info from process handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_process_info_get(process, attr))
Parameters
- process
- single process handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_process_parameters_info_get ( process_parameters, attr )
Get the requested info from process_parameters handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_process_parameters_info_get(process_parameters, attr))
Parameters
- process_parameters
- single process_parameters handler
- attr
- Attribute to get the info on the process_parameters
- #define doca_apsh_sid_info_get ( sid, attr )
Get the requested info from SID handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_sid_info_get(sid, attr))
Parameters
- sid
- single SID handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_sys_config ( system, attr, value )
-
Value
(__doca_apsh_sys_config(system, attr, (void *)((uintptr_t)value)))
Parameters
- system
- system handler
- attr
- Attribute to set in the system
- value
- the value to set
- #define doca_apsh_thread_info_get ( thread, attr )
Get the requested info from thread handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_thread_info_get(thread, attr))
Parameters
- thread
- single thread handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_vad_info_get ( vad, attr )
Get the requested info from vad handler. The info is right to the snapshot (at the get function moment) full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_vad_info_get(vad, attr))
Parameters
- vad
- single vad handler
- attr
- Attribute to get the info on the module
- #define doca_apsh_yara_info_get ( yara, attr )
Get the requested info from yara handler. The info is right to the snapshot (at the get function moment) Full list (type and descriptions) can be found in doca_apsh_attr.h
Value
((attr##_TYPE)(uintptr_t)__doca_apsh_yara_info_get(yara, attr))
Parameters
- yara
- single yara handler
- attr
- Attribute to get the info on the yara
Functions
- const DOCA_EXPERIMENTAL void* __doca_apsh_attst_info_get ( doca_apsh_attestation* attestation, doca_apsh_attestation_attr attr )
-
Shadow function - get attribute value for a attestation.
Parameters
- attestation
- single attestation handler
- attr
- Attribute to get the info on the attestation
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_attestation_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_envar_info_get ( doca_apsh_envar* envar, doca_apsh_envar_attr attr )
-
Shadow function - get attribute value for an environment variable.
Parameters
- envar
- single envar handler
- attr
- Attribute to get the info on the envar
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_envar_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_handle_info_get ( doca_apsh_handle* handle, doca_apsh_handle_attr attr )
-
Shadow function - get attribute value for a handle.
Parameters
- handle
- single handle handler
- attr
- Attribute to get the info on the handle
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_handle_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_injection_detect_info_get ( doca_apsh_injection_detect* suspected_injection, doca_apsh_injection_detect_attr attr )
-
Shadow function - get attribute value for a suspected_injection.
Parameters
- suspected_injection
- single injection_detect handler
- attr
- Attribute to get the info on the suspected injection
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_injection_detect_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_ldrmodule_info_get ( doca_apsh_ldrmodule* ldrmodule, doca_apsh_ldrmodule_attr attr )
-
Shadow function - get attribute value for a modules.
Parameters
- ldrmodule
- single ldrmodule handler
- attr
- Attribute to get the info on the module
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_ldrmodule_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_lib_info_get ( doca_apsh_lib* lib, doca_apsh_lib_attr attr )
-
Shadow function - get attribute value for a lib.
Parameters
- lib
- single lib handler
- attr
- Attribute to get the info on the lib
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_lib_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_module_info_get ( doca_apsh_module* module, doca_apsh_module_attr attr )
-
Shadow function - get attribute value for a module.
Parameters
- module
- single module handler
- attr
- Attribute to get the info on the module
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_mod_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_netscan_info_get ( doca_apsh_netscan* connection, doca_apsh_netscan_attr attr )
-
Shadow function - get attribute value for a connection.
Parameters
- connection
- single connection handler
- attr
- Attribute to get the info on the connection
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_netscan_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_privilege_info_get ( doca_apsh_privilege* privilege, doca_apsh_privilege_attr attr )
-
Shadow function - get attribute value for a privilege.
Parameters
- privilege
- single privilege handler
- attr
- Attribute to get the info on the privilege
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_privilege_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_process_info_get ( doca_apsh_process* process, doca_apsh_process_attr attr )
-
Shadow function - get attribute value for a process.
Parameters
- process
- single process handler
- attr
- Attribute to get the info on the process
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_process_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_process_parameters_info_get ( doca_apsh_process_parameters* process_parameters, doca_apsh_process_parameters_attr attr )
-
Shadow function - get attribute value for a process-parameter.
Parameters
- process_parameters
- single process_parameters handler
- attr
- Attribute to get the info on the process_parameters
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_process_parameters_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_sid_info_get ( doca_apsh_sid* sid, doca_apsh_sid_attr attr )
-
Shadow function - get attribute value for a SID.
Parameters
- sid
- single SID handler
- attr
- Attribute to get the info on the SID
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_sid_info_get
- doca_error_t __doca_apsh_sys_config ( doca_apsh_system* system, doca_apsh_system_config_attr attr, void* value )
-
Shadow function - configure attribute value for a system.
Parameters
- system
- system handler
- attr
- Attribute to set in the system
- value
- the value to set
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_SUPPORTED - if attr was OS type and an unsupported OS type had been received.
- DOCA_ERROR_NO_MEMORY - if memory allocation failed.
- DOCA_ERROR_BAD_STATE - if system is already started.
Description
Do not use this function, recommended to use doca_apsh_sys_config
- const DOCA_EXPERIMENTAL void* __doca_apsh_thread_info_get ( doca_apsh_thread* thread, doca_apsh_thread_attr attr )
-
Shadow function - get attribute value for a thread.
Parameters
- thread
- single thread handler
- attr
- Attribute to get the info on the thread
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_thread_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_vad_info_get ( doca_apsh_vad* vad, doca_apsh_vad_attr attr )
-
Shadow function - get attribute value for a vad.
Parameters
- vad
- single vad handler
- attr
- Attribute to get the info on the vad
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_vad_info_get
- const DOCA_EXPERIMENTAL void* __doca_apsh_yara_info_get ( doca_apsh_yara* yara, doca_apsh_yara_attr attr )
-
Shadow function - get attribute value for a yara.
Parameters
- yara
- single yara handler
- attr
- Attribute to get the info on the yara
Returns
return the info requested, need to cast
Description
Do not use this function, recommended to use doca_apsh_yara_info_get
- DOCA_EXPERIMENTAL void doca_apsh_attestation_free ( doca_apsh_attestation** attestation )
-
Destroys a attestation context.
Parameters
- attestation
- Attestation opaque pointer of the process to destroy
Description
- doca_error_t doca_apsh_attestation_get ( doca_apsh_process* process, const char* exec_hash_map_path, doca_apsh_attestation*** attestation, int* attestation_size )
-
Get current process attestation.
Parameters
- process
- Process handler
- exec_hash_map_path
- path to file containing the hash calculations of the executable and dlls/libs of the process note that changing the process code or any libs can effect this. The file can be created by running the doca_exec_hash_build_map tool on the system.
- attestation
- Attestation opaque pointers of the process
- attestation_size
- Output param, will contain size of attestation array on success.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if modules list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to modules array.
- DOCA_ERROR_NOT_FOUND - if process hasn't been found.
Description
This function is multithreaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return is snapshot, this is not dynamic, need to free it.
- doca_error_t doca_apsh_attst_refresh ( doca_apsh_attestation*** attestation, int* attestation_size )
-
refresh single attestation handler of a process with new snapshot
Parameters
- attestation
- single attestation handler to refresh
- attestation_size
- Output param, will contain size of attestation array on success.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if modules list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to modules array.
- DOCA_ERROR_NOT_FOUND - if process hasn't been found.
Description
This function is multithreaded compatible with different system context, Refresh the snapshot of the handler. Recommended to query all wanted information before refreshing.
- DOCA_EXPERIMENTAL doca_apsh_ctx* doca_apsh_create ( void )
-
Create a new apsh handler.
Returns
apsh context required for creating system handler, NULL on failure
Description
Allocate memory and init the opaque struct for apsh handler. Before using the system handler use doca_apsh_start
- DOCA_EXPERIMENTAL void doca_apsh_destroy ( doca_apsh_ctx* ctx )
-
Free the APSH memory and close connections.
Parameters
- ctx
- apsh context to destroy
Description
- doca_error_t doca_apsh_dma_dev_set ( doca_apsh_ctx* ctx, doca_dev* dma_dev )
-
Set apsh dma device.
Parameters
- ctx
- apsh handler
- dma_dev
- doca device with dma capabilities, please refer to doca_dev.h
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NO_MEMORY - if cannot alloc new buffer for dma_dev_name.
Description
This is a Mandatory setter
- DOCA_EXPERIMENTAL void doca_apsh_envars_free ( doca_apsh_envar** envars )
-
Destroys a envars context.
Parameters
- envars
- Array of envars opaque pointers of the process to destroy
Description
- doca_error_t doca_apsh_envars_get ( doca_apsh_process* process, doca_apsh_envar*** envars, int* envars_size )
-
Get array of current process environment variables.
Parameters
- process
- Process handler
- envars
- Array of environment variables opaque pointers of the process. in case process doesn't have any envars, will return NULL.
- envars_size
- Output param, will contain size of envars array on success.
Returns
DOCA_SUCCESS - in case of success (including the case envars_size is zero). doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if envars list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to envars array.
- DOCA_ERROR_NOT_SUPPORTED - in case of unsupported system os.
Description
This function is multi-threaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, the function allocates this array, use doca_apsh_envars_free to free it.
Note:currently supported only for windows systems.
- DOCA_EXPERIMENTAL void doca_apsh_handles_free ( doca_apsh_handle** handles )
-
Destroys a handles context.
Parameters
- handles
- Array of handles opaque pointers of the process to destroy
Description
- doca_error_t doca_apsh_handles_get ( doca_apsh_process* process, doca_apsh_handle*** handles, int* handles_size )
-
Get array of current process handles.
Parameters
- process
- Process handler
- handles
- Array of handles opaque pointers of the process. in case process doesn't have any handles, will return NULL.
- handles_size
- Output param, will contain size of handles array on success.
Returns
DOCA_SUCCESS - in case of success (including the case handles_size is zero). doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if handles list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to handles array.
- DOCA_ERROR_NOT_SUPPORTED - in case of unsupported system os.
Description
This function is multi-threaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
Note:currently supported only for windows systems.
- DOCA_EXPERIMENTAL void doca_apsh_injection_detect_free ( doca_apsh_injection_detect** suspected_injections )
-
Destroys an injection_detect context.
Parameters
- suspected_injections
- suspected_injections opaque pointer of the process to destroy
Description
- doca_error_t doca_apsh_injection_detect_get ( doca_apsh_process* process, doca_apsh_injection_detect*** suspected_injections, int* suspected_injections_size )
-
Get suspected code injections of current process.
Parameters
- process
- Process handler
- suspected_injections
- suspected injections opaque pointers of the process
- suspected_injections_size
- Output param, will contain size of suspected_injections array on success.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - if process structures haven't been found.
- DOCA_ERROR_INITIALIZATION - if injections list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to injections array.
- DOCA_ERROR_NOT_SUPPORTED - in case of unsupported system os.
Description
This function is multithreaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return is snapshot, this is not dynamic, need to free it.
Note:currently supported only for windows systems.
- DOCA_EXPERIMENTAL void doca_apsh_ldrmodules_free ( doca_apsh_ldrmodule** ldrmodules )
-
Destroys a ldrmodules context.
Parameters
- ldrmodules
- Array of ldrmodules opaque pointers of the process to destroy
Description
- doca_error_t doca_apsh_ldrmodules_get ( doca_apsh_process* process, doca_apsh_ldrmodule*** ldrmodules, int* ldrmodules_size )
-
Get array of current process modules.
Parameters
- process
- Process handler
- ldrmodules
- Array of ldrmodules opaque pointers of the process. in case process doesn't have any modules, will return NULL.
- ldrmodules_size
- Output param, will contain size of ldrmodules array on success.
Returns
DOCA_SUCCESS - in case of success (including the case ldrmodules_size is zero). doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if ldrmodules list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to ldrmodules array.
- DOCA_ERROR_NOT_SUPPORTED - in case of unsupported system os.
Description
This function is multi-threaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
Note:currently supported only for windows systems.
- DOCA_EXPERIMENTAL void doca_apsh_libs_free ( doca_apsh_lib** libs )
-
Destroys a libs context.
Parameters
- libs
- Array of libs opaque pointers of the process to destroy
Description
- doca_error_t doca_apsh_libs_get ( doca_apsh_process* process, doca_apsh_lib*** libs, int* libs_size )
-
Get array of current process loadable libraries.
Parameters
- process
- Process handler
- libs
- Array of libs opaque pointers of the process. in case process doesn't point to any libs, will return NULL.
- libs_size
- Output param, will contain size of libs array on success.
Returns
DOCA_SUCCESS - in case of success (including the case libs_size is zero). doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if libs list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to libs array.
Description
This function is multithreaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
- DOCA_EXPERIMENTAL void doca_apsh_module_free ( doca_apsh_module** modules )
-
Destroys a modules array.
Parameters
- modules
- Array of module opaque pointers of the systems to destroy
Description
- doca_error_t doca_apsh_modules_get ( doca_apsh_system* system, doca_apsh_module*** modules, int* modules_size )
-
Get array of current modules installed on the system.
Parameters
- system
- System handler
- modules
- Array of module opaque pointers of the systems
- modules_size
- Output param, will contain size of modules array on success.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if modules list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to modules array.
Description
This function is multithreaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
- DOCA_EXPERIMENTAL void doca_apsh_netscan_free ( doca_apsh_netscan** connections )
-
Destroys a netscan context.
Parameters
- connections
- Array of connections opaque pointers of the system to destroy
Description
- doca_error_t doca_apsh_netscan_get ( doca_apsh_system* system, doca_apsh_netscan*** connections, int* connections_size )
-
Get array of current connections.
Parameters
- system
- System handler
- connections
- Pointer to array of connections opaque pointers of the system
- connections_size
- Output param, will contain size of connections array on success
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if connections list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to connections array.
- DOCA_ERROR_NOT_SUPPORTED - if unsupported OS type has been received (or unsupported OS build).
list of supported builds: Windows 10 10240 x86 Windows 10 10586 x86 Windows 10 14393 x86 Windows 10 15063 x64 Windows 10 15063 x86 Windows 10 16299 x64 Windows 10 17134 x64 Windows 10 17134 x86 Windows 10 17763 x64 Windows 10 18362 x64 Windows 10 18363 x64 Windows 10 19041 x64 Windows 10 19041 x86
- DOCA_ERROR_BAD_STATE - if system isn't started yet.
Description
This function is multi-threaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
Note:currently supported only for systems with windows 10 build (such as: windows 10 and windows server 2019).
- DOCA_EXPERIMENTAL void doca_apsh_privileges_free ( doca_apsh_privilege** privileges )
-
Destroys a privileges context.
Parameters
- privileges
- Array of privileges opaque pointers of the process to destroy
Description
- doca_error_t doca_apsh_privileges_get ( doca_apsh_process* process, doca_apsh_privilege*** privileges, int* privileges_size )
-
Get array of current process privileges.
Parameters
- process
- Process handler
- privileges
- Array of privileges opaque pointers of the process. in case process doesn't have any privileges, will return NULL.
- privileges_size
- Output param, will contain size of privileges array on success.
Returns
DOCA_SUCCESS - in case of success (including the case privileges_size is zero). doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if privileges list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to privileges array.
- DOCA_ERROR_NOT_SUPPORTED - in case of unsupported system os.
Description
This function is multi-threaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
Note:currently supported only for windows systems.
- DOCA_EXPERIMENTAL void doca_apsh_process_parameters_free ( doca_apsh_process_parameters* process_parameters )
-
Destroys a process-parameters context.
Parameters
- process_parameters
- process-parameters opaque pointer of the process
Description
- doca_error_t doca_apsh_process_parameters_get ( doca_apsh_process* process, doca_apsh_process_parameters** process_parameters )
-
Get current process parameters.
Parameters
- process
- Process handler
- process_parameters
- Pointer of process-parameters opaque pointer of the process. In case process-parameters data are paged out, will return NULL.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if process-parameters object initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot allocate memory to process-parameters object.
- DOCA_ERROR_NOT_SUPPORTED - in case of unsupported system os.
- DOCA_ERROR_BAD_STATE - in case the relevant memory is not present in the system memory.
Description
This function is multi-threaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return object is a snapshot, not a dynamic object, need to free it.
Note:currently supported only for windows systems.
- DOCA_EXPERIMENTAL void doca_apsh_processes_free ( doca_apsh_process** processes )
-
Destroys a process context.
Parameters
- processes
- Array of process opaque pointers of the systems to destroy
Description
- doca_error_t doca_apsh_processes_get ( doca_apsh_system* system, doca_apsh_process*** processes, int* processes_size )
-
Get array of current processes running on the system.
Parameters
- system
- System handler
- processes
- Array of process opaque pointers of the systems
- processes_size
- Output param, will contain size of processes array on success.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if processes list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to processes array.
Description
This function is multithreaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
- DOCA_EXPERIMENTAL void doca_apsh_sids_free ( doca_apsh_sid** sids )
-
Destroys a SIDs context.
Parameters
- sids
- Array of SIDs opaque pointers of the process to destroy
Description
- doca_error_t doca_apsh_sids_get ( doca_apsh_process* process, doca_apsh_sid*** sids, int* sids_size )
-
Get array of current process SIDs.
Parameters
- process
- Process handler
- sids
- Array of SIDs opaque pointers of the process. in case process doesn't have any SIDs, will return NULL.
- sids_size
- Output param, will contain size of SIDs array on success.
Returns
DOCA_SUCCESS - in case of success (including the case handles_size is zero). doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if SIDs list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to SIDs array.
- DOCA_ERROR_NOT_SUPPORTED - in case of unsupported system os.
Description
This function is multi-threaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
Note:currently supported only for windows systems.
- doca_error_t doca_apsh_start ( doca_apsh_ctx* ctx )
-
Start apsh handler.
Parameters
- ctx
- App Shield handler
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Start apsh handler and init connection to devices. Need to set apsh params with setter functions before starting the system. Mandatory setters: doca_apsh_dma_dev_set. Other setters can be query automatically but will take time.
- doca_error_t doca_apsh_sys_dev_set ( doca_apsh_system* system, doca_dev_rep* dev )
-
Set system device.
Parameters
- system
- system handler
- dev
- the device that is connected to the system to be queried. for example a vf that is connected to a vm or pf that is connected to the bare-metal. doca representor device from dma device configured in doca_apsh_dma_dev_set. to query the right device please refer to doca_dev.h for full options.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_BAD_STATE - if system was already started.
Description
This is a Mandatory setter
- doca_error_t doca_apsh_sys_kpgd_file_set ( doca_apsh_system* system, const char* system_kpgd_file_path )
-
Set system kpgd file.
Parameters
- system
- system handler
- system_kpgd_file_path
- the path to kpgd file
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_SUPPORTED - if unsupported OS type had been received.
- DOCA_ERROR_BAD_STATE - if system was already started.
Description
This is not a must setter
- doca_error_t doca_apsh_sys_mem_region_set ( doca_apsh_system* system, const char* system_mem_region_path )
-
Set system allowed memory regions.
Parameters
- system
- system handler
- system_mem_region_path
- path to json file containing the memory regions of the devices The memory regions are unique per system, would not change on reboot or between different devices of the same system. note that adding/removing device from the host can change the regions. The json can be created by running the doca_system_mem_region tool on the system.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NO_MEMORY - if cannot alloc new buffer for system_os_symbol_map_path.
- DOCA_ERROR_BAD_STATE - if system was already started.
Description
This is a Mandatory setter
- doca_error_t doca_apsh_sys_os_symbol_map_set ( doca_apsh_system* system, const char* system_os_symbol_map_path )
-
Set system os symbol map.
Parameters
- system
- system handler
- system_os_symbol_map_path
- the os memory map data, unique per os build please note that changing linux kernel (adding/removing modules) will change the map should be created by running the doca_system_os_symbol_map tool on the system os
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NO_MEMORY - if cannot alloc new buffer for system_os_symbol_map_path.
- DOCA_ERROR_BAD_STATE - if system was already started.
Description
This is a Mandatory setter
- doca_error_t doca_apsh_sys_os_type_set ( doca_apsh_system* system, doca_apsh_system_os os_type )
-
Set system os type.
Parameters
- system
- system handler
- os_type
- system os type - windows/linux
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_SUPPORTED - if unsupported OS type had been received.
- DOCA_ERROR_BAD_STATE - if system was already started.
Description
This is a must setter
- doca_error_t doca_apsh_sys_set_scan_window_size ( doca_apsh_system* system, uint32_t scan_window_size )
-
Set system yara scan window size.
Parameters
- system
- system handler
- scan_window_size
- yara scan window size (in bytes) a condition on scan window size is: (window_scan_size % PAGE_SIZE == 0) or (PAGE_SIZE % window_scan_size == 0)
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
This is not a must setter. Default size is 4KB.
- doca_error_t doca_apsh_sys_set_scan_window_step ( doca_apsh_system* system, uint32_t scan_window_step )
-
Set system yara scan window step.
Parameters
- system
- system handler
- scan_window_step
- yara scan window step (in bytes) a condition on scan window step is: window_scan_size % scan_window_step == 0
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
This is not a must setter. Default size is 4KB. Since this setter is dependent on scan_window_size, make sure to call it after "doca_apsh_sys_set_scan_window_size".
- DOCA_EXPERIMENTAL doca_apsh_system* doca_apsh_system_create ( doca_apsh_ctx* ctx )
-
Create a new system handler.
Parameters
- ctx
- apsh handler
Returns
returns system pointer, NULL on failure
Description
Allocate memory and init the opaque struct for system handler. Before using the system handler use doca_apsh_system_start
- DOCA_EXPERIMENTAL void doca_apsh_system_destroy ( doca_apsh_system* system )
-
Destroy system handler.
Parameters
- system
- system context to destroy
Description
This will not destroy process/module/libs ...
- doca_error_t doca_apsh_system_start ( doca_apsh_system* system )
-
Start system handler.
Parameters
- system
- system handler
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if app-shield system initialization has failed.
Description
Start system handler and init connection to the system. Need to set system params with setter functions before starting the system. Mandatory setters: os_symbol_map, mem_region, dev. Other setters can be query automatically but will take time.
- DOCA_EXPERIMENTAL void doca_apsh_threads_free ( doca_apsh_thread** threads )
-
Destroys a threads context.
Parameters
- threads
- Array of threads opaque pointers of the process to destroy
Description
- doca_error_t doca_apsh_threads_get ( doca_apsh_process* process, doca_apsh_thread*** threads, int* threads_size )
-
Get array of current process threads.
Parameters
- process
- Process handler
- threads
- Array of threads opaque pointers of the process. in case process doesn't have any threads, will return NULL.
- threads_size
- Output param, will contain size of threads array on success.
Returns
DOCA_SUCCESS - in case of success (including the case threads_size is zero). doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if threads list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to threads array.
Description
This function is multithreaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
- DOCA_EXPERIMENTAL void doca_apsh_vads_free ( doca_apsh_vad** vads )
-
Destroys a vads context.
Parameters
- vads
- Array of vads opaque pointers of the process to destroy
Description
- doca_error_t doca_apsh_vads_get ( doca_apsh_process* process, doca_apsh_vad*** vads, int* vads_size )
-
Get array of current process vads - virtual address descriptor.
Parameters
- process
- Process handler
- vads
- Array of vads opaque pointers of the process. in case process doesn't point to any vads, will return NULL.
- vads_size
- Output param, will contain size of vads array on success.
Returns
DOCA_SUCCESS - in case of success (including the case vads_size is zero). doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if modules list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to modules array.
- DOCA_ERROR_NOT_FOUND - if process hasn't been found.
Description
This function is multithreaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
- DOCA_EXPERIMENTAL void doca_apsh_yara_free ( doca_apsh_yara** yara_matches )
-
Destroys a yara context.
Parameters
- yara_matches
- Array of yara matches opaque pointers to destroy
Description
- doca_error_t doca_apsh_yara_get ( doca_apsh_process* process, doca_apsh_yara_rule ** yara_rules_arr, uint32_t yara_rules_arr_size, uint64_t scan_type, doca_apsh_yara*** yara_matches, int* yara_matches_size )
-
Scan current process with yara rules. The scanning is done with a window size and step that are set by doca_apsh_sys_set_scan_window_size and doca_apsh_sys_set_scan_window_step.
Parameters
- process
- Process handler
- yara_rules_arr
- Array of type doca_apsh_yara_rule containing the rules to check against the process's memory
- yara_rules_arr_size
- Length of yara_rules_arr
- scan_type
- YARA scan type bitmask - to scan the whole vad tree or just heaps This will affect performance, please see enum doca_apsh_yara_scan_type
- yara_matches
- Point to array of yara matches opaque pointers. In case no yara matches were found, will return NULL.
- yara_matches_size
- Output param, will contain size of YARA array on success.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_INITIALIZATION - if yara matches list initialization failed.
- DOCA_ERROR_NO_MEMORY - if cannot alloc memory to yara matches array.
- DOCA_ERROR_NOT_FOUND - if process hasn't been found.
- DOCA_ERROR_NOT_SUPPORTED - in case of unsupported system os or DPU.
Description
This function is multithreaded compatible with different system context, meaning do not call this function simultaneously with the same system context. The return array is snapshot, this is not dynamic array, need to free it.
Note:1. Currently supported only for windows systems 2. Currently supported only on DPU with Ubuntu 22.04.
DOCA App Shield Attributes
1.2.1. DOCA App Shield Attributes
[ DOCA App Shield ]
DOCA App Shield attributes to query with get functions, see doca_apsh.h
Typedefs
- typedef char * DOCA_APSH_ATTESTATION_COMM_TYPE
- attestation comm type
- typedef uint64_t DOCA_APSH_ATTESTATION_END_ADDRESS_TYPE
- attestation end address type
- typedef bool DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT_TYPE
- attestation hash data is present type
- typedef int DOCA_APSH_ATTESTATION_MATCHING_HASHES_TYPE
- attestation matching hashes type
- typedef int DOCA_APSH_ATTESTATION_PAGES_NUMBER_TYPE
- attestation pages number type
- typedef int DOCA_APSH_ATTESTATION_PAGES_PRESENT_TYPE
- attestation pages present type
- typedef char * DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA_TYPE
- attestation path of memory area type
- typedef uint32_t DOCA_APSH_ATTESTATION_PID_TYPE
- attestation pid type
- typedef char * DOCA_APSH_ATTESTATION_PROTECTION_TYPE
- attestation protection type
- typedef uint64_t DOCA_APSH_ATTESTATION_START_ADDRESS_TYPE
- attestation start address type
- typedef doca_dev * DOCA_APSH_DMA_DEV_TYPE
- dma dev name
- typedef uint32_t DOCA_APSH_ENVARS_PID_TYPE
- envars pid type
- typedef char * DOCA_APSH_ENVARS_VALUE_TYPE
- envars value type
- typedef char * DOCA_APSH_ENVARS_VARIABLE_TYPE
- envars variable type
- typedef uint64_t DOCA_APSH_ENVARS_WINDOWS_BLOCK_TYPE
- envars windows block address type
- typedef uint64_t DOCA_APSH_HANDLE_ACCESS_TYPE
- handle access type
- typedef char * DOCA_APSH_HANDLE_NAME_TYPE
- handle name type
- typedef uint32_t DOCA_APSH_HANDLE_PID_TYPE
- handle pid type
- typedef uint64_t DOCA_APSH_HANDLE_TABLE_ENTRY_TYPE
- handle table entry type
- typedef char * DOCA_APSH_HANDLE_TYPE_TYPE
- handle type type
- typedef uint64_t DOCA_APSH_HANDLE_VALUE_TYPE
- handle value type
- typedef int DOCA_APSH_HASHTEST_LIMIT_TYPE
- limit of vm areas to attest
- typedef uint32_t DOCA_APSH_INJECTION_DETECT_PID_TYPE
- injection detect pid type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END_TYPE
- injection detect suspected area end type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START_TYPE
- injection detect suspected area start type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_END_TYPE
- injection detect VAD end address type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH_TYPE
- injection detect VAD file path type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION_TYPE
- injection detect VAD protection type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_START_TYPE
- injection detect VAD start address type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_TAG_TYPE
- injection detect VAD pool tag type
- typedef char * DOCA_APSH_KPGD_FILE_TYPE
- kpgd file path
- typedef uint64_t DOCA_APSH_LDRMODULE_BASE_ADDRESS_TYPE
- ldrmodule base address type
- typedef char * DOCA_APSH_LDRMODULE_LIBRARY_PATH_TYPE
- ldrmodule library path type
- typedef uint32_t DOCA_APSH_LDRMODULE_PID_TYPE
- ldrmodule pid type
- typedef char * DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME_TYPE
- ldrmodule windows dll name type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_ININIT_TYPE
- ldrmodule ininit type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INLOAD_TYPE
- ldrmodule inload type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INMEM_TYPE
- ldrmodule inmem type
- typedef uint32_t DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE_TYPE
- ldrmodule size of image type
- typedef int DOCA_APSH_LIBS_LIMIT_TYPE
- limit of libs number
- typedef char * DOCA_APSH_LIB_LIBRARY_PATH_TYPE
- lib loaded library path type
- typedef uint64_t DOCA_APSH_LIB_LINUX_LOAD_ADRESS_TYPE
- lib load address for Linux
- typedef uint64_t DOCA_APSH_LIB_LOAD_ADRESS_TYPE
- lib load address for both Windows and Linux
- typedef uint32_t DOCA_APSH_LIB_PID_TYPE
- lib pid type
- typedef char * DOCA_APSH_LIB_WINDOWS_DLL_NAME_TYPE
- lib dll name type
- typedef uint32_t DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE_TYPE
- lib size of image type
- typedef char * DOCA_APSH_MEM_REGION_TYPE
- memory region path
- typedef int DOCA_APSH_MODULES_LIMIT_TYPE
- limit of modules number
- typedef char * DOCA_APSH_MODULES_NAME_TYPE
- module name type
- typedef uint64_t DOCA_APSH_MODULES_OFFSET_TYPE
- module offset type
- typedef uint32_t DOCA_APSH_MODULES_SIZE_TYPE
- module size type
- typedef char * DOCA_APSH_NETSCAN_COMM_TYPE
- netscan process name
- typedef char * DOCA_APSH_NETSCAN_LOCAL_ADDR_TYPE
- netscan connection local address
- typedef uint16_t DOCA_APSH_NETSCAN_LOCAL_PORT_TYPE
- netscan connection local port
- typedef uint32_t DOCA_APSH_NETSCAN_PID_TYPE
- netscan process id
- typedef char * DOCA_APSH_NETSCAN_PROTOCOL_TYPE
- netscan connection protocol
- typedef char * DOCA_APSH_NETSCAN_REMOTE_ADDR_TYPE
- netscan connection remote address
- typedef uint16_t DOCA_APSH_NETSCAN_REMOTE_PORT_TYPE
- netscan connection remote port
- typedef char * DOCA_APSH_NETSCAN_STATE_TYPE
- netscan connection state
- typedef char * DOCA_APSH_NETSCAN_TIME_TYPE
- netscan connection creation time
- typedef char * DOCA_APSH_OS_SYMBOL_MAP_TYPE
- os symbol map path
- typedef enumdoca_apsh_system_os DOCA_APSH_OS_TYPE_TYPE
- os type
- typedef bool DOCA_APSH_PRIVILEGES_IS_ON_TYPE
- privilege is on type
- typedef char * DOCA_APSH_PRIVILEGES_NAME_TYPE
- privilege name type
- typedef uint32_t DOCA_APSH_PRIVILEGES_PID_TYPE
- privilege process pid
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT_TYPE
- privilege windows enabled by default type
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED_TYPE
- privilege windows enabled type
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT_TYPE
- privilege windows present type
- typedef char * DOCA_APSH_PROCESS_COMM_TYPE
- process comm type
- typedef uint64_t DOCA_APSH_PROCESS_CPU_TIME_TYPE
- process cpu time type
- typedef int DOCA_APSH_PROCESS_LIMIT_TYPE
- limit of processes number
- typedef uint32_t DOCA_APSH_PROCESS_LINUX_GID_TYPE
- process gid type
- typedef uint64_t DOCA_APSH_PROCESS_LINUX_STATE_TYPE
- process state type
- typedef uint32_t DOCA_APSH_PROCESS_LINUX_UID_TYPE
- process uid type
- typedef char * DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE_TYPE
- process-parameters command line
- typedef uint64_t DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR_TYPE
- process-parameters image base address
- typedef char * DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH_TYPE
- process-parameters image full path
- typedef uint32_t DOCA_APSH_PROCESS_PARAMETERS_PID_TYPE
- process-parameters pid
- typedef uint32_t DOCA_APSH_PROCESS_PID_TYPE
- process pid type
- typedef uint32_t DOCA_APSH_PROCESS_PPID_TYPE
- process pid type
- typedef uint32_t DOCA_APSH_PROCESS_SID_ATTRIBUTES_TYPE
- SID attributes flag.
- typedef uint32_t DOCA_APSH_PROCESS_SID_PID_TYPE
- SID process id.
- typedef char * DOCA_APSH_PROCESS_SID_STRING_TYPE
- SID strings.
- typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME_TYPE
- process exit time type
- typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_OFFSET_TYPE
- process offset type
- typedef uint32_t DOCA_APSH_PROCESS_WINDOWS_THREADS_TYPE
- process threads type
- typedef uint32_t DOCA_APSH_SCAN_WIN_SIZE_TYPE
- yara scan window size
- typedef uint32_t DOCA_APSH_SCAN_WIN_STEP_TYPE
- yara scan window step
- typedef int DOCA_APSH_STRING_LIMIT_TYPE
- length limit of apsh_read_str
- typedef int DOCA_APSH_THREADS_LIMIT_TYPE
- limit of threads number
- typedef char * DOCA_APSH_THREAD_LINUX_PROC_NAME_TYPE
- thread proc name type
- typedef char * DOCA_APSH_THREAD_LINUX_THREAD_NAME_TYPE
- thread thread name type
- typedef uint32_t DOCA_APSH_THREAD_PID_TYPE
- thread pid type
- typedef uint64_t DOCA_APSH_THREAD_STATE_TYPE
- thread state type
- typedef uint32_t DOCA_APSH_THREAD_TID_TYPE
- thread tid type
- typedef uint64_t DOCA_APSH_THREAD_WINDOWS_OFFSET_TYPE
- thread offset type
- typedef uint8_t DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT_TYPE
- thread suspend count type
- typedef uint8_t DOCA_APSH_THREAD_WINDOWS_WAIT_REASON_TYPE
- thread wait reason type
- typedef int DOCA_APSH_VADS_LIMIT_TYPE
- limit of vads number
- typedef doca_dev_rep * DOCA_APSH_VHCA_ID_TYPE
- vhca id
- typedef char * DOCA_APSH_VMA_FILE_PATH_TYPE
- vma file path type
- typedef uint64_t DOCA_APSH_VMA_OFFSET_TYPE
- vma offset type
- typedef uint32_t DOCA_APSH_VMA_PID_TYPE
- vma pid type
- typedef char * DOCA_APSH_VMA_PROCESS_NAME_TYPE
- vma file path type
- typedef char * DOCA_APSH_VMA_PROTECTION_TYPE
- vma protection type
- typedef uint64_t DOCA_APSH_VMA_VM_END_TYPE
- vma vm end type
- typedef uint64_t DOCA_APSH_VMA_VM_START_TYPE
- vma vm start type
- typedef uint32_t DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE_TYPE
- vma commit charge type
- typedef uint32_t DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY_TYPE
- vma private memory type
- typedef char * DOCA_APSH_VMA_WINDOWS_TAG_TYPE
- vma tag type
- typedef int DOCA_APSH_WINDOWS_ENVARS_LIMIT_TYPE
- length limit of envars for windows
- typedef char * DOCA_APSH_YARA_COMM_TYPE
- name of the process
- typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_ADDR_TYPE
- virtual address of the scan window of the match
- typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_LEN_TYPE
- length of the scan window of the match
- typedef uint32_t DOCA_APSH_YARA_PID_TYPE
- pid of the process
- typedef char * DOCA_APSH_YARA_RULE_TYPE
- rule name
Enumerations
- enum doca_apsh_attestation_attr
- doca app shield attestation attributes
- enum doca_apsh_envar_attr
- doca app shield envars attributes
- enum doca_apsh_handle_attr
- doca app shield handle attributes
- enum doca_apsh_injection_detect_attr
- doca app shield injection detect attributes
- enum doca_apsh_ldrmodule_attr
- doca app shield LDR-Modules attributes
- enum doca_apsh_lib_attr
- doca app shield lib attributes
- enum doca_apsh_module_attr
- doca app shield module attributes
- enum doca_apsh_netscan_attr
- doca app shield netsacn attributes
- enum doca_apsh_privilege_attr
- doca app shield privileges attributes windows privilege list can be found on: https://docs.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
- enum doca_apsh_process_attr
- doca app shield process attributes
- enum doca_apsh_process_parameters_attr
- doca app shield process-parameters attributes
- enum doca_apsh_sid_attr
- doca app shield SID (security identifiers) attributes
- enum doca_apsh_system_config_attr
- doca app shield configuration attributes
- enum doca_apsh_system_os
- system os types
- enum doca_apsh_thread_attr
- doca app shield thread attributes
- enum doca_apsh_vad_attr
- doca app shield virtual address descriptor attributes
- enum doca_apsh_yara_attr
- doca app shield yara attributes
- enum doca_apsh_yara_rule
- available doca app shield yara rules
- enum doca_apsh_yara_scan_type
- doca app shield yara scan type bitmask
Typedefs
- typedef char * DOCA_APSH_ATTESTATION_COMM_TYPE
attestation comm type
- typedef uint64_t DOCA_APSH_ATTESTATION_END_ADDRESS_TYPE
attestation end address type
- typedef bool DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT_TYPE
attestation hash data is present type
- typedef int DOCA_APSH_ATTESTATION_MATCHING_HASHES_TYPE
attestation matching hashes type
- typedef int DOCA_APSH_ATTESTATION_PAGES_NUMBER_TYPE
attestation pages number type
- typedef int DOCA_APSH_ATTESTATION_PAGES_PRESENT_TYPE
attestation pages present type
- typedef char * DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA_TYPE
attestation path of memory area type
- typedef uint32_t DOCA_APSH_ATTESTATION_PID_TYPE
attestation pid type
- typedef char * DOCA_APSH_ATTESTATION_PROTECTION_TYPE
attestation protection type
- typedef uint64_t DOCA_APSH_ATTESTATION_START_ADDRESS_TYPE
attestation start address type
- typedef doca_dev * DOCA_APSH_DMA_DEV_TYPE
dma dev name
- typedef uint32_t DOCA_APSH_ENVARS_PID_TYPE
envars pid type
- typedef char * DOCA_APSH_ENVARS_VALUE_TYPE
envars value type
- typedef char * DOCA_APSH_ENVARS_VARIABLE_TYPE
envars variable type
- typedef uint64_t DOCA_APSH_ENVARS_WINDOWS_BLOCK_TYPE
envars windows block address type
- typedef uint64_t DOCA_APSH_HANDLE_ACCESS_TYPE
handle access type
- typedef char * DOCA_APSH_HANDLE_NAME_TYPE
handle name type
- typedef uint32_t DOCA_APSH_HANDLE_PID_TYPE
handle pid type
- typedef uint64_t DOCA_APSH_HANDLE_TABLE_ENTRY_TYPE
handle table entry type
- typedef char * DOCA_APSH_HANDLE_TYPE_TYPE
handle type type
- typedef uint64_t DOCA_APSH_HANDLE_VALUE_TYPE
handle value type
- typedef int DOCA_APSH_HASHTEST_LIMIT_TYPE
limit of vm areas to attest
- typedef uint32_t DOCA_APSH_INJECTION_DETECT_PID_TYPE
injection detect pid type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END_TYPE
injection detect suspected area end type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START_TYPE
injection detect suspected area start type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_END_TYPE
injection detect VAD end address type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH_TYPE
injection detect VAD file path type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION_TYPE
injection detect VAD protection type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_START_TYPE
injection detect VAD start address type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_TAG_TYPE
injection detect VAD pool tag type
- typedef char * DOCA_APSH_KPGD_FILE_TYPE
kpgd file path
- typedef uint64_t DOCA_APSH_LDRMODULE_BASE_ADDRESS_TYPE
ldrmodule base address type
- typedef char * DOCA_APSH_LDRMODULE_LIBRARY_PATH_TYPE
ldrmodule library path type
- typedef uint32_t DOCA_APSH_LDRMODULE_PID_TYPE
ldrmodule pid type
- typedef char * DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME_TYPE
ldrmodule windows dll name type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_ININIT_TYPE
ldrmodule ininit type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INLOAD_TYPE
ldrmodule inload type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INMEM_TYPE
ldrmodule inmem type
- typedef uint32_t DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE_TYPE
ldrmodule size of image type
- typedef int DOCA_APSH_LIBS_LIMIT_TYPE
limit of libs number
- typedef char * DOCA_APSH_LIB_LIBRARY_PATH_TYPE
lib loaded library path type
- typedef uint64_t DOCA_APSH_LIB_LINUX_LOAD_ADRESS_TYPE
lib load address for Linux
- typedef uint64_t DOCA_APSH_LIB_LOAD_ADRESS_TYPE
lib load address for both Windows and Linux
- typedef uint32_t DOCA_APSH_LIB_PID_TYPE
lib pid type
- typedef char * DOCA_APSH_LIB_WINDOWS_DLL_NAME_TYPE
lib dll name type
- typedef uint32_t DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE_TYPE
lib size of image type
- typedef char * DOCA_APSH_MEM_REGION_TYPE
memory region path
- typedef int DOCA_APSH_MODULES_LIMIT_TYPE
limit of modules number
- typedef char * DOCA_APSH_MODULES_NAME_TYPE
module name type
- typedef uint64_t DOCA_APSH_MODULES_OFFSET_TYPE
module offset type
- typedef uint32_t DOCA_APSH_MODULES_SIZE_TYPE
module size type
- typedef char * DOCA_APSH_NETSCAN_COMM_TYPE
netscan process name
- typedef char * DOCA_APSH_NETSCAN_LOCAL_ADDR_TYPE
netscan connection local address
- typedef uint16_t DOCA_APSH_NETSCAN_LOCAL_PORT_TYPE
netscan connection local port
- typedef uint32_t DOCA_APSH_NETSCAN_PID_TYPE
netscan process id
- typedef char * DOCA_APSH_NETSCAN_PROTOCOL_TYPE
netscan connection protocol
- typedef char * DOCA_APSH_NETSCAN_REMOTE_ADDR_TYPE
netscan connection remote address
- typedef uint16_t DOCA_APSH_NETSCAN_REMOTE_PORT_TYPE
netscan connection remote port
- typedef char * DOCA_APSH_NETSCAN_STATE_TYPE
netscan connection state
- typedef char * DOCA_APSH_NETSCAN_TIME_TYPE
netscan connection creation time
- typedef char * DOCA_APSH_OS_SYMBOL_MAP_TYPE
os symbol map path
- typedef enumdoca_apsh_system_os DOCA_APSH_OS_TYPE_TYPE
os type
- typedef bool DOCA_APSH_PRIVILEGES_IS_ON_TYPE
privilege is on type
- typedef char * DOCA_APSH_PRIVILEGES_NAME_TYPE
privilege name type
- typedef uint32_t DOCA_APSH_PRIVILEGES_PID_TYPE
privilege process pid
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT_TYPE
privilege windows enabled by default type
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED_TYPE
privilege windows enabled type
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT_TYPE
privilege windows present type
- typedef char * DOCA_APSH_PROCESS_COMM_TYPE
process comm type
- typedef uint64_t DOCA_APSH_PROCESS_CPU_TIME_TYPE
process cpu time type
- typedef int DOCA_APSH_PROCESS_LIMIT_TYPE
limit of processes number
- typedef uint32_t DOCA_APSH_PROCESS_LINUX_GID_TYPE
process gid type
- typedef uint64_t DOCA_APSH_PROCESS_LINUX_STATE_TYPE
process state type
- typedef uint32_t DOCA_APSH_PROCESS_LINUX_UID_TYPE
process uid type
- typedef char * DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE_TYPE
process-parameters command line
- typedef uint64_t DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR_TYPE
process-parameters image base address
- typedef char * DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH_TYPE
process-parameters image full path
- typedef uint32_t DOCA_APSH_PROCESS_PARAMETERS_PID_TYPE
process-parameters pid
- typedef uint32_t DOCA_APSH_PROCESS_PID_TYPE
process pid type
- typedef uint32_t DOCA_APSH_PROCESS_PPID_TYPE
process pid type
- typedef uint32_t DOCA_APSH_PROCESS_SID_ATTRIBUTES_TYPE
SID attributes flag.
- typedef uint32_t DOCA_APSH_PROCESS_SID_PID_TYPE
SID process id.
- typedef char * DOCA_APSH_PROCESS_SID_STRING_TYPE
SID strings.
- typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME_TYPE
process exit time type
- typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_OFFSET_TYPE
process offset type
- typedef uint32_t DOCA_APSH_PROCESS_WINDOWS_THREADS_TYPE
process threads type
- typedef uint32_t DOCA_APSH_SCAN_WIN_SIZE_TYPE
yara scan window size
- typedef uint32_t DOCA_APSH_SCAN_WIN_STEP_TYPE
yara scan window step
- typedef int DOCA_APSH_STRING_LIMIT_TYPE
length limit of apsh_read_str
- typedef int DOCA_APSH_THREADS_LIMIT_TYPE
limit of threads number
- typedef char * DOCA_APSH_THREAD_LINUX_PROC_NAME_TYPE
thread proc name type
- typedef char * DOCA_APSH_THREAD_LINUX_THREAD_NAME_TYPE
thread thread name type
- typedef uint32_t DOCA_APSH_THREAD_PID_TYPE
thread pid type
- typedef uint64_t DOCA_APSH_THREAD_STATE_TYPE
thread state type
- typedef uint32_t DOCA_APSH_THREAD_TID_TYPE
thread tid type
- typedef uint64_t DOCA_APSH_THREAD_WINDOWS_OFFSET_TYPE
thread offset type
- typedef uint8_t DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT_TYPE
thread suspend count type
- typedef uint8_t DOCA_APSH_THREAD_WINDOWS_WAIT_REASON_TYPE
thread wait reason type
- typedef int DOCA_APSH_VADS_LIMIT_TYPE
limit of vads number
- typedef doca_dev_rep * DOCA_APSH_VHCA_ID_TYPE
vhca id
- typedef char * DOCA_APSH_VMA_FILE_PATH_TYPE
vma file path type
- typedef uint64_t DOCA_APSH_VMA_OFFSET_TYPE
vma offset type
- typedef uint32_t DOCA_APSH_VMA_PID_TYPE
vma pid type
- typedef char * DOCA_APSH_VMA_PROCESS_NAME_TYPE
vma file path type
- typedef char * DOCA_APSH_VMA_PROTECTION_TYPE
vma protection type
- typedef uint64_t DOCA_APSH_VMA_VM_END_TYPE
vma vm end type
- typedef uint64_t DOCA_APSH_VMA_VM_START_TYPE
vma vm start type
- typedef uint32_t DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE_TYPE
vma commit charge type
- typedef uint32_t DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY_TYPE
vma private memory type
- typedef char * DOCA_APSH_VMA_WINDOWS_TAG_TYPE
vma tag type
- typedef int DOCA_APSH_WINDOWS_ENVARS_LIMIT_TYPE
length limit of envars for windows
- typedef char * DOCA_APSH_YARA_COMM_TYPE
name of the process
- typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_ADDR_TYPE
virtual address of the scan window of the match
- typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_LEN_TYPE
length of the scan window of the match
- typedef uint32_t DOCA_APSH_YARA_PID_TYPE
pid of the process
- typedef char * DOCA_APSH_YARA_RULE_TYPE
rule name
Enumerations
- enum doca_apsh_attestation_attr
-
Values
- DOCA_APSH_ATTESTATION_PID = 0
- attestation process id
- DOCA_APSH_ATTESTATION_COMM = 1
- attestation process name
- DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA = 2
- attestation path of memory area
- DOCA_APSH_ATTESTATION_PROTECTION = 3
- attestation protection
- DOCA_APSH_ATTESTATION_START_ADDRESS = 4
- attestation start address
- DOCA_APSH_ATTESTATION_END_ADDRESS = 5
- attestation end address
- DOCA_APSH_ATTESTATION_PAGES_NUMBER = 6
- attestation process pages count in binary file
- DOCA_APSH_ATTESTATION_PAGES_PRESENT = 7
- attestation pages present in memory
- DOCA_APSH_ATTESTATION_MATCHING_HASHES = 8
- attestation pages hash match count from pages in memory
- DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT = 9
- attestation hash data is present
- enum doca_apsh_envar_attr
-
Values
- DOCA_APSH_ENVARS_PID = 0
- envars pid
- DOCA_APSH_ENVARS_VARIABLE = 2
- envars variable
- DOCA_APSH_ENVARS_VALUE = 3
- envars value
- DOCA_APSH_ENVARS_WINDOWS_BLOCK = 1000
- envars windows environment block address
- enum doca_apsh_handle_attr
-
Values
- DOCA_APSH_HANDLE_PID = 0
- handle process id
- DOCA_APSH_HANDLE_VALUE = 2
- handle value
- DOCA_APSH_HANDLE_TABLE_ENTRY = 3
- handle table entry
- DOCA_APSH_HANDLE_TYPE = 4
- handle type
- DOCA_APSH_HANDLE_ACCESS = 5
- handle access
- DOCA_APSH_HANDLE_NAME = 6
- handle name
- enum doca_apsh_injection_detect_attr
-
Values
- DOCA_APSH_INJECTION_DETECT_PID
- suspected injection process id
- DOCA_APSH_INJECTION_DETECT_VAD_START
- suspected injection VAD start address
- DOCA_APSH_INJECTION_DETECT_VAD_END
- suspected injection VAD end address
- DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION
- suspected injection VAD protection
- DOCA_APSH_INJECTION_DETECT_VAD_TAG
- suspected injection VAD pool tag
- DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH
- suspected injection VAD file path
- DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START
- suspected injection suspected area start
- DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END
- suspected injection suspected area end
- enum doca_apsh_ldrmodule_attr
-
Values
- DOCA_APSH_LDRMODULE_PID = 0
- ldrmodule process pid
- DOCA_APSH_LDRMODULE_BASE_ADDRESS = 2
- ldrmodule base address
- DOCA_APSH_LDRMODULE_LIBRARY_PATH = 3
- ldrmodule loaded library path
- DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME = 1000
- ldrmodule dll name
- DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE = 1001
- ldrmodule size of image
- DOCA_APSH_LDRMODULE_WINDOWS_INLOAD = 1002
- ldrmodule appear in inload list
- DOCA_APSH_LDRMODULE_WINDOWS_INMEM = 1003
- ldrmodule appear in inmem list
- DOCA_APSH_LDRMODULE_WINDOWS_ININIT = 1004
- ldrmodule appear in ininit list
- enum doca_apsh_lib_attr
-
Values
- DOCA_APSH_LIB_PID = 0
- lib pid
- DOCA_APSH_LIB_LIBRARY_PATH = 2
- lib loaded library path
- DOCA_APSH_LIB_LOAD_ADRESS = 3
- lib load address for both Windows and Linux
- DOCA_APSH_LIB_WINDOWS_DLL_NAME = 1000
- lib dll name
- DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE = 1001
- lib size of image
- DOCA_APSH_LIB_LINUX_LOAD_ADRESS = 2000
- lib load address for Linux. It's kept for backwards compatibility, use DOCA_APSH_LIB_LOAD_ADRESS instead-
- enum doca_apsh_module_attr
-
Values
- DOCA_APSH_MODULES_OFFSET = 0
- module offset
- DOCA_APSH_MODULES_NAME = 1
- module name
- DOCA_APSH_MODULES_SIZE = 2
- module size
- enum doca_apsh_netscan_attr
-
Values
- DOCA_APSH_NETSCAN_PID = 0
- netscan process id
- DOCA_APSH_NETSCAN_COMM = 1
- netscan process name
- DOCA_APSH_NETSCAN_PROTOCOL = 2
- netscan connection protcol
- DOCA_APSH_NETSCAN_LOCAL_ADDR = 3
- netscan connection local address
- DOCA_APSH_NETSCAN_REMOTE_ADDR = 4
- netscan connection remote address
- DOCA_APSH_NETSCAN_LOCAL_PORT = 5
- netscan connection local port
- DOCA_APSH_NETSCAN_REMOTE_PORT = 6
- netscan connection remote port
- DOCA_APSH_NETSCAN_STATE = 7
- netscan connection state
- DOCA_APSH_NETSCAN_TIME = 8
- netscan connection creation time
- enum doca_apsh_privilege_attr
-
Values
- DOCA_APSH_PRIVILEGES_PID = 0
- privilege process pid
- DOCA_APSH_PRIVILEGES_NAME = 2
- privilege name, for example: SeTcbPrivilege
- DOCA_APSH_PRIVILEGES_IS_ON = 3
- is the privilege turned on or off. For Windows this is the outcome of get(PRESENT) && (get(ENABLED) || get(DEFAULT))
- DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT = 1000
- privilege present flag
- DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED = 1001
- privilege enabled flag
- DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT = 1002
- privilege enabledbydefault flag
- enum doca_apsh_process_attr
-
Values
- DOCA_APSH_PROCESS_PID = 0
- process id
- DOCA_APSH_PROCESS_PPID = 1
- process parent id
- DOCA_APSH_PROCESS_COMM = 2
- process executable name
- DOCA_APSH_PROCESS_CPU_TIME = 3
- process cpu time [ps]
- DOCA_APSH_PROCESS_WINDOWS_OFFSET = 1000
- process offset
- DOCA_APSH_PROCESS_WINDOWS_THREADS = 1001
- process thread count
- DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME = 1002
- process exit time
- DOCA_APSH_PROCESS_LINUX_GID = 2000
- process group id
- DOCA_APSH_PROCESS_LINUX_UID = 2001
- process user id
- DOCA_APSH_PROCESS_LINUX_STATE = 2002
- process state
- enum doca_apsh_process_parameters_attr
-
Values
- DOCA_APSH_PROCESS_PARAMETERS_PID = 0
- process-parameters pid
- DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE = 1
- process-parameters command line
- DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR = 2
- process-parameters image base address
- DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH = 3
- process-parameters image full path
- enum doca_apsh_sid_attr
-
Values
- DOCA_APSH_PROCESS_SID_PID = 0
- SID process id
- DOCA_APSH_PROCESS_SID_STRING = 1
- SID string
- DOCA_APSH_PROCESS_SID_ATTRIBUTES = 2
- SID attributes flag
- enum doca_apsh_system_config_attr
-
Values
- DOCA_APSH_OS_SYMBOL_MAP = 0
- os symbol map path
- DOCA_APSH_MEM_REGION = 1
- memory region path
- DOCA_APSH_KPGD_FILE = 2
- kpgd file path
- DOCA_APSH_VHCA_ID = 3
- vhca id
- DOCA_APSH_OS_TYPE = 4
- os type
- DOCA_APSH_SCAN_WIN_SIZE = 5
- yara scan window size
- DOCA_APSH_SCAN_WIN_STEP = 6
- yara scan window step
- DOCA_APSH_HASHTEST_LIMIT = 7
- limit of vm areas to attest
- DOCA_APSH_MODULES_LIMIT = 8
- limit of modules number
- DOCA_APSH_PROCESS_LIMIT = 9
- limit of processes number
- DOCA_APSH_THREADS_LIMIT = 10
- limit of threads number
- DOCA_APSH_LDRMODULES_LIMIT = 11
- limit of ldrmodules number on windows
- DOCA_APSH_LIBS_LIMIT = 12
- limit of libs number
- DOCA_APSH_VADS_LIMIT = 13
- limit of vads number
- DOCA_APSH_WINDOWS_ENVARS_LIMIT = 14
- length limit of envars for windows
- DOCA_APSH_HANDLES_LIMIT = 15
- limit of handles number on windows
- DOCA_APSH_STRING_LIMIT = 16
- length limit of apsh_read_str
- enum doca_apsh_system_os
-
Values
- DOCA_APSH_SYSTEM_LINUX = 0
- linux
- DOCA_APSH_SYSTEM_WINDOWS = 1
- windows
- enum doca_apsh_thread_attr
-
Values
- DOCA_APSH_THREAD_PID = 0
- thread process id
- DOCA_APSH_THREAD_TID = 1
- thread id
- DOCA_APSH_THREAD_STATE = 2
- thread state
- DOCA_APSH_THREAD_WINDOWS_WAIT_REASON = 1000
- thread wait reason
- DOCA_APSH_THREAD_WINDOWS_OFFSET = 1001
- thread offset
- DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT = 1002
- thread suspend count
- DOCA_APSH_THREAD_LINUX_PROC_NAME = 2000
- thread process name
- DOCA_APSH_THREAD_LINUX_THREAD_NAME = 2001
- thread name
- enum doca_apsh_vad_attr
-
Values
- DOCA_APSH_VMA_PID = 0
- vma process id
- DOCA_APSH_VMA_OFFSET = 1
- vma offset
- DOCA_APSH_VMA_PROTECTION = 2
- vma protection
- DOCA_APSH_VMA_VM_START = 3
- vma vm start
- DOCA_APSH_VMA_VM_END = 4
- vma vm end
- DOCA_APSH_VMA_PROCESS_NAME = 5
- vma process name
- DOCA_APSH_VMA_FILE_PATH = 6
- vma file path
- DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE = 1000
- vma commit charge
- DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY = 1001
- vma private memory
- DOCA_APSH_VMA_WINDOWS_TAG = 1002
- vma pool tag
- enum doca_apsh_yara_attr
-
Values
- DOCA_APSH_YARA_PID = 0
- pid of the process
- DOCA_APSH_YARA_COMM = 1
- name of the process
- DOCA_APSH_YARA_RULE = 2
- rule name
- DOCA_APSH_YARA_MATCH_WINDOW_ADDR = 3
- virtual address of the scan window of the match
- DOCA_APSH_YARA_MATCH_WINDOW_LEN = 4
- length of the scan window of the match
- enum doca_apsh_yara_rule
-
Values
- DOCA_APSH_YARA_RULE_HELLO_WORLD = 0
- yara rule that scans for "Hello World". Rule name is "Hello_World".
- DOCA_APSH_YARA_RULE_REFLECTIVE_DLL_INJECTION = 1
- yara rule that scans for Reflective Dll Injection attack. Rule name is "Reflective_Dll_Injection".
- DOCA_APSH_YARA_RULE_MIMIKATZ = 2
- yara rule that scans for Mimiaktz process running on the system. Rule name is "Mimikatz".
- enum doca_apsh_yara_scan_type
-
Values
- DOCA_APSH_YARA_SCAN_VMA = 1
- scan all vma tree, override all others
- DOCA_APSH_YARA_SCAN_HEAP = 1<<1
- scan heap vads
1.2.1. DOCA App Shield Attributes
[ DOCA App Shield ]
DOCA App Shield attributes to query with get functions, see doca_apsh.h
Typedefs
- typedef char * DOCA_APSH_ATTESTATION_COMM_TYPE
- attestation comm type
- typedef uint64_t DOCA_APSH_ATTESTATION_END_ADDRESS_TYPE
- attestation end address type
- typedef bool DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT_TYPE
- attestation hash data is present type
- typedef int DOCA_APSH_ATTESTATION_MATCHING_HASHES_TYPE
- attestation matching hashes type
- typedef int DOCA_APSH_ATTESTATION_PAGES_NUMBER_TYPE
- attestation pages number type
- typedef int DOCA_APSH_ATTESTATION_PAGES_PRESENT_TYPE
- attestation pages present type
- typedef char * DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA_TYPE
- attestation path of memory area type
- typedef uint32_t DOCA_APSH_ATTESTATION_PID_TYPE
- attestation pid type
- typedef char * DOCA_APSH_ATTESTATION_PROTECTION_TYPE
- attestation protection type
- typedef uint64_t DOCA_APSH_ATTESTATION_START_ADDRESS_TYPE
- attestation start address type
- typedef doca_dev * DOCA_APSH_DMA_DEV_TYPE
- dma dev name
- typedef uint32_t DOCA_APSH_ENVARS_PID_TYPE
- envars pid type
- typedef char * DOCA_APSH_ENVARS_VALUE_TYPE
- envars value type
- typedef char * DOCA_APSH_ENVARS_VARIABLE_TYPE
- envars variable type
- typedef uint64_t DOCA_APSH_ENVARS_WINDOWS_BLOCK_TYPE
- envars windows block address type
- typedef uint64_t DOCA_APSH_HANDLE_ACCESS_TYPE
- handle access type
- typedef char * DOCA_APSH_HANDLE_NAME_TYPE
- handle name type
- typedef uint32_t DOCA_APSH_HANDLE_PID_TYPE
- handle pid type
- typedef uint64_t DOCA_APSH_HANDLE_TABLE_ENTRY_TYPE
- handle table entry type
- typedef char * DOCA_APSH_HANDLE_TYPE_TYPE
- handle type type
- typedef uint64_t DOCA_APSH_HANDLE_VALUE_TYPE
- handle value type
- typedef int DOCA_APSH_HASHTEST_LIMIT_TYPE
- limit of vm areas to attest
- typedef uint32_t DOCA_APSH_INJECTION_DETECT_PID_TYPE
- injection detect pid type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END_TYPE
- injection detect suspected area end type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START_TYPE
- injection detect suspected area start type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_END_TYPE
- injection detect VAD end address type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH_TYPE
- injection detect VAD file path type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION_TYPE
- injection detect VAD protection type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_START_TYPE
- injection detect VAD start address type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_TAG_TYPE
- injection detect VAD pool tag type
- typedef char * DOCA_APSH_KPGD_FILE_TYPE
- kpgd file path
- typedef uint64_t DOCA_APSH_LDRMODULE_BASE_ADDRESS_TYPE
- ldrmodule base address type
- typedef char * DOCA_APSH_LDRMODULE_LIBRARY_PATH_TYPE
- ldrmodule library path type
- typedef uint32_t DOCA_APSH_LDRMODULE_PID_TYPE
- ldrmodule pid type
- typedef char * DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME_TYPE
- ldrmodule windows dll name type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_ININIT_TYPE
- ldrmodule ininit type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INLOAD_TYPE
- ldrmodule inload type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INMEM_TYPE
- ldrmodule inmem type
- typedef uint32_t DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE_TYPE
- ldrmodule size of image type
- typedef int DOCA_APSH_LIBS_LIMIT_TYPE
- limit of libs number
- typedef char * DOCA_APSH_LIB_LIBRARY_PATH_TYPE
- lib loaded library path type
- typedef uint64_t DOCA_APSH_LIB_LINUX_LOAD_ADRESS_TYPE
- lib load address for Linux
- typedef uint64_t DOCA_APSH_LIB_LOAD_ADRESS_TYPE
- lib load address for both Windows and Linux
- typedef uint32_t DOCA_APSH_LIB_PID_TYPE
- lib pid type
- typedef char * DOCA_APSH_LIB_WINDOWS_DLL_NAME_TYPE
- lib dll name type
- typedef uint32_t DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE_TYPE
- lib size of image type
- typedef char * DOCA_APSH_MEM_REGION_TYPE
- memory region path
- typedef int DOCA_APSH_MODULES_LIMIT_TYPE
- limit of modules number
- typedef char * DOCA_APSH_MODULES_NAME_TYPE
- module name type
- typedef uint64_t DOCA_APSH_MODULES_OFFSET_TYPE
- module offset type
- typedef uint32_t DOCA_APSH_MODULES_SIZE_TYPE
- module size type
- typedef char * DOCA_APSH_NETSCAN_COMM_TYPE
- netscan process name
- typedef char * DOCA_APSH_NETSCAN_LOCAL_ADDR_TYPE
- netscan connection local address
- typedef uint16_t DOCA_APSH_NETSCAN_LOCAL_PORT_TYPE
- netscan connection local port
- typedef uint32_t DOCA_APSH_NETSCAN_PID_TYPE
- netscan process id
- typedef char * DOCA_APSH_NETSCAN_PROTOCOL_TYPE
- netscan connection protocol
- typedef char * DOCA_APSH_NETSCAN_REMOTE_ADDR_TYPE
- netscan connection remote address
- typedef uint16_t DOCA_APSH_NETSCAN_REMOTE_PORT_TYPE
- netscan connection remote port
- typedef char * DOCA_APSH_NETSCAN_STATE_TYPE
- netscan connection state
- typedef char * DOCA_APSH_NETSCAN_TIME_TYPE
- netscan connection creation time
- typedef char * DOCA_APSH_OS_SYMBOL_MAP_TYPE
- os symbol map path
- typedef enumdoca_apsh_system_os DOCA_APSH_OS_TYPE_TYPE
- os type
- typedef bool DOCA_APSH_PRIVILEGES_IS_ON_TYPE
- privilege is on type
- typedef char * DOCA_APSH_PRIVILEGES_NAME_TYPE
- privilege name type
- typedef uint32_t DOCA_APSH_PRIVILEGES_PID_TYPE
- privilege process pid
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT_TYPE
- privilege windows enabled by default type
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED_TYPE
- privilege windows enabled type
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT_TYPE
- privilege windows present type
- typedef char * DOCA_APSH_PROCESS_COMM_TYPE
- process comm type
- typedef uint64_t DOCA_APSH_PROCESS_CPU_TIME_TYPE
- process cpu time type
- typedef int DOCA_APSH_PROCESS_LIMIT_TYPE
- limit of processes number
- typedef uint32_t DOCA_APSH_PROCESS_LINUX_GID_TYPE
- process gid type
- typedef uint64_t DOCA_APSH_PROCESS_LINUX_STATE_TYPE
- process state type
- typedef uint32_t DOCA_APSH_PROCESS_LINUX_UID_TYPE
- process uid type
- typedef char * DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE_TYPE
- process-parameters command line
- typedef uint64_t DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR_TYPE
- process-parameters image base address
- typedef char * DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH_TYPE
- process-parameters image full path
- typedef uint32_t DOCA_APSH_PROCESS_PARAMETERS_PID_TYPE
- process-parameters pid
- typedef uint32_t DOCA_APSH_PROCESS_PID_TYPE
- process pid type
- typedef uint32_t DOCA_APSH_PROCESS_PPID_TYPE
- process pid type
- typedef uint32_t DOCA_APSH_PROCESS_SID_ATTRIBUTES_TYPE
- SID attributes flag.
- typedef uint32_t DOCA_APSH_PROCESS_SID_PID_TYPE
- SID process id.
- typedef char * DOCA_APSH_PROCESS_SID_STRING_TYPE
- SID strings.
- typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME_TYPE
- process exit time type
- typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_OFFSET_TYPE
- process offset type
- typedef uint32_t DOCA_APSH_PROCESS_WINDOWS_THREADS_TYPE
- process threads type
- typedef uint32_t DOCA_APSH_SCAN_WIN_SIZE_TYPE
- yara scan window size
- typedef uint32_t DOCA_APSH_SCAN_WIN_STEP_TYPE
- yara scan window step
- typedef int DOCA_APSH_STRING_LIMIT_TYPE
- length limit of apsh_read_str
- typedef int DOCA_APSH_THREADS_LIMIT_TYPE
- limit of threads number
- typedef char * DOCA_APSH_THREAD_LINUX_PROC_NAME_TYPE
- thread proc name type
- typedef char * DOCA_APSH_THREAD_LINUX_THREAD_NAME_TYPE
- thread thread name type
- typedef uint32_t DOCA_APSH_THREAD_PID_TYPE
- thread pid type
- typedef uint64_t DOCA_APSH_THREAD_STATE_TYPE
- thread state type
- typedef uint32_t DOCA_APSH_THREAD_TID_TYPE
- thread tid type
- typedef uint64_t DOCA_APSH_THREAD_WINDOWS_OFFSET_TYPE
- thread offset type
- typedef uint8_t DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT_TYPE
- thread suspend count type
- typedef uint8_t DOCA_APSH_THREAD_WINDOWS_WAIT_REASON_TYPE
- thread wait reason type
- typedef int DOCA_APSH_VADS_LIMIT_TYPE
- limit of vads number
- typedef doca_dev_rep * DOCA_APSH_VHCA_ID_TYPE
- vhca id
- typedef char * DOCA_APSH_VMA_FILE_PATH_TYPE
- vma file path type
- typedef uint64_t DOCA_APSH_VMA_OFFSET_TYPE
- vma offset type
- typedef uint32_t DOCA_APSH_VMA_PID_TYPE
- vma pid type
- typedef char * DOCA_APSH_VMA_PROCESS_NAME_TYPE
- vma file path type
- typedef char * DOCA_APSH_VMA_PROTECTION_TYPE
- vma protection type
- typedef uint64_t DOCA_APSH_VMA_VM_END_TYPE
- vma vm end type
- typedef uint64_t DOCA_APSH_VMA_VM_START_TYPE
- vma vm start type
- typedef uint32_t DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE_TYPE
- vma commit charge type
- typedef uint32_t DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY_TYPE
- vma private memory type
- typedef char * DOCA_APSH_VMA_WINDOWS_TAG_TYPE
- vma tag type
- typedef int DOCA_APSH_WINDOWS_ENVARS_LIMIT_TYPE
- length limit of envars for windows
- typedef char * DOCA_APSH_YARA_COMM_TYPE
- name of the process
- typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_ADDR_TYPE
- virtual address of the scan window of the match
- typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_LEN_TYPE
- length of the scan window of the match
- typedef uint32_t DOCA_APSH_YARA_PID_TYPE
- pid of the process
- typedef char * DOCA_APSH_YARA_RULE_TYPE
- rule name
Enumerations
- enum doca_apsh_attestation_attr
- doca app shield attestation attributes
- enum doca_apsh_envar_attr
- doca app shield envars attributes
- enum doca_apsh_handle_attr
- doca app shield handle attributes
- enum doca_apsh_injection_detect_attr
- doca app shield injection detect attributes
- enum doca_apsh_ldrmodule_attr
- doca app shield LDR-Modules attributes
- enum doca_apsh_lib_attr
- doca app shield lib attributes
- enum doca_apsh_module_attr
- doca app shield module attributes
- enum doca_apsh_netscan_attr
- doca app shield netsacn attributes
- enum doca_apsh_privilege_attr
- doca app shield privileges attributes windows privilege list can be found on: https://docs.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
- enum doca_apsh_process_attr
- doca app shield process attributes
- enum doca_apsh_process_parameters_attr
- doca app shield process-parameters attributes
- enum doca_apsh_sid_attr
- doca app shield SID (security identifiers) attributes
- enum doca_apsh_system_config_attr
- doca app shield configuration attributes
- enum doca_apsh_system_os
- system os types
- enum doca_apsh_thread_attr
- doca app shield thread attributes
- enum doca_apsh_vad_attr
- doca app shield virtual address descriptor attributes
- enum doca_apsh_yara_attr
- doca app shield yara attributes
- enum doca_apsh_yara_rule
- available doca app shield yara rules
- enum doca_apsh_yara_scan_type
- doca app shield yara scan type bitmask
Typedefs
- typedef char * DOCA_APSH_ATTESTATION_COMM_TYPE
attestation comm type
- typedef uint64_t DOCA_APSH_ATTESTATION_END_ADDRESS_TYPE
attestation end address type
- typedef bool DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT_TYPE
attestation hash data is present type
- typedef int DOCA_APSH_ATTESTATION_MATCHING_HASHES_TYPE
attestation matching hashes type
- typedef int DOCA_APSH_ATTESTATION_PAGES_NUMBER_TYPE
attestation pages number type
- typedef int DOCA_APSH_ATTESTATION_PAGES_PRESENT_TYPE
attestation pages present type
- typedef char * DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA_TYPE
attestation path of memory area type
- typedef uint32_t DOCA_APSH_ATTESTATION_PID_TYPE
attestation pid type
- typedef char * DOCA_APSH_ATTESTATION_PROTECTION_TYPE
attestation protection type
- typedef uint64_t DOCA_APSH_ATTESTATION_START_ADDRESS_TYPE
attestation start address type
- typedef doca_dev * DOCA_APSH_DMA_DEV_TYPE
dma dev name
- typedef uint32_t DOCA_APSH_ENVARS_PID_TYPE
envars pid type
- typedef char * DOCA_APSH_ENVARS_VALUE_TYPE
envars value type
- typedef char * DOCA_APSH_ENVARS_VARIABLE_TYPE
envars variable type
- typedef uint64_t DOCA_APSH_ENVARS_WINDOWS_BLOCK_TYPE
envars windows block address type
- typedef uint64_t DOCA_APSH_HANDLE_ACCESS_TYPE
handle access type
- typedef char * DOCA_APSH_HANDLE_NAME_TYPE
handle name type
- typedef uint32_t DOCA_APSH_HANDLE_PID_TYPE
handle pid type
- typedef uint64_t DOCA_APSH_HANDLE_TABLE_ENTRY_TYPE
handle table entry type
- typedef char * DOCA_APSH_HANDLE_TYPE_TYPE
handle type type
- typedef uint64_t DOCA_APSH_HANDLE_VALUE_TYPE
handle value type
- typedef int DOCA_APSH_HASHTEST_LIMIT_TYPE
limit of vm areas to attest
- typedef uint32_t DOCA_APSH_INJECTION_DETECT_PID_TYPE
injection detect pid type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END_TYPE
injection detect suspected area end type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START_TYPE
injection detect suspected area start type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_END_TYPE
injection detect VAD end address type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH_TYPE
injection detect VAD file path type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION_TYPE
injection detect VAD protection type
- typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_START_TYPE
injection detect VAD start address type
- typedef char * DOCA_APSH_INJECTION_DETECT_VAD_TAG_TYPE
injection detect VAD pool tag type
- typedef char * DOCA_APSH_KPGD_FILE_TYPE
kpgd file path
- typedef uint64_t DOCA_APSH_LDRMODULE_BASE_ADDRESS_TYPE
ldrmodule base address type
- typedef char * DOCA_APSH_LDRMODULE_LIBRARY_PATH_TYPE
ldrmodule library path type
- typedef uint32_t DOCA_APSH_LDRMODULE_PID_TYPE
ldrmodule pid type
- typedef char * DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME_TYPE
ldrmodule windows dll name type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_ININIT_TYPE
ldrmodule ininit type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INLOAD_TYPE
ldrmodule inload type
- typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INMEM_TYPE
ldrmodule inmem type
- typedef uint32_t DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE_TYPE
ldrmodule size of image type
- typedef int DOCA_APSH_LIBS_LIMIT_TYPE
limit of libs number
- typedef char * DOCA_APSH_LIB_LIBRARY_PATH_TYPE
lib loaded library path type
- typedef uint64_t DOCA_APSH_LIB_LINUX_LOAD_ADRESS_TYPE
lib load address for Linux
- typedef uint64_t DOCA_APSH_LIB_LOAD_ADRESS_TYPE
lib load address for both Windows and Linux
- typedef uint32_t DOCA_APSH_LIB_PID_TYPE
lib pid type
- typedef char * DOCA_APSH_LIB_WINDOWS_DLL_NAME_TYPE
lib dll name type
- typedef uint32_t DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE_TYPE
lib size of image type
- typedef char * DOCA_APSH_MEM_REGION_TYPE
memory region path
- typedef int DOCA_APSH_MODULES_LIMIT_TYPE
limit of modules number
- typedef char * DOCA_APSH_MODULES_NAME_TYPE
module name type
- typedef uint64_t DOCA_APSH_MODULES_OFFSET_TYPE
module offset type
- typedef uint32_t DOCA_APSH_MODULES_SIZE_TYPE
module size type
- typedef char * DOCA_APSH_NETSCAN_COMM_TYPE
netscan process name
- typedef char * DOCA_APSH_NETSCAN_LOCAL_ADDR_TYPE
netscan connection local address
- typedef uint16_t DOCA_APSH_NETSCAN_LOCAL_PORT_TYPE
netscan connection local port
- typedef uint32_t DOCA_APSH_NETSCAN_PID_TYPE
netscan process id
- typedef char * DOCA_APSH_NETSCAN_PROTOCOL_TYPE
netscan connection protocol
- typedef char * DOCA_APSH_NETSCAN_REMOTE_ADDR_TYPE
netscan connection remote address
- typedef uint16_t DOCA_APSH_NETSCAN_REMOTE_PORT_TYPE
netscan connection remote port
- typedef char * DOCA_APSH_NETSCAN_STATE_TYPE
netscan connection state
- typedef char * DOCA_APSH_NETSCAN_TIME_TYPE
netscan connection creation time
- typedef char * DOCA_APSH_OS_SYMBOL_MAP_TYPE
os symbol map path
- typedef enumdoca_apsh_system_os DOCA_APSH_OS_TYPE_TYPE
os type
- typedef bool DOCA_APSH_PRIVILEGES_IS_ON_TYPE
privilege is on type
- typedef char * DOCA_APSH_PRIVILEGES_NAME_TYPE
privilege name type
- typedef uint32_t DOCA_APSH_PRIVILEGES_PID_TYPE
privilege process pid
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT_TYPE
privilege windows enabled by default type
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED_TYPE
privilege windows enabled type
- typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT_TYPE
privilege windows present type
- typedef char * DOCA_APSH_PROCESS_COMM_TYPE
process comm type
- typedef uint64_t DOCA_APSH_PROCESS_CPU_TIME_TYPE
process cpu time type
- typedef int DOCA_APSH_PROCESS_LIMIT_TYPE
limit of processes number
- typedef uint32_t DOCA_APSH_PROCESS_LINUX_GID_TYPE
process gid type
- typedef uint64_t DOCA_APSH_PROCESS_LINUX_STATE_TYPE
process state type
- typedef uint32_t DOCA_APSH_PROCESS_LINUX_UID_TYPE
process uid type
- typedef char * DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE_TYPE
process-parameters command line
- typedef uint64_t DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR_TYPE
process-parameters image base address
- typedef char * DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH_TYPE
process-parameters image full path
- typedef uint32_t DOCA_APSH_PROCESS_PARAMETERS_PID_TYPE
process-parameters pid
- typedef uint32_t DOCA_APSH_PROCESS_PID_TYPE
process pid type
- typedef uint32_t DOCA_APSH_PROCESS_PPID_TYPE
process pid type
- typedef uint32_t DOCA_APSH_PROCESS_SID_ATTRIBUTES_TYPE
SID attributes flag.
- typedef uint32_t DOCA_APSH_PROCESS_SID_PID_TYPE
SID process id.
- typedef char * DOCA_APSH_PROCESS_SID_STRING_TYPE
SID strings.
- typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME_TYPE
process exit time type
- typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_OFFSET_TYPE
process offset type
- typedef uint32_t DOCA_APSH_PROCESS_WINDOWS_THREADS_TYPE
process threads type
- typedef uint32_t DOCA_APSH_SCAN_WIN_SIZE_TYPE
yara scan window size
- typedef uint32_t DOCA_APSH_SCAN_WIN_STEP_TYPE
yara scan window step
- typedef int DOCA_APSH_STRING_LIMIT_TYPE
length limit of apsh_read_str
- typedef int DOCA_APSH_THREADS_LIMIT_TYPE
limit of threads number
- typedef char * DOCA_APSH_THREAD_LINUX_PROC_NAME_TYPE
thread proc name type
- typedef char * DOCA_APSH_THREAD_LINUX_THREAD_NAME_TYPE
thread thread name type
- typedef uint32_t DOCA_APSH_THREAD_PID_TYPE
thread pid type
- typedef uint64_t DOCA_APSH_THREAD_STATE_TYPE
thread state type
- typedef uint32_t DOCA_APSH_THREAD_TID_TYPE
thread tid type
- typedef uint64_t DOCA_APSH_THREAD_WINDOWS_OFFSET_TYPE
thread offset type
- typedef uint8_t DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT_TYPE
thread suspend count type
- typedef uint8_t DOCA_APSH_THREAD_WINDOWS_WAIT_REASON_TYPE
thread wait reason type
- typedef int DOCA_APSH_VADS_LIMIT_TYPE
limit of vads number
- typedef doca_dev_rep * DOCA_APSH_VHCA_ID_TYPE
vhca id
- typedef char * DOCA_APSH_VMA_FILE_PATH_TYPE
vma file path type
- typedef uint64_t DOCA_APSH_VMA_OFFSET_TYPE
vma offset type
- typedef uint32_t DOCA_APSH_VMA_PID_TYPE
vma pid type
- typedef char * DOCA_APSH_VMA_PROCESS_NAME_TYPE
vma file path type
- typedef char * DOCA_APSH_VMA_PROTECTION_TYPE
vma protection type
- typedef uint64_t DOCA_APSH_VMA_VM_END_TYPE
vma vm end type
- typedef uint64_t DOCA_APSH_VMA_VM_START_TYPE
vma vm start type
- typedef uint32_t DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE_TYPE
vma commit charge type
- typedef uint32_t DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY_TYPE
vma private memory type
- typedef char * DOCA_APSH_VMA_WINDOWS_TAG_TYPE
vma tag type
- typedef int DOCA_APSH_WINDOWS_ENVARS_LIMIT_TYPE
length limit of envars for windows
- typedef char * DOCA_APSH_YARA_COMM_TYPE
name of the process
- typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_ADDR_TYPE
virtual address of the scan window of the match
- typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_LEN_TYPE
length of the scan window of the match
- typedef uint32_t DOCA_APSH_YARA_PID_TYPE
pid of the process
- typedef char * DOCA_APSH_YARA_RULE_TYPE
rule name
Enumerations
- enum doca_apsh_attestation_attr
-
Values
- DOCA_APSH_ATTESTATION_PID = 0
- attestation process id
- DOCA_APSH_ATTESTATION_COMM = 1
- attestation process name
- DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA = 2
- attestation path of memory area
- DOCA_APSH_ATTESTATION_PROTECTION = 3
- attestation protection
- DOCA_APSH_ATTESTATION_START_ADDRESS = 4
- attestation start address
- DOCA_APSH_ATTESTATION_END_ADDRESS = 5
- attestation end address
- DOCA_APSH_ATTESTATION_PAGES_NUMBER = 6
- attestation process pages count in binary file
- DOCA_APSH_ATTESTATION_PAGES_PRESENT = 7
- attestation pages present in memory
- DOCA_APSH_ATTESTATION_MATCHING_HASHES = 8
- attestation pages hash match count from pages in memory
- DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT = 9
- attestation hash data is present
- enum doca_apsh_envar_attr
-
Values
- DOCA_APSH_ENVARS_PID = 0
- envars pid
- DOCA_APSH_ENVARS_VARIABLE = 2
- envars variable
- DOCA_APSH_ENVARS_VALUE = 3
- envars value
- DOCA_APSH_ENVARS_WINDOWS_BLOCK = 1000
- envars windows environment block address
- enum doca_apsh_handle_attr
-
Values
- DOCA_APSH_HANDLE_PID = 0
- handle process id
- DOCA_APSH_HANDLE_VALUE = 2
- handle value
- DOCA_APSH_HANDLE_TABLE_ENTRY = 3
- handle table entry
- DOCA_APSH_HANDLE_TYPE = 4
- handle type
- DOCA_APSH_HANDLE_ACCESS = 5
- handle access
- DOCA_APSH_HANDLE_NAME = 6
- handle name
- enum doca_apsh_injection_detect_attr
-
Values
- DOCA_APSH_INJECTION_DETECT_PID
- suspected injection process id
- DOCA_APSH_INJECTION_DETECT_VAD_START
- suspected injection VAD start address
- DOCA_APSH_INJECTION_DETECT_VAD_END
- suspected injection VAD end address
- DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION
- suspected injection VAD protection
- DOCA_APSH_INJECTION_DETECT_VAD_TAG
- suspected injection VAD pool tag
- DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH
- suspected injection VAD file path
- DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START
- suspected injection suspected area start
- DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END
- suspected injection suspected area end
- enum doca_apsh_ldrmodule_attr
-
Values
- DOCA_APSH_LDRMODULE_PID = 0
- ldrmodule process pid
- DOCA_APSH_LDRMODULE_BASE_ADDRESS = 2
- ldrmodule base address
- DOCA_APSH_LDRMODULE_LIBRARY_PATH = 3
- ldrmodule loaded library path
- DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME = 1000
- ldrmodule dll name
- DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE = 1001
- ldrmodule size of image
- DOCA_APSH_LDRMODULE_WINDOWS_INLOAD = 1002
- ldrmodule appear in inload list
- DOCA_APSH_LDRMODULE_WINDOWS_INMEM = 1003
- ldrmodule appear in inmem list
- DOCA_APSH_LDRMODULE_WINDOWS_ININIT = 1004
- ldrmodule appear in ininit list
- enum doca_apsh_lib_attr
-
Values
- DOCA_APSH_LIB_PID = 0
- lib pid
- DOCA_APSH_LIB_LIBRARY_PATH = 2
- lib loaded library path
- DOCA_APSH_LIB_LOAD_ADRESS = 3
- lib load address for both Windows and Linux
- DOCA_APSH_LIB_WINDOWS_DLL_NAME = 1000
- lib dll name
- DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE = 1001
- lib size of image
- DOCA_APSH_LIB_LINUX_LOAD_ADRESS = 2000
- lib load address for Linux. It's kept for backwards compatibility, use DOCA_APSH_LIB_LOAD_ADRESS instead-
- enum doca_apsh_module_attr
-
Values
- DOCA_APSH_MODULES_OFFSET = 0
- module offset
- DOCA_APSH_MODULES_NAME = 1
- module name
- DOCA_APSH_MODULES_SIZE = 2
- module size
- enum doca_apsh_netscan_attr
-
Values
- DOCA_APSH_NETSCAN_PID = 0
- netscan process id
- DOCA_APSH_NETSCAN_COMM = 1
- netscan process name
- DOCA_APSH_NETSCAN_PROTOCOL = 2
- netscan connection protcol
- DOCA_APSH_NETSCAN_LOCAL_ADDR = 3
- netscan connection local address
- DOCA_APSH_NETSCAN_REMOTE_ADDR = 4
- netscan connection remote address
- DOCA_APSH_NETSCAN_LOCAL_PORT = 5
- netscan connection local port
- DOCA_APSH_NETSCAN_REMOTE_PORT = 6
- netscan connection remote port
- DOCA_APSH_NETSCAN_STATE = 7
- netscan connection state
- DOCA_APSH_NETSCAN_TIME = 8
- netscan connection creation time
- enum doca_apsh_privilege_attr
-
Values
- DOCA_APSH_PRIVILEGES_PID = 0
- privilege process pid
- DOCA_APSH_PRIVILEGES_NAME = 2
- privilege name, for example: SeTcbPrivilege
- DOCA_APSH_PRIVILEGES_IS_ON = 3
- is the privilege turned on or off. For Windows this is the outcome of get(PRESENT) && (get(ENABLED) || get(DEFAULT))
- DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT = 1000
- privilege present flag
- DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED = 1001
- privilege enabled flag
- DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT = 1002
- privilege enabledbydefault flag
- enum doca_apsh_process_attr
-
Values
- DOCA_APSH_PROCESS_PID = 0
- process id
- DOCA_APSH_PROCESS_PPID = 1
- process parent id
- DOCA_APSH_PROCESS_COMM = 2
- process executable name
- DOCA_APSH_PROCESS_CPU_TIME = 3
- process cpu time [ps]
- DOCA_APSH_PROCESS_WINDOWS_OFFSET = 1000
- process offset
- DOCA_APSH_PROCESS_WINDOWS_THREADS = 1001
- process thread count
- DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME = 1002
- process exit time
- DOCA_APSH_PROCESS_LINUX_GID = 2000
- process group id
- DOCA_APSH_PROCESS_LINUX_UID = 2001
- process user id
- DOCA_APSH_PROCESS_LINUX_STATE = 2002
- process state
- enum doca_apsh_process_parameters_attr
-
Values
- DOCA_APSH_PROCESS_PARAMETERS_PID = 0
- process-parameters pid
- DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE = 1
- process-parameters command line
- DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR = 2
- process-parameters image base address
- DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH = 3
- process-parameters image full path
- enum doca_apsh_sid_attr
-
Values
- DOCA_APSH_PROCESS_SID_PID = 0
- SID process id
- DOCA_APSH_PROCESS_SID_STRING = 1
- SID string
- DOCA_APSH_PROCESS_SID_ATTRIBUTES = 2
- SID attributes flag
- enum doca_apsh_system_config_attr
-
Values
- DOCA_APSH_OS_SYMBOL_MAP = 0
- os symbol map path
- DOCA_APSH_MEM_REGION = 1
- memory region path
- DOCA_APSH_KPGD_FILE = 2
- kpgd file path
- DOCA_APSH_VHCA_ID = 3
- vhca id
- DOCA_APSH_OS_TYPE = 4
- os type
- DOCA_APSH_SCAN_WIN_SIZE = 5
- yara scan window size
- DOCA_APSH_SCAN_WIN_STEP = 6
- yara scan window step
- DOCA_APSH_HASHTEST_LIMIT = 7
- limit of vm areas to attest
- DOCA_APSH_MODULES_LIMIT = 8
- limit of modules number
- DOCA_APSH_PROCESS_LIMIT = 9
- limit of processes number
- DOCA_APSH_THREADS_LIMIT = 10
- limit of threads number
- DOCA_APSH_LDRMODULES_LIMIT = 11
- limit of ldrmodules number on windows
- DOCA_APSH_LIBS_LIMIT = 12
- limit of libs number
- DOCA_APSH_VADS_LIMIT = 13
- limit of vads number
- DOCA_APSH_WINDOWS_ENVARS_LIMIT = 14
- length limit of envars for windows
- DOCA_APSH_HANDLES_LIMIT = 15
- limit of handles number on windows
- DOCA_APSH_STRING_LIMIT = 16
- length limit of apsh_read_str
- enum doca_apsh_system_os
-
Values
- DOCA_APSH_SYSTEM_LINUX = 0
- linux
- DOCA_APSH_SYSTEM_WINDOWS = 1
- windows
- enum doca_apsh_thread_attr
-
Values
- DOCA_APSH_THREAD_PID = 0
- thread process id
- DOCA_APSH_THREAD_TID = 1
- thread id
- DOCA_APSH_THREAD_STATE = 2
- thread state
- DOCA_APSH_THREAD_WINDOWS_WAIT_REASON = 1000
- thread wait reason
- DOCA_APSH_THREAD_WINDOWS_OFFSET = 1001
- thread offset
- DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT = 1002
- thread suspend count
- DOCA_APSH_THREAD_LINUX_PROC_NAME = 2000
- thread process name
- DOCA_APSH_THREAD_LINUX_THREAD_NAME = 2001
- thread name
- enum doca_apsh_vad_attr
-
Values
- DOCA_APSH_VMA_PID = 0
- vma process id
- DOCA_APSH_VMA_OFFSET = 1
- vma offset
- DOCA_APSH_VMA_PROTECTION = 2
- vma protection
- DOCA_APSH_VMA_VM_START = 3
- vma vm start
- DOCA_APSH_VMA_VM_END = 4
- vma vm end
- DOCA_APSH_VMA_PROCESS_NAME = 5
- vma process name
- DOCA_APSH_VMA_FILE_PATH = 6
- vma file path
- DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE = 1000
- vma commit charge
- DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY = 1001
- vma private memory
- DOCA_APSH_VMA_WINDOWS_TAG = 1002
- vma pool tag
- enum doca_apsh_yara_attr
-
Values
- DOCA_APSH_YARA_PID = 0
- pid of the process
- DOCA_APSH_YARA_COMM = 1
- name of the process
- DOCA_APSH_YARA_RULE = 2
- rule name
- DOCA_APSH_YARA_MATCH_WINDOW_ADDR = 3
- virtual address of the scan window of the match
- DOCA_APSH_YARA_MATCH_WINDOW_LEN = 4
- length of the scan window of the match
- enum doca_apsh_yara_rule
-
Values
- DOCA_APSH_YARA_RULE_HELLO_WORLD = 0
- yara rule that scans for "Hello World". Rule name is "Hello_World".
- DOCA_APSH_YARA_RULE_REFLECTIVE_DLL_INJECTION = 1
- yara rule that scans for Reflective Dll Injection attack. Rule name is "Reflective_Dll_Injection".
- DOCA_APSH_YARA_RULE_MIMIKATZ = 2
- yara rule that scans for Mimiaktz process running on the system. Rule name is "Mimikatz".
- enum doca_apsh_yara_scan_type
-
Values
- DOCA_APSH_YARA_SCAN_VMA = 1
- scan all vma tree, override all others
- DOCA_APSH_YARA_SCAN_HEAP = 1<<1
- scan heap vads
DOCA Arg Parser library. For more details please refer to the user guide on DOCA DevZone.
Typedefs
- typedef doca_error_t ( *doca_argp_dpdk_cb_t )( int argc, char* *argv )
- DPDK flags callback function type.
- typedef doca_error_t ( *doca_argp_param_cb_t )( void* , void* )
- Flag callback function type.
- typedef doca_error_t ( *doca_argp_validation_cb_t )( void* )
- Program validation callback function type.
Enumerations
- enum doca_argp_type
- Flag input type.
Functions
- doca_error_t doca_argp_destroy ( void )
- ARG Parser destroy.
- doca_error_t doca_argp_get_log_level ( int* log_level )
- Get the log level the user inserted it.
- doca_error_t doca_argp_get_sdk_log_level ( int* log_level )
- Get the SDK log level the user inserted it.
- doca_error_t doca_argp_init ( const char* program_name, void* program_config )
- Initialize the parser interface.
- doca_error_t doca_argp_param_create ( doca_argp_param** param )
- Create new program param.
- doca_error_t doca_argp_param_destroy ( doca_argp_param* param )
- Destroy a program param.
- DOCA_EXPERIMENTAL void doca_argp_param_set_arguments ( doca_argp_param* param, const char* arguments )
- Set the expected arguments of the program param, used to print the program usage.
- DOCA_EXPERIMENTAL void doca_argp_param_set_callback ( doca_argp_param* param, doca_argp_param_cb_t callback )
- Set the callback function of the program param.
- DOCA_EXPERIMENTAL void doca_argp_param_set_cli_only ( doca_argp_param* param )
- Set if the program param is supported only CLI mode and will not be used in JSON file, by default the value is false.
- DOCA_EXPERIMENTAL void doca_argp_param_set_description ( doca_argp_param* param, const char* description )
- Set the description of the program param, used to print the program usage.
- DOCA_EXPERIMENTAL void doca_argp_param_set_long_name ( doca_argp_param* param, const char* name )
- Set the long name of the program param.
- DOCA_EXPERIMENTAL void doca_argp_param_set_mandatory ( doca_argp_param* param )
- Set if the program param is mandatory, by default the value is false.
- DOCA_EXPERIMENTAL void doca_argp_param_set_multiplicity ( doca_argp_param* param )
- Set if the program param will appear multiple times, by default the value is false.
- DOCA_EXPERIMENTAL void doca_argp_param_set_short_name ( doca_argp_param* param, const char* name )
- Set the short name of the program param.
- DOCA_EXPERIMENTAL void doca_argp_param_set_type ( doca_argp_param* param, doca_argp_type type )
- Set the type of the param arguments.
- doca_error_t doca_argp_register_param ( doca_argp_param* input_param )
- Register a program flag.
- doca_error_t doca_argp_register_validation_callback ( doca_argp_validation_cb_t callback )
- Register program validation callback function.
- doca_error_t doca_argp_register_version_callback ( doca_argp_param_cb_t callback )
- Register an alternative version callback.
- DOCA_EXPERIMENTAL void doca_argp_set_dpdk_program ( doca_argp_dpdk_cb_t callback )
- Set information about program configuration, if it's based on DPDK API.
- doca_error_t doca_argp_start ( int argc, char** argv )
- Parse incoming arguments (cmd line/json).
- DOCA_EXPERIMENTAL void doca_argp_usage ( void )
- Print usage instructions.
Typedefs
- doca_error_t ( *doca_argp_dpdk_cb_t )( int argc, char* *argv )
DPDK flags callback function type.
- doca_error_t ( *doca_argp_param_cb_t )( void* , void* )
Flag callback function type.
- doca_error_t ( *doca_argp_validation_cb_t )( void* )
Program validation callback function type.
Enumerations
- enum doca_argp_type
-
Values
- DOCA_ARGP_TYPE_UNKNOWN = 0
- DOCA_ARGP_TYPE_STRING
- Input type is a string
- DOCA_ARGP_TYPE_INT
- Input type is an integer
- DOCA_ARGP_TYPE_BOOLEAN
- Input type is a boolean
- DOCA_ARGP_TYPE_JSON_OBJ
- DPDK Param input type is a json object, only for json mode
Functions
- doca_error_t doca_argp_destroy ( void )
-
ARG Parser destroy.
Returns
DOCA_SUCCESS - in case of success, the relevant error otherwise.
Description
cleanup all resources including the parsed DPDK flags, the program can't use them any more.
- doca_error_t doca_argp_get_log_level ( int* log_level )
-
Get the log level the user inserted it.
Parameters
- log_level
- The log level if the user inserted it, otherwise the default value of log level.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - invalid input received.
Description
- doca_error_t doca_argp_get_sdk_log_level ( int* log_level )
-
Get the SDK log level the user inserted it.
Parameters
- log_level
- The log level if the user inserted it, otherwise the default value of log level.
Description
DOCA_SUCCESS - in case of success. Error code - in case of failure:
-
DOCA_ERROR_INVALID_VALUE - invalid input received.
- doca_error_t doca_argp_init ( const char* program_name, void* program_config )
-
Initialize the parser interface.
Parameters
- program_name
- Name of current program, using the name for usage print.
- program_config
- Program configuration struct.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Note:After a successful call to this function, doca_argp_destroy() should be called as part of program cleanup.
- doca_error_t doca_argp_param_create ( doca_argp_param** param )
-
Create new program param.
Parameters
- param
- Create program param instance on success. Valid on success only.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate enough space.
Description
Note:Need to set param fields by setter functions.
- doca_error_t doca_argp_param_destroy ( doca_argp_param* param )
-
Destroy a program param.
Parameters
- param
- The program param to destroy.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - invalid input received.
Description
- DOCA_EXPERIMENTAL void doca_argp_param_set_arguments ( doca_argp_param* param, const char* arguments )
-
Set the expected arguments of the program param, used to print the program usage.
Parameters
- param
- The program param.
- arguments
- The param's arguments.
Description
Note:Passing a "param" value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_argp_param_set_callback ( doca_argp_param* param, doca_argp_param_cb_t callback )
-
Set the callback function of the program param.
Parameters
- param
- The program param.
- callback
- The param's callback function.
Description
Note:-
Passing a "param" value of NULL will result in an undefined behavior.
-
Once ARGP identifies this param in CLI, will call the callback function with attaching the param argument value as first argument and next the program configuration struct. Program should copy the argument value and shouldn't use it directly.
-
Set param callback is mandatory.
- DOCA_EXPERIMENTAL void doca_argp_param_set_cli_only ( doca_argp_param* param )
-
Set if the program param is supported only CLI mode and will not be used in JSON file, by default the value is false.
Parameters
- param
- The program param.
Description
Note:Passing a "param" value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_argp_param_set_description ( doca_argp_param* param, const char* description )
-
Set the description of the program param, used to print the program usage.
Parameters
- param
- The program param.
- description
- The param's description.
Description
Note:-
Passing a "param" value of NULL will result in an undefined behavior.
-
Set param description is mandatory.
- DOCA_EXPERIMENTAL void doca_argp_param_set_long_name ( doca_argp_param* param, const char* name )
-
Set the long name of the program param.
Parameters
- param
- The program param.
- name
- The param's long name.
Description
Note:-
Passing a "param" value of NULL will result in an undefined behavior.
-
At least one of param names should be set.
- DOCA_EXPERIMENTAL void doca_argp_param_set_mandatory ( doca_argp_param* param )
-
Set if the program param is mandatory, by default the value is false.
Parameters
- param
- The program param.
Description
Note:Passing a "param" value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_argp_param_set_multiplicity ( doca_argp_param* param )
-
Set if the program param will appear multiple times, by default the value is false.
Parameters
- param
- The program param.
Description
Note:-
Passing a "param" value of NULL will result in an undefined behavior.
-
Since JSON file doesn't support keys multiplicity, the multi values will be in array and param argument type will indicate the values type.
- DOCA_EXPERIMENTAL void doca_argp_param_set_short_name ( doca_argp_param* param, const char* name )
-
Set the short name of the program param.
Parameters
- param
- The program param.
- name
- The param's short name
Description
Note:-
Passing a "param" value of NULL will result in an undefined behavior.
-
At least one of param names should be set.
- DOCA_EXPERIMENTAL void doca_argp_param_set_type ( doca_argp_param* param, doca_argp_type type )
-
Set the type of the param arguments.
Parameters
- param
- The program param.
- type
- The param arguments type.
Description
Note:-
Passing a "param" value of NULL will result in an undefined behavior.
-
Set param arguments type is mandatory.
- doca_error_t doca_argp_register_param ( doca_argp_param* input_param )
-
Register a program flag.
Parameters
- input_param
- Program flag details.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_INITIALIZATION - received param with missing mandatory fields initialization.
Description
Note:-
Value of is_cli_only field may be changed in this function.
-
ARGP takes ownership of the pointer and will free the param including in case of failure.
- doca_error_t doca_argp_register_validation_callback ( doca_argp_validation_cb_t callback )
-
Register program validation callback function.
Parameters
- callback
- Program validation callback.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Note:When calling validation callback, will pass one argument which is the program configuration struct.
- doca_error_t doca_argp_register_version_callback ( doca_argp_param_cb_t callback )
-
Register an alternative version callback.
Parameters
- callback
- Program-specific version callback.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Note:: When calling version callback the program will exit.
- DOCA_EXPERIMENTAL void doca_argp_set_dpdk_program ( doca_argp_dpdk_cb_t callback )
-
Set information about program configuration, if it's based on DPDK API.
Parameters
- callback
- Once ARGP finished parsing DPDK flags will be forwarded to the program by calling this callback.
Description
Note:-
Need to call doca_argp_init before setting program DPDK type.
-
If program is based on DPDK API, DPDK flags array will be sent using the callback, the array will be released when calling doca_argp_destroy.
- doca_error_t doca_argp_start ( int argc, char** argv )
-
Parse incoming arguments (cmd line/json).
Parameters
- argc
- Number of program command line arguments.
- argv
- Program command line arguments.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NOT_SUPPORTED - received unsupported program flag.
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_IO_FAILED - Internal errors about JSON API, reading JSON content.
- DOCA_ERROR_NO_MEMORY - failed to allocate enough space.
- DOCA_ERROR_INITIALIZATION - initialization error.
Description
Note:: if the program is based on DPDK API, DPDK flags will be forwarded to it by calling the registered callback.
- DOCA_EXPERIMENTAL void doca_argp_usage ( void )
-
Print usage instructions.
Description
Note:: When calling this function the program will exit.
Modules
-
DOCA Buffer
-
DOCA Buffer Array
-
DOCA Buffer Inventory
-
DOCA Buffer Pool
-
DOCA Context
-
DOCA DPDK Bridge
-
DOCA Device
-
DOCA Error
-
DOCA Graph
-
DOCA Memory Map
-
DOCA Progress Engine
-
DOCA RDMA Bridge
-
DOCA Sync Event
-
DOCA Types
DOCA Buffer Array
DOCA Buffer
DOCA Buffer Inventory
DOCA Buffer Pool
DOCA Context
DOCA Device
DOCA DPDK Bridge
DOCA Error
DOCA Graph
DOCA Memory Map
DOCA Progress Engine
DOCA RDMA Bridge
DOCA Sync Event
DOCA Types
1.4.2. DOCA Buffer
[ DOCA Core ]
The DOCA Buffer is used for reference data. It holds the information on a memory region that belongs to a DOCA memory map, and its descriptor is allocated from DOCA Buffer Inventory.
Functions
- doca_error_t doca_buf_chain_list ( doca_buf* list1, doca_buf* list2 )
- Append list2 to list1.
- doca_error_t doca_buf_dec_refcount ( doca_buf* buf, uint16_t* refcount )
- Decrease the object reference count by 1, if 0 reached, return the element back to the inventory.
- doca_error_t doca_buf_get_data ( const doca_buf* buf, void** data )
- Get the buffer's data.
- doca_error_t doca_buf_get_data_len ( const doca_buf* buf, size_t* data_len )
- Get buffer's data length.
- doca_error_t doca_buf_get_head ( const doca_buf* buf, void** head )
- Get the buffer's head.
- doca_error_t doca_buf_get_last_in_list ( doca_buf* buf, doca_buf** last_buf )
- Get last DOCA Buf in linked list.
- doca_error_t doca_buf_get_len ( const doca_buf* buf, size_t* len )
- Get the buffer's length.
- doca_error_t doca_buf_get_list_len ( const doca_buf* buf, uint32_t* num_elements )
- Get the number of the elements in list.
- doca_error_t doca_buf_get_next_in_list ( doca_buf* buf, doca_buf** next_buf )
- Get next DOCA Buf in linked list.
- doca_error_t doca_buf_get_refcount ( const doca_buf* buf, uint16_t* refcount )
- Get the reference count of the object.
- doca_error_t doca_buf_inc_refcount ( doca_buf* buf, uint16_t* refcount )
- Increase the object reference count by 1.
- doca_error_t doca_buf_is_first_in_list ( const doca_buf* buf, uint8_t* is_first )
- Check if provided DOCA Buf is the first element in a linked list.
- doca_error_t doca_buf_is_in_list ( const doca_buf* buf, uint8_t* is_in_list )
- Check if provided DOCA Buf is a linked list.
- doca_error_t doca_buf_is_last_in_list ( const doca_buf* buf, uint8_t* is_last )
- Check if provided DOCA Buf is the last element in a linked list.
- doca_error_t doca_buf_reset_data_len ( doca_buf* buf )
- doca_error_t doca_buf_set_data ( doca_buf* buf, void* data, size_t data_len )
- doca_error_t doca_buf_set_data_len ( doca_buf* buf, size_t data_len )
- doca_error_t doca_buf_unchain_list ( doca_buf* list1, doca_buf* list2 )
- Separate list2 from list1.
Functions
- doca_error_t doca_buf_chain_list ( doca_buf* list1, doca_buf* list2 )
-
Append list2 to list1.
Parameters
- list1
- DOCA Buf representing list1. MUST NOT BE NULL AND MUST BE HEAD OF LIST.
- list2
- DOCA Buf representing list2. MUST NOT BE NULL AND MUST BE HEAD OF LIST. must have a refcount of 1
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - if list2 has a reference count that is not 1
Description
Before: +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 | +----+ +----+ +----+ +----+ +----+ list2 -> |4 |->|5 | +----+ +----+ After: +----+ +----+ +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 |->|4 |->|5 | +----+ +----+ +----+ +----+ +----+ / list2
- doca_error_t doca_buf_dec_refcount ( doca_buf* buf, uint16_t* refcount )
-
Decrease the object reference count by 1, if 0 reached, return the element back to the inventory.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- refcount
- The number of references to the object before this operation took place. Can be NULL.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - buf is the next element in some list.
- DOCA_ERROR_BAD_STATE - reference count is already 0.
Description
When refcont 0 reached, all related resources should be released. For example if the element points into some mmap its state will be adjusted accordingly.
Note:In case of list if head refcount reaches 0, then all buffers in the list will be released.
- doca_error_t doca_buf_get_data ( const doca_buf* buf, void** data )
-
Get the buffer's data.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- data
- The data of the buffer. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_data_len ( const doca_buf* buf, size_t* data_len )
-
Get buffer's data length.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- data_len
- The data length of the buffer. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_head ( const doca_buf* buf, void** head )
-
Get the buffer's head.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- head
- The head of the buffer. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_last_in_list ( doca_buf* buf, doca_buf** last_buf )
-
Get last DOCA Buf in linked list.
Parameters
- buf
- DOCA Buf element.
- last_buf
- The last DOCA Buf in the linked list, which may be buf.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
- doca_error_t doca_buf_get_len ( const doca_buf* buf, size_t* len )
-
Get the buffer's length.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- len
- The length of the buffer. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_list_len ( const doca_buf* buf, uint32_t* num_elements )
-
Get the number of the elements in list.
Parameters
- buf
- DOCA Buf element. Buf must be a head of a list.
- num_elements
- Number of elements in list.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_PERMITTED - if the buffer is not a head of a list.
Description
- doca_error_t doca_buf_get_next_in_list ( doca_buf* buf, doca_buf** next_buf )
-
Get next DOCA Buf in linked list.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- next_buf
- The next DOCA Buf in the linked list, *next_buf will be NULL if the no other element in the list. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_refcount ( const doca_buf* buf, uint16_t* refcount )
-
Get the reference count of the object.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- refcount
- The number of references to the object. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_inc_refcount ( doca_buf* buf, uint16_t* refcount )
-
Increase the object reference count by 1.
Parameters
- buf
- DOCA Buf element.
- refcount
- The number of references to the object before this operation took place.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - buf is the next element in some list.
- DOCA_ERROR_TOO_BIG - reference count already reached maximum value of UINT16_MAX.
Description
Note:In case of list all intermediate buffers will always have a refcount of 1. As such the reference count is managed for the head only.
- doca_error_t doca_buf_is_first_in_list ( const doca_buf* buf, uint8_t* is_first )
-
Check if provided DOCA Buf is the first element in a linked list.
Parameters
- buf
- DOCA Buf element.
- is_first
- 1 if buf is the first element, 0 otherwise.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_is_in_list ( const doca_buf* buf, uint8_t* is_in_list )
-
Check if provided DOCA Buf is a linked list.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- is_in_list
- 1 if buf is part of a linked list, 0 if it is not. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_is_last_in_list ( const doca_buf* buf, uint8_t* is_last )
-
Check if provided DOCA Buf is the last element in a linked list.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- is_last
- 1 if buf is the last element, 0 otherwise. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_reset_data_len ( doca_buf* buf )
-
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always
Description
Reset the data length to 0 (data will still point to the same location)
Data positioning: __data_len__ / \ +-----+--------------+--------------+ Before | |data | | +-----+--------------+--------------+ / data data_len = 0 / +-----+-----------------------------+ After | | | +-----+-----------------------------+ / data
- doca_error_t doca_buf_set_data ( doca_buf* buf, void* data, size_t data_len )
-
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- data
- Data address. MUST NOT BE NULL.
- data_len
- Data length.
Returns
DOCA_SUCCESS - always
Description
Set data pointer and data length
Data positioning: +-----------+-----+-----------------+ Before | |data | | +-----------+-----+-----------------+ __data_len__ / \ +-----+--------------+--------------+ After | |data | | +-----+--------------+--------------+ / data
Note:The range [data, data + data_len] must be in [head, head + len]. Otherwise undefined behavior.
- doca_error_t doca_buf_set_data_len ( doca_buf* buf, size_t data_len )
-
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- data_len
- Data length.
Returns
DOCA_SUCCESS - always
Description
Set data length
Data positioning: __data_len__ / \ +-----+--------------+--------------+ Before | |data | | +-----+--------------+--------------+ / data ____data_len____ / \ +-----+------------------+----------+ After | |data | | +-----+------------------+----------+ / data
Note:The range [data, data + data_len] must be in [head, head + len]. Otherwise undefined behavior.
- doca_error_t doca_buf_unchain_list ( doca_buf* list1, doca_buf* list2 )
-
Separate list2 from list1.
Parameters
- list1
- DOCA Buf representing list1. MUST NOT BE NULL.
- list2
- DOCA Buf representing list2, list2 should be contained in list1. list2 must be different from list1. MUST NOT BE NULL
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if list2 is not part of list1.
Description
Before: +----+ +----+ +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 |->|4 |->|5 | +----+ +----+ +----+ +----+ +----+ / list2 After: +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 | +----+ +----+ +----+ +----+ +----+ list2 -> |4 |->|5 | +----+ +----+
Note:reference count of list2 will always be 1 after unchaining
1.4.6. DOCA Device
[ DOCA Core ]
The DOCA device represents an available processing unit backed by the HW or SW implementation.
Defines
- #define DOCA_DEVINFO_IBDEV_NAME_SIZE 64
- Buffer size to hold Infiniband/RoCE device name. Including a null terminator.
- #define DOCA_DEVINFO_IFACE_NAME_SIZE 256
- Buffer size to hold network interface name. Including a null terminator.
- #define DOCA_DEVINFO_IPV4_ADDR_SIZE 4
- Length of IPv4 address.
- #define DOCA_DEVINFO_IPV6_ADDR_SIZE 16
- Length of IPv6 address.
- #define DOCA_DEVINFO_MAC_ADDR_SIZE 6
- Length of MAC address.
- #define DOCA_DEVINFO_PCI_ADDR_SIZE 13
- Buffer size to hold PCI BDF format: "XXXX:XX:XX.X". Including a null terminator.
- #define DOCA_DEVINFO_PCI_BDF_SIZE 8
- Buffer size to hold PCI BDF format: "XX:XX.X". Including a null terminator.
- #define DOCA_DEVINFO_REP_PCI_ADDR_SIZE 13
- Buffer size to hold PCI BDF format: "XXXX:XX:XX.X". Including a null terminator.
- #define DOCA_DEVINFO_REP_PCI_BDF_SIZE 8
- Buffer size to hold PCI BDF format: "XX:XX.X". Including a null terminator.
- #define DOCA_DEVINFO_REP_VUID_SIZE 128
- Buffer size to hold VUID. Including a null terminator.
- #define DOCA_DEVINFO_VUID_SIZE 128
- Buffer size to hold VUID. Including a null terminator.
Enumerations
Functions
- DOCA_STABLE doca_devinfo* doca_dev_as_devinfo ( const doca_dev* dev )
- Get local device info from device. This should be useful when wanting to query information about device after opening it, and destroying the devinfo list.
- doca_error_t doca_dev_close ( doca_dev* dev )
- Destroy allocated local device instance.
- doca_error_t doca_dev_open ( doca_devinfo* devinfo, doca_dev** dev )
- Initialize local device for use.
- DOCA_STABLE doca_devinfo_rep* doca_dev_rep_as_devinfo ( doca_dev_rep* dev_rep )
- Get representor device info from device. This should be useful when wanting to query information about device after opening it, and destroying the devinfo list.
- doca_error_t doca_dev_rep_close ( doca_dev_rep* dev )
- Destroy allocated representor device instance.
- doca_error_t doca_dev_rep_open ( doca_devinfo_rep* devinfo, doca_dev_rep** dev_rep )
- Initialize representor device for use.
- doca_error_t doca_devinfo_cap_is_hotplug_manager_supported ( const doca_devinfo* devinfo, uint8_t* is_hotplug_manager )
- Get the hotplug manager capability of a DOCA devinfo.
- doca_error_t doca_devinfo_create_list ( doca_devinfo*** dev_list, uint32_t* nb_devs )
- Creates list of all available local devices.
- doca_error_t doca_devinfo_destroy_list ( doca_devinfo** dev_list )
- Destroy list of local device info structures.
- doca_error_t doca_devinfo_get_active_rate ( const doca_devinfo* devinfo, double* active_rate )
- Get the active rate of a DOCA devinfo.
- doca_error_t doca_devinfo_get_ibdev_name ( const doca_devinfo* devinfo, char* ibdev_name, uint32_t size )
- Get the name of the IB device represented by a DOCA devinfo.
- doca_error_t doca_devinfo_get_iface_name ( const doca_devinfo* devinfo, char* iface_name, uint32_t size )
- Get the name of the ethernet interface of a DOCA devinfo.
- doca_error_t doca_devinfo_get_ipv4_addr ( const doca_devinfo* devinfo, uint8_t* ipv4_addr, uint32_t size )
- Get the IPv4 address of a DOCA devinfo.
- doca_error_t doca_devinfo_get_ipv6_addr ( const doca_devinfo* devinfo, uint8_t* ipv6_addr, uint32_t size )
- Get the IPv6 address of a DOCA devinfo.
- doca_error_t doca_devinfo_get_lid ( const doca_devinfo* devinfo, uint16_t* lid )
- Get the port LID of a DOCA devinfo.
- doca_error_t doca_devinfo_get_mac_addr ( const doca_devinfo* devinfo, uint8_t* mac_addr, uint32_t size )
- Get the MAC address of a DOCA devinfo.
- doca_error_t doca_devinfo_get_pci_addr_str ( const doca_devinfo* devinfo, char* pci_addr_str )
- Get the PCI address of a DOCA devinfo.
- doca_error_t doca_devinfo_is_equal_pci_addr ( const doca_devinfo* devinfo, const char* pci_addr_str, uint8_t* is_equal )
- Check if a PCI address belongs to a DOCA devinfo.
- doca_error_t doca_devinfo_rep_cap_is_filter_all_supported ( const doca_devinfo* devinfo, uint8_t* filter_all_supported )
- Get the representor devices discovery capability of the device.
- doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported ( const doca_devinfo* devinfo, uint8_t* filter_emulated_supported )
- Get the remote emulated device discovery capability of the device.
- doca_error_t doca_devinfo_rep_cap_is_filter_net_supported ( const doca_devinfo* devinfo, uint8_t* filter_net_supported )
- Get the remote net discovery capability of the device.
- doca_error_t doca_devinfo_rep_create_list ( doca_dev* dev, int filter, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
- Create list of available representor devices accessible by dev.
- doca_error_t doca_devinfo_rep_destroy_list ( doca_devinfo_rep** dev_list_rep )
- Destroy list of representor device info structures.
- doca_error_t doca_devinfo_rep_get_is_hotplug ( const doca_devinfo_rep* devinfo_rep, uint8_t* is_hotplug )
- Query whether the representor device is a hotplugged device.
- doca_error_t doca_devinfo_rep_get_pci_addr_str ( const doca_devinfo_rep* devinfo_rep, char* pci_addr_str )
- Get the PCI address of a DOCA devinfo_rep.
- doca_error_t doca_devinfo_rep_get_pci_func_type ( const doca_devinfo_rep* devinfo_rep, doca_pci_func_type ** pci_func_type )
- Get the PCI function type of a DOCA devinfo_rep.
- doca_error_t doca_devinfo_rep_get_vuid ( const doca_devinfo_rep* devinfo_rep, char* rep_vuid, uint32_t size )
- Get the Vendor Unique ID of a representor DOCA devinfo.
- doca_error_t doca_devinfo_rep_is_equal_pci_addr ( const doca_devinfo_rep* devinfo_rep, const char* pci_addr_str, uint8_t* is_equal )
- Check if a PCI address belongs to a DOCA devinfo_rep.
Defines
- #define DOCA_DEVINFO_IBDEV_NAME_SIZE 64
-
- #define DOCA_DEVINFO_IFACE_NAME_SIZE 256
-
- #define DOCA_DEVINFO_IPV4_ADDR_SIZE 4
-
- #define DOCA_DEVINFO_IPV6_ADDR_SIZE 16
-
- #define DOCA_DEVINFO_MAC_ADDR_SIZE 6
-
- #define DOCA_DEVINFO_PCI_ADDR_SIZE 13
-
- #define DOCA_DEVINFO_PCI_BDF_SIZE 8
-
- #define DOCA_DEVINFO_REP_PCI_ADDR_SIZE 13
-
- #define DOCA_DEVINFO_REP_PCI_BDF_SIZE 8
-
- #define DOCA_DEVINFO_REP_VUID_SIZE 128
-
- #define DOCA_DEVINFO_VUID_SIZE 128
-
Enumerations
- enum doca_devinfo_rep_filter
Representor device filter by flavor
Multiple options possible but some are mutually exclusive.
Values
- DOCA_DEVINFO_REP_FILTER_ALL = 0
- DOCA_DEVINFO_REP_FILTER_NET = 1<<1
- DOCA_DEVINFO_REP_FILTER_EMULATED = 1<<2
Functions
- DOCA_STABLE doca_devinfo* doca_dev_as_devinfo ( const doca_dev* dev )
-
Get local device info from device. This should be useful when wanting to query information about device after opening it, and destroying the devinfo list.
Parameters
- dev
- The doca device instance.
Returns
The matching doca_devinfo instance in case of success, NULL in case dev is invalid or was created by doca_rdma_bridge_open_dev_from_pd().
Description
- doca_error_t doca_dev_close ( doca_dev* dev )
-
Destroy allocated local device instance.
Parameters
- dev
- The local doca device instance.
Returns
DOCA_SUCCESS - in case of success.
- DOCA_ERROR_IN_USE - failed to deallocate device resources.
Description
Closes device or decrements its refcount by One. In case the same device was opened multiple times, then only the last call to close will attempt to destroy device.
- doca_error_t doca_dev_open ( doca_devinfo* devinfo, doca_dev** dev )
-
Initialize local device for use.
Parameters
- devinfo
- The devinfo structure of the requested device.
- dev
- Initialized local doca device instance on success. Valid on success only.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate protection domain for device.
- DOCA_ERROR_NOT_CONNECTED - failed to open device.
- DOCA_ERROR_INITIALIZATION - maximum number of open devices was exceeded.
Description
Opens device or increments its refcount by One. The device can later be used by other libraries. For every call to doca_dev_open() there should be a call to doca_dev_close().
- DOCA_STABLE doca_devinfo_rep* doca_dev_rep_as_devinfo ( doca_dev_rep* dev_rep )
-
Get representor device info from device. This should be useful when wanting to query information about device after opening it, and destroying the devinfo list.
Parameters
- dev_rep
- The representor doca device instance.
Returns
The matching doca_devinfo_rep instance in case of success, NULL in case dev_rep is invalid.
Description
- doca_error_t doca_dev_rep_close ( doca_dev_rep* dev )
-
Destroy allocated representor device instance.
Parameters
- dev
- The representor doca device instance.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_IN_USE - failed to deallocate device resources.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
- doca_error_t doca_dev_rep_open ( doca_devinfo_rep* devinfo, doca_dev_rep** dev_rep )
-
Initialize representor device for use.
Parameters
- devinfo
- The devinfo structure of the requested device.
- dev_rep
- Initialized representor doca device instance on success. Valid on success only.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory for device.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
- doca_error_t doca_devinfo_cap_is_hotplug_manager_supported ( const doca_devinfo* devinfo, uint8_t* is_hotplug_manager )
-
Get the hotplug manager capability of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- is_hotplug_manager
- 1 if the hotplug manager capability is supported, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
Description
The hotplug manager property type: uint8_t*.
- doca_error_t doca_devinfo_create_list ( doca_devinfo*** dev_list, uint32_t* nb_devs )
-
Creates list of all available local devices.
Parameters
- dev_list
- Pointer to array of pointers. Output can then be accessed as follows (*dev_list)[idx].
- nb_devs
- Number of available local devices.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate enough space.
- DOCA_ERROR_NOT_FOUND - failed to get RDMA devices list
Description
Lists information about available devices, to start using the device you first have to call doca_dev_open(), while passing an element of this list. List elements become invalid once it has been destroyed.
Note:Returned list must be destroyed using doca_devinfo_destroy_list()
- doca_error_t doca_devinfo_destroy_list ( doca_devinfo** dev_list )
-
Destroy list of local device info structures.
Parameters
- dev_list
- List to be destroyed.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_IN_USE - at least one device in the list is in a corrupted state.
Description
Destroys the list of device information, once the list has been destroyed, all elements become invalid.
- doca_error_t doca_devinfo_get_active_rate ( const doca_devinfo* devinfo, double* active_rate )
-
Get the active rate of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- active_rate
- The active rate of the given port on the device. Given in units of Gb/s.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query port rate.
Description
- doca_error_t doca_devinfo_get_ibdev_name ( const doca_devinfo* devinfo, char* ibdev_name, uint32_t size )
-
Get the name of the IB device represented by a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- ibdev_name
- The name of the IB device represented by devinfo.
- size
- The size of the input ibdev_name buffer, must be at least DOCA_DEVINFO_IBDEV_NAME_SIZE which includes the null terminating byte.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
The name of the IB device type: char[DOCA_DEVINFO_IBDEV_NAME_SIZE].
- doca_error_t doca_devinfo_get_iface_name ( const doca_devinfo* devinfo, char* iface_name, uint32_t size )
-
Get the name of the ethernet interface of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- iface_name
- The name of the ethernet interface of devinfo.
- size
- The size of the input iface_name buffer, must be at least DOCA_DEVINFO_IFACE_NAME_SIZE which includes the null terminating byte.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the interface name from the OS
Description
The name of the ethernet interface is the same as it's name in ifconfig. The name of the ethernet interface type: char[DOCA_DEVINFO_IFACE_NAME_SIZE].
- doca_error_t doca_devinfo_get_ipv4_addr ( const doca_devinfo* devinfo, uint8_t* ipv4_addr, uint32_t size )
-
Get the IPv4 address of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- ipv4_addr
- The IPv4 address of devinfo.
- size
- The size of the input ipv4_addr buffer, must be at least DOCA_DEVINFO_IPV4_ADDR_SIZE
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_FOUND - no IPv4 address was assigned
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the IPv4 address from the OS
Description
The IPv4 address type: uint8_t[DOCA_DEVINFO_IPV4_ADDR_SIZE].
- doca_error_t doca_devinfo_get_ipv6_addr ( const doca_devinfo* devinfo, uint8_t* ipv6_addr, uint32_t size )
-
Get the IPv6 address of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- ipv6_addr
- The IPv6 address of devinfo.
- size
- The size of the input ipv6_addr buffer, must be at least DOCA_DEVINFO_IPV6_ADDR_SIZE
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the IPv6 address from the OS
Description
The IPv6 address type: uint8_t[DOCA_DEVINFO_IPV6_ADDR_SIZE].
- doca_error_t doca_devinfo_get_lid ( const doca_devinfo* devinfo, uint16_t* lid )
-
Get the port LID of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- lid
- The port LID of devinfo.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query port LID.
- DOCA_ERROR_NOT_SUPPORTED - the device port's link layer is not IB.
Description
The port LID type: uint16_t *.
- doca_error_t doca_devinfo_get_mac_addr ( const doca_devinfo* devinfo, uint8_t* mac_addr, uint32_t size )
-
Get the MAC address of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- mac_addr
- The MAC address of devinfo.
- size
- The size of the input mac_addr buffer, must be at least DOCA_DEVINFO_MAC_ADDR_SIZE
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - the device port's link layer is not RoCE.
Description
The MAC address type: uint8_t[DOCA_DEVINFO_MAC_ADDR_SIZE].
- doca_error_t doca_devinfo_get_pci_addr_str ( const doca_devinfo* devinfo, char* pci_addr_str )
-
Get the PCI address of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- pci_addr_str
- The PCI address of devinfo, should be of size DOCA_DEVINFO_PCI_ADDR_SIZE at least.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the PCI address from the OS
Description
The PCI address string format is "Domain:Bus:Device.Function", such that each value is represented by HEX digits, e.g., "0000:3a:00.0"
- doca_error_t doca_devinfo_is_equal_pci_addr ( const doca_devinfo* devinfo, const char* pci_addr_str, uint8_t* is_equal )
-
Check if a PCI address belongs to a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- pci_addr_str
-
The PCI address to check, should be as one of the following formats:
- "Domain:Bus:Device.Function", e.g., "0000:3a:00.0" (size DOCA_DEVINFO_PCI_ADDR_SIZE including a null terminator).
- "Bus:Device.Function", e.g., "3a:00.0" (size DOCA_DEVINFO_PCI_BDF_SIZE including a null terminator).
- is_equal
- 1 if pci_addr_str belongs to devinfo, 0 otherwise. In case of an error, no certain value is guaranteed.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the actual PCI address from the OS for comparison.
Description
- doca_error_t doca_devinfo_rep_cap_is_filter_all_supported ( const doca_devinfo* devinfo, uint8_t* filter_all_supported )
-
Get the representor devices discovery capability of the device.
Parameters
- devinfo
- The device to query.
- filter_all_supported
- 1 if the rep list all capability is supported, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Get uint8_t value defining if the device can be used to create list of representor devices. In case true is returned, then this device supports at least one representor type. See doca_devinfo_rep_create_list(). true - device can be used with the remote list create API with filter DOCA_DEVINFO_REP_FILTER_ALL. false - providing DOCA_DEVINFO_REP_FILTER_ALL is guaranteed to fail with DOCA_ERROR_NOT_SUPPORTED.
- doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported ( const doca_devinfo* devinfo, uint8_t* filter_emulated_supported )
-
Get the remote emulated device discovery capability of the device.
Parameters
- devinfo
- The device to query.
- filter_emulated_supported
- 1 if the list emulated capability is supported, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Get uint8_t value defining if the device can be used to create list of emulated representor devices. See doca_devinfo_rep_create_list(). true - device can be used with the remote list create API with filter DOCA_DEVINFO_REP_FILTER_EMULATED. false - providing DOCA_DEVINFO_REP_FILTER_EMULATED is guaranteed to fail with DOCA_ERROR_NOT_SUPPORTED.
- doca_error_t doca_devinfo_rep_cap_is_filter_net_supported ( const doca_devinfo* devinfo, uint8_t* filter_net_supported )
-
Get the remote net discovery capability of the device.
Parameters
- devinfo
- The device to query.
- filter_net_supported
- 1 if the rep list net capability is supported, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Get uint8_t value defining if the device can be used to create list of net remote devices. See doca_devinfo_remote_list_create(). true - device can be used with the remote list create API with filter DOCA_DEV_REMOTE_FILTER_NET. false - providing DOCA_DEV_REMOTE_FILTER_NET is guaranteed to fail with DOCA_ERROR_NOT_SUPPORTED.
- doca_error_t doca_devinfo_rep_create_list ( doca_dev* dev, int filter, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
-
Create list of available representor devices accessible by dev.
Parameters
- dev
- Local device with access to representors.
- filter
- Bitmap filter of representor types. See enum doca_devinfo_rep_filter for more details.
- dev_list_rep
- Pointer to array of pointers. Output can then be accessed as follows (*dev_list_rep)[idx].
- nb_devs_rep
- Number of available representor devices.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory for list.
- DOCA_ERROR_DRIVER - Failed to query driver.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Returns all representors managed by the provided device. The provided device must be a local device. The representor may represent a network function attached to the host, or it can represent an emulated function attached to the host.
Note:Returned list must be destroyed using doca_devinfo_rep_destroy_list()
- doca_error_t doca_devinfo_rep_destroy_list ( doca_devinfo_rep** dev_list_rep )
-
Destroy list of representor device info structures.
Parameters
- dev_list_rep
- List to be destroyed.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_IN_USE - the doca_dev that created the list is in a corrupted state.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Destroy list of representor device information, once the list has been destroyed, all elements of the list are considered invalid.
- doca_error_t doca_devinfo_rep_get_is_hotplug ( const doca_devinfo_rep* devinfo_rep, uint8_t* is_hotplug )
-
Query whether the representor device is a hotplugged device.
Parameters
- devinfo_rep
- representor device info
- is_hotplug
- 1 if the representor device is a hotplugged device. 0 if representor device is statically plugged.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_devinfo_rep_get_pci_addr_str ( const doca_devinfo_rep* devinfo_rep, char* pci_addr_str )
-
Get the PCI address of a DOCA devinfo_rep.
Parameters
- devinfo_rep
- The device to query.
- pci_addr_str
- The PCI address of devinfo_rep, should be of size DOCA_DEVINFO_REP_PCI_ADDR_SIZE at least.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
- DOCA_ERROR_NO_MEMORY - not enough memory to generate the stringed PCI address.
- DOCA_ERROR_UNEXPECTED - an unexpected error occurred.
Description
The PCI address string format is "Domain:Bus:Device.Function", such that each value is represented by HEX digits, e.g., "0000:3a:00.0".
- doca_error_t doca_devinfo_rep_get_pci_func_type ( const doca_devinfo_rep* devinfo_rep, doca_pci_func_type ** pci_func_type )
-
Get the PCI function type of a DOCA devinfo_rep.
Parameters
- devinfo_rep
- The representor of device to query.
- pci_func_type
- The PCI function type of the devinfo_rep.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
The pci function type: enum doca_pci_func_type.
- doca_error_t doca_devinfo_rep_get_vuid ( const doca_devinfo_rep* devinfo_rep, char* rep_vuid, uint32_t size )
-
Get the Vendor Unique ID of a representor DOCA devinfo.
Parameters
- devinfo_rep
- The representor device to query.
- rep_vuid
- The Vendor Unique ID of devinfo_rep.
- size
- The size of the vuid buffer, including the terminating null byte ('').
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
The Vendor Unique ID is used as stable ID of a VF/PF. The Vendor Unique ID type: char[DOCA_DEVINFO_VUID_SIZE].
- doca_error_t doca_devinfo_rep_is_equal_pci_addr ( const doca_devinfo_rep* devinfo_rep, const char* pci_addr_str, uint8_t* is_equal )
-
Check if a PCI address belongs to a DOCA devinfo_rep.
Parameters
- devinfo_rep
- The representor of device to query.
- pci_addr_str
-
The PCI address to check, should be as one of the following formats:
- "Domain:Bus:Device.Function", e.g., "0000:3a:00.0" (size DOCA_DEVINFO_PCI_ADDR_SIZE including a null terminator).
- "Bus:Device.Function", e.g., "3a:00.0" (size DOCA_DEVINFO_PCI_BDF_SIZE including a null terminator).
- is_equal
- 1 if pci_addr_str belongs to devinfo_rep, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
- DOCA_ERROR_NO_MEMORY - not enough memory to generate devinfo_rep PCI address for comparison.
- DOCA_ERROR_UNEXPECTED - an unexpected error occurred.
Description
1.4.7. DOCA DPDK Bridge
[ DOCA Core ]
DOCA API for integration with DPDK.
Functions
- doca_error_t doca_dpdk_cap_is_rep_port_supported ( const doca_devinfo* devinfo, uint8_t* is_rep_port_supported )
- Check if the device supports representors for port_probe.
- doca_error_t doca_dpdk_get_first_port_id ( const doca_dev* dev, uint16_t* port_id )
- Return the first DPDK port id associated to a DOCA device. Assumption is that the doca device that was probed using doca_dpdk_port_probe().
- doca_error_t doca_dpdk_mempool_create ( const rte_mempool* mbuf_pool, doca_dpdk_mempool** mempool_out )
- Create a DOCA DPDK memory pool, with ability to convert rte_mbuf to doca_buf Expected flow is as follows: Control path: // Create the memory pool based on a DPDK memory pool doca_dpdk_mempool_create() // Add 1 or more DOCA devices doca_dpdk_mempool_dev_add() // Set permission level across all devices (default=LOCAL_READ/WRITE) doca_dpdk_mempool_set_permissions() // Start the pool doca_dpdk_mempool_start().
- doca_error_t doca_dpdk_mempool_destroy ( doca_dpdk_mempool* mempool )
- Destroy a DOCA DPDK memory pool Before destroying need to make sure that all buffers that were acquired using doca_dpdk_mempool_mbuf_to_buf() have been released This must be called before destroying the originating DPDK mempool.
- doca_error_t doca_dpdk_mempool_dev_add ( doca_dpdk_mempool* mempool, doca_dev* dev )
- Add a DOCA device to the mempool This allows the DOCA bufs that are retrieved from the pool to be compatible with other DOCA libraries, that use the DOCA device.
- doca_error_t doca_dpdk_mempool_mbuf_to_buf ( doca_dpdk_mempool* mempool, doca_buf_inventory* inventory, rte_mbuf* mbuf, doca_buf** buf )
- Acquire a doca_buf based on an rte_mbuf The acquired doca_buf attempts to be as similar as possible to the rte_mbuf Level of support:After acquiring the buffer the refcount of the mbuf is increasedIn case mbuf is indirect refcount of the direct buffer is increased instead and metadata of the indirectmbuf is used where metadata refers to the mbuf's data offset, data length, and next pointerIn case the acquired doca_buf is duplicated, then the duplication process will increase the refcount of the direct mbufs as well Limitations:The mbuf must represent memory from the originating rte_mempool associated with this mempool and mbuf cannot be created from external memoryAny changes made to the rte_mbuf after the acquisition will not affect the doca_bufAny changes made to the doca_buf after acquisition will not affect the rte_mbuf.
- doca_error_t doca_dpdk_mempool_set_permissions ( doca_dpdk_mempool* mempool, uint32_t access_mask )
- Set the read/write permissions of the memory for devices Default: DOCA_ACCESS_FLAG_LOCAL_READ_WRITE Setting the permission will set the access that the added devices have over the memory of the DOCA buffers.
- doca_error_t doca_dpdk_mempool_start ( doca_dpdk_mempool* mempool )
- Start the DOCA DPDK memory pool Operations that must be done before start: Adding at least 1 device - doca_dpdk_mempool_dev_add() Optionally, setting the permission level - doca_dpdk_mempool_set_permissions() Operations that are allowed after start: Acquiring a matching doca_buf from an rte_mbuf - doca_dpdk_mempool_mbuf_to_buf() Destroying the DOCA DPDK memory pool - doca_dpdk_mempool_destroy().
- doca_error_t doca_dpdk_port_as_dev ( uint16_t port_id, doca_dev** dev )
- Return the DOCA device associated with a DPDK port.
- doca_error_t doca_dpdk_port_probe ( doca_dev* dev, const char* devargs )
- Attach a DPDK port specified by DOCA device.
Functions
- doca_error_t doca_dpdk_cap_is_rep_port_supported ( const doca_devinfo* devinfo, uint8_t* is_rep_port_supported )
-
Check if the device supports representors for port_probe.
Parameters
- devinfo
- The DOCA device information
- is_rep_port_supported
- 1 if the device supports representors for port_probe, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_DRIVER - failed to query device capabilities.
Description
Note:-
This function should be used before calling doca_dpdk_port_probe() in case representores are required in devargs.
-
This function should be called with root privileges.
- doca_error_t doca_dpdk_get_first_port_id ( const doca_dev* dev, uint16_t* port_id )
-
Return the first DPDK port id associated to a DOCA device. Assumption is that the doca device that was probed using doca_dpdk_port_probe().
Parameters
- dev
- DOCA device object
- port_id
- DPDK port id
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NOT_FOUND - No DPDK port matches the DOCA device.
Description
- doca_error_t doca_dpdk_mempool_create ( const rte_mempool* mbuf_pool, doca_dpdk_mempool** mempool_out )
-
Create a DOCA DPDK memory pool, with ability to convert rte_mbuf to doca_buf Expected flow is as follows: Control path: // Create the memory pool based on a DPDK memory pool doca_dpdk_mempool_create() // Add 1 or more DOCA devices doca_dpdk_mempool_dev_add() // Set permission level across all devices (default=LOCAL_READ/WRITE) doca_dpdk_mempool_set_permissions() // Start the pool doca_dpdk_mempool_start().
Parameters
- mbuf_pool
- A DPDK pool of mbufs, created with rte_pktmbuf_pool_create*()
- mempool_out
- The newly created DOCA DPDK memory pool in case of success
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
Description
Data path: // Convert DPDK mbuf to DOCA buf doca_dpdk_mempool_mbuf_to_buf() // Optionally release DPDK mbuf back to the DPDK pool in case it is no longer needed rte_pktmbuf_free() // Release the doca_buf once finished with it doca_buf_refcnt_rm()
- doca_error_t doca_dpdk_mempool_destroy ( doca_dpdk_mempool* mempool )
-
Destroy a DOCA DPDK memory pool Before destroying need to make sure that all buffers that were acquired using doca_dpdk_mempool_mbuf_to_buf() have been released This must be called before destroying the originating DPDK mempool.
Parameters
- mempool
- The DOCA DPDK memory pool to destroy
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_IN_USE - at least 1 DOCA buf has been acquired and still not released
Description
Note:: Once destroyed the originating DPDK memory pool, and any allocated RTE mbuf are not affected
- doca_error_t doca_dpdk_mempool_dev_add ( doca_dpdk_mempool* mempool, doca_dev* dev )
-
Add a DOCA device to the mempool This allows the DOCA bufs that are retrieved from the pool to be compatible with other DOCA libraries, that use the DOCA device.
Parameters
- mempool
- The DOCA DPDK memory pool to add the device to
- dev
- A DOCA device instance
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NO_MEMORY - out of memory.
Description
Note:Once device has been added it can't be removed. Only option is to destroy the doca_dpdk_mempool
- doca_error_t doca_dpdk_mempool_mbuf_to_buf ( doca_dpdk_mempool* mempool, doca_buf_inventory* inventory, rte_mbuf* mbuf, doca_buf** buf )
-
Acquire a doca_buf based on an rte_mbuf The acquired doca_buf attempts to be as similar as possible to the rte_mbuf Level of support:After acquiring the buffer the refcount of the mbuf is increasedIn case mbuf is indirect refcount of the direct buffer is increased instead and metadata of the indirectmbuf is used where metadata refers to the mbuf's data offset, data length, and next pointerIn case the acquired doca_buf is duplicated, then the duplication process will increase the refcount of the direct mbufs as well Limitations:The mbuf must represent memory from the originating rte_mempool associated with this mempool and mbuf cannot be created from external memoryAny changes made to the rte_mbuf after the acquisition will not affect the doca_bufAny changes made to the doca_buf after acquisition will not affect the rte_mbuf.
Parameters
- mempool
- The DOCA DPDK memory pool created using the rte_mempool that created the rte_mbuf
- inventory
- A DOCA Buffer Inventory to be used for allocating the doca_buf. Must be started and have enough space
- mbuf
- A DPDK buffer that references memory that is within the RTE mempool associated with the DOCA DPDK mempool
- buf
- A DOCA buffer that references the same memory as the provided mbuf
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NO_MEMORY - The inventory does not have enough free elements.
Description
rte_mbuf chain before calling this method: buf_addr __data_len__ \ / \ +----------+--------------+----------+ +----------+--------------+----------+ | headroom | data | tailroom | ----> | headroom | data | tailroom | +----------+--------------+----------+ +----------+--------------+----------+ doca_buf created after calling this method: head __data_len__ \ / \ +----------+--------------+----------+ +----------+--------------+----------+ | | data | | ----> | | data | | +----------+--------------+----------+ +----------+--------------+----------+
Note:: Destroying the doca_buf using 'doca_buf_dec_refcount()' will call 'rte_pktmbuf_free_seg()' on each direct mbuf
- doca_error_t doca_dpdk_mempool_set_permissions ( doca_dpdk_mempool* mempool, uint32_t access_mask )
-
Set the read/write permissions of the memory for devices Default: DOCA_ACCESS_FLAG_LOCAL_READ_WRITE Setting the permission will set the access that the added devices have over the memory of the DOCA buffers.
Parameters
- mempool
- The DOCA DPDK memory pool
- access_mask
- The access permissions - see 'enum doca_access_flag'
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input or bad access flag combination.
Description
Note:: setting DOCA_ACCESS_FLAG_DPU_* flags is invalid
- doca_error_t doca_dpdk_mempool_start ( doca_dpdk_mempool* mempool )
-
Start the DOCA DPDK memory pool Operations that must be done before start: Adding at least 1 device - doca_dpdk_mempool_dev_add() Optionally, setting the permission level - doca_dpdk_mempool_set_permissions() Operations that are allowed after start: Acquiring a matching doca_buf from an rte_mbuf - doca_dpdk_mempool_mbuf_to_buf() Destroying the DOCA DPDK memory pool - doca_dpdk_mempool_destroy().
Parameters
- mempool
- The DOCA DPDK memory pool to add the device to
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NO_MEMORY - out of memory.
Description
- doca_error_t doca_dpdk_port_as_dev ( uint16_t port_id, doca_dev** dev )
-
Return the DOCA device associated with a DPDK port.
Parameters
- port_id
- The DPDK port identifier to get the associated DOCA device for.
- dev
- The DPDK DOCA device associated with the given DPDK port identifier.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NOT_FOUND - in case there is no such DPDK port associated with a DOCA device.
Description
- doca_error_t doca_dpdk_port_probe ( doca_dev* dev, const char* devargs )
-
Attach a DPDK port specified by DOCA device.
Parameters
- dev
- DOCA device to attach PDK port for.
- devargs
- DPDK devargs style - must NOT contains the device's PCI address ([domain:]bus:devid.func).
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_DRIVER - in case of DPDK error during DPDK port attach.
- DOCA_ERROR_NO_MEMORY - in case of memory allocation failure.
Description
Thread unsafe API.
It's the user responsibility to set the DPDK EAL initialization to skip probing the PCI device associated with the given DOCA device to prevent EAL from using it.
No initialization is done for the probed PDPK port and the port is not started.
1.4.8. DOCA Error
[ DOCA Core ]
DOCA Error provides information regarding different errors caused while using the DOCA libraries.
Defines
- #define DOCA_ERROR_PROPAGATE ( r, t )
- Save the first encountered doca_error_t.
- #define DOCA_IS_ERROR ( r )
- Compiler optimized macro to check if we have an error.
Enumerations
- enum doca_error_t
- DOCA API return codes.
Functions
- const DOCA_STABLE char* doca_error_get_descr ( doca_error_t error )
- Returns the description string of an error code.
- const DOCA_STABLE char* doca_error_get_name ( doca_error_t error )
- Returns the string representation of an error code name.
Defines
- #define DOCA_ERROR_PROPAGATE ( r, t )
Updates the return value variable r to hold the first error that we encountered.
Value
do { \ if (r == DOCA_SUCCESS) \ r = t; \ } while (0)
- #define DOCA_IS_ERROR ( r )
Used in cases where error is unlikely to happen.
Value
doca_unlikely((r) != DOCA_SUCCESS)
Enumerations
- enum doca_error_t
-
Values
- DOCA_SUCCESS = 0
- Success
- DOCA_ERROR_UNKNOWN = 1
- Unknown error
- DOCA_ERROR_NOT_PERMITTED = 2
- Operation not permitted
- DOCA_ERROR_IN_USE = 3
- Resource already in use
- DOCA_ERROR_NOT_SUPPORTED = 4
- Operation not supported
- DOCA_ERROR_AGAIN = 5
- Resource temporarily unavailable, try again
- DOCA_ERROR_INVALID_VALUE = 6
- Invalid input
- DOCA_ERROR_NO_MEMORY = 7
- Memory allocation failure
- DOCA_ERROR_INITIALIZATION = 8
- Resource initialization failure
- DOCA_ERROR_TIME_OUT = 9
- Timer expired waiting for resource
- DOCA_ERROR_SHUTDOWN = 10
- Shut down in process or completed
- DOCA_ERROR_CONNECTION_RESET = 11
- Connection reset by peer
- DOCA_ERROR_CONNECTION_ABORTED = 12
- Connection aborted
- DOCA_ERROR_CONNECTION_INPROGRESS = 13
- Connection in progress
- DOCA_ERROR_NOT_CONNECTED = 14
- Not Connected
- DOCA_ERROR_NO_LOCK = 15
- Unable to acquire required lock
- DOCA_ERROR_NOT_FOUND = 16
- Resource Not Found
- DOCA_ERROR_IO_FAILED = 17
- Input/Output Operation Failed
- DOCA_ERROR_BAD_STATE = 18
- Bad State
- DOCA_ERROR_UNSUPPORTED_VERSION = 19
- Unsupported version
- DOCA_ERROR_OPERATING_SYSTEM = 20
- Operating system call failure
- DOCA_ERROR_DRIVER = 21
- DOCA Driver call failure
- DOCA_ERROR_UNEXPECTED = 22
- An unexpected scenario was detected
- DOCA_ERROR_ALREADY_EXIST = 23
- Resource already exist
- DOCA_ERROR_FULL = 24
- No more space in resource
- DOCA_ERROR_EMPTY = 25
- No entry is available in resource
- DOCA_ERROR_IN_PROGRESS = 26
- Operation is in progress
- DOCA_ERROR_TOO_BIG = 27
- Requested operation too big to be contained
Functions
- const DOCA_STABLE char* doca_error_get_descr ( doca_error_t error )
-
Returns the description string of an error code.
Parameters
- error
- - Error code to convert to description string.
Returns
char* pointer to a NULL-terminated string.
Description
This function returns the description string of an error code. If the error code is not recognized, "unrecognized error code" is returned.
- const DOCA_STABLE char* doca_error_get_name ( doca_error_t error )
-
Returns the string representation of an error code name.
Parameters
- error
- - Error code to convert to string.
Returns
char* pointer to a NULL-terminated string.
Description
Returns a string containing the name of an error code in the enum. If the error code is not recognized, "unrecognized error code" is returned.
1.4.12. DOCA RDMA Bridge
[ DOCA Core ]
DOCA RDMA bridge.
Defines
- #define UM_ENOMEM 12
- Encoding of the ENOMEM error.
- #define UM_MAX_ERRNO 999
- Maximum possible value for errno, to use by encoding error in a pointer address.
- #define __DEVX_IFC_H__
- Defining __DEVX_IFC_H__ discards the definitions in \MLNX_WinOF2_DevX_SDK\inc\mlx5_ifc_devx.h that is included by the WinOF header files below.
Typedefs
- typedef uint16_t __be16
- typedef uint32_t __be32
- typedef uint64_t __be64
- typedef uint16_t u16
- typedef uint32_t u32
- typedef uint64_t u64
Functions
- doca_error_t doca_rdma_bridge_get_buf_mkey ( const doca_buf* buf, doca_dev* dev, uint32_t* mkey )
- Get lkey with doca_access_flag access for a DOCA buffer of a DOCA device.
- doca_error_t doca_rdma_bridge_get_dev_pd ( const doca_dev* dev, ibv_pd** pd )
- Get the protection domain associated with a DOCA device.
- doca_error_t doca_rdma_bridge_open_dev_from_pd ( ibv_pd* pd, doca_dev** dev )
- Open a DOCA device using an ibv_pd.
Defines
Typedefs
- typedef uint16_t __be16
Unsigned 16-bit integer in Big Endian
- typedef uint32_t __be32
Unsigned 32-bit integer in Big Endian
- typedef uint64_t __be64
Unsigned 64-bit integer in Big Endian
- typedef uint16_t u16
Unsigned 16-bit integer
- typedef uint32_t u32
Unsigned 32-bit integer
- typedef uint64_t u64
Unsigned 64-bit integer
Functions
- doca_error_t doca_rdma_bridge_get_buf_mkey ( const doca_buf* buf, doca_dev* dev, uint32_t* mkey )
-
Get lkey with doca_access_flag access for a DOCA buffer of a DOCA device.
Parameters
- buf
- The DOCA buffer to get lkey for. MUST NOT BE NULL.
- dev
- The DOCA device to get lkey for. MUST NOT BE NULL.
- mkey
- The returned MKey. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if cannot find mkey by the given device.
- DOCA_ERROR_NOT_SUPPORTED - if the given access flags is not supported
Description
Note:Access of mkey is defined by the mmap where buf was created.
- doca_error_t doca_rdma_bridge_get_dev_pd ( const doca_dev* dev, ibv_pd** pd )
-
Get the protection domain associated with a DOCA device.
Parameters
- dev
- DOCA device to get the pd from.
- pd
- The protection-domain associated with the given DOCA device.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_BAD_STATE - in case the device's pd is not valid (bad state)
Description
- doca_error_t doca_rdma_bridge_open_dev_from_pd ( ibv_pd* pd, doca_dev** dev )
-
Open a DOCA device using an ibv_pd.
Parameters
- pd
- A protection domain that is not associated with any DOCA device
- dev
- A newly created DOCA device with same protection domain as 'pd'
Returns
DOCA_SUCCESS - in case of success
Description
Always prefer using a DOCA device obtained from doca_devinfo_create_list() This call will fail if PD was acquired by DOCA through doca_devinfo_create_list() and then doca_rdma_bridge_get_dev_pd()
This API should be used only to bridge between rdma-core and DOCA, to allow them to share memory registrations E.g., application already has logic that utilizes an ibv_pd, to read and write memory using RDMA, and wants to extend the logic by using libraries in DOCA, but such libraries will require a doca_dev and doca_buf instead of an ibv_pd and mkey in order to read write same memory. Then this method can be used to get a doca_dev that can be added to a doca_mmap, such that any doca_buf created from the doca_mmap can yield mkeys that are associated with the same ibv_pd using doca_rdma_bridge_get_buf_mkey()
For reference: doca_dev - is parallel to an ibv_pd doca_buf - is parallel to an ibv_mr registered on multiple devices doca_mmap - is parallel to creating an ibv_mr for multiple devices
The only APIs that are supported for the newly created device:
1.4.14. DOCA Types
[ DOCA Core ]
DOCA Types introduces types that are common for many libraries.
Classes
-
union doca_data
- Convenience type for representing opaque data.
-
struct doca_gather_list
- Struct to represent a gather list.
Defines
- #define DOCA_GID_BYTE_LENGTH 16
- Specifies the length of a GID (Global ID) in bytes.
- #define doca_event_invalid_handle INVALID_HANDLE_VALUE
Typedefs
- typedef uint16_t doca_be16_t
- Declare DOCA endianity types.
- typedef uint32_t doca_be32_t
- typedef uint64_t doca_be64_t
- typedef void * doca_event_handle_t
- typedef doca_event_handle_t doca_notification_handle_t
Enumerations
- enum doca_access_flag
- Specifies the permission level for DOCA buffer.
- enum doca_eth_wait_on_time_type
- Type of wait on time the network card can support.
- enum doca_gpu_mem_type
- Type of memory the GPUNetIO library can allocate.
- enum doca_mtu_size
- MTU size in bytes.
- enum doca_pci_func_type
- Specifies the PCI function type for DOCA representor device.
Defines
- #define DOCA_GID_BYTE_LENGTH 16
-
- #define doca_event_invalid_handle INVALID_HANDLE_VALUE
Represents invalid handle value
Typedefs
- typedef uint16_t doca_be16_t
Declare DOCA endianity types. Unsigned 16-bit integer in Big Endian
- typedef uint32_t doca_be32_t
Unsigned 32-bit integer in Big Endian
- typedef uint64_t doca_be64_t
Unsigned 64-bit integer in Big Endian
- typedef void * doca_event_handle_t
Used for windows HANDLE or IOCompletionPort
- typedef doca_event_handle_t doca_notification_handle_t
Type alias used with progress engine
Enumerations
- enum doca_access_flag
Can be used with doca_mmap_set_permissions() to set permission level. A few notes: DOCA_ACCESS_FLAG_PCI_READ_ONLY and DOCA_ACCESS_FLAG_PCI_READ_WRITE are mutually exclusive Buffer can always be read locally by local device, regardless of set permissions local device - doca_dev running in the same process of the mmap remote device - doca_dev running on a different process on a remote machine DPU device - doca_dev running on a process on the DPU OS. This is only relevant when local process is running on HOST. In case local process is running on DPU the doca_dev is considered a local device.
Values
- DOCA_ACCESS_FLAG_LOCAL_READ_ONLY = 0
- DOCA_ACCESS_FLAG_LOCAL_READ_WRITE = (1<<0)
- DOCA_ACCESS_FLAG_RDMA_READ = (1<<1)
- DOCA_ACCESS_FLAG_RDMA_WRITE = (1<<2)
- DOCA_ACCESS_FLAG_RDMA_ATOMIC = (1<<3)
- DOCA_ACCESS_FLAG_PCI_READ_ONLY = (1<<4)
- DOCA_ACCESS_FLAG_PCI_READ_WRITE = (1<<5)
- Allows reading buffer by device on same PCI but prevents write. See doca_mmap_export_pci()
- DOCA_ACCESS_FLAG_PCI_RELAXED_ORDERING = (1<<6)
- Allows reading and writing to buffer by a device on same PCI. See doca_mmap_export_pci()
- enum doca_eth_wait_on_time_type
-
Values
- DOCA_ETH_WAIT_ON_TIME_TYPE_NONE = 0
- DOCA_ETH_WAIT_ON_TIME_TYPE_NATIVE = 1
- DOCA_ETH_WAIT_ON_TIME_TYPE_DPDK = 2
- enum doca_gpu_mem_type
-
Values
- DOCA_GPU_MEM_TYPE_GPU = 0
- DOCA_GPU_MEM_TYPE_GPU_CPU = 1
- DOCA_GPU_MEM_TYPE_CPU_GPU = 2
- enum doca_mtu_size
-
Values
- DOCA_MTU_SIZE_256_BYTES = 0x0
- DOCA_MTU_SIZE_512_BYTES = 0x1
- DOCA_MTU_SIZE_1K_BYTES = 0x2
- DOCA_MTU_SIZE_2K_BYTES = 0x3
- DOCA_MTU_SIZE_4K_BYTES = 0x4
- DOCA_MTU_SIZE_RAW_ETHERNET = 0x5
- enum doca_pci_func_type
-
Values
- DOCA_PCI_FUNC_TYPE_PF = 0
- DOCA_PCI_FUNC_TYPE_VF
- DOCA_PCI_FUNC_TYPE_SF
1.4.2. DOCA Buffer
[ DOCA Core ]
The DOCA Buffer is used for reference data. It holds the information on a memory region that belongs to a DOCA memory map, and its descriptor is allocated from DOCA Buffer Inventory.
Functions
- doca_error_t doca_buf_chain_list ( doca_buf* list1, doca_buf* list2 )
- Append list2 to list1.
- doca_error_t doca_buf_dec_refcount ( doca_buf* buf, uint16_t* refcount )
- Decrease the object reference count by 1, if 0 reached, return the element back to the inventory.
- doca_error_t doca_buf_get_data ( const doca_buf* buf, void** data )
- Get the buffer's data.
- doca_error_t doca_buf_get_data_len ( const doca_buf* buf, size_t* data_len )
- Get buffer's data length.
- doca_error_t doca_buf_get_head ( const doca_buf* buf, void** head )
- Get the buffer's head.
- doca_error_t doca_buf_get_last_in_list ( doca_buf* buf, doca_buf** last_buf )
- Get last DOCA Buf in linked list.
- doca_error_t doca_buf_get_len ( const doca_buf* buf, size_t* len )
- Get the buffer's length.
- doca_error_t doca_buf_get_list_len ( const doca_buf* buf, uint32_t* num_elements )
- Get the number of the elements in list.
- doca_error_t doca_buf_get_next_in_list ( doca_buf* buf, doca_buf** next_buf )
- Get next DOCA Buf in linked list.
- doca_error_t doca_buf_get_refcount ( const doca_buf* buf, uint16_t* refcount )
- Get the reference count of the object.
- doca_error_t doca_buf_inc_refcount ( doca_buf* buf, uint16_t* refcount )
- Increase the object reference count by 1.
- doca_error_t doca_buf_is_first_in_list ( const doca_buf* buf, uint8_t* is_first )
- Check if provided DOCA Buf is the first element in a linked list.
- doca_error_t doca_buf_is_in_list ( const doca_buf* buf, uint8_t* is_in_list )
- Check if provided DOCA Buf is a linked list.
- doca_error_t doca_buf_is_last_in_list ( const doca_buf* buf, uint8_t* is_last )
- Check if provided DOCA Buf is the last element in a linked list.
- doca_error_t doca_buf_reset_data_len ( doca_buf* buf )
- doca_error_t doca_buf_set_data ( doca_buf* buf, void* data, size_t data_len )
- doca_error_t doca_buf_set_data_len ( doca_buf* buf, size_t data_len )
- doca_error_t doca_buf_unchain_list ( doca_buf* list1, doca_buf* list2 )
- Separate list2 from list1.
Functions
- doca_error_t doca_buf_chain_list ( doca_buf* list1, doca_buf* list2 )
-
Append list2 to list1.
Parameters
- list1
- DOCA Buf representing list1. MUST NOT BE NULL AND MUST BE HEAD OF LIST.
- list2
- DOCA Buf representing list2. MUST NOT BE NULL AND MUST BE HEAD OF LIST. must have a refcount of 1
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - if list2 has a reference count that is not 1
Description
Before: +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 | +----+ +----+ +----+ +----+ +----+ list2 -> |4 |->|5 | +----+ +----+ After: +----+ +----+ +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 |->|4 |->|5 | +----+ +----+ +----+ +----+ +----+ / list2
- doca_error_t doca_buf_dec_refcount ( doca_buf* buf, uint16_t* refcount )
-
Decrease the object reference count by 1, if 0 reached, return the element back to the inventory.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- refcount
- The number of references to the object before this operation took place. Can be NULL.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - buf is the next element in some list.
- DOCA_ERROR_BAD_STATE - reference count is already 0.
Description
When refcont 0 reached, all related resources should be released. For example if the element points into some mmap its state will be adjusted accordingly.
Note:In case of list if head refcount reaches 0, then all buffers in the list will be released.
- doca_error_t doca_buf_get_data ( const doca_buf* buf, void** data )
-
Get the buffer's data.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- data
- The data of the buffer. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_data_len ( const doca_buf* buf, size_t* data_len )
-
Get buffer's data length.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- data_len
- The data length of the buffer. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_head ( const doca_buf* buf, void** head )
-
Get the buffer's head.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- head
- The head of the buffer. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_last_in_list ( doca_buf* buf, doca_buf** last_buf )
-
Get last DOCA Buf in linked list.
Parameters
- buf
- DOCA Buf element.
- last_buf
- The last DOCA Buf in the linked list, which may be buf.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
- doca_error_t doca_buf_get_len ( const doca_buf* buf, size_t* len )
-
Get the buffer's length.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- len
- The length of the buffer. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_list_len ( const doca_buf* buf, uint32_t* num_elements )
-
Get the number of the elements in list.
Parameters
- buf
- DOCA Buf element. Buf must be a head of a list.
- num_elements
- Number of elements in list.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_PERMITTED - if the buffer is not a head of a list.
Description
- doca_error_t doca_buf_get_next_in_list ( doca_buf* buf, doca_buf** next_buf )
-
Get next DOCA Buf in linked list.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- next_buf
- The next DOCA Buf in the linked list, *next_buf will be NULL if the no other element in the list. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_get_refcount ( const doca_buf* buf, uint16_t* refcount )
-
Get the reference count of the object.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- refcount
- The number of references to the object. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_inc_refcount ( doca_buf* buf, uint16_t* refcount )
-
Increase the object reference count by 1.
Parameters
- buf
- DOCA Buf element.
- refcount
- The number of references to the object before this operation took place.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - buf is the next element in some list.
- DOCA_ERROR_TOO_BIG - reference count already reached maximum value of UINT16_MAX.
Description
Note:In case of list all intermediate buffers will always have a refcount of 1. As such the reference count is managed for the head only.
- doca_error_t doca_buf_is_first_in_list ( const doca_buf* buf, uint8_t* is_first )
-
Check if provided DOCA Buf is the first element in a linked list.
Parameters
- buf
- DOCA Buf element.
- is_first
- 1 if buf is the first element, 0 otherwise.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_is_in_list ( const doca_buf* buf, uint8_t* is_in_list )
-
Check if provided DOCA Buf is a linked list.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- is_in_list
- 1 if buf is part of a linked list, 0 if it is not. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_is_last_in_list ( const doca_buf* buf, uint8_t* is_last )
-
Check if provided DOCA Buf is the last element in a linked list.
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- is_last
- 1 if buf is the last element, 0 otherwise. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always.
Description
- doca_error_t doca_buf_reset_data_len ( doca_buf* buf )
-
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - always
Description
Reset the data length to 0 (data will still point to the same location)
Data positioning: __data_len__ / \ +-----+--------------+--------------+ Before | |data | | +-----+--------------+--------------+ / data data_len = 0 / +-----+-----------------------------+ After | | | +-----+-----------------------------+ / data
- doca_error_t doca_buf_set_data ( doca_buf* buf, void* data, size_t data_len )
-
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- data
- Data address. MUST NOT BE NULL.
- data_len
- Data length.
Returns
DOCA_SUCCESS - always
Description
Set data pointer and data length
Data positioning: +-----------+-----+-----------------+ Before | |data | | +-----------+-----+-----------------+ __data_len__ / \ +-----+--------------+--------------+ After | |data | | +-----+--------------+--------------+ / data
Note:The range [data, data + data_len] must be in [head, head + len]. Otherwise undefined behavior.
- doca_error_t doca_buf_set_data_len ( doca_buf* buf, size_t data_len )
-
Parameters
- buf
- DOCA Buf element. MUST NOT BE NULL.
- data_len
- Data length.
Returns
DOCA_SUCCESS - always
Description
Set data length
Data positioning: __data_len__ / \ +-----+--------------+--------------+ Before | |data | | +-----+--------------+--------------+ / data ____data_len____ / \ +-----+------------------+----------+ After | |data | | +-----+------------------+----------+ / data
Note:The range [data, data + data_len] must be in [head, head + len]. Otherwise undefined behavior.
- doca_error_t doca_buf_unchain_list ( doca_buf* list1, doca_buf* list2 )
-
Separate list2 from list1.
Parameters
- list1
- DOCA Buf representing list1. MUST NOT BE NULL.
- list2
- DOCA Buf representing list2, list2 should be contained in list1. list2 must be different from list1. MUST NOT BE NULL
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if list2 is not part of list1.
Description
Before: +----+ +----+ +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 |->|4 |->|5 | +----+ +----+ +----+ +----+ +----+ / list2 After: +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 | +----+ +----+ +----+ +----+ +----+ list2 -> |4 |->|5 | +----+ +----+
Note:reference count of list2 will always be 1 after unchaining
1.4.6. DOCA Device
[ DOCA Core ]
The DOCA device represents an available processing unit backed by the HW or SW implementation.
Defines
- #define DOCA_DEVINFO_IBDEV_NAME_SIZE 64
- Buffer size to hold Infiniband/RoCE device name. Including a null terminator.
- #define DOCA_DEVINFO_IFACE_NAME_SIZE 256
- Buffer size to hold network interface name. Including a null terminator.
- #define DOCA_DEVINFO_IPV4_ADDR_SIZE 4
- Length of IPv4 address.
- #define DOCA_DEVINFO_IPV6_ADDR_SIZE 16
- Length of IPv6 address.
- #define DOCA_DEVINFO_MAC_ADDR_SIZE 6
- Length of MAC address.
- #define DOCA_DEVINFO_PCI_ADDR_SIZE 13
- Buffer size to hold PCI BDF format: "XXXX:XX:XX.X". Including a null terminator.
- #define DOCA_DEVINFO_PCI_BDF_SIZE 8
- Buffer size to hold PCI BDF format: "XX:XX.X". Including a null terminator.
- #define DOCA_DEVINFO_REP_PCI_ADDR_SIZE 13
- Buffer size to hold PCI BDF format: "XXXX:XX:XX.X". Including a null terminator.
- #define DOCA_DEVINFO_REP_PCI_BDF_SIZE 8
- Buffer size to hold PCI BDF format: "XX:XX.X". Including a null terminator.
- #define DOCA_DEVINFO_REP_VUID_SIZE 128
- Buffer size to hold VUID. Including a null terminator.
- #define DOCA_DEVINFO_VUID_SIZE 128
- Buffer size to hold VUID. Including a null terminator.
Enumerations
Functions
- DOCA_STABLE doca_devinfo* doca_dev_as_devinfo ( const doca_dev* dev )
- Get local device info from device. This should be useful when wanting to query information about device after opening it, and destroying the devinfo list.
- doca_error_t doca_dev_close ( doca_dev* dev )
- Destroy allocated local device instance.
- doca_error_t doca_dev_open ( doca_devinfo* devinfo, doca_dev** dev )
- Initialize local device for use.
- DOCA_STABLE doca_devinfo_rep* doca_dev_rep_as_devinfo ( doca_dev_rep* dev_rep )
- Get representor device info from device. This should be useful when wanting to query information about device after opening it, and destroying the devinfo list.
- doca_error_t doca_dev_rep_close ( doca_dev_rep* dev )
- Destroy allocated representor device instance.
- doca_error_t doca_dev_rep_open ( doca_devinfo_rep* devinfo, doca_dev_rep** dev_rep )
- Initialize representor device for use.
- doca_error_t doca_devinfo_cap_is_hotplug_manager_supported ( const doca_devinfo* devinfo, uint8_t* is_hotplug_manager )
- Get the hotplug manager capability of a DOCA devinfo.
- doca_error_t doca_devinfo_create_list ( doca_devinfo*** dev_list, uint32_t* nb_devs )
- Creates list of all available local devices.
- doca_error_t doca_devinfo_destroy_list ( doca_devinfo** dev_list )
- Destroy list of local device info structures.
- doca_error_t doca_devinfo_get_active_rate ( const doca_devinfo* devinfo, double* active_rate )
- Get the active rate of a DOCA devinfo.
- doca_error_t doca_devinfo_get_ibdev_name ( const doca_devinfo* devinfo, char* ibdev_name, uint32_t size )
- Get the name of the IB device represented by a DOCA devinfo.
- doca_error_t doca_devinfo_get_iface_name ( const doca_devinfo* devinfo, char* iface_name, uint32_t size )
- Get the name of the ethernet interface of a DOCA devinfo.
- doca_error_t doca_devinfo_get_ipv4_addr ( const doca_devinfo* devinfo, uint8_t* ipv4_addr, uint32_t size )
- Get the IPv4 address of a DOCA devinfo.
- doca_error_t doca_devinfo_get_ipv6_addr ( const doca_devinfo* devinfo, uint8_t* ipv6_addr, uint32_t size )
- Get the IPv6 address of a DOCA devinfo.
- doca_error_t doca_devinfo_get_lid ( const doca_devinfo* devinfo, uint16_t* lid )
- Get the port LID of a DOCA devinfo.
- doca_error_t doca_devinfo_get_mac_addr ( const doca_devinfo* devinfo, uint8_t* mac_addr, uint32_t size )
- Get the MAC address of a DOCA devinfo.
- doca_error_t doca_devinfo_get_pci_addr_str ( const doca_devinfo* devinfo, char* pci_addr_str )
- Get the PCI address of a DOCA devinfo.
- doca_error_t doca_devinfo_is_equal_pci_addr ( const doca_devinfo* devinfo, const char* pci_addr_str, uint8_t* is_equal )
- Check if a PCI address belongs to a DOCA devinfo.
- doca_error_t doca_devinfo_rep_cap_is_filter_all_supported ( const doca_devinfo* devinfo, uint8_t* filter_all_supported )
- Get the representor devices discovery capability of the device.
- doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported ( const doca_devinfo* devinfo, uint8_t* filter_emulated_supported )
- Get the remote emulated device discovery capability of the device.
- doca_error_t doca_devinfo_rep_cap_is_filter_net_supported ( const doca_devinfo* devinfo, uint8_t* filter_net_supported )
- Get the remote net discovery capability of the device.
- doca_error_t doca_devinfo_rep_create_list ( doca_dev* dev, int filter, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
- Create list of available representor devices accessible by dev.
- doca_error_t doca_devinfo_rep_destroy_list ( doca_devinfo_rep** dev_list_rep )
- Destroy list of representor device info structures.
- doca_error_t doca_devinfo_rep_get_is_hotplug ( const doca_devinfo_rep* devinfo_rep, uint8_t* is_hotplug )
- Query whether the representor device is a hotplugged device.
- doca_error_t doca_devinfo_rep_get_pci_addr_str ( const doca_devinfo_rep* devinfo_rep, char* pci_addr_str )
- Get the PCI address of a DOCA devinfo_rep.
- doca_error_t doca_devinfo_rep_get_pci_func_type ( const doca_devinfo_rep* devinfo_rep, doca_pci_func_type ** pci_func_type )
- Get the PCI function type of a DOCA devinfo_rep.
- doca_error_t doca_devinfo_rep_get_vuid ( const doca_devinfo_rep* devinfo_rep, char* rep_vuid, uint32_t size )
- Get the Vendor Unique ID of a representor DOCA devinfo.
- doca_error_t doca_devinfo_rep_is_equal_pci_addr ( const doca_devinfo_rep* devinfo_rep, const char* pci_addr_str, uint8_t* is_equal )
- Check if a PCI address belongs to a DOCA devinfo_rep.
Defines
- #define DOCA_DEVINFO_IBDEV_NAME_SIZE 64
-
- #define DOCA_DEVINFO_IFACE_NAME_SIZE 256
-
- #define DOCA_DEVINFO_IPV4_ADDR_SIZE 4
-
- #define DOCA_DEVINFO_IPV6_ADDR_SIZE 16
-
- #define DOCA_DEVINFO_MAC_ADDR_SIZE 6
-
- #define DOCA_DEVINFO_PCI_ADDR_SIZE 13
-
- #define DOCA_DEVINFO_PCI_BDF_SIZE 8
-
- #define DOCA_DEVINFO_REP_PCI_ADDR_SIZE 13
-
- #define DOCA_DEVINFO_REP_PCI_BDF_SIZE 8
-
- #define DOCA_DEVINFO_REP_VUID_SIZE 128
-
- #define DOCA_DEVINFO_VUID_SIZE 128
-
Enumerations
- enum doca_devinfo_rep_filter
Representor device filter by flavor
Multiple options possible but some are mutually exclusive.
Values
- DOCA_DEVINFO_REP_FILTER_ALL = 0
- DOCA_DEVINFO_REP_FILTER_NET = 1<<1
- DOCA_DEVINFO_REP_FILTER_EMULATED = 1<<2
Functions
- DOCA_STABLE doca_devinfo* doca_dev_as_devinfo ( const doca_dev* dev )
-
Get local device info from device. This should be useful when wanting to query information about device after opening it, and destroying the devinfo list.
Parameters
- dev
- The doca device instance.
Returns
The matching doca_devinfo instance in case of success, NULL in case dev is invalid or was created by doca_rdma_bridge_open_dev_from_pd().
Description
- doca_error_t doca_dev_close ( doca_dev* dev )
-
Destroy allocated local device instance.
Parameters
- dev
- The local doca device instance.
Returns
DOCA_SUCCESS - in case of success.
- DOCA_ERROR_IN_USE - failed to deallocate device resources.
Description
Closes device or decrements its refcount by One. In case the same device was opened multiple times, then only the last call to close will attempt to destroy device.
- doca_error_t doca_dev_open ( doca_devinfo* devinfo, doca_dev** dev )
-
Initialize local device for use.
Parameters
- devinfo
- The devinfo structure of the requested device.
- dev
- Initialized local doca device instance on success. Valid on success only.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate protection domain for device.
- DOCA_ERROR_NOT_CONNECTED - failed to open device.
- DOCA_ERROR_INITIALIZATION - maximum number of open devices was exceeded.
Description
Opens device or increments its refcount by One. The device can later be used by other libraries. For every call to doca_dev_open() there should be a call to doca_dev_close().
- DOCA_STABLE doca_devinfo_rep* doca_dev_rep_as_devinfo ( doca_dev_rep* dev_rep )
-
Get representor device info from device. This should be useful when wanting to query information about device after opening it, and destroying the devinfo list.
Parameters
- dev_rep
- The representor doca device instance.
Returns
The matching doca_devinfo_rep instance in case of success, NULL in case dev_rep is invalid.
Description
- doca_error_t doca_dev_rep_close ( doca_dev_rep* dev )
-
Destroy allocated representor device instance.
Parameters
- dev
- The representor doca device instance.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_IN_USE - failed to deallocate device resources.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
- doca_error_t doca_dev_rep_open ( doca_devinfo_rep* devinfo, doca_dev_rep** dev_rep )
-
Initialize representor device for use.
Parameters
- devinfo
- The devinfo structure of the requested device.
- dev_rep
- Initialized representor doca device instance on success. Valid on success only.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory for device.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
- doca_error_t doca_devinfo_cap_is_hotplug_manager_supported ( const doca_devinfo* devinfo, uint8_t* is_hotplug_manager )
-
Get the hotplug manager capability of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- is_hotplug_manager
- 1 if the hotplug manager capability is supported, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
Description
The hotplug manager property type: uint8_t*.
- doca_error_t doca_devinfo_create_list ( doca_devinfo*** dev_list, uint32_t* nb_devs )
-
Creates list of all available local devices.
Parameters
- dev_list
- Pointer to array of pointers. Output can then be accessed as follows (*dev_list)[idx].
- nb_devs
- Number of available local devices.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate enough space.
- DOCA_ERROR_NOT_FOUND - failed to get RDMA devices list
Description
Lists information about available devices, to start using the device you first have to call doca_dev_open(), while passing an element of this list. List elements become invalid once it has been destroyed.
Note:Returned list must be destroyed using doca_devinfo_destroy_list()
- doca_error_t doca_devinfo_destroy_list ( doca_devinfo** dev_list )
-
Destroy list of local device info structures.
Parameters
- dev_list
- List to be destroyed.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_IN_USE - at least one device in the list is in a corrupted state.
Description
Destroys the list of device information, once the list has been destroyed, all elements become invalid.
- doca_error_t doca_devinfo_get_active_rate ( const doca_devinfo* devinfo, double* active_rate )
-
Get the active rate of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- active_rate
- The active rate of the given port on the device. Given in units of Gb/s.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query port rate.
Description
- doca_error_t doca_devinfo_get_ibdev_name ( const doca_devinfo* devinfo, char* ibdev_name, uint32_t size )
-
Get the name of the IB device represented by a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- ibdev_name
- The name of the IB device represented by devinfo.
- size
- The size of the input ibdev_name buffer, must be at least DOCA_DEVINFO_IBDEV_NAME_SIZE which includes the null terminating byte.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
The name of the IB device type: char[DOCA_DEVINFO_IBDEV_NAME_SIZE].
- doca_error_t doca_devinfo_get_iface_name ( const doca_devinfo* devinfo, char* iface_name, uint32_t size )
-
Get the name of the ethernet interface of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- iface_name
- The name of the ethernet interface of devinfo.
- size
- The size of the input iface_name buffer, must be at least DOCA_DEVINFO_IFACE_NAME_SIZE which includes the null terminating byte.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the interface name from the OS
Description
The name of the ethernet interface is the same as it's name in ifconfig. The name of the ethernet interface type: char[DOCA_DEVINFO_IFACE_NAME_SIZE].
- doca_error_t doca_devinfo_get_ipv4_addr ( const doca_devinfo* devinfo, uint8_t* ipv4_addr, uint32_t size )
-
Get the IPv4 address of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- ipv4_addr
- The IPv4 address of devinfo.
- size
- The size of the input ipv4_addr buffer, must be at least DOCA_DEVINFO_IPV4_ADDR_SIZE
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_FOUND - no IPv4 address was assigned
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the IPv4 address from the OS
Description
The IPv4 address type: uint8_t[DOCA_DEVINFO_IPV4_ADDR_SIZE].
- doca_error_t doca_devinfo_get_ipv6_addr ( const doca_devinfo* devinfo, uint8_t* ipv6_addr, uint32_t size )
-
Get the IPv6 address of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- ipv6_addr
- The IPv6 address of devinfo.
- size
- The size of the input ipv6_addr buffer, must be at least DOCA_DEVINFO_IPV6_ADDR_SIZE
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the IPv6 address from the OS
Description
The IPv6 address type: uint8_t[DOCA_DEVINFO_IPV6_ADDR_SIZE].
- doca_error_t doca_devinfo_get_lid ( const doca_devinfo* devinfo, uint16_t* lid )
-
Get the port LID of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- lid
- The port LID of devinfo.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query port LID.
- DOCA_ERROR_NOT_SUPPORTED - the device port's link layer is not IB.
Description
The port LID type: uint16_t *.
- doca_error_t doca_devinfo_get_mac_addr ( const doca_devinfo* devinfo, uint8_t* mac_addr, uint32_t size )
-
Get the MAC address of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- mac_addr
- The MAC address of devinfo.
- size
- The size of the input mac_addr buffer, must be at least DOCA_DEVINFO_MAC_ADDR_SIZE
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - the device port's link layer is not RoCE.
Description
The MAC address type: uint8_t[DOCA_DEVINFO_MAC_ADDR_SIZE].
- doca_error_t doca_devinfo_get_pci_addr_str ( const doca_devinfo* devinfo, char* pci_addr_str )
-
Get the PCI address of a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- pci_addr_str
- The PCI address of devinfo, should be of size DOCA_DEVINFO_PCI_ADDR_SIZE at least.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the PCI address from the OS
Description
The PCI address string format is "Domain:Bus:Device.Function", such that each value is represented by HEX digits, e.g., "0000:3a:00.0"
- doca_error_t doca_devinfo_is_equal_pci_addr ( const doca_devinfo* devinfo, const char* pci_addr_str, uint8_t* is_equal )
-
Check if a PCI address belongs to a DOCA devinfo.
Parameters
- devinfo
- The device to query.
- pci_addr_str
-
The PCI address to check, should be as one of the following formats:
- "Domain:Bus:Device.Function", e.g., "0000:3a:00.0" (size DOCA_DEVINFO_PCI_ADDR_SIZE including a null terminator).
- "Bus:Device.Function", e.g., "3a:00.0" (size DOCA_DEVINFO_PCI_BDF_SIZE including a null terminator).
- is_equal
- 1 if pci_addr_str belongs to devinfo, 0 otherwise. In case of an error, no certain value is guaranteed.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_OPERATING_SYSTEM - failed to acquire the actual PCI address from the OS for comparison.
Description
- doca_error_t doca_devinfo_rep_cap_is_filter_all_supported ( const doca_devinfo* devinfo, uint8_t* filter_all_supported )
-
Get the representor devices discovery capability of the device.
Parameters
- devinfo
- The device to query.
- filter_all_supported
- 1 if the rep list all capability is supported, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Get uint8_t value defining if the device can be used to create list of representor devices. In case true is returned, then this device supports at least one representor type. See doca_devinfo_rep_create_list(). true - device can be used with the remote list create API with filter DOCA_DEVINFO_REP_FILTER_ALL. false - providing DOCA_DEVINFO_REP_FILTER_ALL is guaranteed to fail with DOCA_ERROR_NOT_SUPPORTED.
- doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported ( const doca_devinfo* devinfo, uint8_t* filter_emulated_supported )
-
Get the remote emulated device discovery capability of the device.
Parameters
- devinfo
- The device to query.
- filter_emulated_supported
- 1 if the list emulated capability is supported, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Get uint8_t value defining if the device can be used to create list of emulated representor devices. See doca_devinfo_rep_create_list(). true - device can be used with the remote list create API with filter DOCA_DEVINFO_REP_FILTER_EMULATED. false - providing DOCA_DEVINFO_REP_FILTER_EMULATED is guaranteed to fail with DOCA_ERROR_NOT_SUPPORTED.
- doca_error_t doca_devinfo_rep_cap_is_filter_net_supported ( const doca_devinfo* devinfo, uint8_t* filter_net_supported )
-
Get the remote net discovery capability of the device.
Parameters
- devinfo
- The device to query.
- filter_net_supported
- 1 if the rep list net capability is supported, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Get uint8_t value defining if the device can be used to create list of net remote devices. See doca_devinfo_remote_list_create(). true - device can be used with the remote list create API with filter DOCA_DEV_REMOTE_FILTER_NET. false - providing DOCA_DEV_REMOTE_FILTER_NET is guaranteed to fail with DOCA_ERROR_NOT_SUPPORTED.
- doca_error_t doca_devinfo_rep_create_list ( doca_dev* dev, int filter, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
-
Create list of available representor devices accessible by dev.
Parameters
- dev
- Local device with access to representors.
- filter
- Bitmap filter of representor types. See enum doca_devinfo_rep_filter for more details.
- dev_list_rep
- Pointer to array of pointers. Output can then be accessed as follows (*dev_list_rep)[idx].
- nb_devs_rep
- Number of available representor devices.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory for list.
- DOCA_ERROR_DRIVER - Failed to query driver.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Returns all representors managed by the provided device. The provided device must be a local device. The representor may represent a network function attached to the host, or it can represent an emulated function attached to the host.
Note:Returned list must be destroyed using doca_devinfo_rep_destroy_list()
- doca_error_t doca_devinfo_rep_destroy_list ( doca_devinfo_rep** dev_list_rep )
-
Destroy list of representor device info structures.
Parameters
- dev_list_rep
- List to be destroyed.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_IN_USE - the doca_dev that created the list is in a corrupted state.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
Destroy list of representor device information, once the list has been destroyed, all elements of the list are considered invalid.
- doca_error_t doca_devinfo_rep_get_is_hotplug ( const doca_devinfo_rep* devinfo_rep, uint8_t* is_hotplug )
-
Query whether the representor device is a hotplugged device.
Parameters
- devinfo_rep
- representor device info
- is_hotplug
- 1 if the representor device is a hotplugged device. 0 if representor device is statically plugged.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_devinfo_rep_get_pci_addr_str ( const doca_devinfo_rep* devinfo_rep, char* pci_addr_str )
-
Get the PCI address of a DOCA devinfo_rep.
Parameters
- devinfo_rep
- The device to query.
- pci_addr_str
- The PCI address of devinfo_rep, should be of size DOCA_DEVINFO_REP_PCI_ADDR_SIZE at least.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
- DOCA_ERROR_NO_MEMORY - not enough memory to generate the stringed PCI address.
- DOCA_ERROR_UNEXPECTED - an unexpected error occurred.
Description
The PCI address string format is "Domain:Bus:Device.Function", such that each value is represented by HEX digits, e.g., "0000:3a:00.0".
- doca_error_t doca_devinfo_rep_get_pci_func_type ( const doca_devinfo_rep* devinfo_rep, doca_pci_func_type ** pci_func_type )
-
Get the PCI function type of a DOCA devinfo_rep.
Parameters
- devinfo_rep
- The representor of device to query.
- pci_func_type
- The PCI function type of the devinfo_rep.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
The pci function type: enum doca_pci_func_type.
- doca_error_t doca_devinfo_rep_get_vuid ( const doca_devinfo_rep* devinfo_rep, char* rep_vuid, uint32_t size )
-
Get the Vendor Unique ID of a representor DOCA devinfo.
Parameters
- devinfo_rep
- The representor device to query.
- rep_vuid
- The Vendor Unique ID of devinfo_rep.
- size
- The size of the vuid buffer, including the terminating null byte ('').
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
Description
The Vendor Unique ID is used as stable ID of a VF/PF. The Vendor Unique ID type: char[DOCA_DEVINFO_VUID_SIZE].
- doca_error_t doca_devinfo_rep_is_equal_pci_addr ( const doca_devinfo_rep* devinfo_rep, const char* pci_addr_str, uint8_t* is_equal )
-
Check if a PCI address belongs to a DOCA devinfo_rep.
Parameters
- devinfo_rep
- The representor of device to query.
- pci_addr_str
-
The PCI address to check, should be as one of the following formats:
- "Domain:Bus:Device.Function", e.g., "0000:3a:00.0" (size DOCA_DEVINFO_PCI_ADDR_SIZE including a null terminator).
- "Bus:Device.Function", e.g., "3a:00.0" (size DOCA_DEVINFO_PCI_BDF_SIZE including a null terminator).
- is_equal
- 1 if pci_addr_str belongs to devinfo_rep, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - local device does not expose representor devices, or dev was created by doca_rdma_bridge_open_dev_from_pd()
- DOCA_ERROR_NO_MEMORY - not enough memory to generate devinfo_rep PCI address for comparison.
- DOCA_ERROR_UNEXPECTED - an unexpected error occurred.
Description
1.4.7. DOCA DPDK Bridge
[ DOCA Core ]
DOCA API for integration with DPDK.
Functions
- doca_error_t doca_dpdk_cap_is_rep_port_supported ( const doca_devinfo* devinfo, uint8_t* is_rep_port_supported )
- Check if the device supports representors for port_probe.
- doca_error_t doca_dpdk_get_first_port_id ( const doca_dev* dev, uint16_t* port_id )
- Return the first DPDK port id associated to a DOCA device. Assumption is that the doca device that was probed using doca_dpdk_port_probe().
- doca_error_t doca_dpdk_mempool_create ( const rte_mempool* mbuf_pool, doca_dpdk_mempool** mempool_out )
- Create a DOCA DPDK memory pool, with ability to convert rte_mbuf to doca_buf Expected flow is as follows: Control path: // Create the memory pool based on a DPDK memory pool doca_dpdk_mempool_create() // Add 1 or more DOCA devices doca_dpdk_mempool_dev_add() // Set permission level across all devices (default=LOCAL_READ/WRITE) doca_dpdk_mempool_set_permissions() // Start the pool doca_dpdk_mempool_start().
- doca_error_t doca_dpdk_mempool_destroy ( doca_dpdk_mempool* mempool )
- Destroy a DOCA DPDK memory pool Before destroying need to make sure that all buffers that were acquired using doca_dpdk_mempool_mbuf_to_buf() have been released This must be called before destroying the originating DPDK mempool.
- doca_error_t doca_dpdk_mempool_dev_add ( doca_dpdk_mempool* mempool, doca_dev* dev )
- Add a DOCA device to the mempool This allows the DOCA bufs that are retrieved from the pool to be compatible with other DOCA libraries, that use the DOCA device.
- doca_error_t doca_dpdk_mempool_mbuf_to_buf ( doca_dpdk_mempool* mempool, doca_buf_inventory* inventory, rte_mbuf* mbuf, doca_buf** buf )
- Acquire a doca_buf based on an rte_mbuf The acquired doca_buf attempts to be as similar as possible to the rte_mbuf Level of support:After acquiring the buffer the refcount of the mbuf is increasedIn case mbuf is indirect refcount of the direct buffer is increased instead and metadata of the indirectmbuf is used where metadata refers to the mbuf's data offset, data length, and next pointerIn case the acquired doca_buf is duplicated, then the duplication process will increase the refcount of the direct mbufs as well Limitations:The mbuf must represent memory from the originating rte_mempool associated with this mempool and mbuf cannot be created from external memoryAny changes made to the rte_mbuf after the acquisition will not affect the doca_bufAny changes made to the doca_buf after acquisition will not affect the rte_mbuf.
- doca_error_t doca_dpdk_mempool_set_permissions ( doca_dpdk_mempool* mempool, uint32_t access_mask )
- Set the read/write permissions of the memory for devices Default: DOCA_ACCESS_FLAG_LOCAL_READ_WRITE Setting the permission will set the access that the added devices have over the memory of the DOCA buffers.
- doca_error_t doca_dpdk_mempool_start ( doca_dpdk_mempool* mempool )
- Start the DOCA DPDK memory pool Operations that must be done before start: Adding at least 1 device - doca_dpdk_mempool_dev_add() Optionally, setting the permission level - doca_dpdk_mempool_set_permissions() Operations that are allowed after start: Acquiring a matching doca_buf from an rte_mbuf - doca_dpdk_mempool_mbuf_to_buf() Destroying the DOCA DPDK memory pool - doca_dpdk_mempool_destroy().
- doca_error_t doca_dpdk_port_as_dev ( uint16_t port_id, doca_dev** dev )
- Return the DOCA device associated with a DPDK port.
- doca_error_t doca_dpdk_port_probe ( doca_dev* dev, const char* devargs )
- Attach a DPDK port specified by DOCA device.
Functions
- doca_error_t doca_dpdk_cap_is_rep_port_supported ( const doca_devinfo* devinfo, uint8_t* is_rep_port_supported )
-
Check if the device supports representors for port_probe.
Parameters
- devinfo
- The DOCA device information
- is_rep_port_supported
- 1 if the device supports representors for port_probe, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_DRIVER - failed to query device capabilities.
Description
Note:-
This function should be used before calling doca_dpdk_port_probe() in case representores are required in devargs.
-
This function should be called with root privileges.
- doca_error_t doca_dpdk_get_first_port_id ( const doca_dev* dev, uint16_t* port_id )
-
Return the first DPDK port id associated to a DOCA device. Assumption is that the doca device that was probed using doca_dpdk_port_probe().
Parameters
- dev
- DOCA device object
- port_id
- DPDK port id
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NOT_FOUND - No DPDK port matches the DOCA device.
Description
- doca_error_t doca_dpdk_mempool_create ( const rte_mempool* mbuf_pool, doca_dpdk_mempool** mempool_out )
-
Create a DOCA DPDK memory pool, with ability to convert rte_mbuf to doca_buf Expected flow is as follows: Control path: // Create the memory pool based on a DPDK memory pool doca_dpdk_mempool_create() // Add 1 or more DOCA devices doca_dpdk_mempool_dev_add() // Set permission level across all devices (default=LOCAL_READ/WRITE) doca_dpdk_mempool_set_permissions() // Start the pool doca_dpdk_mempool_start().
Parameters
- mbuf_pool
- A DPDK pool of mbufs, created with rte_pktmbuf_pool_create*()
- mempool_out
- The newly created DOCA DPDK memory pool in case of success
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
Description
Data path: // Convert DPDK mbuf to DOCA buf doca_dpdk_mempool_mbuf_to_buf() // Optionally release DPDK mbuf back to the DPDK pool in case it is no longer needed rte_pktmbuf_free() // Release the doca_buf once finished with it doca_buf_refcnt_rm()
- doca_error_t doca_dpdk_mempool_destroy ( doca_dpdk_mempool* mempool )
-
Destroy a DOCA DPDK memory pool Before destroying need to make sure that all buffers that were acquired using doca_dpdk_mempool_mbuf_to_buf() have been released This must be called before destroying the originating DPDK mempool.
Parameters
- mempool
- The DOCA DPDK memory pool to destroy
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_IN_USE - at least 1 DOCA buf has been acquired and still not released
Description
Note:: Once destroyed the originating DPDK memory pool, and any allocated RTE mbuf are not affected
- doca_error_t doca_dpdk_mempool_dev_add ( doca_dpdk_mempool* mempool, doca_dev* dev )
-
Add a DOCA device to the mempool This allows the DOCA bufs that are retrieved from the pool to be compatible with other DOCA libraries, that use the DOCA device.
Parameters
- mempool
- The DOCA DPDK memory pool to add the device to
- dev
- A DOCA device instance
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NO_MEMORY - out of memory.
Description
Note:Once device has been added it can't be removed. Only option is to destroy the doca_dpdk_mempool
- doca_error_t doca_dpdk_mempool_mbuf_to_buf ( doca_dpdk_mempool* mempool, doca_buf_inventory* inventory, rte_mbuf* mbuf, doca_buf** buf )
-
Acquire a doca_buf based on an rte_mbuf The acquired doca_buf attempts to be as similar as possible to the rte_mbuf Level of support:After acquiring the buffer the refcount of the mbuf is increasedIn case mbuf is indirect refcount of the direct buffer is increased instead and metadata of the indirectmbuf is used where metadata refers to the mbuf's data offset, data length, and next pointerIn case the acquired doca_buf is duplicated, then the duplication process will increase the refcount of the direct mbufs as well Limitations:The mbuf must represent memory from the originating rte_mempool associated with this mempool and mbuf cannot be created from external memoryAny changes made to the rte_mbuf after the acquisition will not affect the doca_bufAny changes made to the doca_buf after acquisition will not affect the rte_mbuf.
Parameters
- mempool
- The DOCA DPDK memory pool created using the rte_mempool that created the rte_mbuf
- inventory
- A DOCA Buffer Inventory to be used for allocating the doca_buf. Must be started and have enough space
- mbuf
- A DPDK buffer that references memory that is within the RTE mempool associated with the DOCA DPDK mempool
- buf
- A DOCA buffer that references the same memory as the provided mbuf
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NO_MEMORY - The inventory does not have enough free elements.
Description
rte_mbuf chain before calling this method: buf_addr __data_len__ \ / \ +----------+--------------+----------+ +----------+--------------+----------+ | headroom | data | tailroom | ----> | headroom | data | tailroom | +----------+--------------+----------+ +----------+--------------+----------+ doca_buf created after calling this method: head __data_len__ \ / \ +----------+--------------+----------+ +----------+--------------+----------+ | | data | | ----> | | data | | +----------+--------------+----------+ +----------+--------------+----------+
Note:: Destroying the doca_buf using 'doca_buf_dec_refcount()' will call 'rte_pktmbuf_free_seg()' on each direct mbuf
- doca_error_t doca_dpdk_mempool_set_permissions ( doca_dpdk_mempool* mempool, uint32_t access_mask )
-
Set the read/write permissions of the memory for devices Default: DOCA_ACCESS_FLAG_LOCAL_READ_WRITE Setting the permission will set the access that the added devices have over the memory of the DOCA buffers.
Parameters
- mempool
- The DOCA DPDK memory pool
- access_mask
- The access permissions - see 'enum doca_access_flag'
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input or bad access flag combination.
Description
Note:: setting DOCA_ACCESS_FLAG_DPU_* flags is invalid
- doca_error_t doca_dpdk_mempool_start ( doca_dpdk_mempool* mempool )
-
Start the DOCA DPDK memory pool Operations that must be done before start: Adding at least 1 device - doca_dpdk_mempool_dev_add() Optionally, setting the permission level - doca_dpdk_mempool_set_permissions() Operations that are allowed after start: Acquiring a matching doca_buf from an rte_mbuf - doca_dpdk_mempool_mbuf_to_buf() Destroying the DOCA DPDK memory pool - doca_dpdk_mempool_destroy().
Parameters
- mempool
- The DOCA DPDK memory pool to add the device to
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NO_MEMORY - out of memory.
Description
- doca_error_t doca_dpdk_port_as_dev ( uint16_t port_id, doca_dev** dev )
-
Return the DOCA device associated with a DPDK port.
Parameters
- port_id
- The DPDK port identifier to get the associated DOCA device for.
- dev
- The DPDK DOCA device associated with the given DPDK port identifier.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_NOT_FOUND - in case there is no such DPDK port associated with a DOCA device.
Description
- doca_error_t doca_dpdk_port_probe ( doca_dev* dev, const char* devargs )
-
Attach a DPDK port specified by DOCA device.
Parameters
- dev
- DOCA device to attach PDK port for.
- devargs
- DPDK devargs style - must NOT contains the device's PCI address ([domain:]bus:devid.func).
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_DRIVER - in case of DPDK error during DPDK port attach.
- DOCA_ERROR_NO_MEMORY - in case of memory allocation failure.
Description
Thread unsafe API.
It's the user responsibility to set the DPDK EAL initialization to skip probing the PCI device associated with the given DOCA device to prevent EAL from using it.
No initialization is done for the probed PDPK port and the port is not started.
1.4.8. DOCA Error
[ DOCA Core ]
DOCA Error provides information regarding different errors caused while using the DOCA libraries.
Defines
- #define DOCA_ERROR_PROPAGATE ( r, t )
- Save the first encountered doca_error_t.
- #define DOCA_IS_ERROR ( r )
- Compiler optimized macro to check if we have an error.
Enumerations
- enum doca_error_t
- DOCA API return codes.
Functions
- const DOCA_STABLE char* doca_error_get_descr ( doca_error_t error )
- Returns the description string of an error code.
- const DOCA_STABLE char* doca_error_get_name ( doca_error_t error )
- Returns the string representation of an error code name.
Defines
- #define DOCA_ERROR_PROPAGATE ( r, t )
Updates the return value variable r to hold the first error that we encountered.
Value
do { \ if (r == DOCA_SUCCESS) \ r = t; \ } while (0)
- #define DOCA_IS_ERROR ( r )
Used in cases where error is unlikely to happen.
Value
doca_unlikely((r) != DOCA_SUCCESS)
Enumerations
- enum doca_error_t
-
Values
- DOCA_SUCCESS = 0
- Success
- DOCA_ERROR_UNKNOWN = 1
- Unknown error
- DOCA_ERROR_NOT_PERMITTED = 2
- Operation not permitted
- DOCA_ERROR_IN_USE = 3
- Resource already in use
- DOCA_ERROR_NOT_SUPPORTED = 4
- Operation not supported
- DOCA_ERROR_AGAIN = 5
- Resource temporarily unavailable, try again
- DOCA_ERROR_INVALID_VALUE = 6
- Invalid input
- DOCA_ERROR_NO_MEMORY = 7
- Memory allocation failure
- DOCA_ERROR_INITIALIZATION = 8
- Resource initialization failure
- DOCA_ERROR_TIME_OUT = 9
- Timer expired waiting for resource
- DOCA_ERROR_SHUTDOWN = 10
- Shut down in process or completed
- DOCA_ERROR_CONNECTION_RESET = 11
- Connection reset by peer
- DOCA_ERROR_CONNECTION_ABORTED = 12
- Connection aborted
- DOCA_ERROR_CONNECTION_INPROGRESS = 13
- Connection in progress
- DOCA_ERROR_NOT_CONNECTED = 14
- Not Connected
- DOCA_ERROR_NO_LOCK = 15
- Unable to acquire required lock
- DOCA_ERROR_NOT_FOUND = 16
- Resource Not Found
- DOCA_ERROR_IO_FAILED = 17
- Input/Output Operation Failed
- DOCA_ERROR_BAD_STATE = 18
- Bad State
- DOCA_ERROR_UNSUPPORTED_VERSION = 19
- Unsupported version
- DOCA_ERROR_OPERATING_SYSTEM = 20
- Operating system call failure
- DOCA_ERROR_DRIVER = 21
- DOCA Driver call failure
- DOCA_ERROR_UNEXPECTED = 22
- An unexpected scenario was detected
- DOCA_ERROR_ALREADY_EXIST = 23
- Resource already exist
- DOCA_ERROR_FULL = 24
- No more space in resource
- DOCA_ERROR_EMPTY = 25
- No entry is available in resource
- DOCA_ERROR_IN_PROGRESS = 26
- Operation is in progress
- DOCA_ERROR_TOO_BIG = 27
- Requested operation too big to be contained
Functions
- const DOCA_STABLE char* doca_error_get_descr ( doca_error_t error )
-
Returns the description string of an error code.
Parameters
- error
- - Error code to convert to description string.
Returns
char* pointer to a NULL-terminated string.
Description
This function returns the description string of an error code. If the error code is not recognized, "unrecognized error code" is returned.
- const DOCA_STABLE char* doca_error_get_name ( doca_error_t error )
-
Returns the string representation of an error code name.
Parameters
- error
- - Error code to convert to string.
Returns
char* pointer to a NULL-terminated string.
Description
Returns a string containing the name of an error code in the enum. If the error code is not recognized, "unrecognized error code" is returned.
1.4.12. DOCA RDMA Bridge
[ DOCA Core ]
DOCA RDMA bridge.
Defines
- #define UM_ENOMEM 12
- Encoding of the ENOMEM error.
- #define UM_MAX_ERRNO 999
- Maximum possible value for errno, to use by encoding error in a pointer address.
- #define __DEVX_IFC_H__
- Defining __DEVX_IFC_H__ discards the definitions in \MLNX_WinOF2_DevX_SDK\inc\mlx5_ifc_devx.h that is included by the WinOF header files below.
Typedefs
- typedef uint16_t __be16
- typedef uint32_t __be32
- typedef uint64_t __be64
- typedef uint16_t u16
- typedef uint32_t u32
- typedef uint64_t u64
Functions
- doca_error_t doca_rdma_bridge_get_buf_mkey ( const doca_buf* buf, doca_dev* dev, uint32_t* mkey )
- Get lkey with doca_access_flag access for a DOCA buffer of a DOCA device.
- doca_error_t doca_rdma_bridge_get_dev_pd ( const doca_dev* dev, ibv_pd** pd )
- Get the protection domain associated with a DOCA device.
- doca_error_t doca_rdma_bridge_open_dev_from_pd ( ibv_pd* pd, doca_dev** dev )
- Open a DOCA device using an ibv_pd.
Defines
Typedefs
- typedef uint16_t __be16
Unsigned 16-bit integer in Big Endian
- typedef uint32_t __be32
Unsigned 32-bit integer in Big Endian
- typedef uint64_t __be64
Unsigned 64-bit integer in Big Endian
- typedef uint16_t u16
Unsigned 16-bit integer
- typedef uint32_t u32
Unsigned 32-bit integer
- typedef uint64_t u64
Unsigned 64-bit integer
Functions
- doca_error_t doca_rdma_bridge_get_buf_mkey ( const doca_buf* buf, doca_dev* dev, uint32_t* mkey )
-
Get lkey with doca_access_flag access for a DOCA buffer of a DOCA device.
Parameters
- buf
- The DOCA buffer to get lkey for. MUST NOT BE NULL.
- dev
- The DOCA device to get lkey for. MUST NOT BE NULL.
- mkey
- The returned MKey. MUST NOT BE NULL.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if cannot find mkey by the given device.
- DOCA_ERROR_NOT_SUPPORTED - if the given access flags is not supported
Description
Note:Access of mkey is defined by the mmap where buf was created.
- doca_error_t doca_rdma_bridge_get_dev_pd ( const doca_dev* dev, ibv_pd** pd )
-
Get the protection domain associated with a DOCA device.
Parameters
- dev
- DOCA device to get the pd from.
- pd
- The protection-domain associated with the given DOCA device.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - in case of invalid input.
- DOCA_ERROR_BAD_STATE - in case the device's pd is not valid (bad state)
Description
- doca_error_t doca_rdma_bridge_open_dev_from_pd ( ibv_pd* pd, doca_dev** dev )
-
Open a DOCA device using an ibv_pd.
Parameters
- pd
- A protection domain that is not associated with any DOCA device
- dev
- A newly created DOCA device with same protection domain as 'pd'
Returns
DOCA_SUCCESS - in case of success
Description
Always prefer using a DOCA device obtained from doca_devinfo_create_list() This call will fail if PD was acquired by DOCA through doca_devinfo_create_list() and then doca_rdma_bridge_get_dev_pd()
This API should be used only to bridge between rdma-core and DOCA, to allow them to share memory registrations E.g., application already has logic that utilizes an ibv_pd, to read and write memory using RDMA, and wants to extend the logic by using libraries in DOCA, but such libraries will require a doca_dev and doca_buf instead of an ibv_pd and mkey in order to read write same memory. Then this method can be used to get a doca_dev that can be added to a doca_mmap, such that any doca_buf created from the doca_mmap can yield mkeys that are associated with the same ibv_pd using doca_rdma_bridge_get_buf_mkey()
For reference: doca_dev - is parallel to an ibv_pd doca_buf - is parallel to an ibv_mr registered on multiple devices doca_mmap - is parallel to creating an ibv_mr for multiple devices
The only APIs that are supported for the newly created device:
1.4.14. DOCA Types
[ DOCA Core ]
DOCA Types introduces types that are common for many libraries.
Classes
-
union doca_data
- Convenience type for representing opaque data.
-
struct doca_gather_list
- Struct to represent a gather list.
Defines
- #define DOCA_GID_BYTE_LENGTH 16
- Specifies the length of a GID (Global ID) in bytes.
- #define doca_event_invalid_handle INVALID_HANDLE_VALUE
Typedefs
- typedef uint16_t doca_be16_t
- Declare DOCA endianity types.
- typedef uint32_t doca_be32_t
- typedef uint64_t doca_be64_t
- typedef void * doca_event_handle_t
- typedef doca_event_handle_t doca_notification_handle_t
Enumerations
- enum doca_access_flag
- Specifies the permission level for DOCA buffer.
- enum doca_eth_wait_on_time_type
- Type of wait on time the network card can support.
- enum doca_gpu_mem_type
- Type of memory the GPUNetIO library can allocate.
- enum doca_mtu_size
- MTU size in bytes.
- enum doca_pci_func_type
- Specifies the PCI function type for DOCA representor device.
Defines
- #define DOCA_GID_BYTE_LENGTH 16
-
- #define doca_event_invalid_handle INVALID_HANDLE_VALUE
Represents invalid handle value
Typedefs
- typedef uint16_t doca_be16_t
Declare DOCA endianity types. Unsigned 16-bit integer in Big Endian
- typedef uint32_t doca_be32_t
Unsigned 32-bit integer in Big Endian
- typedef uint64_t doca_be64_t
Unsigned 64-bit integer in Big Endian
- typedef void * doca_event_handle_t
Used for windows HANDLE or IOCompletionPort
- typedef doca_event_handle_t doca_notification_handle_t
Type alias used with progress engine
Enumerations
- enum doca_access_flag
Can be used with doca_mmap_set_permissions() to set permission level. A few notes: DOCA_ACCESS_FLAG_PCI_READ_ONLY and DOCA_ACCESS_FLAG_PCI_READ_WRITE are mutually exclusive Buffer can always be read locally by local device, regardless of set permissions local device - doca_dev running in the same process of the mmap remote device - doca_dev running on a different process on a remote machine DPU device - doca_dev running on a process on the DPU OS. This is only relevant when local process is running on HOST. In case local process is running on DPU the doca_dev is considered a local device.
Values
- DOCA_ACCESS_FLAG_LOCAL_READ_ONLY = 0
- DOCA_ACCESS_FLAG_LOCAL_READ_WRITE = (1<<0)
- DOCA_ACCESS_FLAG_RDMA_READ = (1<<1)
- DOCA_ACCESS_FLAG_RDMA_WRITE = (1<<2)
- DOCA_ACCESS_FLAG_RDMA_ATOMIC = (1<<3)
- DOCA_ACCESS_FLAG_PCI_READ_ONLY = (1<<4)
- DOCA_ACCESS_FLAG_PCI_READ_WRITE = (1<<5)
- Allows reading buffer by device on same PCI but prevents write. See doca_mmap_export_pci()
- DOCA_ACCESS_FLAG_PCI_RELAXED_ORDERING = (1<<6)
- Allows reading and writing to buffer by a device on same PCI. See doca_mmap_export_pci()
- enum doca_eth_wait_on_time_type
-
Values
- DOCA_ETH_WAIT_ON_TIME_TYPE_NONE = 0
- DOCA_ETH_WAIT_ON_TIME_TYPE_NATIVE = 1
- DOCA_ETH_WAIT_ON_TIME_TYPE_DPDK = 2
- enum doca_gpu_mem_type
-
Values
- DOCA_GPU_MEM_TYPE_GPU = 0
- DOCA_GPU_MEM_TYPE_GPU_CPU = 1
- DOCA_GPU_MEM_TYPE_CPU_GPU = 2
- enum doca_mtu_size
-
Values
- DOCA_MTU_SIZE_256_BYTES = 0x0
- DOCA_MTU_SIZE_512_BYTES = 0x1
- DOCA_MTU_SIZE_1K_BYTES = 0x2
- DOCA_MTU_SIZE_2K_BYTES = 0x3
- DOCA_MTU_SIZE_4K_BYTES = 0x4
- DOCA_MTU_SIZE_RAW_ETHERNET = 0x5
- enum doca_pci_func_type
-
Values
- DOCA_PCI_FUNC_TYPE_PF = 0
- DOCA_PCI_FUNC_TYPE_VF
- DOCA_PCI_FUNC_TYPE_SF
DOCA Communication Channel library let you set a direct communication channel between the host and the DPU. The channel is run over RoCE/IB protocol and is not part of the TCP/IP stack. Please follow the programmer guide for usage instructions.
Typedefs
- typedef doca_event_handle_t doca_event_channel_t
- endpoint notification file descriptor for blocking with epoll() for recv ready event
Enumerations
- enum doca_comm_channel_msg_flags
- Flags for send/receive functions.
Functions
- doca_error_t doca_comm_channel_ep_connect ( doca_comm_channel_ep_t* local_ep, const char* name, doca_comm_channel_addr_t** peer_addr )
- Client side Connect.
- doca_error_t doca_comm_channel_ep_create ( doca_comm_channel_ep_t** ep )
- Create local endpoint The endpoint handle represents all the configuration needed for the channel to run. The user needs to hold one endpoint for all actions with the comm channel on his side.
- doca_error_t doca_comm_channel_ep_destroy ( doca_comm_channel_ep_t* local_ep )
- Release endpoint handle.
- doca_error_t doca_comm_channel_ep_disconnect ( doca_comm_channel_ep_t* local_ep, doca_comm_channel_addr_t* peer_addr )
- Disconnect the endpoint from the remote peer. block until all resources related to peer address are freed new connection could be created on the endpoint.
- doca_error_t doca_comm_channel_ep_event_handle_arm_recv ( doca_comm_channel_ep_t* local_ep )
- Arm the event_channel handle for received messages. This function arms the receive completion queue, facilitating blocking on the receive event channel. Blocking should be implemented by the user (poll in Linux, GetQueuedCompletionStatus in Windows).
- doca_error_t doca_comm_channel_ep_event_handle_arm_send ( doca_comm_channel_ep_t* local_ep )
- Arm the event_channel handle for transmitted messages. This function arms the transmit completion queue, facilitating blocking on the transmit event channel. Blocking should be implemented by the user (poll in Linux, GetQueuedCompletionStatus in Windows).
- doca_error_t doca_comm_channel_ep_get_device ( doca_comm_channel_ep_t* ep, doca_dev** device )
- get device property of endpoint.
- doca_error_t doca_comm_channel_ep_get_device_rep ( doca_comm_channel_ep_t* ep, doca_dev_rep** device_rep )
- get device representor property of endpoint.
- doca_error_t doca_comm_channel_ep_get_event_channel ( doca_comm_channel_ep_t* local_ep, doca_event_channel_t* send_event_channel, doca_event_channel_t* recv_event_channel )
- Extract the event_channel handles for user's use When the user send/receive packets with non-blocking mode, this handle can be used to get interrupt when a new event happened, using epoll() or similar function. The event channels are owned by the endpoint and release when calling doca_comm_channel_ep_destroy(). This function can be called only after calling doca_comm_channel_ep_listen() or doca_comm_channel_ep_connect().
- doca_error_t doca_comm_channel_ep_get_max_msg_size ( doca_comm_channel_ep_t* ep, uint16_t* max_msg_size )
- get maximal msg size property of endpoint. The size returned is the actual size being used and might differ from the size set with doca_comm_channel_ep_set_max_msg_size(), as there is a minimal size requirement. If maximal msg size was not set, using doca_comm_channel_ep_set_max_msg_size(), a default value is used and can be inquired by calling doca_comm_channel_ep_get_max_msg_size().
- doca_error_t doca_comm_channel_ep_get_peer_addr_list ( const doca_comm_channel_ep_t* local_ep, doca_comm_channel_addr_t*** peer_addr_array, uint32_t* peer_addr_array_len )
- get an array of the peer_addr connected to a given service object
- doca_error_t doca_comm_channel_ep_get_pending_connections ( const doca_comm_channel_ep_t* local_ep, uint32_t* pending_connections )
- get the number of pending connections for a given service endpoint
- doca_error_t doca_comm_channel_ep_get_recv_queue_size ( doca_comm_channel_ep_t* ep, uint16_t* recv_queue_size )
- get receive queue size property of endpoint. The size returned is the actual size being used and might differ from the size set with doca_comm_channel_ep_set_recv_queue_size(), as there is a minimal size requirement and the size is rounded up to the closest power of 2. If receive queue size was not set, using doca_comm_channel_ep_set_recv_queue_size(), a default value is used and can be inquired by calling doca_comm_channel_ep_get_recv_queue_size().
- doca_error_t doca_comm_channel_ep_get_send_queue_size ( doca_comm_channel_ep_t* ep, uint16_t* send_queue_size )
- get send queue size property of endpoint. The size returned is the actual size being used and might differ from the size set with doca_comm_channel_ep_set_send_queue_size(), as there is a minimal size requirement and the size is rounded up to the closest power of 2. If send queue size was not set, using doca_comm_channel_ep_set_send_queue_size(), a default value is used and can be inquired by calling doca_comm_channel_ep_get_send_queue_size().
- doca_error_t doca_comm_channel_ep_get_service_event_channel ( doca_comm_channel_ep_t* local_ep, doca_event_channel_t* service_event_channel )
- Extract the service_event_channel handle for user's use This handle can be used to get interrupt when one of the following events occurred: new client connected, client disconnected or service moved to error state using epoll() or similar function. If an event was received, the application can call doca_comm_channel_ep_update_service_state_info() and it's query functions to get the current service state. The service event channel is armed automatically upon calling doca_comm_channel_ep_update_service_state_info().
- doca_error_t doca_comm_channel_ep_listen ( doca_comm_channel_ep_t* local_ep, const char* name )
- Service side listen on all interfaces.
- doca_error_t doca_comm_channel_ep_recvfrom ( doca_comm_channel_ep_t* local_ep, void* msg, size_t* len, int flags, doca_comm_channel_addr_t** peer_addr )
- Receive message from connected client/service.
- doca_error_t doca_comm_channel_ep_sendto ( doca_comm_channel_ep_t* local_ep, const void* msg, size_t len, int flags, doca_comm_channel_addr_t* peer_addr )
- Send message to peer address. The connection to the wanted peer_address need to be established before sending the message.
- doca_error_t doca_comm_channel_ep_set_device ( doca_comm_channel_ep_t* ep, doca_dev* device )
- set device property for endpoint.
- doca_error_t doca_comm_channel_ep_set_device_rep ( doca_comm_channel_ep_t* ep, doca_dev_rep* device_rep )
- set device representor property for endpoint.
- doca_error_t doca_comm_channel_ep_set_max_msg_size ( doca_comm_channel_ep_t* ep, uint16_t max_msg_size )
- set maximal msg size property for endpoint. The value max_msg_size may be increased internally, the actual value can be queried using doca_comm_channel_ep_get_max_msg_size().
- doca_error_t doca_comm_channel_ep_set_recv_queue_size ( doca_comm_channel_ep_t* ep, uint16_t recv_queue_size )
- set receive queue size property for endpoint. The value recv_queue_size may be increased internally, the actual value can be queried using doca_comm_channel_ep_get_recv_queue_size().
- doca_error_t doca_comm_channel_ep_set_send_queue_size ( doca_comm_channel_ep_t* ep, uint16_t send_queue_size )
- set send queue size property for endpoint. The value send_queue_size may be increased internally, the actual value can be queried using doca_comm_channel_ep_get_send_queue_size().
- doca_error_t doca_comm_channel_ep_update_service_state_info ( doca_comm_channel_ep_t* local_ep )
- update the connections status for a given service endpoint
- doca_error_t doca_comm_channel_get_max_message_size ( doca_devinfo* devinfo, uint32_t* max_message_size )
- Get the maximum message size supported by comm_channel.
- doca_error_t doca_comm_channel_get_max_recv_queue_size ( doca_devinfo* devinfo, uint32_t* max_recv_queue_size )
- Get the maximum receive queue size supported by comm_channel.
- doca_error_t doca_comm_channel_get_max_send_queue_size ( doca_devinfo* devinfo, uint32_t* max_send_queue_size )
- Get the maximum send queue size supported by comm_channel.
- doca_error_t doca_comm_channel_get_max_service_name_len ( uint32_t* max_service_name_len )
- Get the comm_channel maximum Service name length.
- doca_error_t doca_comm_channel_get_service_max_num_connections ( doca_devinfo* devinfo, uint32_t* max_num_connections )
- Get the maximum number of connections the service can hold.
- doca_error_t doca_comm_channel_peer_addr_get_recv_bytes ( const doca_comm_channel_addr_t* peer_addr, uint64_t* recv_bytes )
- get total bytes received from specific peer address
- doca_error_t doca_comm_channel_peer_addr_get_recv_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* recv_messages )
- get total messages received from specific peer address
- doca_error_t doca_comm_channel_peer_addr_get_send_bytes ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_bytes )
- get total bytes sent to specific peer address
- doca_error_t doca_comm_channel_peer_addr_get_send_in_flight_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_in_flight_messages )
- get number of messages in transmission to a specific peer address
- doca_error_t doca_comm_channel_peer_addr_get_send_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_messages )
- get total messages sent to specific peer address
- doca_error_t doca_comm_channel_peer_addr_get_user_data ( doca_comm_channel_addr_t* peer_addr, uint64_t* user_data )
- Extract 'user_context' from peer_addr handle. By default, the 'user_context' is set to 0 and can be change using doca_comm_channel_peer_addr_set_user_data().
- doca_error_t doca_comm_channel_peer_addr_set_user_data ( doca_comm_channel_addr_t* peer_addr, uint64_t user_context )
- Save 'user_context' in peer_addr handle.
- doca_error_t doca_comm_channel_peer_addr_update_info ( doca_comm_channel_addr_t* peer_addr )
- update statistics for given peer_addr
Typedefs
- typedef doca_event_handle_t doca_event_channel_t
endpoint notification file descriptor for blocking with epoll() for recv ready event
Enumerations
Functions
- doca_error_t doca_comm_channel_ep_connect ( doca_comm_channel_ep_t* local_ep, const char* name, doca_comm_channel_addr_t** peer_addr )
-
Client side Connect.
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
- name
- identifies the service. Use doca_comm_channel_get_max_service_name_len() to get the maximal service name length.
- peer_addr
- handle to use for sending packets and recognize source of messages.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if no ep object, name or peer_address pointer given. DOCA_ERROR_DRIVER if failed to query the capabilities of the device that was set for the ep or acquire device attributes. DOCA_ERROR_NOT_SUPPORTED if tried to call connect on a device that doesn't have the capability to connect to Comm Channel. DOCA_ERROR_NOT_PERMITTED if the endpoint is already connected. DOCA_ERROR_BAD_STATE if no doca_dev was set. DOCA_ERROR_NO_MEMORY if memory allocation failed. DOCA_ERROR_INITIALIZATION if initialization of ep connection failed. DOCA_ERROR_CONNECTION_ABORTED if connection failed for any reason (connections rejected or failed).
Description
This function available only for client-side use. As part of the connection process, the client initiates an internal handshake protocol with the service.
If the connect function is being called before the service perform listen with the same name the connection will fail.
- doca_error_t doca_comm_channel_ep_create ( doca_comm_channel_ep_t** ep )
-
Create local endpoint The endpoint handle represents all the configuration needed for the channel to run. The user needs to hold one endpoint for all actions with the comm channel on his side.
Parameters
- ep
- handle to the newly created endpoint.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if no ep pointer or no attribute object was given. DOCA_ERROR_NO_MEMORY if memory allocation failed during ep creation. DOCA_ERROR_INITIALIZATION if initialization of ep failed. DOCA_ERROR_DRIVER if acquiring device attributes failed.
Description
- doca_error_t doca_comm_channel_ep_destroy ( doca_comm_channel_ep_t* local_ep )
-
Release endpoint handle.
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
Returns
DOCA_SUCCESS on success. DOCA_ERROR_NOT_CONNECTED if ep does not exist.
Description
The function close the event_channel and release all internal resources. The doca_comm_channel_ep_disconnect() is included as part of the destroy process.
- doca_error_t doca_comm_channel_ep_disconnect ( doca_comm_channel_ep_t* local_ep, doca_comm_channel_addr_t* peer_addr )
-
Disconnect the endpoint from the remote peer. block until all resources related to peer address are freed new connection could be created on the endpoint.
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
- peer_addr
- peer address to be disconnect from.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if no ep was provided. DOCA_ERROR_NO_MEMORY if a memory related error has occurred. DOCA_ERROR_NOT_CONNECTED if there is no connection. DOCA_ERROR_UNKNOWN if an unknown error occurred.
Description
- doca_error_t doca_comm_channel_ep_event_handle_arm_recv ( doca_comm_channel_ep_t* local_ep )
-
Arm the event_channel handle for received messages. This function arms the receive completion queue, facilitating blocking on the receive event channel. Blocking should be implemented by the user (poll in Linux, GetQueuedCompletionStatus in Windows).
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
Returns
DOCA_SUCCESS on success DOCA_ERROR_INVALID_VALUE if no ep object was given.
Description
- doca_error_t doca_comm_channel_ep_event_handle_arm_send ( doca_comm_channel_ep_t* local_ep )
-
Arm the event_channel handle for transmitted messages. This function arms the transmit completion queue, facilitating blocking on the transmit event channel. Blocking should be implemented by the user (poll in Linux, GetQueuedCompletionStatus in Windows).
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
Returns
DOCA_SUCCESS on success DOCA_ERROR_INVALID_VALUE if no ep object was given.
Description
- doca_error_t doca_comm_channel_ep_get_device ( doca_comm_channel_ep_t* ep, doca_dev** device )
-
get device property of endpoint.
Parameters
- ep
- endpoint from which the property should be retrieved.
- device
- current device used in endpoint.
Returns
DOCA_SUCCESS if property was returned successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given.
Description
- doca_error_t doca_comm_channel_ep_get_device_rep ( doca_comm_channel_ep_t* ep, doca_dev_rep** device_rep )
-
get device representor property of endpoint.
Parameters
- ep
- endpoint from which the property should be retrieved.
- device_rep
- current device representor used in endpoint.
Returns
DOCA_SUCCESS if property returned successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given.
Description
- doca_error_t doca_comm_channel_ep_get_event_channel ( doca_comm_channel_ep_t* local_ep, doca_event_channel_t* send_event_channel, doca_event_channel_t* recv_event_channel )
-
Extract the event_channel handles for user's use When the user send/receive packets with non-blocking mode, this handle can be used to get interrupt when a new event happened, using epoll() or similar function. The event channels are owned by the endpoint and release when calling doca_comm_channel_ep_destroy(). This function can be called only after calling doca_comm_channel_ep_listen() or doca_comm_channel_ep_connect().
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
- send_event_channel
- handle for send event channel.
- recv_event_channel
- handle for receive event channel.
Returns
DOCA_SUCCESS on success DOCA_ERROR_INVALID_VALUE if no ep was provided or if both event channel output params are null. DOCA_ERROR_BAD_STATE if called before calling doca_comm_channel_ep_listen() or doca_comm_channel_ep_connect(). DOCA_ERROR_NOT_FOUND if another error occurred.
Description
- doca_error_t doca_comm_channel_ep_get_max_msg_size ( doca_comm_channel_ep_t* ep, uint16_t* max_msg_size )
-
get maximal msg size property of endpoint. The size returned is the actual size being used and might differ from the size set with doca_comm_channel_ep_set_max_msg_size(), as there is a minimal size requirement. If maximal msg size was not set, using doca_comm_channel_ep_set_max_msg_size(), a default value is used and can be inquired by calling doca_comm_channel_ep_get_max_msg_size().
Parameters
- ep
- endpoint from which the property should be retrieved.
- max_msg_size
- maximal msg size used by the endpoint.
Returns
DOCA_SUCCESS if property was returned successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given.
Description
- doca_error_t doca_comm_channel_ep_get_peer_addr_list ( const doca_comm_channel_ep_t* local_ep, doca_comm_channel_addr_t*** peer_addr_array, uint32_t* peer_addr_array_len )
-
get an array of the peer_addr connected to a given service object
Parameters
- local_ep
- Pointer to service endpoint to get peer_addr array for.
- peer_addr_array
- An array of connected peer_addr objects.
- peer_addr_array_len
- The number of entries in the output peer_addr_array.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if any of the arguments are NULL. DOCA_ERROR_NOT_SUPPORTED if called on a client endpoint.
Description
This function can only be called on the service side. This function will return an array of all peer_addr connected to the given service endpoint, based on the information that was updated at the last time doca_comm_channel_ep_update_service_state_info() was called.
Note:When calling doca_comm_channel_ep_update_service_state_info() any previously received peer_addr_array is invalidated.
- doca_error_t doca_comm_channel_ep_get_pending_connections ( const doca_comm_channel_ep_t* local_ep, uint32_t* pending_connections )
-
get the number of pending connections for a given service endpoint
Parameters
- local_ep
- Pointer to peer_addr to get pending connections for.
- pending_connections
- The number of pending connections for the given service endpoint.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if any of the arguments are NULL. DOCA_ERROR_NOT_SUPPORTED if called on a client endpoint.
Description
This function can only be called on the service side. This function will return the number of pending connections for the given service endpoint, based on the information that was updated at the last time doca_comm_channel_ep_update_service_state_info() was called. Pending connections are connections that are waiting for handshake to be completed. doca_comm_channel_ep_recvfrom() should be called to handle pending connections.
- doca_error_t doca_comm_channel_ep_get_recv_queue_size ( doca_comm_channel_ep_t* ep, uint16_t* recv_queue_size )
-
get receive queue size property of endpoint. The size returned is the actual size being used and might differ from the size set with doca_comm_channel_ep_set_recv_queue_size(), as there is a minimal size requirement and the size is rounded up to the closest power of 2. If receive queue size was not set, using doca_comm_channel_ep_set_recv_queue_size(), a default value is used and can be inquired by calling doca_comm_channel_ep_get_recv_queue_size().
Parameters
- ep
- endpoint from which the property should be retrieved.
- recv_queue_size
- receive queue size used by the endpoint.
Returns
DOCA_SUCCESS if property was returned successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given.
Description
- doca_error_t doca_comm_channel_ep_get_send_queue_size ( doca_comm_channel_ep_t* ep, uint16_t* send_queue_size )
-
get send queue size property of endpoint. The size returned is the actual size being used and might differ from the size set with doca_comm_channel_ep_set_send_queue_size(), as there is a minimal size requirement and the size is rounded up to the closest power of 2. If send queue size was not set, using doca_comm_channel_ep_set_send_queue_size(), a default value is used and can be inquired by calling doca_comm_channel_ep_get_send_queue_size().
Parameters
- ep
- endpoint from which the property should be retrieved.
- send_queue_size
- send queue size used by the endpoint.
Returns
DOCA_SUCCESS if property was returned successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given.
Description
- doca_error_t doca_comm_channel_ep_get_service_event_channel ( doca_comm_channel_ep_t* local_ep, doca_event_channel_t* service_event_channel )
-
Extract the service_event_channel handle for user's use This handle can be used to get interrupt when one of the following events occurred: new client connected, client disconnected or service moved to error state using epoll() or similar function. If an event was received, the application can call doca_comm_channel_ep_update_service_state_info() and it's query functions to get the current service state. The service event channel is armed automatically upon calling doca_comm_channel_ep_update_service_state_info().
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
- service_event_channel
- handle for service event channel.
Returns
DOCA_SUCCESS on success DOCA_ERROR_INVALID_VALUE if no ep was provided or if service_event_channel is NULL. DOCA_ERROR_BAD_STATE if called before calling doca_comm_channel_ep_listen(). DOCA_ERROR_NOT_SUPPORTED if called on a non-service instant.
Description
The event channels are owned by the endpoint and release when calling doca_comm_channel_ep_destroy(). This function can be called only after calling doca_comm_channel_ep_listen().
This function available only for service side use.
- doca_error_t doca_comm_channel_ep_listen ( doca_comm_channel_ep_t* local_ep, const char* name )
-
Service side listen on all interfaces.
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
- name
- identifies the service. Use doca_comm_channel_get_max_service_name_len() to get the maximal service name length.
Returns
DOCA_SUCCESS on success DOCA_ERROR_INVALID_VALUE if no ep object or no name was given. DOCA_ERROR_DRIVER if failed to query the capabilities of the device that was set for the ep. DOCA_ERROR_NOT_SUPPORTED if tried to call listen on a device that doesn't have the capability to be defined as the service side for Comm Channel. DOCA_ERROR_BAD_STATE if no doca_dev or no doca_dev_rep was set. DOCA_ERROR_NOT_PERMITTED if the endpoint is already listening. DOCA_ERROR_NO_MEMORY if memory allocation failed. DOCA_ERROR_INITIALIZATION if initialization of service failed. DOCA_ERROR_CONNECTION_ABORTED if registration of service failed. DOCA_ERROR_DRIVER if acquiring device attributes failed.
Description
Endpoint will start listening on given devices. After calling this function the user should call doca_comm_channel_ep_recvfrom() in order to get new peers to communicate with.
This function available only for service side use.
- doca_error_t doca_comm_channel_ep_recvfrom ( doca_comm_channel_ep_t* local_ep, void* msg, size_t* len, int flags, doca_comm_channel_addr_t** peer_addr )
-
Receive message from connected client/service.
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
- msg
- pointer to the buffer where the message should be stored.
- len
- input - maximum len of bytes in the msg buffer, output - len of actual received message.
- flags
- flag for receive command. currently no flags are supported.
- peer_addr
- received message source address handle
Returns
DOCA_SUCCESS on successful receive. If a message was received, the value pointed by len will be updated with the number of bytes received. DOCA_ERROR_INVALID_VALUE if any of the parameters is NULL. DOCA_ERROR_NOT_CONNECTED if endpoint is service and listen was not called. DOCA_ERROR_AGAIN if no message was received. when returned, the user can use the endpoint's doca_event_channel_t to get indication for a new arrival message. DOCA_ERROR_CONNECTION_RESET if the message received is from a peer_addr that has error. DOCA_ERROR_INITIALIZATION if initialization of the DCI after a send error failed DOCA_ERROR_UNKNOWN if an unknown error occurred.
Description
On service side, doca_comm_channel_ep_recvfrom() also used for accepting new connection from clients.
- doca_error_t doca_comm_channel_ep_sendto ( doca_comm_channel_ep_t* local_ep, const void* msg, size_t len, int flags, doca_comm_channel_addr_t* peer_addr )
-
Send message to peer address. The connection to the wanted peer_address need to be established before sending the message.
Parameters
- local_ep
- handle for the endpoint created beforehand with doca_comm_channel_ep_create().
- msg
- pointer to the message to be sent.
- len
- length in bytes of msg.
- flags
- flag for send command. currently no flags are supported.
- peer_addr
- destination address handle of the send operation.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_NOT_CONNECTED if no peer_address was supplied or no connection was found. DOCA_ERROR_INVALID_VALUE if the supplied len was larger than the msgsize given at ep creation or any of the input variables are null. DOCA_ERROR_AGAIN if the send queue is full. when returned, the user can use the endpoint's doca_event_channel_t to get indication for a new empty slot. DOCA_ERROR_CONNECTION_RESET if the provided peer_addr experienced an error and it needs to be disconnected. DOCA_ERROR_INITIALIZATION if initialization of the DCI after a send error failed DOCA_ERROR_UNKNOWN if an unknown error occurred.
Description
- doca_error_t doca_comm_channel_ep_set_device ( doca_comm_channel_ep_t* ep, doca_dev* device )
-
set device property for endpoint.
Parameters
- ep
- endpoint to set the property for.
- device
- device to use in endpoint.
Returns
DOCA_SUCCESS if property set successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given. DOCA_ERROR_BAD_STATE if endpoint is already active.
Description
- doca_error_t doca_comm_channel_ep_set_device_rep ( doca_comm_channel_ep_t* ep, doca_dev_rep* device_rep )
-
set device representor property for endpoint.
Parameters
- ep
- endpoint to set the property for.
- device_rep
- device representor to use in endpoint.
Returns
DOCA_SUCCESS if property set successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given. DOCA_ERROR_BAD_STATE if endpoint is already active.
Description
- doca_error_t doca_comm_channel_ep_set_max_msg_size ( doca_comm_channel_ep_t* ep, uint16_t max_msg_size )
-
set maximal msg size property for endpoint. The value max_msg_size may be increased internally, the actual value can be queried using doca_comm_channel_ep_get_max_msg_size().
Parameters
- ep
- endpoint to set the property for.
- max_msg_size
- maximal msg size to use in endpoint.
Returns
DOCA_SUCCESS if property set successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given. DOCA_ERROR_BAD_STATE if endpoint is already active.
Description
- doca_error_t doca_comm_channel_ep_set_recv_queue_size ( doca_comm_channel_ep_t* ep, uint16_t recv_queue_size )
-
set receive queue size property for endpoint. The value recv_queue_size may be increased internally, the actual value can be queried using doca_comm_channel_ep_get_recv_queue_size().
Parameters
- ep
- endpoint to set the property for.
- recv_queue_size
- receive queue size to use in endpoint.
Returns
DOCA_SUCCESS if property set successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given. DOCA_ERROR_BAD_STATE if endpoint is already active.
Description
- doca_error_t doca_comm_channel_ep_set_send_queue_size ( doca_comm_channel_ep_t* ep, uint16_t send_queue_size )
-
set send queue size property for endpoint. The value send_queue_size may be increased internally, the actual value can be queried using doca_comm_channel_ep_get_send_queue_size().
Parameters
- ep
- endpoint to set the property for.
- send_queue_size
- send queue size to use in endpoint.
Returns
DOCA_SUCCESS if property set successfully. DOCA_ERROR_INVALID_VALUE if an invalid parameter was given. DOCA_ERROR_BAD_STATE if endpoint is already active.
Description
- doca_error_t doca_comm_channel_ep_update_service_state_info ( doca_comm_channel_ep_t* local_ep )
-
update the connections status for a given service endpoint
Parameters
- local_ep
- Pointer to endpoint to update the connections status on.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if local_ep is NULL. DOCA_ERROR_NOT_SUPPORTED if called on a client endpoint. DOCA_ERROR_DRIVER if failed to query the service status. DOCA_ERROR_AGAIN if an unexpected number of new clients joined and service status needs to be queried again. DOCA_ERROR_CONNECTION_RESET if the the service is in error state.
Description
Can only be called on the service side. This function saves a snapshot of the current service state, which can be queried using the functions doca_comm_channel_ep_get_peer_addr_list() or doca_comm_channel_ep_get_pending_connections(). This function can also be used to check if service is in error state, in that case it cannot be recovered and needs to be destroyed.
Note:Calling this function will also invalidate any peer_addr_array received from previous calls to doca_comm_channel_ep_get_peer_addr_list().
- doca_error_t doca_comm_channel_get_max_message_size ( doca_devinfo* devinfo, uint32_t* max_message_size )
-
Get the maximum message size supported by comm_channel.
Parameters
- devinfo
- devinfo that should be inquired for its maximum message size under comm channel limitations.
- max_message_size
- the maximum message size supported by comm_channel.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if either devinfo or max_message_size is NULL. DOCA_ERROR_UNEXPECTED if an unexpected error occurred.
Description
- doca_error_t doca_comm_channel_get_max_recv_queue_size ( doca_devinfo* devinfo, uint32_t* max_recv_queue_size )
-
Get the maximum receive queue size supported by comm_channel.
Parameters
- devinfo
- devinfo that should be inquired for its maximum receive queue size under comm channel limitations.
- max_recv_queue_size
- the maximum receive queue size supported by comm_channel.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if either devinfo or max_recv_queue_size is NULL. DOCA_ERROR_UNEXPECTED if an unexpected error occurred.
Description
- doca_error_t doca_comm_channel_get_max_send_queue_size ( doca_devinfo* devinfo, uint32_t* max_send_queue_size )
-
Get the maximum send queue size supported by comm_channel.
Parameters
- devinfo
- devinfo that should be inquired for its maximum send queue size under comm channel limitations.
- max_send_queue_size
- the maximum send queue size supported by comm_channel.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if either devinfo or max_send_queue_size is NULL. DOCA_ERROR_UNEXPECTED if an unexpected error occurred.
Description
- doca_error_t doca_comm_channel_get_max_service_name_len ( uint32_t* max_service_name_len )
-
Get the comm_channel maximum Service name length.
Parameters
- max_service_name_len
- The comm_channel max service name length, including the terminating null byte ('').
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if max_service_name_len is NULL.
Description
- doca_error_t doca_comm_channel_get_service_max_num_connections ( doca_devinfo* devinfo, uint32_t* max_num_connections )
-
Get the maximum number of connections the service can hold.
Parameters
- devinfo
- devinfo that should be inquired for its maximum number of connections.
- max_num_connections
- the maximum number of connections the service can hold.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if either devinfo or max_num_connections is NULL. DOCA_ERROR_NOT_SUPPORTED if querying this capability is not supported by the device. DOCA_ERROR_UNEXPECTED if an unexpected error occurred.
Description
Note:This capability should be queried only on the service side.
- doca_error_t doca_comm_channel_peer_addr_get_recv_bytes ( const doca_comm_channel_addr_t* peer_addr, uint64_t* recv_bytes )
-
get total bytes received from specific peer address
Parameters
- peer_addr
- Pointer to peer_addr to query statistics for.
- recv_bytes
- Will contain the number of received bytes from the given peer_addr.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if any of the arguments are NULL.
Description
This function will return the total number of bytes received from a given peer_addr, updated to the last time doca_comm_channel_peer_addr_update_info() was called.
- doca_error_t doca_comm_channel_peer_addr_get_recv_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* recv_messages )
-
get total messages received from specific peer address
Parameters
- peer_addr
- Pointer to peer_addr to query statistics for.
- recv_messages
- Will contain the number of received messages from the given peer_addr.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if any of the arguments are NULL.
Description
This function will return the total number of messages received from a given peer_addr, updated to the last time doca_comm_channel_peer_addr_update_info() was called.
- doca_error_t doca_comm_channel_peer_addr_get_send_bytes ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_bytes )
-
get total bytes sent to specific peer address
Parameters
- peer_addr
- Pointer to peer_addr to query statistics for.
- send_bytes
- Will contain the number of sent messages to the given peer_addr.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if any of the arguments are NULL.
Description
This function will return the total number of bytes sent to a given peer_addr, updated to the last time doca_comm_channel_peer_addr_update_info() was called.
- doca_error_t doca_comm_channel_peer_addr_get_send_in_flight_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_in_flight_messages )
-
get number of messages in transmission to a specific peer address
Parameters
- peer_addr
- Pointer to peer_addr to query statistics for.
- send_in_flight_messages
- Will contain the number of sent messages in transmission to the given peer_addr.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if any of the arguments are NULL.
Description
This function will return the number of messages still in transmission to a specific peer_addr, updated to the last time doca_comm_channel_peer_addr_update_info() was called. This function can be used to make sure all transmissions are finished before disconnection.
- doca_error_t doca_comm_channel_peer_addr_get_send_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_messages )
-
get total messages sent to specific peer address
Parameters
- peer_addr
- Pointer to peer_addr to query statistics for.
- send_messages
- Will contain the number of sent messages to the given peer_addr.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if any of the arguments are NULL.
Description
This function will return the total number of messages sent to a given peer_addr, updated to the last time doca_comm_channel_peer_addr_update_info() was called.
- doca_error_t doca_comm_channel_peer_addr_get_user_data ( doca_comm_channel_addr_t* peer_addr, uint64_t* user_data )
-
Extract 'user_context' from peer_addr handle. By default, the 'user_context' is set to 0 and can be change using doca_comm_channel_peer_addr_set_user_data().
Parameters
- peer_addr
- Pointer to peer_addr to extract user_context from.
- user_data
- will contain the extracted data.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if peer_address or user_data is NULL.
Description
- doca_error_t doca_comm_channel_peer_addr_set_user_data ( doca_comm_channel_addr_t* peer_addr, uint64_t user_context )
-
Save 'user_context' in peer_addr handle.
Parameters
- peer_addr
- Pointer to peer_addr to set user_context to.
- user_context
- Data to set for peer_addr.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if peer_address is NULL.
Description
Can be use by the user to identify the peer address received from doca_comm_channel_ep_recvfrom(). The user_context for new peers is initialized to 0.
- doca_error_t doca_comm_channel_peer_addr_update_info ( doca_comm_channel_addr_t* peer_addr )
-
update statistics for given peer_addr
Parameters
- peer_addr
- Pointer to peer_addr to update statistics in.
Returns
DOCA_SUCCESS on success. DOCA_ERROR_INVALID_VALUE if peer_addr is NULL. DOCA_ERROR_CONNECTION_INPROGRESS if connection is not yet established. DOCA_ERROR_CONNECTION_ABORTED if the connection failed.
Description
Should be used before calling to any peer_addr information function to update the saved statistics. This function can also be used to check if connection to a given peer_addr is currently connected. If a connection has failed, it is the user's responsibility to call doca_comm_channel_ep_disconnect() to free the peer_addr resources.
Lib to define compatibility with current version, define experimental Symbols.
To set a Symbol (or specifically a function) as experimental:
DOCA_EXPERIMENTAL int func_declare(int param1, int param2);
To remove warnings of experimental compile with "-D DOCA_ALLOW_EXPERIMENTAL_API" To remove warnings of deprecated compile with "-D DOCA_ALLOW_DEPRECATED_API"
Defines
- #define DLL_EXPORT_ATTR dllimport
- To hint the compiler that the function should be exposed to the DLL or imported from it, according to the availability of DOCA_EXPORTS. By default, it should be imported.
- #define DOCA_DEPRECATED
- To set a Symbol (or specifically a function) as deprecated.
- #define DOCA_EXPERIMENTAL
- To set a Symbol (or specifically a function) as experimental.
- #define DOCA_STABLE
- To set a Symbol (or specifically a function) as stable API, i.e. it won't be changed.
- #define DOCA_STRUCT_START
- #define __attribute__ ( _x_ )
- To allow compiling functions and structs that are using GCC attributes using __attribute__() in compilers that don't support them.
Defines
- #define DLL_EXPORT_ATTR dllimport
-
- #define DOCA_DEPRECATED
-
Value
__declspec(deprecated("Symbol is defined as deprecated"), DLL_EXPORT_ATTR)
- #define DOCA_EXPERIMENTAL
-
Value
__declspec(deprecated("Symbol is defined as experimental"), DLL_EXPORT_ATTR)
- #define DOCA_STABLE
-
Value
__declspec(DLL_EXPORT_ATTR)
- #define DOCA_STRUCT_START
Compatibility Helpers
Value
size_t __doca_api_version
- #define __attribute__ ( _x_ )
-
Defines
- #define DOCA_COMPAT_HELPERS
- declares the support/need for compatibility helper utils
Defines
Modules
-
DOCA Device Emulation - PCI Devices
-
DOCA Device Emulation - Virtio Devices
-
DOCA Device Emulation - Virtio FS Devices
DOCA Device Emulation - PCI Devices
DOCA Device Emulation - Virtio FS Devices
DOCA Device Emulation - Virtio Devices
1.10.2. DOCA Device Emulation - Virtio FS Devices
[ DOCA Device Emulation ]
DOCA library for emulated virtio FS devices
Modules
Defines
- #define DOCA_VFS_TAG_SIZE 37
- Size, in bytes, of the virtio FS tag in DOCA. According to the specification this is the name associated with the file system. The tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space. This field is not NULL terminated according to the Virtio specification, therefore, extra byte was added to make it NULL terminated in DOCA.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_dev_as_ctx ( doca_devemu_vfs_dev* vfs_dev )
- Convert DOCA Virtio FS device instance into DOCA context.
- DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_vfs_dev_as_pci_dev ( doca_devemu_vfs_dev* vfs_dev )
- Convert DOCA Virtio FS device instance into DOCA devemu PCI device.
- DOCA_EXPERIMENTAL doca_devemu_virtio_dev* doca_devemu_vfs_dev_as_virtio_dev ( doca_devemu_vfs_dev* vfs_dev )
- Convert DOCA Virtio FS device instance into DOCA Virtio device.
- doca_error_t doca_devemu_vfs_dev_create ( doca_devemu_vfs_type* vfs_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_vfs_dev** vfs_dev )
- Allocate DOCA Virtio FS device.
- doca_error_t doca_devemu_vfs_dev_destroy ( doca_devemu_vfs_dev* vfs_dev )
- Free a DOCA Virtio FS device object.
- doca_error_t doca_devemu_vfs_dev_get_num_request_queues ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* num_request_queues )
- Get the value of the VIRTIO FS Device num_request_queues register.
- doca_error_t doca_devemu_vfs_dev_get_tag ( const doca_devemu_vfs_dev* vfs_dev, char tag[DOCA_VFS_TAG_SIZE] )
- Get the value of the Virtio FS device tag. According to the specification the tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space of 36 bytes and is not NULL-terminated if the encoded bytes take up the entire field of 36 bytes. In our case in DOCA, the tag should be always NULL terminated. Therefore, if shorter than 36 bytes it will act as in the Virtio specification and if it take up 36 bytes it will be NULL terminated using the 37th byte.
- doca_error_t doca_devemu_vfs_dev_get_vfs_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
- Get the size of the user data buffer that will be allocated for each doca_devemu_vfs_req on behalf of the user. This buffer will be valid and used by the user upon receiving new doca_devemu_vfs_req. The buffer will become invalid after doca_devemu_vfs_req completion.
- doca_error_t doca_devemu_vfs_dev_set_num_request_queues ( doca_devemu_vfs_dev* vfs_dev, uint32_t num_request_queues )
- Set the value of the VIRTIO FS Device num_request_queues register.
- doca_error_t doca_devemu_vfs_dev_set_tag ( doca_devemu_vfs_dev* vfs_dev, const char tag[DOCA_VFS_TAG_SIZE] )
- Set the value of the Virtio FS device tag. According to the specification the tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space of 36 bytes and is not NULL-terminated if the encoded bytes take up the entire field of 36 bytes. In our case in DOCA, the tag should be always NULL terminated. Therefore, if shorter than 36 bytes it will act as in the Virtio specification and if it take up 36 bytes it will be NULL terminated using the 37th byte.
- doca_error_t doca_devemu_vfs_dev_set_vfs_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
- Set the size of the user data buffer that will be allocated for each doca_devemu_vfs_req on behalf of the user. This buffer will be valid and used by the user upon receiving new doca_devemu_vfs_req. The buffer will become invalid after doca_devemu_vfs_req completion.
Defines
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_dev_as_ctx ( doca_devemu_vfs_dev* vfs_dev )
-
Convert DOCA Virtio FS device instance into DOCA context.
Parameters
- vfs_dev
- DOCA Virtio FS device instance. This must remain valid until after the DOCA context is no longer required.
Returns
doca ctx upon success, NULL otherwise.
Description
- DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_vfs_dev_as_pci_dev ( doca_devemu_vfs_dev* vfs_dev )
-
Convert DOCA Virtio FS device instance into DOCA devemu PCI device.
Parameters
- vfs_dev
- DOCA Virtio FS device instance. This must remain valid until after the DOCA devemu PCI device is no longer required.
Returns
DOCA devemu pci device upon success, NULL otherwise.
Description
- DOCA_EXPERIMENTAL doca_devemu_virtio_dev* doca_devemu_vfs_dev_as_virtio_dev ( doca_devemu_vfs_dev* vfs_dev )
-
Convert DOCA Virtio FS device instance into DOCA Virtio device.
Parameters
- vfs_dev
- DOCA Virtio FS device instance. This must remain valid until after the DOCA Virtio device is no longer required.
Returns
doca virtio device upon success, NULL otherwise.
Description
- doca_error_t doca_devemu_vfs_dev_create ( doca_devemu_vfs_type* vfs_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_vfs_dev** vfs_dev )
-
Allocate DOCA Virtio FS device.
Parameters
- vfs_type
- The DOCA Virtio FS type to be associated to the device. Must be started.
- dev_rep
- Representor DOCA device.
- progress_engine
- The progress engine that will be used to receive events and task completions.
- vfs_dev
- The newly created DOCA Virtio FS device.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure. see doca_error_t.
Description
- doca_error_t doca_devemu_vfs_dev_destroy ( doca_devemu_vfs_dev* vfs_dev )
-
Free a DOCA Virtio FS device object.
Parameters
- vfs_dev
- The previously created DOCA Virtio FS device.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure. see doca_error_t.
Description
- doca_error_t doca_devemu_vfs_dev_get_num_request_queues ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* num_request_queues )
-
Get the value of the VIRTIO FS Device num_request_queues register.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to query.
- num_request_queues
- The value of Device virtio_fs_config:num_request_queues register according to virtio specification.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' or 'num_request_queues' is NULL
Description
- doca_error_t doca_devemu_vfs_dev_get_tag ( const doca_devemu_vfs_dev* vfs_dev, char tag[DOCA_VFS_TAG_SIZE] )
-
Get the value of the Virtio FS device tag. According to the specification the tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space of 36 bytes and is not NULL-terminated if the encoded bytes take up the entire field of 36 bytes. In our case in DOCA, the tag should be always NULL terminated. Therefore, if shorter than 36 bytes it will act as in the Virtio specification and if it take up 36 bytes it will be NULL terminated using the 37th byte.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to query.
- tag
- The value of the Virtio FS Device virtio_fs_config:tag according to virtio specification (with NULL termination).
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' or 'tag' is NULL
Description
- doca_error_t doca_devemu_vfs_dev_get_vfs_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
-
Get the size of the user data buffer that will be allocated for each doca_devemu_vfs_req on behalf of the user. This buffer will be valid and used by the user upon receiving new doca_devemu_vfs_req. The buffer will become invalid after doca_devemu_vfs_req completion.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to query.
- req_user_data_size
- Size, in bytes, of the user data buffer to be allocated on behalf of the user for each doca_devemu_vfs_req.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' or 'req_user_data_size' is NULL
Description
- doca_error_t doca_devemu_vfs_dev_set_num_request_queues ( doca_devemu_vfs_dev* vfs_dev, uint32_t num_request_queues )
-
Set the value of the VIRTIO FS Device num_request_queues register.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to modify. Must be idle.
- num_request_queues
- The value of Device virtio_fs_config:num_request_queues register according to virtio specification.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' is NULL
- DOCA_ERROR_BAD_STATE - device is not idle
Description
- doca_error_t doca_devemu_vfs_dev_set_tag ( doca_devemu_vfs_dev* vfs_dev, const char tag[DOCA_VFS_TAG_SIZE] )
-
Set the value of the Virtio FS device tag. According to the specification the tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space of 36 bytes and is not NULL-terminated if the encoded bytes take up the entire field of 36 bytes. In our case in DOCA, the tag should be always NULL terminated. Therefore, if shorter than 36 bytes it will act as in the Virtio specification and if it take up 36 bytes it will be NULL terminated using the 37th byte.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to modify. Must be idle.
- tag
- The value of the Virtio FS Device virtio_fs_config:tag according to virtio specification (with NULL termination).
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' or 'tag' is NULL
- DOCA_ERROR_BAD_STATE - device is not idle
- DOCA_ERROR_TOO_BIG - tag is greater than 36 bytes
Description
- doca_error_t doca_devemu_vfs_dev_set_vfs_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
-
Set the size of the user data buffer that will be allocated for each doca_devemu_vfs_req on behalf of the user. This buffer will be valid and used by the user upon receiving new doca_devemu_vfs_req. The buffer will become invalid after doca_devemu_vfs_req completion.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to modify. Must be idle.
- req_user_data_size
- Size, in bytes, of the user data buffer to be allocated on behalf of the user for each doca_devemu_vfs_req.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' is NULL
- DOCA_ERROR_BAD_STATE - device is not idle
Description
DOCA Device Emulation - Virtio FS IO Context
DOCA Device Emulation - Virtio FS Device Types
1.10.2.2. DOCA Device Emulation - Virtio FS Device Types
[ DOCA Device Emulation - Virtio FS Devices ]
DOCA Virtio FS type
Functions
- doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
- Find the default DOCA Virtio FS type associated with the device.
- doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
- Check if the default DOCA Virtio FS type is supported by the device.
- DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
- Convert DOCA Virtio FS type instance into DOCA PCI type.
- DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
- Convert DOCA Virtio FS type instance into DOCA Virtio type.
- doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
- Get the value of the num_request_queues register.
Functions
- doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
-
Find the default DOCA Virtio FS type associated with the device.
Parameters
- dev
- The doca dev associated with the default type.
- vfs_type
- Started DOCA Virtio FS default type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure. see doca_error_t.
Description
- doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
-
Check if the default DOCA Virtio FS type is supported by the device.
Parameters
- devinfo
- The device to query.
- supported
- 1 if the default Virtio FS type is supported by the device, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'devinfo' or 'supported' are NULL.
- DOCA_ERROR_DRIVER - internal doca driver error
Description
Get uint8_t value defining if the device can be used to manage DOCA Virtio FS emulated devices associated with the default Virtio FS type.
- DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
-
Convert DOCA Virtio FS type instance into DOCA PCI type.
Parameters
- vfs_type
- DOCA Virtio FS type instance. This must remain valid until after the DOCA PCI type is no longer required.
Returns
DOCA PCI type upon success, NULL otherwise.
Description
- DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
-
Convert DOCA Virtio FS type instance into DOCA Virtio type.
Parameters
- vfs_type
- DOCA Virtio FS type instance. This must remain valid until after the DOCA Virtio type is no longer required.
Returns
DOCA Virtio type upon success, NULL otherwise.
Description
- doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
-
Get the value of the num_request_queues register.
Parameters
- vfs_type
- The DOCA Virtio FS type instance to query.
- num_request_queues
- The virtio_fs_config:num_request_queues register value according to virtio specification to be used, by default, by devices associated with the vfs_type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_type' or 'num_request_queues' are NULL
Description
1.10.2. DOCA Device Emulation - Virtio FS Devices
[ DOCA Device Emulation ]
DOCA library for emulated virtio FS devices
Modules
Defines
- #define DOCA_VFS_TAG_SIZE 37
- Size, in bytes, of the virtio FS tag in DOCA. According to the specification this is the name associated with the file system. The tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space. This field is not NULL terminated according to the Virtio specification, therefore, extra byte was added to make it NULL terminated in DOCA.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_dev_as_ctx ( doca_devemu_vfs_dev* vfs_dev )
- Convert DOCA Virtio FS device instance into DOCA context.
- DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_vfs_dev_as_pci_dev ( doca_devemu_vfs_dev* vfs_dev )
- Convert DOCA Virtio FS device instance into DOCA devemu PCI device.
- DOCA_EXPERIMENTAL doca_devemu_virtio_dev* doca_devemu_vfs_dev_as_virtio_dev ( doca_devemu_vfs_dev* vfs_dev )
- Convert DOCA Virtio FS device instance into DOCA Virtio device.
- doca_error_t doca_devemu_vfs_dev_create ( doca_devemu_vfs_type* vfs_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_vfs_dev** vfs_dev )
- Allocate DOCA Virtio FS device.
- doca_error_t doca_devemu_vfs_dev_destroy ( doca_devemu_vfs_dev* vfs_dev )
- Free a DOCA Virtio FS device object.
- doca_error_t doca_devemu_vfs_dev_get_num_request_queues ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* num_request_queues )
- Get the value of the VIRTIO FS Device num_request_queues register.
- doca_error_t doca_devemu_vfs_dev_get_tag ( const doca_devemu_vfs_dev* vfs_dev, char tag[DOCA_VFS_TAG_SIZE] )
- Get the value of the Virtio FS device tag. According to the specification the tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space of 36 bytes and is not NULL-terminated if the encoded bytes take up the entire field of 36 bytes. In our case in DOCA, the tag should be always NULL terminated. Therefore, if shorter than 36 bytes it will act as in the Virtio specification and if it take up 36 bytes it will be NULL terminated using the 37th byte.
- doca_error_t doca_devemu_vfs_dev_get_vfs_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
- Get the size of the user data buffer that will be allocated for each doca_devemu_vfs_req on behalf of the user. This buffer will be valid and used by the user upon receiving new doca_devemu_vfs_req. The buffer will become invalid after doca_devemu_vfs_req completion.
- doca_error_t doca_devemu_vfs_dev_set_num_request_queues ( doca_devemu_vfs_dev* vfs_dev, uint32_t num_request_queues )
- Set the value of the VIRTIO FS Device num_request_queues register.
- doca_error_t doca_devemu_vfs_dev_set_tag ( doca_devemu_vfs_dev* vfs_dev, const char tag[DOCA_VFS_TAG_SIZE] )
- Set the value of the Virtio FS device tag. According to the specification the tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space of 36 bytes and is not NULL-terminated if the encoded bytes take up the entire field of 36 bytes. In our case in DOCA, the tag should be always NULL terminated. Therefore, if shorter than 36 bytes it will act as in the Virtio specification and if it take up 36 bytes it will be NULL terminated using the 37th byte.
- doca_error_t doca_devemu_vfs_dev_set_vfs_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
- Set the size of the user data buffer that will be allocated for each doca_devemu_vfs_req on behalf of the user. This buffer will be valid and used by the user upon receiving new doca_devemu_vfs_req. The buffer will become invalid after doca_devemu_vfs_req completion.
Defines
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_dev_as_ctx ( doca_devemu_vfs_dev* vfs_dev )
-
Convert DOCA Virtio FS device instance into DOCA context.
Parameters
- vfs_dev
- DOCA Virtio FS device instance. This must remain valid until after the DOCA context is no longer required.
Returns
doca ctx upon success, NULL otherwise.
Description
- DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_vfs_dev_as_pci_dev ( doca_devemu_vfs_dev* vfs_dev )
-
Convert DOCA Virtio FS device instance into DOCA devemu PCI device.
Parameters
- vfs_dev
- DOCA Virtio FS device instance. This must remain valid until after the DOCA devemu PCI device is no longer required.
Returns
DOCA devemu pci device upon success, NULL otherwise.
Description
- DOCA_EXPERIMENTAL doca_devemu_virtio_dev* doca_devemu_vfs_dev_as_virtio_dev ( doca_devemu_vfs_dev* vfs_dev )
-
Convert DOCA Virtio FS device instance into DOCA Virtio device.
Parameters
- vfs_dev
- DOCA Virtio FS device instance. This must remain valid until after the DOCA Virtio device is no longer required.
Returns
doca virtio device upon success, NULL otherwise.
Description
- doca_error_t doca_devemu_vfs_dev_create ( doca_devemu_vfs_type* vfs_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_vfs_dev** vfs_dev )
-
Allocate DOCA Virtio FS device.
Parameters
- vfs_type
- The DOCA Virtio FS type to be associated to the device. Must be started.
- dev_rep
- Representor DOCA device.
- progress_engine
- The progress engine that will be used to receive events and task completions.
- vfs_dev
- The newly created DOCA Virtio FS device.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure. see doca_error_t.
Description
- doca_error_t doca_devemu_vfs_dev_destroy ( doca_devemu_vfs_dev* vfs_dev )
-
Free a DOCA Virtio FS device object.
Parameters
- vfs_dev
- The previously created DOCA Virtio FS device.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure. see doca_error_t.
Description
- doca_error_t doca_devemu_vfs_dev_get_num_request_queues ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* num_request_queues )
-
Get the value of the VIRTIO FS Device num_request_queues register.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to query.
- num_request_queues
- The value of Device virtio_fs_config:num_request_queues register according to virtio specification.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' or 'num_request_queues' is NULL
Description
- doca_error_t doca_devemu_vfs_dev_get_tag ( const doca_devemu_vfs_dev* vfs_dev, char tag[DOCA_VFS_TAG_SIZE] )
-
Get the value of the Virtio FS device tag. According to the specification the tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space of 36 bytes and is not NULL-terminated if the encoded bytes take up the entire field of 36 bytes. In our case in DOCA, the tag should be always NULL terminated. Therefore, if shorter than 36 bytes it will act as in the Virtio specification and if it take up 36 bytes it will be NULL terminated using the 37th byte.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to query.
- tag
- The value of the Virtio FS Device virtio_fs_config:tag according to virtio specification (with NULL termination).
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' or 'tag' is NULL
Description
- doca_error_t doca_devemu_vfs_dev_get_vfs_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
-
Get the size of the user data buffer that will be allocated for each doca_devemu_vfs_req on behalf of the user. This buffer will be valid and used by the user upon receiving new doca_devemu_vfs_req. The buffer will become invalid after doca_devemu_vfs_req completion.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to query.
- req_user_data_size
- Size, in bytes, of the user data buffer to be allocated on behalf of the user for each doca_devemu_vfs_req.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' or 'req_user_data_size' is NULL
Description
- doca_error_t doca_devemu_vfs_dev_set_num_request_queues ( doca_devemu_vfs_dev* vfs_dev, uint32_t num_request_queues )
-
Set the value of the VIRTIO FS Device num_request_queues register.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to modify. Must be idle.
- num_request_queues
- The value of Device virtio_fs_config:num_request_queues register according to virtio specification.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' is NULL
- DOCA_ERROR_BAD_STATE - device is not idle
Description
- doca_error_t doca_devemu_vfs_dev_set_tag ( doca_devemu_vfs_dev* vfs_dev, const char tag[DOCA_VFS_TAG_SIZE] )
-
Set the value of the Virtio FS device tag. According to the specification the tag is encoded in UTF-8 and padded with NULL bytes if shorter than the available space of 36 bytes and is not NULL-terminated if the encoded bytes take up the entire field of 36 bytes. In our case in DOCA, the tag should be always NULL terminated. Therefore, if shorter than 36 bytes it will act as in the Virtio specification and if it take up 36 bytes it will be NULL terminated using the 37th byte.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to modify. Must be idle.
- tag
- The value of the Virtio FS Device virtio_fs_config:tag according to virtio specification (with NULL termination).
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' or 'tag' is NULL
- DOCA_ERROR_BAD_STATE - device is not idle
- DOCA_ERROR_TOO_BIG - tag is greater than 36 bytes
Description
- doca_error_t doca_devemu_vfs_dev_set_vfs_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
-
Set the size of the user data buffer that will be allocated for each doca_devemu_vfs_req on behalf of the user. This buffer will be valid and used by the user upon receiving new doca_devemu_vfs_req. The buffer will become invalid after doca_devemu_vfs_req completion.
Parameters
- vfs_dev
- The DOCA Virtio FS device instance to modify. Must be idle.
- req_user_data_size
- Size, in bytes, of the user data buffer to be allocated on behalf of the user for each doca_devemu_vfs_req.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_dev' is NULL
- DOCA_ERROR_BAD_STATE - device is not idle
Description
DOCA Device Emulation - Virtio FS IO Context
DOCA Device Emulation - Virtio FS Device Types
1.10.2.2. DOCA Device Emulation - Virtio FS Device Types
[ DOCA Device Emulation - Virtio FS Devices ]
DOCA Virtio FS type
Functions
- doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
- Find the default DOCA Virtio FS type associated with the device.
- doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
- Check if the default DOCA Virtio FS type is supported by the device.
- DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
- Convert DOCA Virtio FS type instance into DOCA PCI type.
- DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
- Convert DOCA Virtio FS type instance into DOCA Virtio type.
- doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
- Get the value of the num_request_queues register.
Functions
- doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
-
Find the default DOCA Virtio FS type associated with the device.
Parameters
- dev
- The doca dev associated with the default type.
- vfs_type
- Started DOCA Virtio FS default type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure. see doca_error_t.
Description
- doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
-
Check if the default DOCA Virtio FS type is supported by the device.
Parameters
- devinfo
- The device to query.
- supported
- 1 if the default Virtio FS type is supported by the device, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'devinfo' or 'supported' are NULL.
- DOCA_ERROR_DRIVER - internal doca driver error
Description
Get uint8_t value defining if the device can be used to manage DOCA Virtio FS emulated devices associated with the default Virtio FS type.
- DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
-
Convert DOCA Virtio FS type instance into DOCA PCI type.
Parameters
- vfs_type
- DOCA Virtio FS type instance. This must remain valid until after the DOCA PCI type is no longer required.
Returns
DOCA PCI type upon success, NULL otherwise.
Description
- DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
-
Convert DOCA Virtio FS type instance into DOCA Virtio type.
Parameters
- vfs_type
- DOCA Virtio FS type instance. This must remain valid until after the DOCA Virtio type is no longer required.
Returns
DOCA Virtio type upon success, NULL otherwise.
Description
- doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
-
Get the value of the num_request_queues register.
Parameters
- vfs_type
- The DOCA Virtio FS type instance to query.
- num_request_queues
- The virtio_fs_config:num_request_queues register value according to virtio specification to be used, by default, by devices associated with the vfs_type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_type' or 'num_request_queues' are NULL
Description
1.10.2.2. DOCA Device Emulation - Virtio FS Device Types
[ DOCA Device Emulation - Virtio FS Devices ]
DOCA Virtio FS type
Functions
- doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
- Find the default DOCA Virtio FS type associated with the device.
- doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
- Check if the default DOCA Virtio FS type is supported by the device.
- DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
- Convert DOCA Virtio FS type instance into DOCA PCI type.
- DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
- Convert DOCA Virtio FS type instance into DOCA Virtio type.
- doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
- Get the value of the num_request_queues register.
Functions
- doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
-
Find the default DOCA Virtio FS type associated with the device.
Parameters
- dev
- The doca dev associated with the default type.
- vfs_type
- Started DOCA Virtio FS default type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure. see doca_error_t.
Description
- doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
-
Check if the default DOCA Virtio FS type is supported by the device.
Parameters
- devinfo
- The device to query.
- supported
- 1 if the default Virtio FS type is supported by the device, 0 otherwise.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'devinfo' or 'supported' are NULL.
- DOCA_ERROR_DRIVER - internal doca driver error
Description
Get uint8_t value defining if the device can be used to manage DOCA Virtio FS emulated devices associated with the default Virtio FS type.
- DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
-
Convert DOCA Virtio FS type instance into DOCA PCI type.
Parameters
- vfs_type
- DOCA Virtio FS type instance. This must remain valid until after the DOCA PCI type is no longer required.
Returns
DOCA PCI type upon success, NULL otherwise.
Description
- DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
-
Convert DOCA Virtio FS type instance into DOCA Virtio type.
Parameters
- vfs_type
- DOCA Virtio FS type instance. This must remain valid until after the DOCA Virtio type is no longer required.
Returns
DOCA Virtio type upon success, NULL otherwise.
Description
- doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
-
Get the value of the num_request_queues register.
Parameters
- vfs_type
- The DOCA Virtio FS type instance to query.
- num_request_queues
- The virtio_fs_config:num_request_queues register value according to virtio specification to be used, by default, by devices associated with the vfs_type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - 'vfs_type' or 'num_request_queues' are NULL
Description
Modules
DOCA DPA Device
DOCA DPA Host
1.12.2. DOCA DPA Host
[ DOCA DPA ]
DOCA DPA Host library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA (24)
- DPA completion Log max user data type definition.
Typedefs
- typedef uint64_t doca_dpa_dev_async_ops_t
- DPA asynchronous ops handle type definition.
- typedef uint64_t doca_dpa_dev_completion_t
- DPA completion handle type definition.
- typedef uint64_t doca_dpa_dev_hash_table_t
- DPA hash table handle type definition.
- typedef uint64_t doca_dpa_dev_notification_completion_t
- DPA notification completion handle type definition.
- typedef uint64_t doca_dpa_dev_uintptr_t
- DPA pointer type definition.
- typedef void( doca_dpa_func_t
- Generic function pointer type.
Enumerations
- enum doca_dpa_dev_log_level_t
- DOCA DPA device log levels, sorted by verbosity from high to low.
Functions
- doca_error_t doca_dpa_app_get_name ( doca_dpa_app* app, char* app_name, uint32_t* app_name_len )
- Get DPA application name.
- doca_error_t doca_dpa_async_ops_attach ( doca_dpa_async_ops* async_ops, doca_dpa_completion* dpa_comp )
- Attach DPA asynchronous ops context to DPA completion context.
- doca_error_t doca_dpa_async_ops_create ( doca_dpa* dpa, unsigned int queue_size, uint64_t user_data, doca_dpa_async_ops** async_ops )
- Create DPA asynchronous ops context.
- doca_error_t doca_dpa_async_ops_destroy ( doca_dpa_async_ops* async_ops )
- Destroy DPA asynchronous ops context.
- doca_error_t doca_dpa_async_ops_get_dpa_handle ( doca_dpa_async_ops* async_ops, doca_dpa_dev_async_ops_t* handle )
- Get DPA asynchronous ops context handle.
- doca_error_t doca_dpa_async_ops_get_queue_size ( doca_dpa_async_ops* async_ops, unsigned int* queue_size )
- Get DPA asynchronous ops queue size.
- doca_error_t doca_dpa_async_ops_get_user_data ( doca_dpa_async_ops* async_ops, uint64_t* user_data )
- Get DPA asynchronous ops context user data.
- doca_error_t doca_dpa_async_ops_start ( doca_dpa_async_ops* async_ops )
- Start DPA asynchronous ops context.
- doca_error_t doca_dpa_async_ops_stop ( doca_dpa_async_ops* async_ops )
- Stop DPA asynchronous ops context.
- doca_error_t doca_dpa_cap_is_supported ( const doca_devinfo* devinfo )
- Get whether the DOCA device supports DPA.
- doca_error_t doca_dpa_completion_create ( doca_dpa* dpa, unsigned int queue_size, doca_dpa_completion** dpa_comp )
- Create DPA completion context.
- doca_error_t doca_dpa_completion_destroy ( doca_dpa_completion* dpa_comp )
- Destroy DPA completion context.
- doca_error_t doca_dpa_completion_get_dpa_handle ( doca_dpa_completion* dpa_comp, doca_dpa_dev_completion_t* handle )
- Get DPA completion context handle.
- doca_error_t doca_dpa_completion_get_queue_size ( doca_dpa_completion* dpa_comp, unsigned int* queue_size )
- Get DPA completion context queue size.
- doca_error_t doca_dpa_completion_get_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread** dpa_thread )
- Get DPA completion context attached thread.
- doca_error_t doca_dpa_completion_set_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread* dpa_thread )
- Set DPA completion context thread.
- doca_error_t doca_dpa_completion_start ( doca_dpa_completion* dpa_comp )
- Start DPA completion context.
- doca_error_t doca_dpa_completion_stop ( doca_dpa_completion* dpa_comp )
- Stop DPA completion context.
- doca_error_t doca_dpa_create ( doca_dev* dev, doca_dpa** dpa )
- Create a DOCA DPA Context.
- doca_error_t doca_dpa_d2h_buf_memcpy ( doca_dpa* dpa, doca_buf* buf, doca_dpa_dev_uintptr_t src_ptr, size_t size )
- Copy from DPA Heap to DOCA Buf.
- doca_error_t doca_dpa_d2h_memcpy ( doca_dpa* dpa, void* dst_ptr, doca_dpa_dev_uintptr_t src_ptr, size_t size )
- Copy from DPA Heap to host memory.
- doca_error_t doca_dpa_destroy ( doca_dpa* dpa )
- Destroy a DOCA DPA context.
- doca_error_t doca_dpa_eu_affinity_clear ( doca_dpa_eu_affinity* affinity )
- Clear DPA EU affinity.
- doca_error_t doca_dpa_eu_affinity_create ( doca_dpa* dpa, doca_dpa_eu_affinity** affinity )
- Create DPA EU affinity.
- doca_error_t doca_dpa_eu_affinity_destroy ( doca_dpa_eu_affinity* affinity )
- Destroy DPA EU affinity.
- doca_error_t doca_dpa_eu_affinity_get ( doca_dpa_eu_affinity* affinity, unsigned int* eu_id )
- Get EU ID from DPA EU affinity.
- doca_error_t doca_dpa_eu_affinity_set ( doca_dpa_eu_affinity* affinity, unsigned int eu_id )
- Set EU ID in DPA EU affinity.
- doca_error_t doca_dpa_get_app ( doca_dpa* dpa, doca_dpa_app** app )
- Get program app that was set for DPA context.
- doca_error_t doca_dpa_get_core_num ( doca_dpa* dpa, unsigned int* num_cores )
- Retrieve the number of available DPA cores.
- doca_error_t doca_dpa_get_kernel_max_run_time ( const doca_dpa* dpa, unsigned long long* value )
- Get maximum allowable time in seconds that a kernel may remain scheduled on the DPA. A kernel that remains scheduled beyond this limit may be terminated by the runtime and cause fatal behavior.
- doca_error_t doca_dpa_get_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t* log_level )
- Get device logs verbosity level that was set for DPA context.
- doca_error_t doca_dpa_get_max_threads_per_kernel ( const doca_dpa* dpa, unsigned int* value )
- Get maximum number of DPA threads to run a single kernel launch operation.
- doca_error_t doca_dpa_get_num_eus_per_core ( doca_dpa* dpa, unsigned int* eus_per_core )
- Retrieve the number of EUs available per DPA core.
- doca_error_t doca_dpa_get_total_num_eus_available ( doca_dpa* dpa, unsigned int* total_num_eus )
- Retrieve the total number of EUs available to the application.
- doca_error_t doca_dpa_h2d_buf_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, doca_buf* buf, size_t size )
- Copy from DOCA Buf to DPA Heap.
- doca_error_t doca_dpa_h2d_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, void* src_ptr, size_t size )
- Copy from host memory to DPA Heap.
- doca_error_t doca_dpa_hash_table_create ( doca_dpa* dpa, unsigned int num_entries, doca_dpa_hash_table** ht )
- Create a hash table on DPA.
- doca_error_t doca_dpa_hash_table_destroy ( doca_dpa_hash_table* ht )
- Destroy DPA hash table.
- doca_error_t doca_dpa_hash_table_get_dpa_handle ( doca_dpa_hash_table* ht, doca_dpa_dev_hash_table_t* ht_handle )
- Get DPA hash table handle.
- doca_error_t doca_dpa_kernel_launch_update_add ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int num_threads, doca_dpa_func_t* func, ... )
- Submit a kernel to DPA.
- doca_error_t doca_dpa_kernel_launch_update_set ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int num_threads, doca_dpa_func_t* func, ... )
- Submit a kernel to DPA that sets completion event.
- doca_error_t doca_dpa_log_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
- Get log file path to write device logs into.
- doca_error_t doca_dpa_log_file_set_path ( doca_dpa* dpa, const char* file_path )
- Set log file path to write device logs into.
- doca_error_t doca_dpa_mem_alloc ( doca_dpa* dpa, size_t size, doca_dpa_dev_uintptr_t* dev_ptr )
- Allocate DPA heap memory.
- doca_error_t doca_dpa_mem_free ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr )
- Free the previously allocated DPA memory.
- doca_error_t doca_dpa_memset ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr, int value, size_t size )
- Set DPA Heap memory to a value.
- doca_error_t doca_dpa_notification_completion_create ( doca_dpa* dpa, doca_dpa_thread* dpa_thread, doca_dpa_notification_completion** notify_comp )
- Create DPA notification completion context.
- doca_error_t doca_dpa_notification_completion_destroy ( doca_dpa_notification_completion* notify_comp )
- Destroy DPA notification completion context.
- doca_error_t doca_dpa_notification_completion_get_dpa_handle ( doca_dpa_notification_completion* notify_comp, doca_dpa_dev_notification_completion_t* handle )
- Get DPA notification completion context handle.
- doca_error_t doca_dpa_notification_completion_get_thread ( doca_dpa_notification_completion* notify_comp, doca_dpa_thread** dpa_thread )
- Get DPA notification completion context attached thread.
- doca_error_t doca_dpa_notification_completion_start ( doca_dpa_notification_completion* notify_comp )
- Start DPA notification completion context.
- doca_error_t doca_dpa_notification_completion_stop ( doca_dpa_notification_completion* notify_comp )
- Stop DPA notification completion context.
- doca_error_t doca_dpa_peek_at_last_error ( const doca_dpa* dpa )
- Return the last error generated on the DPA. Check if an error occurred on the device side runtime. This call does not reset the error state. If an error occurred, the DPA context enters a fatal state and must be destroyed by the user. In the case of a fatal error core dump and crash data will be written to the file path /tmp/doca_dpa_fatal or to the file path set by the API doca_dpa_log_file_set_path(), with the suffixes .PID.core and .PID.crash respectively, where PID is the process id.
- doca_error_t doca_dpa_rpc ( doca_dpa* dpa, doca_dpa_func_t* func, uint64_t* retval, ... )
- RPC to run DPA kernel.
- doca_error_t doca_dpa_set_app ( doca_dpa* dpa, doca_dpa_app* app )
- Set program app for DPA context.
- doca_error_t doca_dpa_set_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t log_level )
- Set device logs verbosity level.
- doca_error_t doca_dpa_start ( doca_dpa* dpa )
- Start a DPA context.
- doca_error_t doca_dpa_stop ( doca_dpa* dpa )
- Stop a DPA context.
- doca_error_t doca_dpa_thread_create ( doca_dpa* dpa, doca_dpa_thread** dpa_thread )
- Create DPA thread.
- doca_error_t doca_dpa_thread_destroy ( doca_dpa_thread* dpa_thread )
- Destroy DPA thread.
- doca_error_t doca_dpa_thread_get_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity** affinity )
- Get DPA thread affinity.
- doca_error_t doca_dpa_thread_get_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t** func, uint64_t* arg )
- Get DPA thread entry point and its argument.
- doca_error_t doca_dpa_thread_get_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t* dev_ptr )
- Get DPA thread local storage.
- doca_error_t doca_dpa_thread_group_create ( doca_dpa* dpa, unsigned int num_threads, doca_dpa_tg** tg )
- Create DPA thread group.
- doca_error_t doca_dpa_thread_group_destroy ( doca_dpa_tg* tg )
- Destroy DPA thread group.
- doca_error_t doca_dpa_thread_group_get_num_threads ( doca_dpa_tg* tg, unsigned int* num_threads )
- Get DPA thread group number of threads.
- doca_error_t doca_dpa_thread_group_set_thread ( doca_dpa_tg* tg, doca_dpa_thread* thread, unsigned int rank )
- Set DPA thread at 'rank' in DPA thread group.
- doca_error_t doca_dpa_thread_group_start ( doca_dpa_tg* tg )
- Start DPA thread group.
- doca_error_t doca_dpa_thread_group_stop ( doca_dpa_tg* tg )
- Stop DPA thread group.
- doca_error_t doca_dpa_thread_run ( doca_dpa_thread* dpa_thread )
- Run DPA thread.
- doca_error_t doca_dpa_thread_set_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity* affinity )
- Set DPA thread affinity.
- doca_error_t doca_dpa_thread_set_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t* func, uint64_t arg )
- Set DPA thread entry point and its argument.
- doca_error_t doca_dpa_thread_set_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t dev_ptr )
- Set DPA thread local storage.
- doca_error_t doca_dpa_thread_start ( doca_dpa_thread* dpa_thread )
- Start DPA thread.
- doca_error_t doca_dpa_thread_stop ( doca_dpa_thread* dpa_thread )
- Stop DPA thread.
- doca_error_t doca_dpa_trace_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
- Get trace file path to write device traces into.
- doca_error_t doca_dpa_trace_file_set_path ( doca_dpa* dpa, const char* file_path )
- Set trace file path to write device traces into.
Defines
- #define DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA (24)
Valid values are greater equal to 0 and less than (1 << DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA)
Typedefs
- typedef uint64_t doca_dpa_dev_async_ops_t
DPA asynchronous ops handle type definition.
- typedef uint64_t doca_dpa_dev_completion_t
DPA completion handle type definition.
- typedef uint64_t doca_dpa_dev_hash_table_t
DPA hash table handle type definition.
- typedef uint64_t doca_dpa_dev_notification_completion_t
DPA notification completion handle type definition.
- typedef uint64_t doca_dpa_dev_uintptr_t
DPA pointer type definition.
- typedef void( doca_dpa_func_t
Generic function pointer type. Kernel launches are made using a host function pointer that represents the device function. The host function stub is provided by the associated DPA compiler. The C language does not define conversion of a function pointer to an object pointer (such as void*). Programmers can use this generic function pointer type to typecast to and adhere to strict ISO C language requirements
Enumerations
- enum doca_dpa_dev_log_level_t
-
Values
- DOCA_DPA_DEV_LOG_LEVEL_DISABLE = 10
- Disable log messages
- DOCA_DPA_DEV_LOG_LEVEL_CRIT = 20
- Critical log level
- DOCA_DPA_DEV_LOG_LEVEL_ERROR = 30
- Error log level
- DOCA_DPA_DEV_LOG_LEVEL_WARNING = 40
- Warning log level
- DOCA_DPA_DEV_LOG_LEVEL_INFO = 50
- Info log level
- DOCA_DPA_DEV_LOG_LEVEL_DEBUG = 60
- Debug log level
- DOCA_DPA_DEV_LOG_LEVEL_DISABLE = 10
- Disable log messages
- DOCA_DPA_DEV_LOG_LEVEL_CRIT = 20
- Critical log level
- DOCA_DPA_DEV_LOG_LEVEL_ERROR = 30
- Error log level
- DOCA_DPA_DEV_LOG_LEVEL_WARNING = 40
- Warning log level
- DOCA_DPA_DEV_LOG_LEVEL_INFO = 50
- Info log level
- DOCA_DPA_DEV_LOG_LEVEL_DEBUG = 60
- Debug log level
Functions
- doca_error_t doca_dpa_app_get_name ( doca_dpa_app* app, char* app_name, uint32_t* app_name_len )
-
Get DPA application name.
Parameters
- app
- - DPA application generated by DPACC
- app_name
- - application name
- app_name_len
- - app_name length. Output is actual number of bytes written
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input, or the buffer received is of insufficient length
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
Description
The name of a DPA application is assigned using DPACC during the build phase. Once an application has been formed, its name is embedded within it. This function allows DOCA DPA’s host application to retrieve the name that was previously assigned.
The app_name buffer is allocated by the caller along with setting app_name_len indicating the length that was allocated. Upon return the app_name_len field is set to the actual length of the app_name
- doca_error_t doca_dpa_async_ops_attach ( doca_dpa_async_ops* async_ops, doca_dpa_completion* dpa_comp )
-
Attach DPA asynchronous ops context to DPA completion context.
Parameters
- async_ops
- - DPA asynchronous ops
- dpa_comp
- - DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA asynchronous ops is already started
Description
This function attaches DPA asynchronous ops context to DPA completion context. Once a context is attached and both contexts are started, asynchronous operations completion will be raised on the DPA completion (in case the user asks for a completion when issuing the operation). This function must be called before DPA asynchronous ops is started
- doca_error_t doca_dpa_async_ops_create ( doca_dpa* dpa, unsigned int queue_size, uint64_t user_data, doca_dpa_async_ops** async_ops )
-
Create DPA asynchronous ops context.
Parameters
- dpa
- - DPA context
- queue_size
- - DPA asynchronous ops queue size
- user_data
- - DPA asynchronous ops user data
- async_ops
- - created DPA asynchronous ops
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates a DPA asynchronous ops context. This allows the DPA thread to issue asynchronous operations, like DMA or other operations. User can provide DPA asynchronous ops context `user_data`, and retrieve this metadata in device using doca_dpa_dev_get_completion_user_data() API
Note:Queue size will be rounded to the next power of 2
- doca_error_t doca_dpa_async_ops_destroy ( doca_dpa_async_ops* async_ops )
-
Destroy DPA asynchronous ops context.
Parameters
- async_ops
- - Previously created DPA asynchronous ops
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
This function destroys DPA asynchronous ops context created by doca_dpa_async_ops_create()
- doca_error_t doca_dpa_async_ops_get_dpa_handle ( doca_dpa_async_ops* async_ops, doca_dpa_dev_async_ops_t* handle )
-
Get DPA asynchronous ops context handle.
Parameters
- async_ops
- - DPA asynchronous ops
- handle
- - DPA asynchronous ops handle
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA asynchronous ops is not started
Description
- doca_error_t doca_dpa_async_ops_get_queue_size ( doca_dpa_async_ops* async_ops, unsigned int* queue_size )
-
Get DPA asynchronous ops queue size.
Parameters
- async_ops
- - DPA asynchronous ops
- queue_size
- - DPA asynchronous ops queue size
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_async_ops_get_user_data ( doca_dpa_async_ops* async_ops, uint64_t* user_data )
-
Get DPA asynchronous ops context user data.
Parameters
- async_ops
- - DPA asynchronous ops
- user_data
- - DPA asynchronous ops user data
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_async_ops_start ( doca_dpa_async_ops* async_ops )
-
Start DPA asynchronous ops context.
Parameters
- async_ops
- - DPA asynchronous ops
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_async_ops_stop ( doca_dpa_async_ops* async_ops )
-
Stop DPA asynchronous ops context.
Parameters
- async_ops
- - DPA asynchronous ops
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_cap_is_supported ( const doca_devinfo* devinfo )
-
Get whether the DOCA device supports DPA.
Parameters
- devinfo
- - the device to query
Returns
- DOCA_SUCCESS - in case of the DOCA device queried has DPA support
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device queried does not support DPA
Description
- doca_error_t doca_dpa_completion_create ( doca_dpa* dpa, unsigned int queue_size, doca_dpa_completion** dpa_comp )
-
Create DPA completion context.
Parameters
- dpa
- - DPA context
- queue_size
- - DPA completion queue size
- dpa_comp
- - created DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates a DPA completion context. The user is responsible for creating and managing the context. The completion context can raise activation if it is attached to a DPA thread. The user can also decide to progress the context via polling it manually
Note:Queue size will be rounded to the next power of 2
- doca_error_t doca_dpa_completion_destroy ( doca_dpa_completion* dpa_comp )
-
Destroy DPA completion context.
Parameters
- dpa_comp
- - Previously created DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
This function destroys DPA completion context created by doca_dpa_completion_create()
- doca_error_t doca_dpa_completion_get_dpa_handle ( doca_dpa_completion* dpa_comp, doca_dpa_dev_completion_t* handle )
-
Get DPA completion context handle.
Parameters
- dpa_comp
- - DPA completion
- handle
- - DPA completion handle
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA completion is not started
Description
- doca_error_t doca_dpa_completion_get_queue_size ( doca_dpa_completion* dpa_comp, unsigned int* queue_size )
-
Get DPA completion context queue size.
Parameters
- dpa_comp
- - DPA completion
- queue_size
- - DPA completion queue size
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_completion_get_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread** dpa_thread )
-
Get DPA completion context attached thread.
Parameters
- dpa_comp
- - DPA completion
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_completion_set_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread* dpa_thread )
-
Set DPA completion context thread.
Parameters
- dpa_comp
- - DPA completion
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA completion is already started
Description
This function attaches DPA thread to DPA completion context. Attaching to a DPA thread is required if the user wants activation of the thread when a completion is raised on the completion context. This function must be called before DPA completion is started
- doca_error_t doca_dpa_completion_start ( doca_dpa_completion* dpa_comp )
-
Start DPA completion context.
Parameters
- dpa_comp
- - DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_completion_stop ( doca_dpa_completion* dpa_comp )
-
Stop DPA completion context.
Parameters
- dpa_comp
- - DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_create ( doca_dev* dev, doca_dpa** dpa )
-
Create a DOCA DPA Context.
Parameters
- dev
- - DOCA device
- dpa
- - created context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NOT_SUPPORTED - the device does not support DPA
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
This function creates a DOCA DPA context given a DOCA device. The context represents a program on the DPA that is referenced by the host process that called the context creation API
- doca_error_t doca_dpa_d2h_buf_memcpy ( doca_dpa* dpa, doca_buf* buf, doca_dpa_dev_uintptr_t src_ptr, size_t size )
-
Copy from DPA Heap to DOCA Buf.
Parameters
- dpa
- - DPA context
- buf
- - destination DOCA Buf
- src_ptr
- - DPA device heap source pointer
- size
- - size of data to copy
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function copies data from the DPA heap to start of DOCA Buf. This is a blocking call. When the call returns, the memory on the DOCA Buf is set to the values supplied in the DPA heap pointer
- doca_error_t doca_dpa_d2h_memcpy ( doca_dpa* dpa, void* dst_ptr, doca_dpa_dev_uintptr_t src_ptr, size_t size )
-
Copy from DPA Heap to host memory.
Parameters
- dpa
- - DPA context
- dst_ptr
- - host destination buffer address
- src_ptr
- - DPA device heap source pointer
- size
- - size of data to copy
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function copies data from the DPA heap to Host memory. This is a blocking call. When the call returns, the memory on the Host buffer is set to the values supplied in the DPA heap pointer
- doca_error_t doca_dpa_destroy ( doca_dpa* dpa )
-
Destroy a DOCA DPA context.
Parameters
- dpa
- - Previously created DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_IN_USE - in case the DPA context is still used by another DOCA context
Description
This function destroys DPA context created by doca_dpa_create()
- doca_error_t doca_dpa_eu_affinity_clear ( doca_dpa_eu_affinity* affinity )
-
Clear DPA EU affinity.
Parameters
- affinity
- - DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
This function clears EU ID in the given DPA EU affinity
- doca_error_t doca_dpa_eu_affinity_create ( doca_dpa* dpa, doca_dpa_eu_affinity** affinity )
-
Create DPA EU affinity.
Parameters
- dpa
- - DPA context
- affinity
- - created DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
This function creates DPA EU affinity. DPA EU affinity can be set for a DPA thread using doca_dpa_thread_set_affinity() to specify EU ID which DPA thread will use on DPA. Look at sched_getaffinity(3) for corresponding CPU use case. We are replicating it here for DPA
- doca_error_t doca_dpa_eu_affinity_destroy ( doca_dpa_eu_affinity* affinity )
-
Destroy DPA EU affinity.
Parameters
- affinity
- - previously created DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
This function destroys DPA EU affinity created by doca_dpa_eu_affinity_create()
- doca_error_t doca_dpa_eu_affinity_get ( doca_dpa_eu_affinity* affinity, unsigned int* eu_id )
-
Get EU ID from DPA EU affinity.
Parameters
- affinity
- - DPA EU affinity
- eu_id
- - EU ID
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
This function gets EU ID from the given DPA EU affinity
- doca_error_t doca_dpa_eu_affinity_set ( doca_dpa_eu_affinity* affinity, unsigned int eu_id )
-
Set EU ID in DPA EU affinity.
Parameters
- affinity
- - DPA EU affinity
- eu_id
- - EU ID
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
This function sets EU ID in the given DPA EU affinity
- doca_error_t doca_dpa_get_app ( doca_dpa* dpa, doca_dpa_app** app )
-
Get program app that was set for DPA context.
Parameters
- dpa
- - DPA context
- app
- - DPA application set for DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_get_core_num ( doca_dpa* dpa, unsigned int* num_cores )
-
Retrieve the number of available DPA cores.
Parameters
- dpa
- - DPA context
- num_cores
- - number of DPA cores
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
Use this info to select EU ID for DPA EU affinity
- doca_error_t doca_dpa_get_kernel_max_run_time ( const doca_dpa* dpa, unsigned long long* value )
-
Get maximum allowable time in seconds that a kernel may remain scheduled on the DPA. A kernel that remains scheduled beyond this limit may be terminated by the runtime and cause fatal behavior.
Parameters
- dpa
- - DPA context
- value
- - maximum allowed time in seconds for a kernel to remain scheduled
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid NULL input
Description
- doca_error_t doca_dpa_get_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t* log_level )
-
Get device logs verbosity level that was set for DPA context.
Parameters
- dpa
- - DPA context
- log_level
- - verbosity level for device logs
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
Description
- doca_error_t doca_dpa_get_max_threads_per_kernel ( const doca_dpa* dpa, unsigned int* value )
-
Get maximum number of DPA threads to run a single kernel launch operation.
Parameters
- dpa
- - DPA context
- value
- - number of maximum threads to run a kernel
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid NULL input
Description
- doca_error_t doca_dpa_get_num_eus_per_core ( doca_dpa* dpa, unsigned int* eus_per_core )
-
Retrieve the number of EUs available per DPA core.
Parameters
- dpa
- - DPA context
- eus_per_core
- - number of EUs per DPA core
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
Use this info to select EU ID for DPA EU affinity
- doca_error_t doca_dpa_get_total_num_eus_available ( doca_dpa* dpa, unsigned int* total_num_eus )
-
Retrieve the total number of EUs available to the application.
Parameters
- dpa
- - DPA context
- total_num_eus
- - number of total available EUs
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
Use this info to select EU ID for DPA EU affinity
- doca_error_t doca_dpa_h2d_buf_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, doca_buf* buf, size_t size )
-
Copy from DOCA Buf to DPA Heap.
Parameters
- dpa
- - DPA context
- dst_ptr
- - DPA device heap destination pointer
- buf
- - source DOCA Buf
- size
- - size of data to copy
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function copies data from start of DOCA Buf to the DPA heap. This is a blocking call. When the call returns, the memory on the DPA is set to the values supplied in the DOCA Buf
- doca_error_t doca_dpa_h2d_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, void* src_ptr, size_t size )
-
Copy from host memory to DPA Heap.
Parameters
- dpa
- - DPA context
- dst_ptr
- - DPA device heap destination pointer
- src_ptr
- - host source buffer address
- size
- - size of data to copy
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function copies data from Host memory to the DPA heap. This is a blocking call. When the call returns, the memory on the DPA is set to the values supplied in the Host buffer
- doca_error_t doca_dpa_hash_table_create ( doca_dpa* dpa, unsigned int num_entries, doca_dpa_hash_table** ht )
-
Create a hash table on DPA.
Parameters
- dpa
- - DPA context
- num_entries
- - number of entries in the hash table
- ht
- - Created DPA hash table
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function creates a hash table on DPA. Once it is created, user can retrieve its DPA handle and use it for add, remove and find operations in DPA kernels
- doca_error_t doca_dpa_hash_table_destroy ( doca_dpa_hash_table* ht )
-
Destroy DPA hash table.
Parameters
- ht
- - Previously created DPA hash table
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
This function destroys DPA hash table created by doca_dpa_hash_table_create()
- doca_error_t doca_dpa_hash_table_get_dpa_handle ( doca_dpa_hash_table* ht, doca_dpa_dev_hash_table_t* ht_handle )
-
Get DPA hash table handle.
Parameters
- ht
- - DPA hash table
- ht_handle
- - DPA hash table handle
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_kernel_launch_update_add ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int num_threads, doca_dpa_func_t* func, ... )
-
Submit a kernel to DPA.
Parameters
- dpa
- - previously created DPA context
- wait_event
- - event to wait on before executing the kernel (optional)
- wait_threshold
- - wait event count threshold to wait for before executing. Valid values [0-254]
- comp_event
- - event to signal after kernel execution is complete (optional)
- comp_count
- - completion count to add for completion event when func is complete
- num_threads
- - number of threads to use. This number must be equal or lower than the maximum allowed (see doca_dpa_get_max_threads_per_kernel)
- func
- - host function pointer representing DPA kernel
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function submits a kernel for launch on the specified `dpa` context. The kernel starts execution when its wait event value is greater than or equal to specified threshold. The value specified in `comp_count` is added to the `comp_event` when the kernel finishes execution.
- doca_error_t doca_dpa_kernel_launch_update_set ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int num_threads, doca_dpa_func_t* func, ... )
-
Submit a kernel to DPA that sets completion event.
Parameters
- dpa
- - previously created DPA context
- wait_event
- - event to wait on before executing the kernel (optional)
- wait_threshold
- - wait event count threshold to wait for before executing. Valid values [0-254]
- comp_event
- - event to signal after kernel execution is complete (optional)
- comp_count
- - completion count to set for completion event when func is complete
- num_threads
- - number of threads to use. This number must be equal or lower than the maximum allowed (see doca_dpa_get_max_threads_per_kernel)
- func
- - host function pointer representing DPA kernel
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function submits a kernel for launch on the specified `dpa` context. The kernel starts execution when its wait event value is greater than or equal to specified threshold. The completion event is set to value specified in `comp_count` when the kernel finishes execution.
The function to be launched `func` is a host function pointer corresponding to the DPA device function. For example, if the device function is declared as: `__dpa_global__ hello(int arg1)`, then the user is expected to declare the function in the Host application as `extern doca_dpa_func_t hello;`. After the application is linked and loaded using the compiler, a function pointer `hello` can be used in as the `func` argument. The arguments to the function `hello` can be passed inline in the call as var args. For example, to call `hello` on the device using `4` threads with argument `5`, the invocation looks like: `doca_dpa_kernel_launch_update_set(..., 4, hello, 5);`
- doca_error_t doca_dpa_log_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
-
Get log file path to write device logs into.
Parameters
- dpa
- - DPA context
- file_path
- - pathname to the log file to write device logs into
- file_path_len
- - file_path length. Output is actual number of bytes written
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
- DOCA_ERROR_NO_MEMORY - memory allocation error
Description
The file_path buffer is allocated by the caller along with setting file_path_len indicating the length that was allocated. Upon return the file_path_len field is set to the actual length of the file_path
- doca_error_t doca_dpa_log_file_set_path ( doca_dpa* dpa, const char* file_path )
-
Set log file path to write device logs into.
Parameters
- dpa
- - DPA context
- file_path
- - pathname to the log file to write device logs into
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
- DOCA_ERROR_BAD_STATE - DPA context is already started
- DOCA_ERROR_NO_MEMORY - memory allocation error
- DOCA_ERROR_OPERATING_SYSTEM - error occurred in opening the file
Description
Must be set before calling doca_dpa_start()
Note:if not set then stdout will be used by default
- doca_error_t doca_dpa_mem_alloc ( doca_dpa* dpa, size_t size, doca_dpa_dev_uintptr_t* dev_ptr )
-
Allocate DPA heap memory.
Parameters
- dpa
- - DPA context
- size
- - requested size of allocation
- dev_ptr
- - pointer to the allocated memory on the DPA device
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function allocates memory of `size` bytes on the DPA process heap. The memory is aligned for any language supported data type. The memory is not zeroed on allocation. The allocated memory is returned in `dev_ptr` when successful. When memory allocation fails, `dev_ptr` is set to 0x0 (NULL)
- doca_error_t doca_dpa_mem_free ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr )
-
Free the previously allocated DPA memory.
Parameters
- dpa
- - DPA context
- dev_ptr
- - pointer to the memory that was previously allocated on the DPA device
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function frees the allocated memory allocated on the DPA heap. Users are expected to ensure that kernels on the DPA are no longer accessing the memory using established synchronization mechanisms (see events)
- doca_error_t doca_dpa_memset ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr, int value, size_t size )
-
Set DPA Heap memory to a value.
Parameters
- dpa
- - DPA context
- dev_ptr
- - DPA device heap pointer
- value
- - value to set
- size
- - size of device buffer
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function sets DPA heap memory to a supplied value. This is a blocking call. When the call returns, the memory on the DPA is set to the value supplied
- doca_error_t doca_dpa_notification_completion_create ( doca_dpa* dpa, doca_dpa_thread* dpa_thread, doca_dpa_notification_completion** notify_comp )
-
Create DPA notification completion context.
Parameters
- dpa
- - DPA context
- dpa_thread
- - attached DPA thread
- notify_comp
- - created DPA notification completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates a DPA notification completion context. This context is used to activate the attached DPA thread in device using doca_dpa_dev_thread_notify() API. The thread activation is done without receiving a completion on the thread's attached completion context. Therefore it is expected that the user of this method of thread activation will pass the message in another fashion – such as shared memory
- doca_error_t doca_dpa_notification_completion_destroy ( doca_dpa_notification_completion* notify_comp )
-
Destroy DPA notification completion context.
Parameters
- notify_comp
- - Previously created DPA notification completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
This function destroys DPA notification completion context created by doca_dpa_notification_completion_create()
- doca_error_t doca_dpa_notification_completion_get_dpa_handle ( doca_dpa_notification_completion* notify_comp, doca_dpa_dev_notification_completion_t* handle )
-
Get DPA notification completion context handle.
Parameters
- notify_comp
- - DPA notification completion
- handle
- - DPA notification completion handle
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA notification completion is not started
Description
- doca_error_t doca_dpa_notification_completion_get_thread ( doca_dpa_notification_completion* notify_comp, doca_dpa_thread** dpa_thread )
-
Get DPA notification completion context attached thread.
Parameters
- notify_comp
- - DPA notification completion
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_notification_completion_start ( doca_dpa_notification_completion* notify_comp )
-
Start DPA notification completion context.
Parameters
- notify_comp
- - DPA notification completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_notification_completion_stop ( doca_dpa_notification_completion* notify_comp )
-
Stop DPA notification completion context.
Parameters
- notify_comp
- - DPA notification completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_peek_at_last_error ( const doca_dpa* dpa )
-
Return the last error generated on the DPA. Check if an error occurred on the device side runtime. This call does not reset the error state. If an error occurred, the DPA context enters a fatal state and must be destroyed by the user. In the case of a fatal error core dump and crash data will be written to the file path /tmp/doca_dpa_fatal or to the file path set by the API doca_dpa_log_file_set_path(), with the suffixes .PID.core and .PID.crash respectively, where PID is the process id.
Parameters
- dpa
- - DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid NULL input
- DOCA_ERROR_BAD_STATE - received error on device side
Description
- doca_error_t doca_dpa_rpc ( doca_dpa* dpa, doca_dpa_func_t* func, uint64_t* retval, ... )
-
RPC to run DPA kernel.
Parameters
- dpa
- - DPA context
- func
- - Host function pointer representing DPA kernel to run
- retval
- - A pointer to the DPA kernel return value
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is not started
Description
This function executes the supplied `func` with its argument on the specified `dpa` context. This is a blocking API.
`func` is a host function pointer corresponding to the DPA device function. Please note that DPA device `func` must be annotated with `__dpa_rpc__` annotation, such as `__dpa_rpc__ uint64_t hello(int arg1)`. Also the user is expected to declare the function in the Host application as `extern doca_dpa_func_t hello;`.
- doca_error_t doca_dpa_set_app ( doca_dpa* dpa, doca_dpa_app* app )
-
Set program app for DPA context.
Parameters
- dpa
- - DPA context
- app
- - DPA application generated by DPACC
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - if DPA context is already started
Description
The program app represents a program on the DPA that is referenced by the host process that called the context creation API. Must be set before calling doca_dpa_start()
- doca_error_t doca_dpa_set_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t log_level )
-
Set device logs verbosity level.
Parameters
- dpa
- - DPA context
- log_level
- - verbosity level for device logs
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA context is already started
Description
Log prints from the device will be printed to host with verbosity that is equal or lower than the set log level. Must be set before calling doca_dpa_start()
Note:Default value of DPA log level is DOCA_DPA_DEV_LOG_LEVEL_INFO
- doca_error_t doca_dpa_start ( doca_dpa* dpa )
-
Start a DPA context.
Parameters
- dpa
- - DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
- doca_error_t doca_dpa_stop ( doca_dpa* dpa )
-
Stop a DPA context.
Parameters
- dpa
- - DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_IN_USE - in case of attached thread/completion context that is not stopped
Description
- doca_error_t doca_dpa_thread_create ( doca_dpa* dpa, doca_dpa_thread** dpa_thread )
-
Create DPA thread.
Parameters
- dpa
- - DPA context
- dpa_thread
- - created DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates a DPA thread. DPA thread used to run a user kernel on DPA. User can control on which EU to run the DPA kernel. The thread is activated on DPA using two methods: 1- Thread Activation using DPA notification completion context. 2- Attaching completion context to the thread. To activate the thread in order to enable receiving any messages or completions, user must: 1- Create DPA thread and configure it using thread setter functions. 2- Attach to a completion context. 3- Set thread to runnable state using doca_dpa_thread_run() API.
- doca_error_t doca_dpa_thread_destroy ( doca_dpa_thread* dpa_thread )
-
Destroy DPA thread.
Parameters
- dpa_thread
- - Previously created DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
This function destroys DPA thread created by doca_dpa_thread_create()
- doca_error_t doca_dpa_thread_get_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity** affinity )
-
Get DPA thread affinity.
Parameters
- dpa_thread
- - DPA thread
- affinity
- - DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_thread_get_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t** func, uint64_t* arg )
-
Get DPA thread entry point and its argument.
Parameters
- dpa_thread
- - DPA thread
- func
- - DPA thread entry point
- arg
- - DPA thread entry point argument
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_thread_get_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t* dev_ptr )
-
Get DPA thread local storage.
Parameters
- dpa_thread
- - DPA thread
- dev_ptr
- - DPA device memory address
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_thread_group_create ( doca_dpa* dpa, unsigned int num_threads, doca_dpa_tg** tg )
-
Create DPA thread group.
Parameters
- dpa
- - DPA context
- num_threads
- - number of threads for the DPA thread group
- tg
- - created thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates an empty thread group (no populated threads) of a given size. User can set thread at specific rank using doca_dpa_thread_group_set_thread() API. Threads must be set in all ranks before thread group is started
- doca_error_t doca_dpa_thread_group_destroy ( doca_dpa_tg* tg )
-
Destroy DPA thread group.
Parameters
- tg
- - Previously created DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
This function destroys DPA thread group created by doca_dpa_thread_group_create()
- doca_error_t doca_dpa_thread_group_get_num_threads ( doca_dpa_tg* tg, unsigned int* num_threads )
-
Get DPA thread group number of threads.
Parameters
- tg
- - DPA thread group
- num_threads
- - number of threads for the DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_thread_group_set_thread ( doca_dpa_tg* tg, doca_dpa_thread* thread, unsigned int rank )
-
Set DPA thread at 'rank' in DPA thread group.
Parameters
- tg
- - DPA thread group
- thread
- - DPA thread
- rank
- - rank of the DPA thread in DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE
Description
Thread rank is an index of the thread (between 0 and size()-1) within the group. This function must be called before starting both DPA thread and DPA thread group
- doca_error_t doca_dpa_thread_group_start ( doca_dpa_tg* tg )
-
Start DPA thread group.
Parameters
- tg
- - DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_thread_group_stop ( doca_dpa_tg* tg )
-
Stop DPA thread group.
Parameters
- tg
- - DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_thread_run ( doca_dpa_thread* dpa_thread )
-
Run DPA thread.
Parameters
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
This function sets the thread to runnable state such that when the completion context attached to the thread receives a message, the thread will run. This function must be called after DPA thread is: 1- Created and started. 2- Attached to a completion context.
- doca_error_t doca_dpa_thread_set_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity* affinity )
-
Set DPA thread affinity.
Parameters
- dpa_thread
- - DPA thread
- affinity
- - DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA thread is already started
Description
This function sets the affinity type of DPA thread to “fixed”. Fixed affinity means that the thread will run only on the EU ID provided in the given DPA EU affinity. When affinity is not specified, the default affinity mode is “relaxed”, means the thread will run on any available EU ID when its rescheduled
- doca_error_t doca_dpa_thread_set_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t* func, uint64_t arg )
-
Set DPA thread entry point and its argument.
Parameters
- dpa_thread
- - DPA thread
- func
- - Host function pointer representing DPA kernel which thread run when it is triggered
- arg
- - DPA thread entry point argument
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA thread is already started
Description
The DPA thread function `func` is a host function pointer corresponding to the DPA device function. The device function must be annotated with `__dpa_global__` keyword such as`__dpa_global__ void hello(int arg1)`. In the Host application, the user is expected to declare the function as `extern doca_dpa_func_t hello;`. After the application is linked and loaded using the compiler, the function pointer `hello` can be used in as the `func` argument. This function must be called before DPA thread is started
- doca_error_t doca_dpa_thread_set_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t dev_ptr )
-
Set DPA thread local storage.
Parameters
- dpa_thread
- - DPA thread
- dev_ptr
- - DPA device memory address
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA thread is already started
Description
User can ask to store an opaque (DPA device memory pointer) for a DPA thread in host side using Thread local storage utility. In device kernel, user can obtain this opaque using doca_dpa_dev_thread_get_local_storage() API. This function must be called before DPA thread is started
- doca_error_t doca_dpa_thread_start ( doca_dpa_thread* dpa_thread )
-
Start DPA thread.
Parameters
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_thread_stop ( doca_dpa_thread* dpa_thread )
-
Stop DPA thread.
Parameters
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_trace_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
-
Get trace file path to write device traces into.
Parameters
- dpa
- - DPA context
- file_path
- - pathname to the trace file to write device traces into
- file_path_len
- - file_path length. Output is actual number of bytes written
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
- DOCA_ERROR_NO_MEMORY - memory allocation error
Description
The file_path buffer is allocated by the caller along with setting file_path_len indicating the length that was allocated. Upon return the file_path_len field is set to the actual length of the file_path
- doca_error_t doca_dpa_trace_file_set_path ( doca_dpa* dpa, const char* file_path )
-
Set trace file path to write device traces into.
Parameters
- dpa
- - DPA context
- file_path
- - pathname to the trace file to write device traces into
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
- DOCA_ERROR_BAD_STATE - DPA context is already started
- DOCA_ERROR_NO_MEMORY - memory allocation error
- DOCA_ERROR_OPERATING_SYSTEM - error occurred in opening the file
Description
Must be set before calling doca_dpa_start()
Note:if not set then stdout will be used by default
1.12.2. DOCA DPA Host
[ DOCA DPA ]
DOCA DPA Host library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA (24)
- DPA completion Log max user data type definition.
Typedefs
- typedef uint64_t doca_dpa_dev_async_ops_t
- DPA asynchronous ops handle type definition.
- typedef uint64_t doca_dpa_dev_completion_t
- DPA completion handle type definition.
- typedef uint64_t doca_dpa_dev_hash_table_t
- DPA hash table handle type definition.
- typedef uint64_t doca_dpa_dev_notification_completion_t
- DPA notification completion handle type definition.
- typedef uint64_t doca_dpa_dev_uintptr_t
- DPA pointer type definition.
- typedef void( doca_dpa_func_t
- Generic function pointer type.
Enumerations
- enum doca_dpa_dev_log_level_t
- DOCA DPA device log levels, sorted by verbosity from high to low.
Functions
- doca_error_t doca_dpa_app_get_name ( doca_dpa_app* app, char* app_name, uint32_t* app_name_len )
- Get DPA application name.
- doca_error_t doca_dpa_async_ops_attach ( doca_dpa_async_ops* async_ops, doca_dpa_completion* dpa_comp )
- Attach DPA asynchronous ops context to DPA completion context.
- doca_error_t doca_dpa_async_ops_create ( doca_dpa* dpa, unsigned int queue_size, uint64_t user_data, doca_dpa_async_ops** async_ops )
- Create DPA asynchronous ops context.
- doca_error_t doca_dpa_async_ops_destroy ( doca_dpa_async_ops* async_ops )
- Destroy DPA asynchronous ops context.
- doca_error_t doca_dpa_async_ops_get_dpa_handle ( doca_dpa_async_ops* async_ops, doca_dpa_dev_async_ops_t* handle )
- Get DPA asynchronous ops context handle.
- doca_error_t doca_dpa_async_ops_get_queue_size ( doca_dpa_async_ops* async_ops, unsigned int* queue_size )
- Get DPA asynchronous ops queue size.
- doca_error_t doca_dpa_async_ops_get_user_data ( doca_dpa_async_ops* async_ops, uint64_t* user_data )
- Get DPA asynchronous ops context user data.
- doca_error_t doca_dpa_async_ops_start ( doca_dpa_async_ops* async_ops )
- Start DPA asynchronous ops context.
- doca_error_t doca_dpa_async_ops_stop ( doca_dpa_async_ops* async_ops )
- Stop DPA asynchronous ops context.
- doca_error_t doca_dpa_cap_is_supported ( const doca_devinfo* devinfo )
- Get whether the DOCA device supports DPA.
- doca_error_t doca_dpa_completion_create ( doca_dpa* dpa, unsigned int queue_size, doca_dpa_completion** dpa_comp )
- Create DPA completion context.
- doca_error_t doca_dpa_completion_destroy ( doca_dpa_completion* dpa_comp )
- Destroy DPA completion context.
- doca_error_t doca_dpa_completion_get_dpa_handle ( doca_dpa_completion* dpa_comp, doca_dpa_dev_completion_t* handle )
- Get DPA completion context handle.
- doca_error_t doca_dpa_completion_get_queue_size ( doca_dpa_completion* dpa_comp, unsigned int* queue_size )
- Get DPA completion context queue size.
- doca_error_t doca_dpa_completion_get_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread** dpa_thread )
- Get DPA completion context attached thread.
- doca_error_t doca_dpa_completion_set_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread* dpa_thread )
- Set DPA completion context thread.
- doca_error_t doca_dpa_completion_start ( doca_dpa_completion* dpa_comp )
- Start DPA completion context.
- doca_error_t doca_dpa_completion_stop ( doca_dpa_completion* dpa_comp )
- Stop DPA completion context.
- doca_error_t doca_dpa_create ( doca_dev* dev, doca_dpa** dpa )
- Create a DOCA DPA Context.
- doca_error_t doca_dpa_d2h_buf_memcpy ( doca_dpa* dpa, doca_buf* buf, doca_dpa_dev_uintptr_t src_ptr, size_t size )
- Copy from DPA Heap to DOCA Buf.
- doca_error_t doca_dpa_d2h_memcpy ( doca_dpa* dpa, void* dst_ptr, doca_dpa_dev_uintptr_t src_ptr, size_t size )
- Copy from DPA Heap to host memory.
- doca_error_t doca_dpa_destroy ( doca_dpa* dpa )
- Destroy a DOCA DPA context.
- doca_error_t doca_dpa_eu_affinity_clear ( doca_dpa_eu_affinity* affinity )
- Clear DPA EU affinity.
- doca_error_t doca_dpa_eu_affinity_create ( doca_dpa* dpa, doca_dpa_eu_affinity** affinity )
- Create DPA EU affinity.
- doca_error_t doca_dpa_eu_affinity_destroy ( doca_dpa_eu_affinity* affinity )
- Destroy DPA EU affinity.
- doca_error_t doca_dpa_eu_affinity_get ( doca_dpa_eu_affinity* affinity, unsigned int* eu_id )
- Get EU ID from DPA EU affinity.
- doca_error_t doca_dpa_eu_affinity_set ( doca_dpa_eu_affinity* affinity, unsigned int eu_id )
- Set EU ID in DPA EU affinity.
- doca_error_t doca_dpa_get_app ( doca_dpa* dpa, doca_dpa_app** app )
- Get program app that was set for DPA context.
- doca_error_t doca_dpa_get_core_num ( doca_dpa* dpa, unsigned int* num_cores )
- Retrieve the number of available DPA cores.
- doca_error_t doca_dpa_get_kernel_max_run_time ( const doca_dpa* dpa, unsigned long long* value )
- Get maximum allowable time in seconds that a kernel may remain scheduled on the DPA. A kernel that remains scheduled beyond this limit may be terminated by the runtime and cause fatal behavior.
- doca_error_t doca_dpa_get_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t* log_level )
- Get device logs verbosity level that was set for DPA context.
- doca_error_t doca_dpa_get_max_threads_per_kernel ( const doca_dpa* dpa, unsigned int* value )
- Get maximum number of DPA threads to run a single kernel launch operation.
- doca_error_t doca_dpa_get_num_eus_per_core ( doca_dpa* dpa, unsigned int* eus_per_core )
- Retrieve the number of EUs available per DPA core.
- doca_error_t doca_dpa_get_total_num_eus_available ( doca_dpa* dpa, unsigned int* total_num_eus )
- Retrieve the total number of EUs available to the application.
- doca_error_t doca_dpa_h2d_buf_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, doca_buf* buf, size_t size )
- Copy from DOCA Buf to DPA Heap.
- doca_error_t doca_dpa_h2d_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, void* src_ptr, size_t size )
- Copy from host memory to DPA Heap.
- doca_error_t doca_dpa_hash_table_create ( doca_dpa* dpa, unsigned int num_entries, doca_dpa_hash_table** ht )
- Create a hash table on DPA.
- doca_error_t doca_dpa_hash_table_destroy ( doca_dpa_hash_table* ht )
- Destroy DPA hash table.
- doca_error_t doca_dpa_hash_table_get_dpa_handle ( doca_dpa_hash_table* ht, doca_dpa_dev_hash_table_t* ht_handle )
- Get DPA hash table handle.
- doca_error_t doca_dpa_kernel_launch_update_add ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int num_threads, doca_dpa_func_t* func, ... )
- Submit a kernel to DPA.
- doca_error_t doca_dpa_kernel_launch_update_set ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int num_threads, doca_dpa_func_t* func, ... )
- Submit a kernel to DPA that sets completion event.
- doca_error_t doca_dpa_log_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
- Get log file path to write device logs into.
- doca_error_t doca_dpa_log_file_set_path ( doca_dpa* dpa, const char* file_path )
- Set log file path to write device logs into.
- doca_error_t doca_dpa_mem_alloc ( doca_dpa* dpa, size_t size, doca_dpa_dev_uintptr_t* dev_ptr )
- Allocate DPA heap memory.
- doca_error_t doca_dpa_mem_free ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr )
- Free the previously allocated DPA memory.
- doca_error_t doca_dpa_memset ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr, int value, size_t size )
- Set DPA Heap memory to a value.
- doca_error_t doca_dpa_notification_completion_create ( doca_dpa* dpa, doca_dpa_thread* dpa_thread, doca_dpa_notification_completion** notify_comp )
- Create DPA notification completion context.
- doca_error_t doca_dpa_notification_completion_destroy ( doca_dpa_notification_completion* notify_comp )
- Destroy DPA notification completion context.
- doca_error_t doca_dpa_notification_completion_get_dpa_handle ( doca_dpa_notification_completion* notify_comp, doca_dpa_dev_notification_completion_t* handle )
- Get DPA notification completion context handle.
- doca_error_t doca_dpa_notification_completion_get_thread ( doca_dpa_notification_completion* notify_comp, doca_dpa_thread** dpa_thread )
- Get DPA notification completion context attached thread.
- doca_error_t doca_dpa_notification_completion_start ( doca_dpa_notification_completion* notify_comp )
- Start DPA notification completion context.
- doca_error_t doca_dpa_notification_completion_stop ( doca_dpa_notification_completion* notify_comp )
- Stop DPA notification completion context.
- doca_error_t doca_dpa_peek_at_last_error ( const doca_dpa* dpa )
- Return the last error generated on the DPA. Check if an error occurred on the device side runtime. This call does not reset the error state. If an error occurred, the DPA context enters a fatal state and must be destroyed by the user. In the case of a fatal error core dump and crash data will be written to the file path /tmp/doca_dpa_fatal or to the file path set by the API doca_dpa_log_file_set_path(), with the suffixes .PID.core and .PID.crash respectively, where PID is the process id.
- doca_error_t doca_dpa_rpc ( doca_dpa* dpa, doca_dpa_func_t* func, uint64_t* retval, ... )
- RPC to run DPA kernel.
- doca_error_t doca_dpa_set_app ( doca_dpa* dpa, doca_dpa_app* app )
- Set program app for DPA context.
- doca_error_t doca_dpa_set_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t log_level )
- Set device logs verbosity level.
- doca_error_t doca_dpa_start ( doca_dpa* dpa )
- Start a DPA context.
- doca_error_t doca_dpa_stop ( doca_dpa* dpa )
- Stop a DPA context.
- doca_error_t doca_dpa_thread_create ( doca_dpa* dpa, doca_dpa_thread** dpa_thread )
- Create DPA thread.
- doca_error_t doca_dpa_thread_destroy ( doca_dpa_thread* dpa_thread )
- Destroy DPA thread.
- doca_error_t doca_dpa_thread_get_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity** affinity )
- Get DPA thread affinity.
- doca_error_t doca_dpa_thread_get_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t** func, uint64_t* arg )
- Get DPA thread entry point and its argument.
- doca_error_t doca_dpa_thread_get_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t* dev_ptr )
- Get DPA thread local storage.
- doca_error_t doca_dpa_thread_group_create ( doca_dpa* dpa, unsigned int num_threads, doca_dpa_tg** tg )
- Create DPA thread group.
- doca_error_t doca_dpa_thread_group_destroy ( doca_dpa_tg* tg )
- Destroy DPA thread group.
- doca_error_t doca_dpa_thread_group_get_num_threads ( doca_dpa_tg* tg, unsigned int* num_threads )
- Get DPA thread group number of threads.
- doca_error_t doca_dpa_thread_group_set_thread ( doca_dpa_tg* tg, doca_dpa_thread* thread, unsigned int rank )
- Set DPA thread at 'rank' in DPA thread group.
- doca_error_t doca_dpa_thread_group_start ( doca_dpa_tg* tg )
- Start DPA thread group.
- doca_error_t doca_dpa_thread_group_stop ( doca_dpa_tg* tg )
- Stop DPA thread group.
- doca_error_t doca_dpa_thread_run ( doca_dpa_thread* dpa_thread )
- Run DPA thread.
- doca_error_t doca_dpa_thread_set_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity* affinity )
- Set DPA thread affinity.
- doca_error_t doca_dpa_thread_set_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t* func, uint64_t arg )
- Set DPA thread entry point and its argument.
- doca_error_t doca_dpa_thread_set_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t dev_ptr )
- Set DPA thread local storage.
- doca_error_t doca_dpa_thread_start ( doca_dpa_thread* dpa_thread )
- Start DPA thread.
- doca_error_t doca_dpa_thread_stop ( doca_dpa_thread* dpa_thread )
- Stop DPA thread.
- doca_error_t doca_dpa_trace_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
- Get trace file path to write device traces into.
- doca_error_t doca_dpa_trace_file_set_path ( doca_dpa* dpa, const char* file_path )
- Set trace file path to write device traces into.
Defines
- #define DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA (24)
Valid values are greater equal to 0 and less than (1 << DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA)
Typedefs
- typedef uint64_t doca_dpa_dev_async_ops_t
DPA asynchronous ops handle type definition.
- typedef uint64_t doca_dpa_dev_completion_t
DPA completion handle type definition.
- typedef uint64_t doca_dpa_dev_hash_table_t
DPA hash table handle type definition.
- typedef uint64_t doca_dpa_dev_notification_completion_t
DPA notification completion handle type definition.
- typedef uint64_t doca_dpa_dev_uintptr_t
DPA pointer type definition.
- typedef void( doca_dpa_func_t
Generic function pointer type. Kernel launches are made using a host function pointer that represents the device function. The host function stub is provided by the associated DPA compiler. The C language does not define conversion of a function pointer to an object pointer (such as void*). Programmers can use this generic function pointer type to typecast to and adhere to strict ISO C language requirements
Enumerations
- enum doca_dpa_dev_log_level_t
-
Values
- DOCA_DPA_DEV_LOG_LEVEL_DISABLE = 10
- Disable log messages
- DOCA_DPA_DEV_LOG_LEVEL_CRIT = 20
- Critical log level
- DOCA_DPA_DEV_LOG_LEVEL_ERROR = 30
- Error log level
- DOCA_DPA_DEV_LOG_LEVEL_WARNING = 40
- Warning log level
- DOCA_DPA_DEV_LOG_LEVEL_INFO = 50
- Info log level
- DOCA_DPA_DEV_LOG_LEVEL_DEBUG = 60
- Debug log level
- DOCA_DPA_DEV_LOG_LEVEL_DISABLE = 10
- Disable log messages
- DOCA_DPA_DEV_LOG_LEVEL_CRIT = 20
- Critical log level
- DOCA_DPA_DEV_LOG_LEVEL_ERROR = 30
- Error log level
- DOCA_DPA_DEV_LOG_LEVEL_WARNING = 40
- Warning log level
- DOCA_DPA_DEV_LOG_LEVEL_INFO = 50
- Info log level
- DOCA_DPA_DEV_LOG_LEVEL_DEBUG = 60
- Debug log level
Functions
- doca_error_t doca_dpa_app_get_name ( doca_dpa_app* app, char* app_name, uint32_t* app_name_len )
-
Get DPA application name.
Parameters
- app
- - DPA application generated by DPACC
- app_name
- - application name
- app_name_len
- - app_name length. Output is actual number of bytes written
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input, or the buffer received is of insufficient length
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
Description
The name of a DPA application is assigned using DPACC during the build phase. Once an application has been formed, its name is embedded within it. This function allows DOCA DPA’s host application to retrieve the name that was previously assigned.
The app_name buffer is allocated by the caller along with setting app_name_len indicating the length that was allocated. Upon return the app_name_len field is set to the actual length of the app_name
- doca_error_t doca_dpa_async_ops_attach ( doca_dpa_async_ops* async_ops, doca_dpa_completion* dpa_comp )
-
Attach DPA asynchronous ops context to DPA completion context.
Parameters
- async_ops
- - DPA asynchronous ops
- dpa_comp
- - DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA asynchronous ops is already started
Description
This function attaches DPA asynchronous ops context to DPA completion context. Once a context is attached and both contexts are started, asynchronous operations completion will be raised on the DPA completion (in case the user asks for a completion when issuing the operation). This function must be called before DPA asynchronous ops is started
- doca_error_t doca_dpa_async_ops_create ( doca_dpa* dpa, unsigned int queue_size, uint64_t user_data, doca_dpa_async_ops** async_ops )
-
Create DPA asynchronous ops context.
Parameters
- dpa
- - DPA context
- queue_size
- - DPA asynchronous ops queue size
- user_data
- - DPA asynchronous ops user data
- async_ops
- - created DPA asynchronous ops
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates a DPA asynchronous ops context. This allows the DPA thread to issue asynchronous operations, like DMA or other operations. User can provide DPA asynchronous ops context `user_data`, and retrieve this metadata in device using doca_dpa_dev_get_completion_user_data() API
Note:Queue size will be rounded to the next power of 2
- doca_error_t doca_dpa_async_ops_destroy ( doca_dpa_async_ops* async_ops )
-
Destroy DPA asynchronous ops context.
Parameters
- async_ops
- - Previously created DPA asynchronous ops
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
This function destroys DPA asynchronous ops context created by doca_dpa_async_ops_create()
- doca_error_t doca_dpa_async_ops_get_dpa_handle ( doca_dpa_async_ops* async_ops, doca_dpa_dev_async_ops_t* handle )
-
Get DPA asynchronous ops context handle.
Parameters
- async_ops
- - DPA asynchronous ops
- handle
- - DPA asynchronous ops handle
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA asynchronous ops is not started
Description
- doca_error_t doca_dpa_async_ops_get_queue_size ( doca_dpa_async_ops* async_ops, unsigned int* queue_size )
-
Get DPA asynchronous ops queue size.
Parameters
- async_ops
- - DPA asynchronous ops
- queue_size
- - DPA asynchronous ops queue size
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_async_ops_get_user_data ( doca_dpa_async_ops* async_ops, uint64_t* user_data )
-
Get DPA asynchronous ops context user data.
Parameters
- async_ops
- - DPA asynchronous ops
- user_data
- - DPA asynchronous ops user data
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_async_ops_start ( doca_dpa_async_ops* async_ops )
-
Start DPA asynchronous ops context.
Parameters
- async_ops
- - DPA asynchronous ops
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_async_ops_stop ( doca_dpa_async_ops* async_ops )
-
Stop DPA asynchronous ops context.
Parameters
- async_ops
- - DPA asynchronous ops
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_cap_is_supported ( const doca_devinfo* devinfo )
-
Get whether the DOCA device supports DPA.
Parameters
- devinfo
- - the device to query
Returns
- DOCA_SUCCESS - in case of the DOCA device queried has DPA support
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device queried does not support DPA
Description
- doca_error_t doca_dpa_completion_create ( doca_dpa* dpa, unsigned int queue_size, doca_dpa_completion** dpa_comp )
-
Create DPA completion context.
Parameters
- dpa
- - DPA context
- queue_size
- - DPA completion queue size
- dpa_comp
- - created DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates a DPA completion context. The user is responsible for creating and managing the context. The completion context can raise activation if it is attached to a DPA thread. The user can also decide to progress the context via polling it manually
Note:Queue size will be rounded to the next power of 2
- doca_error_t doca_dpa_completion_destroy ( doca_dpa_completion* dpa_comp )
-
Destroy DPA completion context.
Parameters
- dpa_comp
- - Previously created DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
This function destroys DPA completion context created by doca_dpa_completion_create()
- doca_error_t doca_dpa_completion_get_dpa_handle ( doca_dpa_completion* dpa_comp, doca_dpa_dev_completion_t* handle )
-
Get DPA completion context handle.
Parameters
- dpa_comp
- - DPA completion
- handle
- - DPA completion handle
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA completion is not started
Description
- doca_error_t doca_dpa_completion_get_queue_size ( doca_dpa_completion* dpa_comp, unsigned int* queue_size )
-
Get DPA completion context queue size.
Parameters
- dpa_comp
- - DPA completion
- queue_size
- - DPA completion queue size
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_completion_get_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread** dpa_thread )
-
Get DPA completion context attached thread.
Parameters
- dpa_comp
- - DPA completion
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_completion_set_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread* dpa_thread )
-
Set DPA completion context thread.
Parameters
- dpa_comp
- - DPA completion
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA completion is already started
Description
This function attaches DPA thread to DPA completion context. Attaching to a DPA thread is required if the user wants activation of the thread when a completion is raised on the completion context. This function must be called before DPA completion is started
- doca_error_t doca_dpa_completion_start ( doca_dpa_completion* dpa_comp )
-
Start DPA completion context.
Parameters
- dpa_comp
- - DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_completion_stop ( doca_dpa_completion* dpa_comp )
-
Stop DPA completion context.
Parameters
- dpa_comp
- - DPA completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_create ( doca_dev* dev, doca_dpa** dpa )
-
Create a DOCA DPA Context.
Parameters
- dev
- - DOCA device
- dpa
- - created context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NOT_SUPPORTED - the device does not support DPA
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
This function creates a DOCA DPA context given a DOCA device. The context represents a program on the DPA that is referenced by the host process that called the context creation API
- doca_error_t doca_dpa_d2h_buf_memcpy ( doca_dpa* dpa, doca_buf* buf, doca_dpa_dev_uintptr_t src_ptr, size_t size )
-
Copy from DPA Heap to DOCA Buf.
Parameters
- dpa
- - DPA context
- buf
- - destination DOCA Buf
- src_ptr
- - DPA device heap source pointer
- size
- - size of data to copy
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function copies data from the DPA heap to start of DOCA Buf. This is a blocking call. When the call returns, the memory on the DOCA Buf is set to the values supplied in the DPA heap pointer
- doca_error_t doca_dpa_d2h_memcpy ( doca_dpa* dpa, void* dst_ptr, doca_dpa_dev_uintptr_t src_ptr, size_t size )
-
Copy from DPA Heap to host memory.
Parameters
- dpa
- - DPA context
- dst_ptr
- - host destination buffer address
- src_ptr
- - DPA device heap source pointer
- size
- - size of data to copy
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function copies data from the DPA heap to Host memory. This is a blocking call. When the call returns, the memory on the Host buffer is set to the values supplied in the DPA heap pointer
- doca_error_t doca_dpa_destroy ( doca_dpa* dpa )
-
Destroy a DOCA DPA context.
Parameters
- dpa
- - Previously created DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_IN_USE - in case the DPA context is still used by another DOCA context
Description
This function destroys DPA context created by doca_dpa_create()
- doca_error_t doca_dpa_eu_affinity_clear ( doca_dpa_eu_affinity* affinity )
-
Clear DPA EU affinity.
Parameters
- affinity
- - DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
This function clears EU ID in the given DPA EU affinity
- doca_error_t doca_dpa_eu_affinity_create ( doca_dpa* dpa, doca_dpa_eu_affinity** affinity )
-
Create DPA EU affinity.
Parameters
- dpa
- - DPA context
- affinity
- - created DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
This function creates DPA EU affinity. DPA EU affinity can be set for a DPA thread using doca_dpa_thread_set_affinity() to specify EU ID which DPA thread will use on DPA. Look at sched_getaffinity(3) for corresponding CPU use case. We are replicating it here for DPA
- doca_error_t doca_dpa_eu_affinity_destroy ( doca_dpa_eu_affinity* affinity )
-
Destroy DPA EU affinity.
Parameters
- affinity
- - previously created DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
This function destroys DPA EU affinity created by doca_dpa_eu_affinity_create()
- doca_error_t doca_dpa_eu_affinity_get ( doca_dpa_eu_affinity* affinity, unsigned int* eu_id )
-
Get EU ID from DPA EU affinity.
Parameters
- affinity
- - DPA EU affinity
- eu_id
- - EU ID
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
This function gets EU ID from the given DPA EU affinity
- doca_error_t doca_dpa_eu_affinity_set ( doca_dpa_eu_affinity* affinity, unsigned int eu_id )
-
Set EU ID in DPA EU affinity.
Parameters
- affinity
- - DPA EU affinity
- eu_id
- - EU ID
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
This function sets EU ID in the given DPA EU affinity
- doca_error_t doca_dpa_get_app ( doca_dpa* dpa, doca_dpa_app** app )
-
Get program app that was set for DPA context.
Parameters
- dpa
- - DPA context
- app
- - DPA application set for DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_get_core_num ( doca_dpa* dpa, unsigned int* num_cores )
-
Retrieve the number of available DPA cores.
Parameters
- dpa
- - DPA context
- num_cores
- - number of DPA cores
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
Use this info to select EU ID for DPA EU affinity
- doca_error_t doca_dpa_get_kernel_max_run_time ( const doca_dpa* dpa, unsigned long long* value )
-
Get maximum allowable time in seconds that a kernel may remain scheduled on the DPA. A kernel that remains scheduled beyond this limit may be terminated by the runtime and cause fatal behavior.
Parameters
- dpa
- - DPA context
- value
- - maximum allowed time in seconds for a kernel to remain scheduled
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid NULL input
Description
- doca_error_t doca_dpa_get_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t* log_level )
-
Get device logs verbosity level that was set for DPA context.
Parameters
- dpa
- - DPA context
- log_level
- - verbosity level for device logs
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
Description
- doca_error_t doca_dpa_get_max_threads_per_kernel ( const doca_dpa* dpa, unsigned int* value )
-
Get maximum number of DPA threads to run a single kernel launch operation.
Parameters
- dpa
- - DPA context
- value
- - number of maximum threads to run a kernel
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid NULL input
Description
- doca_error_t doca_dpa_get_num_eus_per_core ( doca_dpa* dpa, unsigned int* eus_per_core )
-
Retrieve the number of EUs available per DPA core.
Parameters
- dpa
- - DPA context
- eus_per_core
- - number of EUs per DPA core
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
Use this info to select EU ID for DPA EU affinity
- doca_error_t doca_dpa_get_total_num_eus_available ( doca_dpa* dpa, unsigned int* total_num_eus )
-
Retrieve the total number of EUs available to the application.
Parameters
- dpa
- - DPA context
- total_num_eus
- - number of total available EUs
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
Use this info to select EU ID for DPA EU affinity
- doca_error_t doca_dpa_h2d_buf_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, doca_buf* buf, size_t size )
-
Copy from DOCA Buf to DPA Heap.
Parameters
- dpa
- - DPA context
- dst_ptr
- - DPA device heap destination pointer
- buf
- - source DOCA Buf
- size
- - size of data to copy
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function copies data from start of DOCA Buf to the DPA heap. This is a blocking call. When the call returns, the memory on the DPA is set to the values supplied in the DOCA Buf
- doca_error_t doca_dpa_h2d_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, void* src_ptr, size_t size )
-
Copy from host memory to DPA Heap.
Parameters
- dpa
- - DPA context
- dst_ptr
- - DPA device heap destination pointer
- src_ptr
- - host source buffer address
- size
- - size of data to copy
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function copies data from Host memory to the DPA heap. This is a blocking call. When the call returns, the memory on the DPA is set to the values supplied in the Host buffer
- doca_error_t doca_dpa_hash_table_create ( doca_dpa* dpa, unsigned int num_entries, doca_dpa_hash_table** ht )
-
Create a hash table on DPA.
Parameters
- dpa
- - DPA context
- num_entries
- - number of entries in the hash table
- ht
- - Created DPA hash table
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function creates a hash table on DPA. Once it is created, user can retrieve its DPA handle and use it for add, remove and find operations in DPA kernels
- doca_error_t doca_dpa_hash_table_destroy ( doca_dpa_hash_table* ht )
-
Destroy DPA hash table.
Parameters
- ht
- - Previously created DPA hash table
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
This function destroys DPA hash table created by doca_dpa_hash_table_create()
- doca_error_t doca_dpa_hash_table_get_dpa_handle ( doca_dpa_hash_table* ht, doca_dpa_dev_hash_table_t* ht_handle )
-
Get DPA hash table handle.
Parameters
- ht
- - DPA hash table
- ht_handle
- - DPA hash table handle
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_kernel_launch_update_add ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int num_threads, doca_dpa_func_t* func, ... )
-
Submit a kernel to DPA.
Parameters
- dpa
- - previously created DPA context
- wait_event
- - event to wait on before executing the kernel (optional)
- wait_threshold
- - wait event count threshold to wait for before executing. Valid values [0-254]
- comp_event
- - event to signal after kernel execution is complete (optional)
- comp_count
- - completion count to add for completion event when func is complete
- num_threads
- - number of threads to use. This number must be equal or lower than the maximum allowed (see doca_dpa_get_max_threads_per_kernel)
- func
- - host function pointer representing DPA kernel
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function submits a kernel for launch on the specified `dpa` context. The kernel starts execution when its wait event value is greater than or equal to specified threshold. The value specified in `comp_count` is added to the `comp_event` when the kernel finishes execution.
- doca_error_t doca_dpa_kernel_launch_update_set ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int num_threads, doca_dpa_func_t* func, ... )
-
Submit a kernel to DPA that sets completion event.
Parameters
- dpa
- - previously created DPA context
- wait_event
- - event to wait on before executing the kernel (optional)
- wait_threshold
- - wait event count threshold to wait for before executing. Valid values [0-254]
- comp_event
- - event to signal after kernel execution is complete (optional)
- comp_count
- - completion count to set for completion event when func is complete
- num_threads
- - number of threads to use. This number must be equal or lower than the maximum allowed (see doca_dpa_get_max_threads_per_kernel)
- func
- - host function pointer representing DPA kernel
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function submits a kernel for launch on the specified `dpa` context. The kernel starts execution when its wait event value is greater than or equal to specified threshold. The completion event is set to value specified in `comp_count` when the kernel finishes execution.
The function to be launched `func` is a host function pointer corresponding to the DPA device function. For example, if the device function is declared as: `__dpa_global__ hello(int arg1)`, then the user is expected to declare the function in the Host application as `extern doca_dpa_func_t hello;`. After the application is linked and loaded using the compiler, a function pointer `hello` can be used in as the `func` argument. The arguments to the function `hello` can be passed inline in the call as var args. For example, to call `hello` on the device using `4` threads with argument `5`, the invocation looks like: `doca_dpa_kernel_launch_update_set(..., 4, hello, 5);`
- doca_error_t doca_dpa_log_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
-
Get log file path to write device logs into.
Parameters
- dpa
- - DPA context
- file_path
- - pathname to the log file to write device logs into
- file_path_len
- - file_path length. Output is actual number of bytes written
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
- DOCA_ERROR_NO_MEMORY - memory allocation error
Description
The file_path buffer is allocated by the caller along with setting file_path_len indicating the length that was allocated. Upon return the file_path_len field is set to the actual length of the file_path
- doca_error_t doca_dpa_log_file_set_path ( doca_dpa* dpa, const char* file_path )
-
Set log file path to write device logs into.
Parameters
- dpa
- - DPA context
- file_path
- - pathname to the log file to write device logs into
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
- DOCA_ERROR_BAD_STATE - DPA context is already started
- DOCA_ERROR_NO_MEMORY - memory allocation error
- DOCA_ERROR_OPERATING_SYSTEM - error occurred in opening the file
Description
Must be set before calling doca_dpa_start()
Note:if not set then stdout will be used by default
- doca_error_t doca_dpa_mem_alloc ( doca_dpa* dpa, size_t size, doca_dpa_dev_uintptr_t* dev_ptr )
-
Allocate DPA heap memory.
Parameters
- dpa
- - DPA context
- size
- - requested size of allocation
- dev_ptr
- - pointer to the allocated memory on the DPA device
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function allocates memory of `size` bytes on the DPA process heap. The memory is aligned for any language supported data type. The memory is not zeroed on allocation. The allocated memory is returned in `dev_ptr` when successful. When memory allocation fails, `dev_ptr` is set to 0x0 (NULL)
- doca_error_t doca_dpa_mem_free ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr )
-
Free the previously allocated DPA memory.
Parameters
- dpa
- - DPA context
- dev_ptr
- - pointer to the memory that was previously allocated on the DPA device
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function frees the allocated memory allocated on the DPA heap. Users are expected to ensure that kernels on the DPA are no longer accessing the memory using established synchronization mechanisms (see events)
- doca_error_t doca_dpa_memset ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr, int value, size_t size )
-
Set DPA Heap memory to a value.
Parameters
- dpa
- - DPA context
- dev_ptr
- - DPA device heap pointer
- value
- - value to set
- size
- - size of device buffer
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - DPA context is not started
Description
This function sets DPA heap memory to a supplied value. This is a blocking call. When the call returns, the memory on the DPA is set to the value supplied
- doca_error_t doca_dpa_notification_completion_create ( doca_dpa* dpa, doca_dpa_thread* dpa_thread, doca_dpa_notification_completion** notify_comp )
-
Create DPA notification completion context.
Parameters
- dpa
- - DPA context
- dpa_thread
- - attached DPA thread
- notify_comp
- - created DPA notification completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates a DPA notification completion context. This context is used to activate the attached DPA thread in device using doca_dpa_dev_thread_notify() API. The thread activation is done without receiving a completion on the thread's attached completion context. Therefore it is expected that the user of this method of thread activation will pass the message in another fashion – such as shared memory
- doca_error_t doca_dpa_notification_completion_destroy ( doca_dpa_notification_completion* notify_comp )
-
Destroy DPA notification completion context.
Parameters
- notify_comp
- - Previously created DPA notification completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
This function destroys DPA notification completion context created by doca_dpa_notification_completion_create()
- doca_error_t doca_dpa_notification_completion_get_dpa_handle ( doca_dpa_notification_completion* notify_comp, doca_dpa_dev_notification_completion_t* handle )
-
Get DPA notification completion context handle.
Parameters
- notify_comp
- - DPA notification completion
- handle
- - DPA notification completion handle
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA notification completion is not started
Description
- doca_error_t doca_dpa_notification_completion_get_thread ( doca_dpa_notification_completion* notify_comp, doca_dpa_thread** dpa_thread )
-
Get DPA notification completion context attached thread.
Parameters
- notify_comp
- - DPA notification completion
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_notification_completion_start ( doca_dpa_notification_completion* notify_comp )
-
Start DPA notification completion context.
Parameters
- notify_comp
- - DPA notification completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_notification_completion_stop ( doca_dpa_notification_completion* notify_comp )
-
Stop DPA notification completion context.
Parameters
- notify_comp
- - DPA notification completion
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_peek_at_last_error ( const doca_dpa* dpa )
-
Return the last error generated on the DPA. Check if an error occurred on the device side runtime. This call does not reset the error state. If an error occurred, the DPA context enters a fatal state and must be destroyed by the user. In the case of a fatal error core dump and crash data will be written to the file path /tmp/doca_dpa_fatal or to the file path set by the API doca_dpa_log_file_set_path(), with the suffixes .PID.core and .PID.crash respectively, where PID is the process id.
Parameters
- dpa
- - DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid NULL input
- DOCA_ERROR_BAD_STATE - received error on device side
Description
- doca_error_t doca_dpa_rpc ( doca_dpa* dpa, doca_dpa_func_t* func, uint64_t* retval, ... )
-
RPC to run DPA kernel.
Parameters
- dpa
- - DPA context
- func
- - Host function pointer representing DPA kernel to run
- retval
- - A pointer to the DPA kernel return value
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is not started
Description
This function executes the supplied `func` with its argument on the specified `dpa` context. This is a blocking API.
`func` is a host function pointer corresponding to the DPA device function. Please note that DPA device `func` must be annotated with `__dpa_rpc__` annotation, such as `__dpa_rpc__ uint64_t hello(int arg1)`. Also the user is expected to declare the function in the Host application as `extern doca_dpa_func_t hello;`.
- doca_error_t doca_dpa_set_app ( doca_dpa* dpa, doca_dpa_app* app )
-
Set program app for DPA context.
Parameters
- dpa
- - DPA context
- app
- - DPA application generated by DPACC
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - if DPA context is already started
Description
The program app represents a program on the DPA that is referenced by the host process that called the context creation API. Must be set before calling doca_dpa_start()
- doca_error_t doca_dpa_set_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t log_level )
-
Set device logs verbosity level.
Parameters
- dpa
- - DPA context
- log_level
- - verbosity level for device logs
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA context is already started
Description
Log prints from the device will be printed to host with verbosity that is equal or lower than the set log level. Must be set before calling doca_dpa_start()
Note:Default value of DPA log level is DOCA_DPA_DEV_LOG_LEVEL_INFO
- doca_error_t doca_dpa_start ( doca_dpa* dpa )
-
Start a DPA context.
Parameters
- dpa
- - DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
- doca_error_t doca_dpa_stop ( doca_dpa* dpa )
-
Stop a DPA context.
Parameters
- dpa
- - DPA context
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_IN_USE - in case of attached thread/completion context that is not stopped
Description
- doca_error_t doca_dpa_thread_create ( doca_dpa* dpa, doca_dpa_thread** dpa_thread )
-
Create DPA thread.
Parameters
- dpa
- - DPA context
- dpa_thread
- - created DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates a DPA thread. DPA thread used to run a user kernel on DPA. User can control on which EU to run the DPA kernel. The thread is activated on DPA using two methods: 1- Thread Activation using DPA notification completion context. 2- Attaching completion context to the thread. To activate the thread in order to enable receiving any messages or completions, user must: 1- Create DPA thread and configure it using thread setter functions. 2- Attach to a completion context. 3- Set thread to runnable state using doca_dpa_thread_run() API.
- doca_error_t doca_dpa_thread_destroy ( doca_dpa_thread* dpa_thread )
-
Destroy DPA thread.
Parameters
- dpa_thread
- - Previously created DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
This function destroys DPA thread created by doca_dpa_thread_create()
- doca_error_t doca_dpa_thread_get_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity** affinity )
-
Get DPA thread affinity.
Parameters
- dpa_thread
- - DPA thread
- affinity
- - DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_thread_get_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t** func, uint64_t* arg )
-
Get DPA thread entry point and its argument.
Parameters
- dpa_thread
- - DPA thread
- func
- - DPA thread entry point
- arg
- - DPA thread entry point argument
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_thread_get_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t* dev_ptr )
-
Get DPA thread local storage.
Parameters
- dpa_thread
- - DPA thread
- dev_ptr
- - DPA device memory address
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_thread_group_create ( doca_dpa* dpa, unsigned int num_threads, doca_dpa_tg** tg )
-
Create DPA thread group.
Parameters
- dpa
- - DPA context
- num_threads
- - number of threads for the DPA thread group
- tg
- - created thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NO_MEMORY - failure in internal memory allocation
Description
This function creates an empty thread group (no populated threads) of a given size. User can set thread at specific rank using doca_dpa_thread_group_set_thread() API. Threads must be set in all ranks before thread group is started
- doca_error_t doca_dpa_thread_group_destroy ( doca_dpa_tg* tg )
-
Destroy DPA thread group.
Parameters
- tg
- - Previously created DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
This function destroys DPA thread group created by doca_dpa_thread_group_create()
- doca_error_t doca_dpa_thread_group_get_num_threads ( doca_dpa_tg* tg, unsigned int* num_threads )
-
Get DPA thread group number of threads.
Parameters
- tg
- - DPA thread group
- num_threads
- - number of threads for the DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_dpa_thread_group_set_thread ( doca_dpa_tg* tg, doca_dpa_thread* thread, unsigned int rank )
-
Set DPA thread at 'rank' in DPA thread group.
Parameters
- tg
- - DPA thread group
- thread
- - DPA thread
- rank
- - rank of the DPA thread in DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE
Description
Thread rank is an index of the thread (between 0 and size()-1) within the group. This function must be called before starting both DPA thread and DPA thread group
- doca_error_t doca_dpa_thread_group_start ( doca_dpa_tg* tg )
-
Start DPA thread group.
Parameters
- tg
- - DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_thread_group_stop ( doca_dpa_tg* tg )
-
Stop DPA thread group.
Parameters
- tg
- - DPA thread group
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_thread_run ( doca_dpa_thread* dpa_thread )
-
Run DPA thread.
Parameters
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
This function sets the thread to runnable state such that when the completion context attached to the thread receives a message, the thread will run. This function must be called after DPA thread is: 1- Created and started. 2- Attached to a completion context.
- doca_error_t doca_dpa_thread_set_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity* affinity )
-
Set DPA thread affinity.
Parameters
- dpa_thread
- - DPA thread
- affinity
- - DPA EU affinity
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA thread is already started
Description
This function sets the affinity type of DPA thread to “fixed”. Fixed affinity means that the thread will run only on the EU ID provided in the given DPA EU affinity. When affinity is not specified, the default affinity mode is “relaxed”, means the thread will run on any available EU ID when its rescheduled
- doca_error_t doca_dpa_thread_set_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t* func, uint64_t arg )
-
Set DPA thread entry point and its argument.
Parameters
- dpa_thread
- - DPA thread
- func
- - Host function pointer representing DPA kernel which thread run when it is triggered
- arg
- - DPA thread entry point argument
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA thread is already started
Description
The DPA thread function `func` is a host function pointer corresponding to the DPA device function. The device function must be annotated with `__dpa_global__` keyword such as`__dpa_global__ void hello(int arg1)`. In the Host application, the user is expected to declare the function as `extern doca_dpa_func_t hello;`. After the application is linked and loaded using the compiler, the function pointer `hello` can be used in as the `func` argument. This function must be called before DPA thread is started
- doca_error_t doca_dpa_thread_set_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t dev_ptr )
-
Set DPA thread local storage.
Parameters
- dpa_thread
- - DPA thread
- dev_ptr
- - DPA device memory address
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - DPA thread is already started
Description
User can ask to store an opaque (DPA device memory pointer) for a DPA thread in host side using Thread local storage utility. In device kernel, user can obtain this opaque using doca_dpa_dev_thread_get_local_storage() API. This function must be called before DPA thread is started
- doca_error_t doca_dpa_thread_start ( doca_dpa_thread* dpa_thread )
-
Start DPA thread.
Parameters
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE
Description
- doca_error_t doca_dpa_thread_stop ( doca_dpa_thread* dpa_thread )
-
Stop DPA thread.
Parameters
- dpa_thread
- - DPA thread
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - attached DPA context is destroyed
Description
- doca_error_t doca_dpa_trace_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
-
Get trace file path to write device traces into.
Parameters
- dpa
- - DPA context
- file_path
- - pathname to the trace file to write device traces into
- file_path_len
- - file_path length. Output is actual number of bytes written
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
- DOCA_ERROR_NO_MEMORY - memory allocation error
Description
The file_path buffer is allocated by the caller along with setting file_path_len indicating the length that was allocated. Upon return the file_path_len field is set to the actual length of the file_path
- doca_error_t doca_dpa_trace_file_set_path ( doca_dpa* dpa, const char* file_path )
-
Set trace file path to write device traces into.
Parameters
- dpa
- - DPA context
- file_path
- - pathname to the trace file to write device traces into
Returns
- DOCA_SUCCESS - in case of success
- DOCA_ERROR_INVALID_VALUE - received invalid null input
- DOCA_ERROR_BAD_STATE - DPA context is already started
- DOCA_ERROR_NO_MEMORY - memory allocation error
- DOCA_ERROR_OPERATING_SYSTEM - error occurred in opening the file
Description
Must be set before calling doca_dpa_start()
Note:if not set then stdout will be used by default
There are 2 data path options to use DOCA ETH RXQ context, a GPU managed control path and a CPU managed one. Other than the need to use doca_ctx_set_datapath_on_gpu() on a GPU context before starting it, both cases share the same control path functions (unless mentioned otherwise in the function documentation). The data path functions are different for the different options. The GPU managed data path functions are not included in the DOCA ETH RXQ API (check DOCA GPUNetIO).
Modules
Enumerations
- enum doca_eth_rxq_data_path_type
- enum doca_eth_rxq_type
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_eth_rxq_as_doca_ctx ( doca_eth_rxq* eth_rxq )
- Convert doca_eth_rxq instance into a generalized context for use with doca core objects.
- doca_error_t doca_eth_rxq_cap_get_max_burst_size ( const doca_devinfo* devinfo, uint32_t* max_burst_size )
- Get the maximum burst size supported by the device.
- doca_error_t doca_eth_rxq_cap_get_max_packet_size ( const doca_devinfo* devinfo, uint32_t* max_packet_size )
- Get the maximum packet size supported by the device.
- doca_error_t doca_eth_rxq_cap_get_max_recv_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_recv_buf_list_len )
- Get the maximum receive buffer list length supported by the device.
- doca_error_t doca_eth_rxq_cap_is_type_supported ( const doca_devinfo* devinfo, doca_eth_rxq_type type, doca_eth_rxq_data_path_type data_path_type )
- Check if RX queue type is supported.
- doca_error_t doca_eth_rxq_create ( doca_dev* dev, uint32_t max_burst_size, uint32_t max_packet_size, doca_eth_rxq** eth_rxq )
- Create a DOCA ETH RXQ instance.
- doca_error_t doca_eth_rxq_destroy ( doca_eth_rxq* eth_rxq )
- Destroy a DOCA ETH RXQ instance.
- doca_error_t doca_eth_rxq_estimate_packet_buf_size ( doca_eth_rxq_type type, uint32_t rate, uint16_t pkt_max_time, uint32_t max_packet_size, uint32_t max_burst_size, uint8_t log_max_lro_pkt_sz, uint32_t* buf_size )
- Get the recommended size for the mmap buffer of a doca_eth_rxq.
- doca_error_t doca_eth_rxq_get_flow_queue_id ( doca_eth_rxq* eth_rxq, uint16_t* flow_queue_id )
- Get the DPDK queue ID of the doca_eth receive queue. can only be called after calling doca_ctx_start().
- doca_error_t doca_eth_rxq_get_gpu_handle ( const doca_eth_rxq* eth_rxq, doca_gpu_eth_rxq** eth_rxq_ext )
- Get a gpu handle of a doca_eth_rxq.
- doca_error_t doca_eth_rxq_set_max_burst_size ( doca_eth_rxq* eth_rxq, uint32_t max_burst_size )
- Set max burst size property for doca_eth_rxq. This value dictates the maximal number of packets the HW can handle at the same time. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_rxq_set_max_packet_size ( doca_eth_rxq* eth_rxq, uint32_t max_packet_size )
- Set max packet size property for doca_eth_rxq. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_rxq_set_max_recv_buf_list_len ( doca_eth_rxq* eth_rxq, uint32_t max_recv_buf_list_len )
- Set the maximal receive buffer list length for doca_eth_rxq. This value indicated what the maximal number of elements in a doca_buf list is. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_rxq_set_pkt_buf ( doca_eth_rxq* eth_rxq, doca_mmap* mmap, uint32_t offset, uint32_t size )
- Set Eth packet buffer for a doca_eth_rxq. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_rxq_set_type ( doca_eth_rxq* eth_rxq, doca_eth_rxq_type type )
- Set RX queue type property for doca_eth_rxq. can only be called before calling doca_ctx_start().
Enumerations
- enum doca_eth_rxq_data_path_type
RX data-path type.
Values
- DOCA_ETH_RXQ_DATA_PATH_TYPE_CPU = 0
- Enable data path management on the CPU
- DOCA_ETH_RXQ_DATA_PATH_TYPE_GPU
- Enable data path management on the GPU
- enum doca_eth_rxq_type
RX queue type.
Values
- DOCA_ETH_RXQ_TYPE_CYCLIC = 0
- This mode is optimized for max packet rate. In this mode the library will receive packets in a cyclic manner. The processing time of packets should be faster than the rate in which they are received. If the application did not process the packets fast enough, the packet may be overrun by a new packet once the recv callback has ended. The receive callback should finish processing the packet before returning or copy the content. The user will supply a doca_mmap for DOCA ETH RXQ context. The recommended size of this mmap should be calculated using doca_eth_rxq_estimate_packet_buf_size.
- DOCA_ETH_RXQ_TYPE_MANAGED_MEMPOOL
- In this mode the library will manage the memory and use various HW features to optimize memory consumption while increasing packet rate. The user will supply a doca_mmap for DOCA ETH RXQ context. The recommended size of this mmap should be calculated using doca_eth_rxq_estimate_packet_buf_size. The library assumes the user will release the packet buffer within a bound amount of time. Keeping packets for a long time without freeing it will block receiving incoming packets. NOTE: This type is supported only for DOCA ETH RXQ instance for CPU
- DOCA_ETH_RXQ_TYPE_REGULAR
- In this mode the user posts a receive task, telling DOCA_RXQ to which buffer to scatter the incoming packet. NOTE: This type is supported only for DOCA ETH RXQ instance for CPU
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_eth_rxq_as_doca_ctx ( doca_eth_rxq* eth_rxq )
-
Convert doca_eth_rxq instance into a generalized context for use with doca core objects.
Parameters
- eth_rxq
- Pointer to doca_eth_rxq instance.
Returns
Non NULL upon success, NULL otherwise.
Description
- doca_error_t doca_eth_rxq_cap_get_max_burst_size ( const doca_devinfo* devinfo, uint32_t* max_burst_size )
-
Get the maximum burst size supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_burst_size
- The max burst size.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
Description
Note:Function is relevant only in the case of context of type DOCA_ETH_RXQ_TYPE_REGULAR (max_burst_size isn't limited in other modes).
- doca_error_t doca_eth_rxq_cap_get_max_packet_size ( const doca_devinfo* devinfo, uint32_t* max_packet_size )
-
Get the maximum packet size supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_packet_size
- The max packet size.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
Description
- doca_error_t doca_eth_rxq_cap_get_max_recv_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_recv_buf_list_len )
-
Get the maximum receive buffer list length supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_recv_buf_list_len
- Maximal receive buffer list length to get. (check doca_eth_rxq_set_max_recv_buf_list_len)
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
Description
- doca_error_t doca_eth_rxq_cap_is_type_supported ( const doca_devinfo* devinfo, doca_eth_rxq_type type, doca_eth_rxq_data_path_type data_path_type )
-
Check if RX queue type is supported.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- type
- RX queue type - see enum doca_eth_rxq_type.
- data_path_type
- RX data-path type - see enum doca_eth_rxq_data_path_type.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NOT_SUPPORTED - if type is not supported.
Description
- doca_error_t doca_eth_rxq_create ( doca_dev* dev, uint32_t max_burst_size, uint32_t max_packet_size, doca_eth_rxq** eth_rxq )
-
Create a DOCA ETH RXQ instance.
Parameters
- dev
- Device to bind the context.
- max_burst_size
- Max burst size to use in context.
- max_packet_size
- Max packet size to use in context.
- eth_rxq
- Pointer to pointer to be set to point to the created doca_eth_rxq instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - eth_rxq argument is a NULL pointer.
- DOCA_ERROR_NO_MEMORY - failed to allocate resources.
Description
- doca_error_t doca_eth_rxq_destroy ( doca_eth_rxq* eth_rxq )
-
Destroy a DOCA ETH RXQ instance.
Parameters
- eth_rxq
- Pointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - eth_rxq argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - eth_rxq context state is not idle.
Description
- doca_error_t doca_eth_rxq_estimate_packet_buf_size ( doca_eth_rxq_type type, uint32_t rate, uint16_t pkt_max_time, uint32_t max_packet_size, uint32_t max_burst_size, uint8_t log_max_lro_pkt_sz, uint32_t* buf_size )
-
Get the recommended size for the mmap buffer of a doca_eth_rxq.
Parameters
- type
- Type of DOCA ETH RXQ.
- rate
- Rate in [MB/s] in which the doca_rxq is expected to receive traffic.
- pkt_max_time
- Max time in [μs] a packet may take to be processed.
- max_packet_size
- Max non-LRO packet size in [B].
- max_burst_size
- Max size of packets burst.
- log_max_lro_pkt_sz
- Log of max LRO packet size.
- buf_size
- The recommended size for the mmap buffer in [B].
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NOT_SUPPORTED - if the given type does not require packet buffer size.
Description
This function should be used for calculating the recommended size of the doca_mmap given to doca_eth_rxq_set_pkt_buf().
Note:Function is irrelevant in the case of context of type DOCA_ETH_RXQ_TYPE_REGULAR.
- doca_error_t doca_eth_rxq_get_flow_queue_id ( doca_eth_rxq* eth_rxq, uint16_t* flow_queue_id )
-
Get the DPDK queue ID of the doca_eth receive queue. can only be called after calling doca_ctx_start().
Parameters
- eth_rxq
- Pointer to doca_eth_rxq instance.
- flow_queue_id
- The queue ID to be used in rte_flow or doca_flow.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context was not started.
Description
- doca_error_t doca_eth_rxq_get_gpu_handle ( const doca_eth_rxq* eth_rxq, doca_gpu_eth_rxq** eth_rxq_ext )
-
Get a gpu handle of a doca_eth_rxq.
Parameters
- eth_rxq
- Pointer to doca_eth_rxq instance.
- eth_rxq_ext
- A doca gpu eth_rxq handle.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not started.
- DOCA_ERROR_NOT_SUPPORTED - in case eth_rxq isn't an instance for GPU.
Description
Note:Supported for DOCA ETH RXQ instance for GPU only.
This method should be used after ctx is started. The expected flow is as follows: 1. bind the ctx to a gpu device using doca_ctx_set_datapath_on_gpu() 2. start the ctx using doca_ctx_start() 3. call doca_eth_rxq_get_gpu_handle() to get the gpu_handle
- doca_error_t doca_eth_rxq_set_max_burst_size ( doca_eth_rxq* eth_rxq, uint32_t max_burst_size )
-
Set max burst size property for doca_eth_rxq. This value dictates the maximal number of packets the HW can handle at the same time. can only be called before calling doca_ctx_start().
Parameters
- eth_rxq
- Pointer to doca_eth_rxq instance.
- max_burst_size
- Max burst size to use in context.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
- doca_error_t doca_eth_rxq_set_max_packet_size ( doca_eth_rxq* eth_rxq, uint32_t max_packet_size )
-
Set max packet size property for doca_eth_rxq. can only be called before calling doca_ctx_start().
Parameters
- eth_rxq
- Pointer to doca_eth_rxq instance.
- max_packet_size
- Max packet size to use in context.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:Function is irrelevant in the case of context of type DOCA_ETH_RXQ_TYPE_REGULAR.
- doca_error_t doca_eth_rxq_set_max_recv_buf_list_len ( doca_eth_rxq* eth_rxq, uint32_t max_recv_buf_list_len )
-
Set the maximal receive buffer list length for doca_eth_rxq. This value indicated what the maximal number of elements in a doca_buf list is. can only be called before calling doca_ctx_start().
Parameters
- eth_rxq
- Pointer to doca_eth_rxq instance.
- max_recv_buf_list_len
- Maximal receive buffer list length to use in context.
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:-
Function is relevant only in the case of context of type DOCA_ETH_RXQ_TYPE_REGULAR.
-
The default maximal receive buffer list length is 1.
- doca_error_t doca_eth_rxq_set_pkt_buf ( doca_eth_rxq* eth_rxq, doca_mmap* mmap, uint32_t offset, uint32_t size )
-
Set Eth packet buffer for a doca_eth_rxq. can only be called before calling doca_ctx_start().
Parameters
- eth_rxq
- Pointer to doca_eth_rxq instance.
- mmap
- The mmap consist of the memrange for the Eth packet buffer.
- offset
- The offset from mmap start to set the packet buffer.
- size
- The size of the Eth packet buffer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:Function is irrelevant in the case of context of type DOCA_ETH_RXQ_TYPE_REGULAR.
- doca_error_t doca_eth_rxq_set_type ( doca_eth_rxq* eth_rxq, doca_eth_rxq_type type )
-
Set RX queue type property for doca_eth_rxq. can only be called before calling doca_ctx_start().
Parameters
- eth_rxq
- Pointer to doca_eth_rxq instance.
- type
- RX queue type - see enum doca_eth_rxq_type.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default type is DOCA_ETH_RXQ_TYPE_REGULAR.
DOCA ETH RXQ
DOCA ETH TXQ
1.14.1. DOCA ETH RXQ
[ DOCA ETH ]
Modules
DOCA ETH RXQ CPU Data Path
1.14.2. DOCA ETH TXQ
[ DOCA ETH ]
DOCA ETH TXQ library.
There are 2 data path options to use DOCA ETH TXQ context, a GPU managed control path and a CPU managed one. Other than the need to use doca_ctx_set_datapath_on_gpu() on a GPU context before starting it, both cases share the same control path functions (unless mentioned otherwise in the function documentation). The data path functions are different for the different options. The GPU managed data path functions are not included in the DOCA ETH TXQ API (check DOCA GPUNetIO).
Modules
Enumerations
- enum doca_eth_txq_data_path_type
- enum doca_eth_txq_type
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_eth_txq_as_doca_ctx ( doca_eth_txq* eth_txq )
- Convert doca_eth_txq instance into a generalized context for use with doca core objects.
- doca_error_t doca_eth_txq_calculate_timestamp ( doca_eth_txq* eth_txq, uint64_t timestamp_ns, uint64_t* wait_on_time_value )
- Calculate timestamp to use when setting the wait on time on the Tx queue.
- doca_error_t doca_eth_txq_cap_get_max_burst_size ( const doca_devinfo* devinfo, uint32_t max_send_buf_list_len, uint16_t max_lso_header_size, uint32_t* max_burst_size )
- Get the maximum burst size supported by the device.
- doca_error_t doca_eth_txq_cap_get_max_lso_header_size ( const doca_devinfo* devinfo, uint16_t* max_lso_header_size )
- Get the maximum header size of an LSO packet supported by the device.
- doca_error_t doca_eth_txq_cap_get_max_lso_msg_size ( const doca_devinfo* devinfo, uint32_t* max_lso_msg_size )
- Get the max LSO message size by the network device.
- doca_error_t doca_eth_txq_cap_get_max_send_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_send_buf_list_len )
- Get the maximum send buffer list length supported by the device.
- doca_error_t doca_eth_txq_cap_get_wait_on_time_offload_supported ( const doca_devinfo* devinfo, doca_eth_wait_on_time_type ** wait_on_time_mode )
- Check if wait on time offload is supported by the network device.
- doca_error_t doca_eth_txq_cap_is_l3_chksum_offload_supported ( const doca_devinfo* devinfo )
- Check if L3 checksum offload is supported by the device.
- doca_error_t doca_eth_txq_cap_is_l4_chksum_offload_supported ( const doca_devinfo* devinfo )
- Check if L4 checksum offload is supported by the device.
- doca_error_t doca_eth_txq_cap_is_type_supported ( const doca_devinfo* devinfo, doca_eth_txq_type type, doca_eth_txq_data_path_type data_path_type )
- Check if TX queue type is supported.
- doca_error_t doca_eth_txq_create ( doca_dev* dev, uint32_t max_burst_size, doca_eth_txq** eth_txq )
- Create a DOCA ETH TXQ instance.
- doca_error_t doca_eth_txq_destroy ( doca_eth_txq* eth_txq )
- Destroy a DOCA ETH TXQ instance.
- doca_error_t doca_eth_txq_get_gpu_handle ( const doca_eth_txq* eth_txq, doca_gpu_eth_txq** eth_txq_ext )
- Get a gpu handle of a doca_eth_txq.
- doca_error_t doca_eth_txq_set_l3_chksum_offload ( doca_eth_txq* eth_txq, uint8_t enable_l3_chksum )
- Set offload for the calculation of IPv4 checksum (L3) on transmitted packets. If the users enables L3 checksum offloading, then the HW will calculate the checksum value and write it into the specific field in the packet. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_l4_chksum_offload ( doca_eth_txq* eth_txq, uint8_t enable_l4_chksum )
- Set offload for the calculation of TCP/UDP checksum (L4) on transmitted packets. If the users enables L4 checksum offloading, then the HW will calculate the checksum value and write it into the specific field in the packet. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_max_burst_size ( doca_eth_txq* eth_txq, uint32_t max_burst_size )
- Set max burst size property for doca_eth_txq. This value dictates the maximal number of packets the HW can handle at the same time. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_max_lso_header_size ( doca_eth_txq* eth_txq, uint16_t max_lso_header_size )
- Set the maximum LSO header size for doca_eth_txq. This value is the maximum header size of the LSO packet can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_max_send_buf_list_len ( doca_eth_txq* eth_txq, uint32_t max_send_buf_list_len )
- Set the maximal send buffer list length for doca_eth_txq. This value indicated what the maximal number of elements in a doca_buf list is. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_mss ( doca_eth_txq* eth_txq, uint16_t mss )
- Set the Maximum Segment Size for doca_eth_txq. This value is the maximum data size that can be sent in each segment of the LSO packet. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_type ( doca_eth_txq* eth_txq, doca_eth_txq_type type )
- Set TX queue type property for doca_eth_txq. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_wait_on_time_offload ( doca_eth_txq* eth_txq )
- Set offload to enable wait on time feature on the queue. can only be called before calling doca_ctx_start().
Enumerations
- enum doca_eth_txq_data_path_type
TX data-path type.
Values
- DOCA_ETH_TXQ_DATA_PATH_TYPE_CPU = 0
- Enable data path management on the CPU
- DOCA_ETH_TXQ_DATA_PATH_TYPE_GPU
- Enable data path management on the GPU
- enum doca_eth_txq_type
TX queue type.
Values
- DOCA_ETH_TXQ_TYPE_REGULAR = 0
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_eth_txq_as_doca_ctx ( doca_eth_txq* eth_txq )
-
Convert doca_eth_txq instance into a generalized context for use with doca core objects.
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
Returns
Non NULL upon success, NULL otherwise.
Description
- doca_error_t doca_eth_txq_calculate_timestamp ( doca_eth_txq* eth_txq, uint64_t timestamp_ns, uint64_t* wait_on_time_value )
-
Calculate timestamp to use when setting the wait on time on the Tx queue.
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- timestamp_ns
- Timestamp to indicate when send packets.
- wait_on_time_value
- Value to use to enqueue wait on time in send queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_DRIVER - error query underlying network card driver
- DOCA_ERROR_NOT_PERMITTED - wait on time clock is not enabled on the network card.
Description
Note:Supported for DOCA ETH TXQ instance for GPU only.
- doca_error_t doca_eth_txq_cap_get_max_burst_size ( const doca_devinfo* devinfo, uint32_t max_send_buf_list_len, uint16_t max_lso_header_size, uint32_t* max_burst_size )
-
Get the maximum burst size supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_send_buf_list_len
- Maximal send buffer list length to use in context. (check doca_eth_txq_set_max_send_buf_list_len)
- max_lso_header_size
- Maximum header size of an LSO packet to use in context. Can be 0 in case user isn't planning to use LSO tasks.
- max_burst_size
- The max burst size supported by the device.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
Description
- doca_error_t doca_eth_txq_cap_get_max_lso_header_size ( const doca_devinfo* devinfo, uint16_t* max_lso_header_size )
-
Get the maximum header size of an LSO packet supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_lso_header_size
- Maximum header size of an LSO packet
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_DRIVER - error query underlying network card driver.
- DOCA_ERROR_NOT_SUPPORTED - if LSO is not supported.
Description
- doca_error_t doca_eth_txq_cap_get_max_lso_msg_size ( const doca_devinfo* devinfo, uint32_t* max_lso_msg_size )
-
Get the max LSO message size by the network device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_lso_msg_size
- Maximum LSO message supported.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_DRIVER - error query underlying network card driver.
- DOCA_ERROR_NOT_SUPPORTED - if LSO is not supported.
Description
- doca_error_t doca_eth_txq_cap_get_max_send_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_send_buf_list_len )
-
Get the maximum send buffer list length supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_send_buf_list_len
- Maximal send buffer list length to get. (check doca_eth_txq_set_max_send_buf_list_len)
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
Description
- doca_error_t doca_eth_txq_cap_get_wait_on_time_offload_supported ( const doca_devinfo* devinfo, doca_eth_wait_on_time_type ** wait_on_time_mode )
-
Check if wait on time offload is supported by the network device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- wait_on_time_mode
- Offload wait on time mode (native or DPDK).
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_DRIVER - error query underlying network card driver
- DOCA_ERROR_NOT_SUPPORTED - real-time clock is not enable on the network card.
Description
- doca_error_t doca_eth_txq_cap_is_l3_chksum_offload_supported ( const doca_devinfo* devinfo )
-
Check if L3 checksum offload is supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NOT_SUPPORTED - if L3 checksum offload is not supported.
Description
- doca_error_t doca_eth_txq_cap_is_l4_chksum_offload_supported ( const doca_devinfo* devinfo )
-
Check if L4 checksum offload is supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NOT_SUPPORTED - if L4 checksum offload is not supported.
Description
- doca_error_t doca_eth_txq_cap_is_type_supported ( const doca_devinfo* devinfo, doca_eth_txq_type type, doca_eth_txq_data_path_type data_path_type )
-
Check if TX queue type is supported.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- type
- TX queue type - see enum doca_eth_txq_type.
- data_path_type
- TX data-path type - see enum doca_eth_txq_data_path_type.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NOT_SUPPORTED - if type is not supported.
Description
- doca_error_t doca_eth_txq_create ( doca_dev* dev, uint32_t max_burst_size, doca_eth_txq** eth_txq )
-
Create a DOCA ETH TXQ instance.
Parameters
- dev
- Device to bind the context.
- max_burst_size
- Max burst size to use in context.
- eth_txq
- Pointer to pointer to be set to point to the created doca_eth_txq instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NO_MEMORY - failed to alloc doca_eth_txq.
Description
- doca_error_t doca_eth_txq_destroy ( doca_eth_txq* eth_txq )
-
Destroy a DOCA ETH TXQ instance.
Parameters
- eth_txq
- Pointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - eth_txq argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - eth_txq context state is not idle.
Description
- doca_error_t doca_eth_txq_get_gpu_handle ( const doca_eth_txq* eth_txq, doca_gpu_eth_txq** eth_txq_ext )
-
Get a gpu handle of a doca_eth_txq.
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- eth_txq_ext
- A doca gpu eth_txq handle.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
- DOCA_ERROR_NOT_SUPPORTED - in case eth_txq isn't an instance for GPU.
Description
Note:Supported for DOCA ETH TXQ instance for GPU only.
This method should be used after ctx is started. The expected flow is as follows: 1. bind the ctx to a gpu device using doca_ctx_set_datapath_on_gpu() 2. start the ctx using doca_ctx_start() 3. call doca_eth_txq_get_gpu_handle() to get the gpu_handle
- doca_error_t doca_eth_txq_set_l3_chksum_offload ( doca_eth_txq* eth_txq, uint8_t enable_l3_chksum )
-
Set offload for the calculation of IPv4 checksum (L3) on transmitted packets. If the users enables L3 checksum offloading, then the HW will calculate the checksum value and write it into the specific field in the packet. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- enable_l3_chksum
- An indicator to enable/disable L3 checksum.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default configuration is to disable L3 checksum offloading.
- doca_error_t doca_eth_txq_set_l4_chksum_offload ( doca_eth_txq* eth_txq, uint8_t enable_l4_chksum )
-
Set offload for the calculation of TCP/UDP checksum (L4) on transmitted packets. If the users enables L4 checksum offloading, then the HW will calculate the checksum value and write it into the specific field in the packet. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- enable_l4_chksum
- An indicator to enable/disable L4 checksum.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default configuration is to disable L4 checksum offloading.
- doca_error_t doca_eth_txq_set_max_burst_size ( doca_eth_txq* eth_txq, uint32_t max_burst_size )
-
Set max burst size property for doca_eth_txq. This value dictates the maximal number of packets the HW can handle at the same time. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- max_burst_size
- Max burst size to use in context.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
- doca_error_t doca_eth_txq_set_max_lso_header_size ( doca_eth_txq* eth_txq, uint16_t max_lso_header_size )
-
Set the maximum LSO header size for doca_eth_txq. This value is the maximum header size of the LSO packet can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- max_lso_header_size
- Maximum LSO header size to use in context.
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:-
The default maximum LSO header size is 74.
-
This setter is relevant only in case of using LSO send tasks.
- doca_error_t doca_eth_txq_set_max_send_buf_list_len ( doca_eth_txq* eth_txq, uint32_t max_send_buf_list_len )
-
Set the maximal send buffer list length for doca_eth_txq. This value indicated what the maximal number of elements in a doca_buf list is. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- max_send_buf_list_len
- Maximal send buffer list length to use in context.
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default maximal send buffer list length is 1.
- doca_error_t doca_eth_txq_set_mss ( doca_eth_txq* eth_txq, uint16_t mss )
-
Set the Maximum Segment Size for doca_eth_txq. This value is the maximum data size that can be sent in each segment of the LSO packet. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- mss
- Maximum Segment Size to use in context.
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:-
The default MSS is 1500.
-
This setter is relevant only in case of using LSO send tasks.
- doca_error_t doca_eth_txq_set_type ( doca_eth_txq* eth_txq, doca_eth_txq_type type )
-
Set TX queue type property for doca_eth_txq. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- type
- TX queue type - see enum doca_eth_txq_type.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default type is DOCA_ETH_TXQ_TYPE_REGULAR.
- doca_error_t doca_eth_txq_set_wait_on_time_offload ( doca_eth_txq* eth_txq )
-
Set offload to enable wait on time feature on the queue. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
- DOCA_ERROR_NOT_PERMITTED - wait on time HW support but network device clock is not in REAL TIME mode.
Description
Note:Supported for DOCA ETH TXQ instance for GPU only.
DOCA ETH TXQ CPU Data Path
DOCA ETH TXQ GPU Data Path
1.14.2. DOCA ETH TXQ
[ DOCA ETH ]
DOCA ETH TXQ library.
There are 2 data path options to use DOCA ETH TXQ context, a GPU managed control path and a CPU managed one. Other than the need to use doca_ctx_set_datapath_on_gpu() on a GPU context before starting it, both cases share the same control path functions (unless mentioned otherwise in the function documentation). The data path functions are different for the different options. The GPU managed data path functions are not included in the DOCA ETH TXQ API (check DOCA GPUNetIO).
Modules
Enumerations
- enum doca_eth_txq_data_path_type
- enum doca_eth_txq_type
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_eth_txq_as_doca_ctx ( doca_eth_txq* eth_txq )
- Convert doca_eth_txq instance into a generalized context for use with doca core objects.
- doca_error_t doca_eth_txq_calculate_timestamp ( doca_eth_txq* eth_txq, uint64_t timestamp_ns, uint64_t* wait_on_time_value )
- Calculate timestamp to use when setting the wait on time on the Tx queue.
- doca_error_t doca_eth_txq_cap_get_max_burst_size ( const doca_devinfo* devinfo, uint32_t max_send_buf_list_len, uint16_t max_lso_header_size, uint32_t* max_burst_size )
- Get the maximum burst size supported by the device.
- doca_error_t doca_eth_txq_cap_get_max_lso_header_size ( const doca_devinfo* devinfo, uint16_t* max_lso_header_size )
- Get the maximum header size of an LSO packet supported by the device.
- doca_error_t doca_eth_txq_cap_get_max_lso_msg_size ( const doca_devinfo* devinfo, uint32_t* max_lso_msg_size )
- Get the max LSO message size by the network device.
- doca_error_t doca_eth_txq_cap_get_max_send_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_send_buf_list_len )
- Get the maximum send buffer list length supported by the device.
- doca_error_t doca_eth_txq_cap_get_wait_on_time_offload_supported ( const doca_devinfo* devinfo, doca_eth_wait_on_time_type ** wait_on_time_mode )
- Check if wait on time offload is supported by the network device.
- doca_error_t doca_eth_txq_cap_is_l3_chksum_offload_supported ( const doca_devinfo* devinfo )
- Check if L3 checksum offload is supported by the device.
- doca_error_t doca_eth_txq_cap_is_l4_chksum_offload_supported ( const doca_devinfo* devinfo )
- Check if L4 checksum offload is supported by the device.
- doca_error_t doca_eth_txq_cap_is_type_supported ( const doca_devinfo* devinfo, doca_eth_txq_type type, doca_eth_txq_data_path_type data_path_type )
- Check if TX queue type is supported.
- doca_error_t doca_eth_txq_create ( doca_dev* dev, uint32_t max_burst_size, doca_eth_txq** eth_txq )
- Create a DOCA ETH TXQ instance.
- doca_error_t doca_eth_txq_destroy ( doca_eth_txq* eth_txq )
- Destroy a DOCA ETH TXQ instance.
- doca_error_t doca_eth_txq_get_gpu_handle ( const doca_eth_txq* eth_txq, doca_gpu_eth_txq** eth_txq_ext )
- Get a gpu handle of a doca_eth_txq.
- doca_error_t doca_eth_txq_set_l3_chksum_offload ( doca_eth_txq* eth_txq, uint8_t enable_l3_chksum )
- Set offload for the calculation of IPv4 checksum (L3) on transmitted packets. If the users enables L3 checksum offloading, then the HW will calculate the checksum value and write it into the specific field in the packet. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_l4_chksum_offload ( doca_eth_txq* eth_txq, uint8_t enable_l4_chksum )
- Set offload for the calculation of TCP/UDP checksum (L4) on transmitted packets. If the users enables L4 checksum offloading, then the HW will calculate the checksum value and write it into the specific field in the packet. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_max_burst_size ( doca_eth_txq* eth_txq, uint32_t max_burst_size )
- Set max burst size property for doca_eth_txq. This value dictates the maximal number of packets the HW can handle at the same time. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_max_lso_header_size ( doca_eth_txq* eth_txq, uint16_t max_lso_header_size )
- Set the maximum LSO header size for doca_eth_txq. This value is the maximum header size of the LSO packet can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_max_send_buf_list_len ( doca_eth_txq* eth_txq, uint32_t max_send_buf_list_len )
- Set the maximal send buffer list length for doca_eth_txq. This value indicated what the maximal number of elements in a doca_buf list is. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_mss ( doca_eth_txq* eth_txq, uint16_t mss )
- Set the Maximum Segment Size for doca_eth_txq. This value is the maximum data size that can be sent in each segment of the LSO packet. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_type ( doca_eth_txq* eth_txq, doca_eth_txq_type type )
- Set TX queue type property for doca_eth_txq. can only be called before calling doca_ctx_start().
- doca_error_t doca_eth_txq_set_wait_on_time_offload ( doca_eth_txq* eth_txq )
- Set offload to enable wait on time feature on the queue. can only be called before calling doca_ctx_start().
Enumerations
- enum doca_eth_txq_data_path_type
TX data-path type.
Values
- DOCA_ETH_TXQ_DATA_PATH_TYPE_CPU = 0
- Enable data path management on the CPU
- DOCA_ETH_TXQ_DATA_PATH_TYPE_GPU
- Enable data path management on the GPU
- enum doca_eth_txq_type
TX queue type.
Values
- DOCA_ETH_TXQ_TYPE_REGULAR = 0
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_eth_txq_as_doca_ctx ( doca_eth_txq* eth_txq )
-
Convert doca_eth_txq instance into a generalized context for use with doca core objects.
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
Returns
Non NULL upon success, NULL otherwise.
Description
- doca_error_t doca_eth_txq_calculate_timestamp ( doca_eth_txq* eth_txq, uint64_t timestamp_ns, uint64_t* wait_on_time_value )
-
Calculate timestamp to use when setting the wait on time on the Tx queue.
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- timestamp_ns
- Timestamp to indicate when send packets.
- wait_on_time_value
- Value to use to enqueue wait on time in send queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_DRIVER - error query underlying network card driver
- DOCA_ERROR_NOT_PERMITTED - wait on time clock is not enabled on the network card.
Description
Note:Supported for DOCA ETH TXQ instance for GPU only.
- doca_error_t doca_eth_txq_cap_get_max_burst_size ( const doca_devinfo* devinfo, uint32_t max_send_buf_list_len, uint16_t max_lso_header_size, uint32_t* max_burst_size )
-
Get the maximum burst size supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_send_buf_list_len
- Maximal send buffer list length to use in context. (check doca_eth_txq_set_max_send_buf_list_len)
- max_lso_header_size
- Maximum header size of an LSO packet to use in context. Can be 0 in case user isn't planning to use LSO tasks.
- max_burst_size
- The max burst size supported by the device.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
Description
- doca_error_t doca_eth_txq_cap_get_max_lso_header_size ( const doca_devinfo* devinfo, uint16_t* max_lso_header_size )
-
Get the maximum header size of an LSO packet supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_lso_header_size
- Maximum header size of an LSO packet
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_DRIVER - error query underlying network card driver.
- DOCA_ERROR_NOT_SUPPORTED - if LSO is not supported.
Description
- doca_error_t doca_eth_txq_cap_get_max_lso_msg_size ( const doca_devinfo* devinfo, uint32_t* max_lso_msg_size )
-
Get the max LSO message size by the network device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_lso_msg_size
- Maximum LSO message supported.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_DRIVER - error query underlying network card driver.
- DOCA_ERROR_NOT_SUPPORTED - if LSO is not supported.
Description
- doca_error_t doca_eth_txq_cap_get_max_send_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_send_buf_list_len )
-
Get the maximum send buffer list length supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- max_send_buf_list_len
- Maximal send buffer list length to get. (check doca_eth_txq_set_max_send_buf_list_len)
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
Description
- doca_error_t doca_eth_txq_cap_get_wait_on_time_offload_supported ( const doca_devinfo* devinfo, doca_eth_wait_on_time_type ** wait_on_time_mode )
-
Check if wait on time offload is supported by the network device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- wait_on_time_mode
- Offload wait on time mode (native or DPDK).
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_DRIVER - error query underlying network card driver
- DOCA_ERROR_NOT_SUPPORTED - real-time clock is not enable on the network card.
Description
- doca_error_t doca_eth_txq_cap_is_l3_chksum_offload_supported ( const doca_devinfo* devinfo )
-
Check if L3 checksum offload is supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NOT_SUPPORTED - if L3 checksum offload is not supported.
Description
- doca_error_t doca_eth_txq_cap_is_l4_chksum_offload_supported ( const doca_devinfo* devinfo )
-
Check if L4 checksum offload is supported by the device.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NOT_SUPPORTED - if L4 checksum offload is not supported.
Description
- doca_error_t doca_eth_txq_cap_is_type_supported ( const doca_devinfo* devinfo, doca_eth_txq_type type, doca_eth_txq_data_path_type data_path_type )
-
Check if TX queue type is supported.
Parameters
- devinfo
- Pointer to doca_devinfo instance.
- type
- TX queue type - see enum doca_eth_txq_type.
- data_path_type
- TX data-path type - see enum doca_eth_txq_data_path_type.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NOT_SUPPORTED - if type is not supported.
Description
- doca_error_t doca_eth_txq_create ( doca_dev* dev, uint32_t max_burst_size, doca_eth_txq** eth_txq )
-
Create a DOCA ETH TXQ instance.
Parameters
- dev
- Device to bind the context.
- max_burst_size
- Max burst size to use in context.
- eth_txq
- Pointer to pointer to be set to point to the created doca_eth_txq instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_NO_MEMORY - failed to alloc doca_eth_txq.
Description
- doca_error_t doca_eth_txq_destroy ( doca_eth_txq* eth_txq )
-
Destroy a DOCA ETH TXQ instance.
Parameters
- eth_txq
- Pointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - eth_txq argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - eth_txq context state is not idle.
Description
- doca_error_t doca_eth_txq_get_gpu_handle ( const doca_eth_txq* eth_txq, doca_gpu_eth_txq** eth_txq_ext )
-
Get a gpu handle of a doca_eth_txq.
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- eth_txq_ext
- A doca gpu eth_txq handle.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
- DOCA_ERROR_NOT_SUPPORTED - in case eth_txq isn't an instance for GPU.
Description
Note:Supported for DOCA ETH TXQ instance for GPU only.
This method should be used after ctx is started. The expected flow is as follows: 1. bind the ctx to a gpu device using doca_ctx_set_datapath_on_gpu() 2. start the ctx using doca_ctx_start() 3. call doca_eth_txq_get_gpu_handle() to get the gpu_handle
- doca_error_t doca_eth_txq_set_l3_chksum_offload ( doca_eth_txq* eth_txq, uint8_t enable_l3_chksum )
-
Set offload for the calculation of IPv4 checksum (L3) on transmitted packets. If the users enables L3 checksum offloading, then the HW will calculate the checksum value and write it into the specific field in the packet. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- enable_l3_chksum
- An indicator to enable/disable L3 checksum.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default configuration is to disable L3 checksum offloading.
- doca_error_t doca_eth_txq_set_l4_chksum_offload ( doca_eth_txq* eth_txq, uint8_t enable_l4_chksum )
-
Set offload for the calculation of TCP/UDP checksum (L4) on transmitted packets. If the users enables L4 checksum offloading, then the HW will calculate the checksum value and write it into the specific field in the packet. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- enable_l4_chksum
- An indicator to enable/disable L4 checksum.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default configuration is to disable L4 checksum offloading.
- doca_error_t doca_eth_txq_set_max_burst_size ( doca_eth_txq* eth_txq, uint32_t max_burst_size )
-
Set max burst size property for doca_eth_txq. This value dictates the maximal number of packets the HW can handle at the same time. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- max_burst_size
- Max burst size to use in context.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
- doca_error_t doca_eth_txq_set_max_lso_header_size ( doca_eth_txq* eth_txq, uint16_t max_lso_header_size )
-
Set the maximum LSO header size for doca_eth_txq. This value is the maximum header size of the LSO packet can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- max_lso_header_size
- Maximum LSO header size to use in context.
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:-
The default maximum LSO header size is 74.
-
This setter is relevant only in case of using LSO send tasks.
- doca_error_t doca_eth_txq_set_max_send_buf_list_len ( doca_eth_txq* eth_txq, uint32_t max_send_buf_list_len )
-
Set the maximal send buffer list length for doca_eth_txq. This value indicated what the maximal number of elements in a doca_buf list is. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- max_send_buf_list_len
- Maximal send buffer list length to use in context.
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default maximal send buffer list length is 1.
- doca_error_t doca_eth_txq_set_mss ( doca_eth_txq* eth_txq, uint16_t mss )
-
Set the Maximum Segment Size for doca_eth_txq. This value is the maximum data size that can be sent in each segment of the LSO packet. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- mss
- Maximum Segment Size to use in context.
Returns
DOCA_SUCCESS - if property set successfully. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:-
The default MSS is 1500.
-
This setter is relevant only in case of using LSO send tasks.
- doca_error_t doca_eth_txq_set_type ( doca_eth_txq* eth_txq, doca_eth_txq_type type )
-
Set TX queue type property for doca_eth_txq. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
- type
- TX queue type - see enum doca_eth_txq_type.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
Description
Note:The default type is DOCA_ETH_TXQ_TYPE_REGULAR.
- doca_error_t doca_eth_txq_set_wait_on_time_offload ( doca_eth_txq* eth_txq )
-
Set offload to enable wait on time feature on the queue. can only be called before calling doca_ctx_start().
Parameters
- eth_txq
- Pointer to doca_eth_txq instance.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid parameter was given.
- DOCA_ERROR_BAD_STATE - if context is not idle.
- DOCA_ERROR_NOT_PERMITTED - wait on time HW support but network device clock is not in REAL TIME mode.
Description
Note:Supported for DOCA ETH TXQ instance for GPU only.
DOCA ETH TXQ CPU Data Path
DOCA ETH TXQ GPU Data Path
DOCA HW offload flow library. For more details please refer to the user guide on DOCA devzone.
Modules
Classes
-
struct doca_flow_action_desc
- action description
-
struct doca_flow_action_descs
- action descriptor array
-
struct doca_flow_actions
- doca flow actions information
-
struct doca_flow_crypto_action
- doca flow crypto action information
-
struct doca_flow_crypto_encap_action
- doca flow crypto encap action information
-
struct doca_flow_desc_field
- Action descriptor field.
-
struct doca_flow_encap_action
- doca flow encap data information
-
struct doca_flow_entropy_format
- doca flow header format for entropy
-
struct doca_flow_fwd
- forwarding configuration
-
struct doca_flow_header_format
- doca flow packet format
-
struct doca_flow_match
- doca flow matcher information
-
struct doca_flow_match_condition
- doca flow match condition information
-
struct doca_flow_meta
- doca flow meta data
-
struct doca_flow_mirror_target
- doca flow mirror target
-
struct doca_flow_monitor
- doca monitor action configuration
-
struct doca_flow_nat64_action
- doca flow nat64 action
-
struct doca_flow_ordered_list
-
struct doca_flow_parser_geneve_opt_cfg
- User configuration structure using to create parser for single GENEVE TLV option.
-
struct doca_flow_parser_meta
- doca flow parser meta data
-
struct doca_flow_push_action
- doca flow push data information
-
struct doca_flow_query
- flow query result
-
struct doca_flow_resource_decap_cfg
- doca flow decap resource configuration
-
struct doca_flow_resource_encap_cfg
- doca flow encap resource configuration
-
struct doca_flow_resource_ipsec_sa_cfg
- doca flow ipsec SA resource configuration
-
struct doca_flow_resource_meter_cfg
- doca flow meter resource configuration
-
struct doca_flow_resource_mirror_cfg
- doca flow mirror resource configuration
-
struct doca_flow_resource_psp_cfg
- doca flow psp resource configuration
-
struct doca_flow_resource_rss_cfg
- doca flow rss resource configuration
-
struct doca_flow_shared_resource_cfg
- doca flow shared resource configuration
-
struct doca_flow_shared_resource_result
- flow shared resources query result
Defines
- #define DOCA_FLOW_META_MAX 32
- #define DOCA_FLOW_META_SCRATCH_PAD_MAX
- meter mark color
- #define DOCA_FLOW_PSP_DECRYPTION_ID UINT32_MAX
- #define DOCA_FLOW_VLAN_MAX 2
Typedefs
- typedef void ( *doca_flow_entry_process_cb )( doca_flow_pipe_entry* entry, uint16_t pipe_queue, enum doca_flow_entry_status status, enum doca_flow_entry_op op, void* user_ctx )
- doca flow entry process callback
- typedef void ( *doca_flow_pipe_process_cb )( doca_flow_pipe* pipe, enum doca_flow_pipe_status status, enum doca_flow_pipe_op op, void* user_ctx )
- doca flow pipe process callback
- typedef doca_error_t ( *doca_flow_pipe_resize_entry_relocate_cb )( void* pipe_user_ctx, uint16_t pipe_queue, void* entry_user_ctx, void* *new_entry_user_ctx )
- doca flow pipe entry relocation callback.
- typedef doca_error_t ( *doca_flow_pipe_resize_nr_entries_changed_cb )( void* pipe_user_ctx, uint32_t nr_entries )
- doca flow pipe resize number of entries changed callback.
- typedef void ( *doca_flow_shared_resource_unbind_cb )( enum doca_flow_shared_resource_type, uint32_t shared_resource_id, void* bindable_obj )
- doca flow shared resource unbind callback
Enumerations
- enum doca_flow_action_type
- action type enumeration
- enum doca_flow_compare_op
- doca flow compare operation
- enum doca_flow_crypto_syndrome
- doca flow psp/ipsec syndrome valid values for parser meta
- enum doca_flow_direction_info
- doca flow direction info
- enum doca_flow_entry_op
- doca flow entry operation
- enum doca_flow_entry_status
- doca flow entry status
- enum doca_flow_flags_type
- doca flow flags type
- enum doca_flow_fwd_type
- forwarding action type
- enum doca_flow_l2_meta
- doca flow l2 valid type for parser meta
- enum doca_flow_l2_valid_header
- doca flow l2 valid headers
- enum doca_flow_l3_meta
- doca flow l3 valid type for parser meta
- enum doca_flow_l4_meta
- doca flow l4 valid type for parser meta
- enum doca_flow_match_tcp_flags
- doca flow match flags
- enum doca_flow_meter_algorithm_type
- Traffic meter algorithms.
- enum doca_flow_meter_color_mode
- Traffic meter init color mode when creating a pipe or entry: blind (fixed as green) or aware (configurable value).
- enum doca_flow_meter_limit_type
- Traffic meter limit type: per bytes or per packets for all meter parameters: cir, cbs, eir, ebs.
- enum doca_flow_ordered_list_element_type
- enum doca_flow_parser_geneve_opt_mode
- Geneve TLV option class mode.
- enum doca_flow_pipe_domain
- doca flow pipe domain
- enum doca_flow_pipe_op
- doca flow pipe operation
- enum doca_flow_pipe_status
- doca flow pipe status
- enum doca_flow_pipe_type
- doca flow pipe type
- enum doca_flow_port_type
- doca flow port type
- enum doca_flow_push_action_type
- doca flow push action type
- enum doca_flow_resource_type
- doca flow resource type
- enum doca_flow_rss_hash_function
- rss hash function type
- enum doca_flow_shared_resource_type
- Shared resource supported types.
- enum doca_flow_target_type
- doca flow target type
- enum doca_rss_type
- rss offload types
Functions
- DOCA_EXPERIMENTAL int doca_flow_aging_handle ( doca_flow_port* port, uint16_t queue, uint64_t quota, uint64_t max_entries )
- Handle aging of entries.
- doca_error_t doca_flow_cfg_create ( doca_flow_cfg** cfg )
- Create DOCA Flow configuration struct.
- doca_error_t doca_flow_cfg_destroy ( doca_flow_cfg* cfg )
- Destroy DOCA Flow configuration struct.
- doca_error_t doca_flow_cfg_set_cb_entry_process ( doca_flow_cfg* cfg, doca_flow_entry_process_cb cb )
- Set callback for entry create/destroy.
- doca_error_t doca_flow_cfg_set_cb_pipe_process ( doca_flow_cfg* cfg, doca_flow_pipe_process_cb cb )
- Set callback for pipe process completion.
- doca_error_t doca_flow_cfg_set_cb_shared_resource_unbind ( doca_flow_cfg* cfg, doca_flow_shared_resource_unbind_cb cb )
- Set callback for unbinding of a shared resource.
- doca_error_t doca_flow_cfg_set_default_rss ( doca_flow_cfg* cfg, const doca_flow_resource_rss_cfg* rss )
- Set RSS global configuration.
- doca_error_t doca_flow_cfg_set_mode_args ( doca_flow_cfg* cfg, const char* mode_args )
- Set DOCA mode args.
- doca_error_t doca_flow_cfg_set_nr_acl_collisions ( doca_flow_cfg* cfg, uint8_t nr_acl_collisions )
- Set number of pre-configured collisions.
- doca_error_t doca_flow_cfg_set_nr_counters ( doca_flow_cfg* cfg, uint32_t nr_counters )
- Set number of counters to configure.
- doca_error_t doca_flow_cfg_set_nr_meters ( doca_flow_cfg* cfg, uint32_t nr_meters )
- Set number of traffic meters to configure.
- doca_error_t doca_flow_cfg_set_nr_shared_resource ( doca_flow_cfg* cfg, uint32_t nr_shared_resource, doca_flow_shared_resource_type type )
- Set number of shared resource.
- doca_error_t doca_flow_cfg_set_pipe_queues ( doca_flow_cfg* cfg, uint16_t pipe_queues )
- Set pipe queues.
- doca_error_t doca_flow_cfg_set_queue_depth ( doca_flow_cfg* cfg, uint32_t queue_depth )
- Set number of pre-configured queue_size.
- doca_error_t doca_flow_cfg_set_rss_key ( doca_flow_cfg* cfg, const uint8_t* rss_key, uint32_t rss_key_len )
- Set RSS hash key.
- DOCA_EXPERIMENTAL void doca_flow_destroy ( void )
- Destroy the doca flow.
- doca_error_t doca_flow_entries_process ( doca_flow_port* port, uint16_t pipe_queue, uint64_t timeout, uint32_t max_processed_entries )
- Process entries in queue.
- doca_error_t doca_flow_get_target ( doca_flow_target_type type, doca_flow_target** target )
- Get doca flow forward target.
- doca_error_t doca_flow_init ( doca_flow_cfg* cfg )
- Initialize the doca flow.
- doca_error_t doca_flow_mpls_label_decode ( const doca_flow_header_mpls* mpls, uint32_t* label, uint8_t* traffic_class, uint8_t* ttl, bool* bottom_of_stack )
- Decode an MPLS label header.
- doca_error_t doca_flow_mpls_label_encode ( uint32_t label, uint8_t traffic_class, uint8_t ttl, bool bottom_of_stack, doca_flow_header_mpls* mpls )
- Prepare an MPLS label header in big-endian.
- doca_error_t doca_flow_parser_geneve_opt_create ( const doca_flow_port* port, const doca_flow_parser_geneve_opt_cfg tlv_list[], uint8_t nb_options, doca_flow_parser** parser )
- Creates GENEVE TLV parser for the selected port.
- doca_error_t doca_flow_parser_geneve_opt_destroy ( doca_flow_parser* parser )
- Destroy GENEVE TLV parser.
- doca_error_t doca_flow_pipe_acl_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_match* match, const doca_flow_match* match_mask, const uint32_t priority, const doca_flow_fwd* fwd, const doca_flow_flags_type flag, void* usr_ctx, doca_flow_pipe_entry** entry )
- Add one new entry to a acl pipe.
- doca_error_t doca_flow_pipe_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_match* match, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, uint32_t flags, void* usr_ctx, doca_flow_pipe_entry** entry )
- Add one new entry to a pipe.
- doca_error_t doca_flow_pipe_calc_hash ( doca_flow_pipe* pipe, const doca_flow_match* match, uint32_t* hash )
- calc the hash for a given match on a given pipe.
- doca_error_t doca_flow_pipe_cfg_create ( doca_flow_pipe_cfg** cfg, doca_flow_port* port )
- Create DOCA Flow pipe configuration struct.
- doca_error_t doca_flow_pipe_cfg_destroy ( doca_flow_pipe_cfg* cfg )
- Destroy DOCA Flow pipe configuration struct.
- doca_error_t doca_flow_pipe_cfg_set_actions ( doca_flow_pipe_cfg* cfg, doca_flow_actions** actions, doca_flow_actions** actions_masks, doca_flow_action_descs** action_descs, size_t nr_actions )
- Set pipe's actions, actions mask and actions descriptor.
- doca_error_t doca_flow_pipe_cfg_set_congestion_level_threshold ( doca_flow_pipe_cfg* cfg, uint8_t congestion_level_threshold )
- Set pipe's congestion level threshold.
- doca_error_t doca_flow_pipe_cfg_set_dir_info ( doca_flow_pipe_cfg* cfg, doca_flow_direction_info dir_info )
- Set pipe's Direction info.
- doca_error_t doca_flow_pipe_cfg_set_domain ( doca_flow_pipe_cfg* cfg, doca_flow_pipe_domain domain )
- Set pipe's domain.
- doca_error_t doca_flow_pipe_cfg_set_enable_strict_matching ( doca_flow_pipe_cfg* cfg, bool enable_strict_matching )
- Set if the pipe supports strict matching or not.
- doca_error_t doca_flow_pipe_cfg_set_is_resizable ( doca_flow_pipe_cfg* cfg, bool is_resizable )
- Set if the pipe supports the resize operation.
- doca_error_t doca_flow_pipe_cfg_set_is_root ( doca_flow_pipe_cfg* cfg, bool is_root )
- Set if pipe is root or not.
- doca_error_t doca_flow_pipe_cfg_set_match ( doca_flow_pipe_cfg* cfg, const doca_flow_match* match, const doca_flow_match* match_mask )
- Set pipe's match and match mask.
- doca_error_t doca_flow_pipe_cfg_set_miss_counter ( doca_flow_pipe_cfg* cfg, bool miss_counter )
- Set to enable pipe's miss counter.
- doca_error_t doca_flow_pipe_cfg_set_monitor ( doca_flow_pipe_cfg* cfg, const doca_flow_monitor* monitor )
- Set pipe's monitor.
- doca_error_t doca_flow_pipe_cfg_set_name ( doca_flow_pipe_cfg* cfg, const char* name )
- Set pipe's name.
- doca_error_t doca_flow_pipe_cfg_set_nr_entries ( doca_flow_pipe_cfg* cfg, uint32_t nr_entries )
- Set pipe's maximum number of flow rules.
- doca_error_t doca_flow_pipe_cfg_set_ordered_lists ( doca_flow_pipe_cfg* cfg, doca_flow_ordered_list** ordered_lists, size_t nr_ordered_lists )
- Set pipe's ordered lists.
- doca_error_t doca_flow_pipe_cfg_set_type ( doca_flow_pipe_cfg* cfg, doca_flow_pipe_type type )
- Set pipe's type.
- doca_error_t doca_flow_pipe_cfg_set_user_ctx ( doca_flow_pipe_cfg* cfg, void* user_ctx )
- Set pipe's user context.
- doca_error_t doca_flow_pipe_control_add_entry ( uint16_t pipe_queue, uint32_t priority, doca_flow_pipe* pipe, const doca_flow_match* match, const doca_flow_match* match_mask, const doca_flow_match_condition* condition, const doca_flow_actions* actions, const doca_flow_actions* actions_mask, const doca_flow_action_descs* action_descs, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, void* usr_ctx, doca_flow_pipe_entry** entry )
- Add one new entry to a control pipe.
- doca_error_t doca_flow_pipe_create ( const doca_flow_pipe_cfg* cfg, const doca_flow_fwd* fwd, const doca_flow_fwd* fwd_miss, doca_flow_pipe** pipe )
- Create one new pipe.
- DOCA_EXPERIMENTAL void doca_flow_pipe_destroy ( doca_flow_pipe* pipe )
- Destroy one pipe.
- DOCA_EXPERIMENTAL void doca_flow_pipe_dump ( doca_flow_pipe* pipe, FILE* f )
- Dump pipe information.
- doca_flow_entry_status doca_flow_pipe_entry_get_status ( doca_flow_pipe_entry* entry )
- Get entry's status.
- doca_error_t doca_flow_pipe_hash_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, uint32_t entry_index, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, const doca_flow_flags_type flags, void* usr_ctx, doca_flow_pipe_entry** entry )
- Add one new entry to an hash pipe.
- doca_error_t doca_flow_pipe_lpm_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_match* match, const doca_flow_match* match_mask, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, const doca_flow_flags_type flag, void* usr_ctx, doca_flow_pipe_entry** entry )
- Add one new entry to a lpm pipe.
- doca_error_t doca_flow_pipe_lpm_update_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, const doca_flow_flags_type flags, doca_flow_pipe_entry* entry )
- Update the lpm pipe entry with new actions.
- doca_error_t doca_flow_pipe_ordered_list_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, uint32_t idx, const doca_flow_ordered_list* ordered_list, const doca_flow_fwd* fwd, doca_flow_flags_type flags, void* user_ctx, doca_flow_pipe_entry** entry )
- doca_error_t doca_flow_pipe_resize ( doca_flow_pipe* pipe, uint8_t new_congestion_level, doca_flow_pipe_resize_nr_entries_changed_cb nr_entries_changed_cb, doca_flow_pipe_resize_entry_relocate_cb entry_relocation_cb )
- Resize pipe.
- doca_error_t doca_flow_pipe_rm_entry ( uint16_t pipe_queue, uint32_t flags, doca_flow_pipe_entry* entry )
- Free one pipe entry.
- doca_error_t doca_flow_pipe_update_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, const doca_flow_flags_type flags, doca_flow_pipe_entry* entry )
- Update the pipe entry with new actions.
- doca_error_t doca_flow_pipe_update_miss ( doca_flow_pipe* pipe, const doca_flow_fwd* fwd_miss )
- Update the forward miss action.
- doca_error_t doca_flow_port_calc_entropy ( doca_flow_port* port, doca_flow_entropy_format* header, uint16_t* entropy )
- Calculate the entropy.
- doca_error_t doca_flow_port_cfg_create ( doca_flow_port_cfg** cfg )
- Create DOCA Flow port configuration struct.
- doca_error_t doca_flow_port_cfg_destroy ( doca_flow_port_cfg* cfg )
- Destroy DOCA Flow port configuration struct.
- doca_error_t doca_flow_port_cfg_set_dev ( doca_flow_port_cfg* cfg, void* dev )
- Set port's device.
- doca_error_t doca_flow_port_cfg_set_devargs ( doca_flow_port_cfg* cfg, const char* devargs )
- Set devargs.
- doca_error_t doca_flow_port_cfg_set_ipsec_sn_offload_disable ( doca_flow_port_cfg* cfg )
- Disable SN offload for ipsec - Anti-replay and sn increment will not be activated.
- doca_error_t doca_flow_port_cfg_set_priv_data_size ( doca_flow_port_cfg* cfg, uint16_t priv_data_size )
- Set user private data size.
- doca_error_t doca_flow_port_cfg_set_rss_cfg ( doca_flow_port_cfg* cfg, const doca_flow_resource_rss_cfg* rss_cfg )
- Set RSS optional configuration.
- doca_error_t doca_flow_port_pair ( doca_flow_port* port, doca_flow_port* pair_port )
- pair two doca flow ports.
- DOCA_EXPERIMENTAL void doca_flow_port_pipes_dump ( doca_flow_port* port, FILE* f )
- Dump pipes of one port.
- DOCA_EXPERIMENTAL void doca_flow_port_pipes_flush ( doca_flow_port* port )
- Flush pipes of one port.
- DOCA_EXPERIMENTAL uint8_t* doca_flow_port_priv_data ( doca_flow_port* port )
- Get pointer of user private data.
- doca_error_t doca_flow_port_start ( const doca_flow_port_cfg* cfg, doca_flow_port** port )
- Start a doca port.
- doca_error_t doca_flow_port_stop ( doca_flow_port* port )
- Stop a doca port.
- DOCA_EXPERIMENTAL doca_flow_port* doca_flow_port_switch_get ( const doca_flow_port* port )
- Get doca flow switch port.
- doca_error_t doca_flow_query_entry ( doca_flow_pipe_entry* entry, doca_flow_query* query_stats )
- Extract information about specific entry.
- doca_error_t doca_flow_query_pipe_miss ( doca_flow_pipe* pipe, doca_flow_query* query_stats )
- Extract information about pipe miss entry.
- doca_error_t doca_flow_shared_resource_cfg ( doca_flow_shared_resource_type type, uint32_t id, doca_flow_shared_resource_cfg* cfg )
- Configure a single shared resource.
- doca_error_t doca_flow_shared_resources_bind ( doca_flow_shared_resource_type type, uint32_t* res_array, uint32_t res_array_len, void* bindable_obj )
- Binds a bulk of shared resources to a bindable object.
- doca_error_t doca_flow_shared_resources_query ( doca_flow_shared_resource_type type, uint32_t* res_array, doca_flow_shared_resource_result* query_results_array, uint32_t array_len )
- Extract information about shared counter.
Defines
- #define DOCA_FLOW_META_MAX 32
Max meta data size in bytes. Max meta scratch pad size in 32-bit resolution
- #define DOCA_FLOW_META_SCRATCH_PAD_MAX
-
Value
(DOCA_FLOW_META_MAX / 4 - 1)
- #define DOCA_FLOW_PSP_DECRYPTION_ID UINT32_MAX
PSP decryption reserved id, must be used at pipe creation and entry addition
- #define DOCA_FLOW_VLAN_MAX 2
Max number of vlan headers.
Typedefs
- void ( *doca_flow_entry_process_cb )( doca_flow_pipe_entry* entry, uint16_t pipe_queue, enum doca_flow_entry_status status, enum doca_flow_entry_op op, void* user_ctx )
doca flow entry process callback
- void ( *doca_flow_pipe_process_cb )( doca_flow_pipe* pipe, enum doca_flow_pipe_status status, enum doca_flow_pipe_op op, void* user_ctx )
doca flow pipe process callback
- doca_error_t ( *doca_flow_pipe_resize_entry_relocate_cb )( void* pipe_user_ctx, uint16_t pipe_queue, void* entry_user_ctx, void* *new_entry_user_ctx )
doca flow pipe entry relocation callback. Called for each entry that reached its destination after resize. User is allowed to switch the context to a new pointer.
- pipe_user_ctx
- Pointer to pipe user context.
- uint16_t pipe_queue
- entry_user_ctx
- Pointer to entry user context.
- *new_entry_user_ctx
- DOCA_ERROR_NO_MEMORY - memory error.
- doca_error_t ( *doca_flow_pipe_resize_nr_entries_changed_cb )( void* pipe_user_ctx, uint32_t nr_entries )
doca flow pipe resize number of entries changed callback.
- pipe_user_ctx
- Pointer to pipe user context.
- uint32_t nr_entries
- DOCA_ERROR_NO_MEMORY - memory error.
- void ( *doca_flow_shared_resource_unbind_cb )( enum doca_flow_shared_resource_type, uint32_t shared_resource_id, void* bindable_obj )
doca flow shared resource unbind callback
Parameters
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
Parameters
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
Enumerations
- enum doca_flow_action_type
-
Values
- DOCA_FLOW_ACTION_AUTO = 0
- DOCA_FLOW_ACTION_ADD
- DOCA_FLOW_ACTION_COPY
- enum doca_flow_compare_op
-
Values
- DOCA_FLOW_COMPARE_EQ
- Equal compare.
- DOCA_FLOW_COMPARE_NE
- Not equal compare.
- DOCA_FLOW_COMPARE_LT
- Less than compare.
- DOCA_FLOW_COMPARE_LE
- Less equal compare.
- DOCA_FLOW_COMPARE_GT
- Great than compare.
- DOCA_FLOW_COMPARE_GE
- Great equal compare.
- enum doca_flow_crypto_syndrome
-
Values
- DOCA_FLOW_CRYPTO_SYNDROME_OK
- Decryption and authentication success
- DOCA_FLOW_CRYPTO_SYNDROME_ICV_FAIL
- Authentication failure
- DOCA_FLOW_CRYPTO_SYNDROME_BAD_TRAILER
- Trailer overlaps with headers
- enum doca_flow_direction_info
-
Values
- DOCA_FLOW_DIRECTION_BIDIRECTIONAL = 0
- DOCA_FLOW_DIRECTION_NETWORK_TO_HOST
- DOCA_FLOW_DIRECTION_HOST_TO_NETWORK
- enum doca_flow_entry_op
-
Values
- DOCA_FLOW_ENTRY_OP_ADD
- Add entry
- DOCA_FLOW_ENTRY_OP_DEL
- Delete entry
- DOCA_FLOW_ENTRY_OP_UPD
- Update entry
- DOCA_FLOW_ENTRY_OP_AGED
- Aged entry
- enum doca_flow_entry_status
-
Values
- DOCA_FLOW_ENTRY_STATUS_IN_PROCESS
- DOCA_FLOW_ENTRY_STATUS_SUCCESS
- DOCA_FLOW_ENTRY_STATUS_ERROR
- enum doca_flow_flags_type
-
Values
- DOCA_FLOW_NO_WAIT = 0
- entry will not be buffered
- DOCA_FLOW_WAIT_FOR_BATCH = (1<<0)
- entry will be buffered
- enum doca_flow_fwd_type
-
Values
- DOCA_FLOW_FWD_NONE = 0
- No forward action be set
- DOCA_FLOW_FWD_RSS
- Forwards packets to rss
- DOCA_FLOW_FWD_PORT
- Forwards packets to one port
- DOCA_FLOW_FWD_PIPE
- Forwards packets to another pipe
- DOCA_FLOW_FWD_DROP
- Drops packets
- DOCA_FLOW_FWD_TARGET
- Forwards packets to target
- DOCA_FLOW_FWD_ORDERED_LIST_PIPE
- Forwards packet to a specific entry in an ordered list pipe.
- DOCA_FLOW_FWD_CHANGEABLE
- Forward is specified at entry creation.
- enum doca_flow_l2_meta
-
Values
- DOCA_FLOW_L2_META_NO_VLAN = 0
- no vlan present
- DOCA_FLOW_L2_META_SINGLE_VLAN
- single vlan present
- DOCA_FLOW_L2_META_MULTI_VLAN
- multiple vlan present
- enum doca_flow_l2_valid_header
-
Values
- DOCA_FLOW_L2_VALID_HEADER_VLAN_0 = (1<<0)
- first vlan
- DOCA_FLOW_L2_VALID_HEADER_VLAN_1 = (1<<1)
- second vlan
- enum doca_flow_l3_meta
-
Values
- DOCA_FLOW_L3_META_NONE = 0
- l3 type is none of the below
- DOCA_FLOW_L3_META_IPV4
- l3 type is ipv4
- DOCA_FLOW_L3_META_IPV6
- l3 type is ipv6
- enum doca_flow_l4_meta
-
Values
- DOCA_FLOW_L4_META_NONE = 0
- l4 type is none of the below
- DOCA_FLOW_L4_META_TCP
- l4 type is tcp
- DOCA_FLOW_L4_META_UDP
- l4 type is udp
- DOCA_FLOW_L4_META_ICMP
- l4 type is icmp or icmp6
- DOCA_FLOW_L4_META_ESP
- l4 type is esp
- enum doca_flow_match_tcp_flags
-
Values
- DOCA_FLOW_MATCH_TCP_FLAG_FIN = (1<<0)
- match tcp packet with Fin flag
- DOCA_FLOW_MATCH_TCP_FLAG_SYN = (1<<1)
- match tcp packet with Syn flag
- DOCA_FLOW_MATCH_TCP_FLAG_RST = (1<<2)
- match tcp packet with Rst flag
- DOCA_FLOW_MATCH_TCP_FLAG_PSH = (1<<3)
- match tcp packet with Psh flag
- DOCA_FLOW_MATCH_TCP_FLAG_ACK = (1<<4)
- match tcp packet with Ack flag
- DOCA_FLOW_MATCH_TCP_FLAG_URG = (1<<5)
- match tcp packet with Urg flag
- DOCA_FLOW_MATCH_TCP_FLAG_ECE = (1<<6)
- match tcp packet with Ece flag
- DOCA_FLOW_MATCH_TCP_FLAG_CWR = (1<<7)
- match tcp packet with Cwr flag
- enum doca_flow_meter_algorithm_type
-
Values
- DOCA_FLOW_METER_ALGORITHM_TYPE_RFC2697
- Single Rate Three Color Marker - IETF RFC 2697.
- DOCA_FLOW_METER_ALGORITHM_TYPE_RFC2698
- Two Rate Three Color Marker - IETF RFC 2698.
- DOCA_FLOW_METER_ALGORITHM_TYPE_RFC4115
- Two Rate Three Color Marker - IETF RFC 4115.
- enum doca_flow_meter_color_mode
-
Values
- DOCA_FLOW_METER_COLOR_MODE_BLIND = 0
- Meter action init color is green.
- DOCA_FLOW_METER_COLOR_MODE_AWARE
- Meter action init color is configured.
- enum doca_flow_meter_limit_type
-
Values
- DOCA_FLOW_METER_LIMIT_TYPE_BYTES = 0
- Meter parameters per bytes
- DOCA_FLOW_METER_LIMIT_TYPE_PACKETS
- Meter parameters packets
- enum doca_flow_ordered_list_element_type
Type of an ordered list element.
Values
- DOCA_FLOW_ORDERED_LIST_ELEMENT_ACTIONS
- Ordered list element is struct doca_flow_actions, the next element is struct doca_flow_action_descs or actions mask associated with the current element.
- DOCA_FLOW_ORDERED_LIST_ELEMENT_ACTIONS_MASK
- Ordered list element is struct doca_flow_actions, the next element is struct doca_flow_action_descs associated with the current element.
- DOCA_FLOW_ORDERED_LIST_ELEMENT_ACTION_DESCS
- Ordered list element is struct doca_flow_action_descs. If the previous element type is ACTIONS, the current element is associated with it. Otherwise the current element is ordered w.r.t. the previous one.
- DOCA_FLOW_ORDERED_LIST_ELEMENT_MONITOR
- Ordered list element is struct doca_flow_monitor.
- enum doca_flow_parser_geneve_opt_mode
-
Values
- DOCA_FLOW_PARSER_GENEVE_OPT_MODE_IGNORE
- class is ignored.
- DOCA_FLOW_PARSER_GENEVE_OPT_MODE_FIXED
- class is fixed (the class defines the option along with the type).
- DOCA_FLOW_PARSER_GENEVE_OPT_MODE_MATCHABLE
- class is matching per flow.
- enum doca_flow_pipe_domain
-
Values
- DOCA_FLOW_PIPE_DOMAIN_DEFAULT = 0
- Default pipe domain for actions on ingress traffic
- DOCA_FLOW_PIPE_DOMAIN_SECURE_INGRESS
- Pipe domain for secure actions on ingress traffic
- DOCA_FLOW_PIPE_DOMAIN_EGRESS
- Pipe domain for actions on egress traffic
- DOCA_FLOW_PIPE_DOMAIN_SECURE_EGRESS
- Pipe domain for actions on egress traffic
- enum doca_flow_pipe_op
-
Values
- DOCA_FLOW_PIPE_OP_CONGESTION_REACHED
- Pipe congestion percentage level reached
- DOCA_FLOW_PIPE_OP_RESIZED
- Pipe resize completion
- DOCA_FLOW_PIPE_OP_DESTROYED
- Pipe destroy completion
- enum doca_flow_pipe_status
-
Values
- DOCA_FLOW_PIPE_STATUS_SUCCESS = 1
- The operation was completed successfully.
- DOCA_FLOW_PIPE_STATUS_ERROR
- The operation failed.
- enum doca_flow_pipe_type
-
Values
- DOCA_FLOW_PIPE_BASIC
- Flow pipe
- DOCA_FLOW_PIPE_CONTROL
- Control pipe
- DOCA_FLOW_PIPE_LPM
- longest prefix match (LPM) pipe
- DOCA_FLOW_PIPE_CT
- Connection Tracking pipe
- DOCA_FLOW_PIPE_ACL
- ACL pipe
- DOCA_FLOW_PIPE_ORDERED_LIST
- Ordered list pipe
- DOCA_FLOW_PIPE_HASH
- Hash pipe
- enum doca_flow_port_type
-
Values
- DOCA_FLOW_PORT_DPDK_BY_ID
- dpdk port by mapping id
- enum doca_flow_push_action_type
-
Values
- DOCA_FLOW_PUSH_ACTION_VLAN
- enum doca_flow_resource_type
-
Values
- DOCA_FLOW_RESOURCE_TYPE_NONE
- DOCA_FLOW_RESOURCE_TYPE_SHARED
- DOCA_FLOW_RESOURCE_TYPE_NON_SHARED
- enum doca_flow_rss_hash_function
-
Values
- DOCA_FLOW_RSS_HASH_FUNCTION_TOEPLITZ
- Toeplitz
- DOCA_FLOW_RSS_HASH_FUNCTION_SYMMETRIC_TOEPLITZ
- Toeplitz with sorted source and destination
- enum doca_flow_shared_resource_type
-
Values
- DOCA_FLOW_SHARED_RESOURCE_METER
- Shared meter type
- DOCA_FLOW_SHARED_RESOURCE_COUNTER
- Shared counter type
- DOCA_FLOW_SHARED_RESOURCE_RSS
- Shared rss type
- DOCA_FLOW_SHARED_RESOURCE_MIRROR
- Shared mirror type
- DOCA_FLOW_SHARED_RESOURCE_PSP
- Shared psp action type
- DOCA_FLOW_SHARED_RESOURCE_ENCAP
- Shared encap type
- DOCA_FLOW_SHARED_RESOURCE_DECAP
- Shared decap type
- DOCA_FLOW_SHARED_RESOURCE_IPSEC_SA
- Shared ipsec SA type
- enum doca_flow_target_type
-
Values
- DOCA_FLOW_TARGET_KERNEL
- enum doca_rss_type
-
Values
- DOCA_FLOW_RSS_IPV4 = (1<<0)
- rss by ipv4 header
- DOCA_FLOW_RSS_IPV6 = (1<<1)
- rss by ipv6 header
- DOCA_FLOW_RSS_UDP = (1<<2)
- rss by udp header
- DOCA_FLOW_RSS_TCP = (1<<3)
- rss by tcp header
- DOCA_FLOW_RSS_ESP = (1<<4)
- rss by esp header
Functions
- DOCA_EXPERIMENTAL int doca_flow_aging_handle ( doca_flow_port* port, uint16_t queue, uint64_t quota, uint64_t max_entries )
-
Handle aging of entries.
Parameters
- port
- Port to handle aging
- queue
- Queue identifier.
- quota
- Max time quota in micro seconds handle aging, 0: no limit.
- max_entries
- Max entries for this function to handle aging, 0: no limit.
Returns
> 0 the number of aged entries. 0 no aged entries in current call. -1 full cycle done.
Description
Process aged entries, the user will get a notification in the callback.
Handling of aged entries can take too much time, so we split each cycle to small chunks that are limited by some time quota.
As long as the function doesn't return -1, more entries are pending processing for this cycle.
- doca_error_t doca_flow_cfg_create ( doca_flow_cfg** cfg )
-
Create DOCA Flow configuration struct.
Parameters
- cfg
- DOCA Flow global configuration.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
Create and allocate DOCA Flow configuration struct
- doca_error_t doca_flow_cfg_destroy ( doca_flow_cfg* cfg )
-
Destroy DOCA Flow configuration struct.
Parameters
- cfg
- DOCA Flow global configuration.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Free and destroy the DOCA Flow configuration struct
- doca_error_t doca_flow_cfg_set_cb_entry_process ( doca_flow_cfg* cfg, doca_flow_entry_process_cb cb )
-
Set callback for entry create/destroy.
Parameters
- cfg
- DOCA Flow global configuration.
- cb
- Callback for entry create/destroy
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_cfg_set_cb_pipe_process ( doca_flow_cfg* cfg, doca_flow_pipe_process_cb cb )
-
Set callback for pipe process completion.
Parameters
- cfg
- DOCA Flow global configuration.
- cb
- Callback for pipe process completion
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_cfg_set_cb_shared_resource_unbind ( doca_flow_cfg* cfg, doca_flow_shared_resource_unbind_cb cb )
-
Set callback for unbinding of a shared resource.
Parameters
- cfg
- DOCA Flow global configuration.
- cb
- Callback for unbinding of a shared resource
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_cfg_set_default_rss ( doca_flow_cfg* cfg, const doca_flow_resource_rss_cfg* rss )
-
Set RSS global configuration.
Parameters
- cfg
- DOCA Flow global configuration.
- rss
- RSS global configuration for all port
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
Set the RSS global configuration for all port
- doca_error_t doca_flow_cfg_set_mode_args ( doca_flow_cfg* cfg, const char* mode_args )
-
Set DOCA mode args.
Parameters
- cfg
- DOCA Flow global configuration.
- mode_args
- DOCA Flow architecture mode
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set the DOCA Flow architecture mode switch, vnf
- doca_error_t doca_flow_cfg_set_nr_acl_collisions ( doca_flow_cfg* cfg, uint8_t nr_acl_collisions )
-
Set number of pre-configured collisions.
Parameters
- cfg
- DOCA Flow global configuration.
- nr_acl_collisions
- Number pre-configured collisions
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Get the number of pre-configured collisions for the acl module
- doca_error_t doca_flow_cfg_set_nr_counters ( doca_flow_cfg* cfg, uint32_t nr_counters )
-
Set number of counters to configure.
Parameters
- cfg
- DOCA Flow global configuration.
- nr_counters
- Number of counters to configure
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_cfg_set_nr_meters ( doca_flow_cfg* cfg, uint32_t nr_meters )
-
Set number of traffic meters to configure.
Parameters
- cfg
- DOCA Flow global configuration.
- nr_meters
- Number of traffic meters to configure
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_cfg_set_nr_shared_resource ( doca_flow_cfg* cfg, uint32_t nr_shared_resource, doca_flow_shared_resource_type type )
-
Set number of shared resource.
Parameters
- cfg
- DOCA Flow global configuration.
- nr_shared_resource
- Number of shared resource
- type
- Type of shared resource
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set the number of shared resource per type
- doca_error_t doca_flow_cfg_set_pipe_queues ( doca_flow_cfg* cfg, uint16_t pipe_queues )
-
Set pipe queues.
Parameters
- cfg
- DOCA Flow global configuration
- pipe_queues
- Pipe queues
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set the pipe's number of queues for each offload thread
- doca_error_t doca_flow_cfg_set_queue_depth ( doca_flow_cfg* cfg, uint32_t queue_depth )
-
Set number of pre-configured queue_size.
Parameters
- cfg
- DOCA Flow global configuration.
- queue_depth
- Number of pre-configured queue_size
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_cfg_set_rss_key ( doca_flow_cfg* cfg, const uint8_t* rss_key, uint32_t rss_key_len )
-
Set RSS hash key.
Parameters
- cfg
- DOCA Flow global configuration.
- rss_key
- RSS hash key
- rss_key_len
- Length of the RSS hash key in bytes
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
- DOCA_EXPERIMENTAL void doca_flow_destroy ( void )
-
Destroy the doca flow.
Description
Release all the resources used by doca flow.
Must be invoked at the end of the application, before it exits.
- doca_error_t doca_flow_entries_process ( doca_flow_port* port, uint16_t pipe_queue, uint64_t timeout, uint32_t max_processed_entries )
-
Process entries in queue.
Parameters
- port
- Port
- pipe_queue
- Queue identifier.
- timeout
- Max time in micro seconds for this function to process entries. Process once if timeout is 0
- max_processed_entries
- Flow entries number to process If it is 0, it will proceed until timeout.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_DRIVER - driver error.
Description
The application must invoke this function in order to complete the flow rule offloading and to receive the flow rule operation status.
- doca_error_t doca_flow_get_target ( doca_flow_target_type type, doca_flow_target** target )
-
Get doca flow forward target.
Parameters
- type
- Target type.
- target
- Target handler on success
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - unsupported type.
Description
- doca_error_t doca_flow_init ( doca_flow_cfg* cfg )
-
Initialize the doca flow.
Parameters
- cfg
- Port configuration, see doca_flow_cfg for details.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported configuration.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This is the global initialization function for doca flow. It initializes all resources used by doca flow.
Must be invoked first before any other function in this API. this is a one time call, used for doca flow initialization and global configurations.
- doca_error_t doca_flow_mpls_label_decode ( const doca_flow_header_mpls* mpls, uint32_t* label, uint8_t* traffic_class, uint8_t* ttl, bool* bottom_of_stack )
-
Decode an MPLS label header.
Parameters
- mpls
- Pointer to MPLS structure to decode.
- label
- Pointer to fill MPLS label value.
- traffic_class
- Pointer to fill MPLS traffic class value.
- ttl
- Pointer to fill MPLS TTL value.
- bottom_of_stack
- Pointer to fill whether this MPLS is bottom of stack.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Note:: All output variables are in cpu-endian.
- doca_error_t doca_flow_mpls_label_encode ( uint32_t label, uint8_t traffic_class, uint8_t ttl, bool bottom_of_stack, doca_flow_header_mpls* mpls )
-
Prepare an MPLS label header in big-endian.
Parameters
- label
- The label value - 20 bits.
- traffic_class
- Traffic class - 3 bits.
- ttl
- Time to live - 8 bits
- bottom_of_stack
- Whether this MPLS is bottom of stack.
- mpls
- Pointer to MPLS structure to fill.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Note:: All input variables are in cpu-endian.
- doca_error_t doca_flow_parser_geneve_opt_create ( const doca_flow_port* port, const doca_flow_parser_geneve_opt_cfg tlv_list[], uint8_t nb_options, doca_flow_parser** parser )
-
Creates GENEVE TLV parser for the selected port.
Parameters
- port
- Pointer to doca flow port.
- tlv_list
- A list of GENEVE TLV options to create parser for them.
- nb_options
- The number of options in TLV list.
- parser
- Parser handler on success.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported configuration.
- DOCA_ERROR_ALREADY_EXIST - physical device already has parser, by either same or another port.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This function must be called before creation of any pipe using GENEVE option.
This API is port oriented, but the configuration is done once for all ports under the same physical device. Each port should call this API before using GENEVE options, but it must use the same options in the same order inside the list.
Each physical device has 7 DWs for GENEVE TLV options. Each nonzero element in 'data_mask' array consumes one DW, and choosing matchable mode for class consumes additional one. Calling this API for second port under same physical device doesn't consume more DW, it uses same configuration.
- doca_error_t doca_flow_parser_geneve_opt_destroy ( doca_flow_parser* parser )
-
Destroy GENEVE TLV parser.
Parameters
- parser
- Pointer to parser to be destroyed.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_IN_USE - one of options is in used by a pipe.
- DOCA_ERROR_DRIVER - there is no valid GENEVE TLV parser in this handle.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This function must be called after last use of GENEVE option and before port closing.
- doca_error_t doca_flow_pipe_acl_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_match* match, const doca_flow_match* match_mask, const uint32_t priority, const doca_flow_fwd* fwd, const doca_flow_flags_type flag, void* usr_ctx, doca_flow_pipe_entry** entry )
-
Add one new entry to a acl pipe.
Parameters
- pipe_queue
- Queue identifier.
- pipe
- Pointer to pipe.
- match
- Pointer to match, indicate specific packet match information.
- match_mask
- Pointer to match mask information.
- priority
- Priority value
- fwd
- Pointer to fwd actions.
- flag
- Flow entry will be pushed to hw immediately or not. enum doca_flow_flags_type.
- usr_ctx
- Pointer to user context.
- entry
- The entry inserted.
Returns
Pipe entry handler on success, NULL otherwise and error is set.
Description
This API will populate the acl entries
- doca_error_t doca_flow_pipe_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_match* match, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, uint32_t flags, void* usr_ctx, doca_flow_pipe_entry** entry )
-
Add one new entry to a pipe.
Parameters
- pipe_queue
- Queue identifier.
- pipe
- Pointer to pipe.
- match
- Pointer to match, indicate specific packet match information.
- actions
- Pointer to modify actions, indicate specific modify information.
- monitor
- Pointer to monitor actions.
- fwd
- Pointer to fwd actions.
- flags
- Flow entry will be pushed to hw immediately or not. enum doca_flow_flags_type.
- usr_ctx
- Pointer to user context.
- entry
- Pipe entry handler on success.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
Description
When a packet matches a single pipe, will start HW offload. The pipe only defines which fields to match. When offloading, we need detailed information from packets, or we need to set some specific actions that the pipe did not define. The parameters include:
match: The packet detail fields according to the pipe definition. actions: The real actions according to the pipe definition. monitor: Defines the monitor actions if the pipe did not define it. fwd: Define the forward action if the pipe did not define it.
This API will do the actual HW offload, with the information from the fields of the input packets.
- doca_error_t doca_flow_pipe_calc_hash ( doca_flow_pipe* pipe, const doca_flow_match* match, uint32_t* hash )
-
calc the hash for a given match on a given pipe.
Parameters
- pipe
- Pointer to pipe.
- match
- Pointer to match, indicate specific packet match information.
- hash
- The calculated hash on success.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
Description
Calculates the hash value for a given pipe assuming the that the match parameter holds the values that the HW will see.
- doca_error_t doca_flow_pipe_cfg_create ( doca_flow_pipe_cfg** cfg, doca_flow_port* port )
-
Create DOCA Flow pipe configuration struct.
Parameters
- cfg
- DOCA Flow pipe configuration.
- port
- DOCA Flow port.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
Create and allocate DOCA Flow pipe configuration struct and set port
- doca_error_t doca_flow_pipe_cfg_destroy ( doca_flow_pipe_cfg* cfg )
-
Destroy DOCA Flow pipe configuration struct.
Parameters
- cfg
- DOCA Flow pipe configuration.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Free and destroy the DOCA Flow pipe configuration struct
- doca_error_t doca_flow_pipe_cfg_set_actions ( doca_flow_pipe_cfg* cfg, doca_flow_actions** actions, doca_flow_actions** actions_masks, doca_flow_action_descs** action_descs, size_t nr_actions )
-
Set pipe's actions, actions mask and actions descriptor.
Parameters
- cfg
- DOCA Flow pipe configuration.
- actions
- DOCA Flow actions array
- actions_masks
- DOCA Flow actions mask array
- action_descs
- DOCA Flow actions descriptor array
- nr_actions
- Number of actions
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
Set pipe's actions, actions mask and actions descriptor. nr_actions must not be zero, and actions must not be NULL. actions_masks and action_descs can be NULL, meaning not set.
- doca_error_t doca_flow_pipe_cfg_set_congestion_level_threshold ( doca_flow_pipe_cfg* cfg, uint8_t congestion_level_threshold )
-
Set pipe's congestion level threshold.
Parameters
- cfg
- DOCA Flow pipe configuration.
- congestion_level_threshold
- congestion level threshold
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set congestion threshold for pipe in percentage (0,100] - pipe notification.
- doca_error_t doca_flow_pipe_cfg_set_dir_info ( doca_flow_pipe_cfg* cfg, doca_flow_direction_info dir_info )
-
Set pipe's Direction info.
Parameters
- cfg
- DOCA Flow pipe configuration.
- dir_info
- DOCA Flow direction info.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set pipe's Direction info. This is an optional direction hint for driver optimization, supported in switch mode only.
- doca_error_t doca_flow_pipe_cfg_set_domain ( doca_flow_pipe_cfg* cfg, doca_flow_pipe_domain domain )
-
Set pipe's domain.
Parameters
- cfg
- DOCA Flow pipe configuration.
- domain
- DOCA Flow pipe steering domain
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_pipe_cfg_set_enable_strict_matching ( doca_flow_pipe_cfg* cfg, bool enable_strict_matching )
-
Set if the pipe supports strict matching or not.
Parameters
- cfg
- DOCA Flow pipe configuration.
- enable_strict_matching
- If the pipe supports strict matching.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set if the pipe supports strict matching or not. If true, relaxed matching is turned off.
- doca_error_t doca_flow_pipe_cfg_set_is_resizable ( doca_flow_pipe_cfg* cfg, bool is_resizable )
-
Set if the pipe supports the resize operation.
Parameters
- cfg
- DOCA Flow pipe configuration.
- is_resizable
- If the pipe is resizable.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_pipe_cfg_set_is_root ( doca_flow_pipe_cfg* cfg, bool is_root )
-
Set if pipe is root or not.
Parameters
- cfg
- DOCA Flow pipe configuration.
- is_root
- If the pipe is root.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set if pipe is root or not. If true it means the pipe is a root pipe executed on packet arrival.
- doca_error_t doca_flow_pipe_cfg_set_match ( doca_flow_pipe_cfg* cfg, const doca_flow_match* match, const doca_flow_match* match_mask )
-
Set pipe's match and match mask.
Parameters
- cfg
- DOCA Flow pipe configuration.
- match
- DOCA Flow match
- match_mask
- DOCA Flow match mask
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
- doca_error_t doca_flow_pipe_cfg_set_miss_counter ( doca_flow_pipe_cfg* cfg, bool miss_counter )
-
Set to enable pipe's miss counter.
Parameters
- cfg
- DOCA Flow pipe configuration.
- miss_counter
- If to enable miss counter
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set to enable pipe's missed flows counter, can be queried with doca_flow_query_pipe_miss().
- doca_error_t doca_flow_pipe_cfg_set_monitor ( doca_flow_pipe_cfg* cfg, const doca_flow_monitor* monitor )
-
Set pipe's monitor.
Parameters
- cfg
- DOCA Flow pipe configuration.
- monitor
- DOCA Flow monitor
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
- doca_error_t doca_flow_pipe_cfg_set_name ( doca_flow_pipe_cfg* cfg, const char* name )
-
Set pipe's name.
Parameters
- cfg
- DOCA Flow pipe configuration.
- name
- Pipe name
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
- doca_error_t doca_flow_pipe_cfg_set_nr_entries ( doca_flow_pipe_cfg* cfg, uint32_t nr_entries )
-
Set pipe's maximum number of flow rules.
Parameters
- cfg
- DOCA Flow pipe configuration.
- nr_entries
- Maximum number of flow rules
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set pipe's maximum number of flow rules, default is 8k if not set.
- doca_error_t doca_flow_pipe_cfg_set_ordered_lists ( doca_flow_pipe_cfg* cfg, doca_flow_ordered_list** ordered_lists, size_t nr_ordered_lists )
-
Set pipe's ordered lists.
Parameters
- cfg
- DOCA Flow pipe configuration.
- ordered_lists
- DOCA Flow ordered lists array
- nr_ordered_lists
- Number of ordered lists
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
- doca_error_t doca_flow_pipe_cfg_set_type ( doca_flow_pipe_cfg* cfg, doca_flow_pipe_type type )
-
Set pipe's type.
Parameters
- cfg
- DOCA Flow pipe configuration.
- type
- DOCA Flow pipe type
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_pipe_cfg_set_user_ctx ( doca_flow_pipe_cfg* cfg, void* user_ctx )
-
Set pipe's user context.
Parameters
- cfg
- DOCA Flow pipe configuration.
- user_ctx
- User context
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Set pipe's user context - pipe notification.
- doca_error_t doca_flow_pipe_control_add_entry ( uint16_t pipe_queue, uint32_t priority, doca_flow_pipe* pipe, const doca_flow_match* match, const doca_flow_match* match_mask, const doca_flow_match_condition* condition, const doca_flow_actions* actions, const doca_flow_actions* actions_mask, const doca_flow_action_descs* action_descs, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, void* usr_ctx, doca_flow_pipe_entry** entry )
-
Add one new entry to a control pipe.
Parameters
- pipe_queue
- Queue identifier.
- priority
- Priority value.
- pipe
- Pointer to pipe.
- match
- Pointer to match, indicate specific packet match information.
- match_mask
- Pointer to match mask information.
- condition
- Pointer to match condition information.
- actions
- Pointer to modify actions, indicate specific modify information.
- actions_mask
- Pointer to modify actions' mask, indicate specific modify information.
- action_descs
- action descriptions
- monitor
- Pointer to monitor actions.
- fwd
- Pointer to fwd actions.
- usr_ctx
- Pointer to user context.
- entry
- Pipe entry handler on success.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
Description
Refer to doca_flow_pipe_add_entry.
- doca_error_t doca_flow_pipe_create ( const doca_flow_pipe_cfg* cfg, const doca_flow_fwd* fwd, const doca_flow_fwd* fwd_miss, doca_flow_pipe** pipe )
-
Create one new pipe.
Parameters
- cfg
- Pipe configuration.
- fwd
- Fwd configuration for the pipe.
- fwd_miss
- Fwd_miss configuration for the pipe. NULL for no fwd_miss. When creating a pipe if there is a miss and fwd_miss configured, packet steering should jump to it.
- pipe
- Pipe handler on success.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - unsupported pipe type.
- DOCA_ERROR_DRIVER - driver error.
- DOCA_ERROR_TOO_BIG - pipe specs exceed capability
Description
Create new pipeline to match and offload specific packets, the pipe configuration includes the following components:
match: Match one packet by inner or outer fields. match_mask: The mask for the matched items. actions: Includes the modify specific packets fields, Encap and Decap actions. monitor: Includes Count, Age, and Meter actions. fwd: The destination of the matched action, include RSS, Hairpin, Port, and Drop actions.
This API will create the pipe, but would not start the HW offload.
- DOCA_EXPERIMENTAL void doca_flow_pipe_destroy ( doca_flow_pipe* pipe )
-
Destroy one pipe.
Parameters
- pipe
- Pointer to pipe.
Description
Destroy the pipe, and the pipe entries that match this pipe.
- DOCA_EXPERIMENTAL void doca_flow_pipe_dump ( doca_flow_pipe* pipe, FILE* f )
-
Dump pipe information.
Parameters
- pipe
- Pointer to doca flow pipe.
- f
- The output file of the pipe information.
Description
- doca_flow_entry_status doca_flow_pipe_entry_get_status ( doca_flow_pipe_entry* entry )
-
Get entry's status.
Parameters
- entry
- pipe entry
Returns
entry's status
Description
- doca_error_t doca_flow_pipe_hash_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, uint32_t entry_index, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, const doca_flow_flags_type flags, void* usr_ctx, doca_flow_pipe_entry** entry )
-
Add one new entry to an hash pipe.
Parameters
- pipe_queue
- Queue identifier.
- pipe
- Pointer to pipe.
- entry_index
- Static index in pipe for this entry.
- actions
- Pointer to modify actions, indicate specific modify information.
- monitor
- Pointer to monitor actions.
- fwd
- Pointer to forward actions.
- flags
- Flow entry will be pushed to HW immediately or not. enum doca_flow_flags_type.
- usr_ctx
- Pointer to user context.
- entry
- Pipe entry handler on success.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
Description
Refer to doca_flow_pipe_add_entry.
- doca_error_t doca_flow_pipe_lpm_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_match* match, const doca_flow_match* match_mask, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, const doca_flow_flags_type flag, void* usr_ctx, doca_flow_pipe_entry** entry )
-
Add one new entry to a lpm pipe.
Parameters
- pipe_queue
- Queue identifier.
- pipe
- Pointer to pipe.
- match
- Pointer to match, indicate specific packet match information.
- match_mask
- Pointer to match mask information.
- actions
- Pointer to modify actions, indicate specific modify information.
- monitor
- Pointer to monitor actions.
- fwd
- Pointer to fwd actions.
- flag
- Flow entry will be pushed to hw immediately or not. enum doca_flow_flags_type.
- usr_ctx
- Pointer to user context.
- entry
- Pipe entry handler on success.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
Description
This API will populate the lpm entries
- doca_error_t doca_flow_pipe_lpm_update_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, const doca_flow_flags_type flags, doca_flow_pipe_entry* entry )
-
Update the lpm pipe entry with new actions.
Parameters
- pipe_queue
- Queue identifier.
- pipe
- Pointer to pipe.
- actions
- Pointer to modify actions, indicate specific modify information.
- monitor
- Pointer to monitor actions.
- fwd
- Pointer to fwd actions.
- flags
- Flow entry will be pushed to hw immediately or not. enum doca_flow_flags_type.
- entry
- The pipe entry to be updated.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
Description
- doca_error_t doca_flow_pipe_ordered_list_add_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, uint32_t idx, const doca_flow_ordered_list* ordered_list, const doca_flow_fwd* fwd, doca_flow_flags_type flags, void* user_ctx, doca_flow_pipe_entry** entry )
-
Parameters
- pipe_queue
- Queue identifier.
- pipe
- Pipe handle.
- idx
- Unique entry index. It is the user's responsibility to ensure uniqueness.
- ordered_list
- Ordered list with pointers to struct doca_flow_actions and struct doca_flow_monitor at the same indices as they were at the pipe creation time. If the configuration contained an element of struct doca_flow_action_descs, the corresponding array element is ignored and can be NULL.
- fwd
- Entry forward configuration.
- flags
- Entry insertion flags.
- user_ctx
- Opaque context for the completion callback.
- entry
- The entry inserted.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_DRIVER - driver error.
Description
Add an entry to the ordered list pipe.
- doca_error_t doca_flow_pipe_resize ( doca_flow_pipe* pipe, uint8_t new_congestion_level, doca_flow_pipe_resize_nr_entries_changed_cb nr_entries_changed_cb, doca_flow_pipe_resize_entry_relocate_cb entry_relocation_cb )
-
Resize pipe.
Parameters
- pipe
- Pointer to pipe.
- new_congestion_level
- Pushback the pipe current congestion level to a new value.
- nr_entries_changed_cb
- Number of entries after resize.
- entry_relocation_cb
- Entry relocate behavior.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
Description
- doca_error_t doca_flow_pipe_rm_entry ( uint16_t pipe_queue, uint32_t flags, doca_flow_pipe_entry* entry )
-
Free one pipe entry.
Parameters
- pipe_queue
- Queue identifier.
- flags
- Flow entry will be removed from hw immediately or not. enum doca_flow_flags_type.
- entry
- The pipe entry to be removed.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - unsupported pipe type.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This API will free the pipe entry and cancel HW offload. The Application receives the entry pointer upon creation and if can call this function when there is no more need for this offload. For example, if the entry aged, use this API to free it.
- doca_error_t doca_flow_pipe_update_entry ( uint16_t pipe_queue, doca_flow_pipe* pipe, const doca_flow_actions* actions, const doca_flow_monitor* monitor, const doca_flow_fwd* fwd, const doca_flow_flags_type flags, doca_flow_pipe_entry* entry )
-
Update the pipe entry with new actions.
Parameters
- pipe_queue
- Queue identifier.
- pipe
- Pointer to pipe.
- actions
- Pointer to modify actions, indicate specific modify information.
- monitor
- Pointer to monitor actions.
- fwd
- Pointer to fwd actions.
- flags
- Flow entry will be pushed to hw immediately or not. enum doca_flow_flags_type.
- entry
- The pipe entry to be updated.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
Description
- doca_error_t doca_flow_pipe_update_miss ( doca_flow_pipe* pipe, const doca_flow_fwd* fwd_miss )
-
Update the forward miss action.
Parameters
- pipe
- The pipe to update its miss action.
- fwd_miss
- A new fwd_miss configuration for the pipe.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NOT_SUPPORTED - unsupported forward request.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_port_calc_entropy ( doca_flow_port* port, doca_flow_entropy_format* header, uint16_t* entropy )
-
Calculate the entropy.
Parameters
- port
- The given port for the entropy calculation.
- header
- Pointer to the header that holds the fields that are the base for the entropy calculation.
- entropy
- Used to return the calculated entropy. It will be written in network order.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Calculate the entropy as it would have been calculated by the HW.
- doca_error_t doca_flow_port_cfg_create ( doca_flow_port_cfg** cfg )
-
Create DOCA Flow port configuration struct.
Parameters
- cfg
- DOCA Flow port configuration.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
Create and allocate DOCA Flow port configuration struct
- doca_error_t doca_flow_port_cfg_destroy ( doca_flow_port_cfg* cfg )
-
Destroy DOCA Flow port configuration struct.
Parameters
- cfg
- DOCA Flow port configuration.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
Free and destroy the DOCA Flow port configuration struct
- doca_error_t doca_flow_port_cfg_set_dev ( doca_flow_port_cfg* cfg, void* dev )
-
Set port's device.
Parameters
- cfg
- DOCA Flow port configuration.
- dev
- Device
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_port_cfg_set_devargs ( doca_flow_port_cfg* cfg, const char* devargs )
-
Set devargs.
Parameters
- cfg
- DOCA Flow port configuration
- devargs
- Specific configuration per port type
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
Set specific configuration per port type
- doca_error_t doca_flow_port_cfg_set_ipsec_sn_offload_disable ( doca_flow_port_cfg* cfg )
-
Disable SN offload for ipsec - Anti-replay and sn increment will not be activated.
Parameters
- cfg
- DOCA Flow port configuration.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_port_cfg_set_priv_data_size ( doca_flow_port_cfg* cfg, uint16_t priv_data_size )
-
Set user private data size.
Parameters
- cfg
- DOCA Flow port configuration.
- priv_data_size
- User private data size
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- doca_error_t doca_flow_port_cfg_set_rss_cfg ( doca_flow_port_cfg* cfg, const doca_flow_resource_rss_cfg* rss_cfg )
-
Set RSS optional configuration.
Parameters
- cfg
- DOCA Flow port configuration.
- rss_cfg
- RSS configuration
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
Description
- doca_error_t doca_flow_port_pair ( doca_flow_port* port, doca_flow_port* pair_port )
-
pair two doca flow ports.
Parameters
- port
- Pointer to doca flow port.
- pair_port
- Pointer to the pair port.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - not supported in the current run mode.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This API should be used to pair two doca ports. This pair should be the same as the actual physical layer paired information. Those two pair ports have no order, a port cannot be paired with itself.
In this API, default behavior will be handled according to each modes. In VNF mode, pair information will be translated to queue action to redirect packets to it's pair port. In REMOTE_VNF mode, default rules will be created to redirect packets between 2 pair ports.
- DOCA_EXPERIMENTAL void doca_flow_port_pipes_dump ( doca_flow_port* port, FILE* f )
-
Dump pipes of one port.
Parameters
- port
- Pointer to doca flow port.
- f
- The output file of the pipe information.
Description
Dump all pipes information belong to this port.
- DOCA_EXPERIMENTAL void doca_flow_port_pipes_flush ( doca_flow_port* port )
-
Flush pipes of one port.
Parameters
- port
- Pointer to doca flow port.
Description
Destroy all pipes and all pipe entries belonging to the port.
- DOCA_EXPERIMENTAL uint8_t* doca_flow_port_priv_data ( doca_flow_port* port )
-
Get pointer of user private data.
Parameters
- port
- Port struct.
Returns
Private data head pointer.
Description
User can manage specific data structure in port structure. The size of the data structure is given on port configuration. See doca_flow_cfg for more details.
- doca_error_t doca_flow_port_start ( const doca_flow_port_cfg* cfg, doca_flow_port** port )
-
Start a doca port.
Parameters
- cfg
- Port configuration, see doca_flow_cfg for details.
- port
- Port handler on success.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported port type.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Start a port with the given configuration. Will create one port in the doca flow layer, allocate all resources used by this port, and create the default offload logic for traffic.
- doca_error_t doca_flow_port_stop ( doca_flow_port* port )
-
Stop a doca port.
Parameters
- port
- Port struct.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Stop the port, disable the traffic, destroy the doca port, free all resources of the port.
- DOCA_EXPERIMENTAL doca_flow_port* doca_flow_port_switch_get ( const doca_flow_port* port )
-
Get doca flow switch port.
Parameters
- port
- The port for which to get the switch port. If NULL, get the first switch port created. The application could use this function to get the doca switch port, then create pipes and pipe entries on this port.
Returns
The parent switch port number or NULL if none found
Description
- doca_error_t doca_flow_query_entry ( doca_flow_pipe_entry* entry, doca_flow_query* query_stats )
-
Extract information about specific entry.
Parameters
- entry
- The pipe entry to query.
- query_stats
- Data retrieved by the query.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Query the packet statistics about specific pipe entry
- doca_error_t doca_flow_query_pipe_miss ( doca_flow_pipe* pipe, doca_flow_query* query_stats )
-
Extract information about pipe miss entry.
Parameters
- pipe
- The pipe to query.
- query_stats
- Data retrieved by the query.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Query the packet statistics about specific pipe miss entry
- doca_error_t doca_flow_shared_resource_cfg ( doca_flow_shared_resource_type type, uint32_t id, doca_flow_shared_resource_cfg* cfg )
-
Configure a single shared resource.
Parameters
- type
- Shared resource type.
- id
- Shared resource id.
- cfg
- Pointer to a shared resource configuration.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported shared resource type.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This API can be used by bounded and unbounded resources.
- doca_error_t doca_flow_shared_resources_bind ( doca_flow_shared_resource_type type, uint32_t* res_array, uint32_t res_array_len, void* bindable_obj )
-
Binds a bulk of shared resources to a bindable object.
Parameters
- type
- Shared resource type.
- res_array
- Array of shared resource IDs.
- res_array_len
- Shared resource IDs array length.
- bindable_obj
- Pointer to an allowed bindable object, use NULL to bind globally.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported shared resource type.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Binds a bulk of shared resources from the same type to a bindable object. Currently the bindable objects are ports and pipes.
- doca_error_t doca_flow_shared_resources_query ( doca_flow_shared_resource_type type, uint32_t* res_array, doca_flow_shared_resource_result* query_results_array, uint32_t array_len )
-
Extract information about shared counter.
Parameters
- type
- Shared object type.
- res_array
- Array of shared objects IDs to query.
- query_results_array
- Data array retrieved by the query.
- array_len
- Number of objects and their query results in their arrays (same number).
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported shared resource type.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Query an array of shared objects of a specific type.
Doca Flow Crypto
Doca Flow CT
Doca Flow Net
DOCA Flow Tune Server
1.15.1. Doca Flow Crypto
[ DOCA Flow ]
DOCA HW offload flow cryptonet structure define. For more details please refer to the user guide on DOCA devzone.
Classes
-
struct doca_flow_crypto_key_cfg
- doca flow crypto key configuration
Enumerations
- enum doca_flow_crypto_action_type
- doca flow crypto operation action type
- enum doca_flow_crypto_encap_action_type
- doca flow crypto operation reformat type
- enum doca_flow_crypto_encap_net_type
- doca flow crypto operation encapsulation header type
- enum doca_flow_crypto_icv_len
- doca flow crypto ICV length
- enum doca_flow_crypto_key_type
- doca flow crypto key type
- enum doca_flow_crypto_replay_win_size
- doca flow crypto replay window size
- enum doca_flow_crypto_resource_type
- doca flow crypto operation resource type
- enum doca_flow_crypto_sn_offload_type
- doca flow crypto SN oflload type
Functions
- DOCA_EXPERIMENTAL int doca_flow_crypto_ipsec_resource_handle ( doca_flow_port* port, uint64_t quota, uint32_t max_processed_resources )
- Handle ipsec resources.
- doca_error_t doca_flow_crypto_psp_master_key_rotate ( doca_flow_port* port )
- Rotate PSP master key.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_alloc ( doca_flow_port* port, doca_flow_crypto_key_type key_type, uint32_t nr_spi_keys, doca_flow_crypto_psp_spi_key_bulk** spi_key_bulk )
- Allocate an array of spi and key pairs.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_clear ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
- Clear the bulk data.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_free ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
- Free the memory for spi key bulk.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_generate ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
- Fill a bulk with new pairs of SPI and key.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_get ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk, uint32_t spi_key_idx, uint32_t* spi, uint32_t* key )
- Get SPI and key for specific index in the bulk.
- doca_error_t doca_flow_crypto_psp_spi_key_wipe ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk, uint32_t spi_key_idx )
- Wipe the memory of a key for specific index in the bulk.
Enumerations
- enum doca_flow_crypto_action_type
-
Values
- DOCA_FLOW_CRYPTO_ACTION_NONE = 0
- No crypto action performed
- DOCA_FLOW_CRYPTO_ACTION_ENCRYPT
- Perform encryption
- DOCA_FLOW_CRYPTO_ACTION_DECRYPT
- Perform decryption/authentication
- enum doca_flow_crypto_encap_action_type
-
Values
- DOCA_FLOW_CRYPTO_REFORMAT_NONE = 0
- No reformat action performed
- DOCA_FLOW_CRYPTO_REFORMAT_ENCAP
- Perform encapsulation action
- DOCA_FLOW_CRYPTO_REFORMAT_DECAP
- Perform decapsulation action
- enum doca_flow_crypto_encap_net_type
-
Values
- DOCA_FLOW_CRYPTO_HEADER_NONE = 0
- No network header involved
- DOCA_FLOW_CRYPTO_HEADER_ESP_TUNNEL
- ESP tunnel header type
- DOCA_FLOW_CRYPTO_HEADER_ESP_OVER_IPV4
- IPv4 network header type
- DOCA_FLOW_CRYPTO_HEADER_ESP_OVER_IPV6
- IPv6 network header type
- DOCA_FLOW_CRYPTO_HEADER_UDP_ESP_OVER_IPV4
- IPv4 + UDP network header type
- DOCA_FLOW_CRYPTO_HEADER_UDP_ESP_OVER_IPV6
- IPv6 + UDP network header type
- DOCA_FLOW_CRYPTO_HEADER_ESP_OVER_LAN
- UDP, TCP or ICMP network header type
- DOCA_FLOW_CRYPTO_HEADER_PSP_TUNNEL
- PSP tunnel header type
- DOCA_FLOW_CRYPTO_HEADER_PSP_OVER_IPV4
- PSP transport IPv4 network header type
- DOCA_FLOW_CRYPTO_HEADER_PSP_OVER_IPV6
- PSP transport IPv6 network header type
- enum doca_flow_crypto_icv_len
-
Values
- DOCA_FLOW_CRYPTO_ICV_LENGTH_8
- size of 8 bit
- DOCA_FLOW_CRYPTO_ICV_LENGTH_12
- size of 12 bit
- DOCA_FLOW_CRYPTO_ICV_LENGTH_16
- size of 16 bit
- enum doca_flow_crypto_key_type
-
Values
- DOCA_FLOW_CRYPTO_KEY_128
- Key type 128
- DOCA_FLOW_CRYPTO_KEY_256
- Key type 256
- enum doca_flow_crypto_replay_win_size
-
Values
- DOCA_FLOW_CRYPTO_REPLAY_WIN_SIZE_32
- Replay window size of 32 bit
- DOCA_FLOW_CRYPTO_REPLAY_WIN_SIZE_64
- Replay window size of 64 bit
- DOCA_FLOW_CRYPTO_REPLAY_WIN_SIZE_128
- Replay window size of 128 bit
- DOCA_FLOW_CRYPTO_REPLAY_WIN_SIZE_256
- Replay window size of 256 bit
- enum doca_flow_crypto_resource_type
-
Values
- DOCA_FLOW_CRYPTO_RESOURCE_NONE = 0
- No security resource engaged
- DOCA_FLOW_CRYPTO_RESOURCE_IPSEC_SA
- IPsec resource action
- DOCA_FLOW_CRYPTO_RESOURCE_PSP
- PSP resource action
- enum doca_flow_crypto_sn_offload_type
-
Values
- DOCA_FLOW_CRYPTO_SN_OFFLOAD_INC
- Increment sequence number - encrypt direction
- DOCA_FLOW_CRYPTO_SN_OFFLOAD_AR
- Anti-replay - decrypt direction
Functions
- DOCA_EXPERIMENTAL int doca_flow_crypto_ipsec_resource_handle ( doca_flow_port* port, uint64_t quota, uint32_t max_processed_resources )
-
Handle ipsec resources.
Parameters
- port
- Port to handle resources
- quota
- Max time quota in micro seconds, 0: no limit.
- max_processed_resources
- Max resource for this function to handle, 0: no limit.
Returns
> 0 the number of hadled resources. 0 no resource handled in current call. -1 full cycle done.
Description
Update relevnt data according to HW state. This API must be called in order to keep a valid state of a sequence number.
Handling of resources can take too much time, so we split each cycle to small chunks that are limited by some time quota.
As long as the function doesn't return -1, more resources are pending processing for this cycle.
- doca_error_t doca_flow_crypto_psp_master_key_rotate ( doca_flow_port* port )
-
Rotate PSP master key.
Parameters
- port
- Pointer to doca flow port.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This API is used to rotate PSP master key. New key will be used to generate pairs of SPI and key, and old key is still valid for decryption until another key rotate will be called.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_alloc ( doca_flow_port* port, doca_flow_crypto_key_type key_type, uint32_t nr_spi_keys, doca_flow_crypto_psp_spi_key_bulk** spi_key_bulk )
-
Allocate an array of spi and key pairs.
Parameters
- port
- Pointer to doca flow port.
- key_type
- DOCA_FLOW_CRYPTO_KEY_128 or DOCA_FLOW_CRYPTO_KEY_256.
- nr_spi_keys
- Array length.
- spi_key_bulk
- Spi key bulk handler on success
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This API is used to allocate the memory needed for the array, based on the key type and the number of spi keys.
To fill the array need to call doca_flow_crypto_psp_spi_key_bulk_generate function To free the memory need to call doca_flow_crypto_psp_spi_key_bulk_free function
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_clear ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
-
Clear the bulk data.
Parameters
- spi_key_bulk
- pointer to spi key bulk
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Clear the allocated bulk data. After all the keys in the bulk were disposed, if the user is going to generate new bulk in the future, it is recommended to clear the bulk memory with this API.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_free ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
-
Free the memory for spi key bulk.
Parameters
- spi_key_bulk
- pointer to spi key bulk
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_generate ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
-
Fill a bulk with new pairs of SPI and key.
Parameters
- spi_key_bulk
- pointer to spi key bulk
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - memory allocation failed.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Fill an allocated bulk object with new pairs, based on the key type and number of spi keys. This API can be used more than once on allocated bulk.
To get a pair based on an index need to call doca_flow_crypto_psp_spi_key_bulk_get function
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_get ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk, uint32_t spi_key_idx, uint32_t* spi, uint32_t* key )
-
Get SPI and key for specific index in the bulk.
Parameters
- spi_key_bulk
- pointer to spi key bulk
- spi_key_idx
- Index in the bulk
- spi
- pointer to the spi
- key
- pointer to the key
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_crypto_psp_spi_key_wipe ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk, uint32_t spi_key_idx )
-
Wipe the memory of a key for specific index in the bulk.
Parameters
- spi_key_bulk
- pointer to spi key bulk
- spi_key_idx
- Index in the bulk
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
1.15.2. Doca Flow CT
[ DOCA Flow ]
DOCA HW connection tracking library.
Classes
-
struct doca_flow_ct_actions
-
union doca_flow_ct_aging_conn
- CT aging connection info.
-
struct doca_flow_ct_aging_conn_event
- CT aging user plugin connection event.
-
struct doca_flow_ct_aging_conn_update_info
- Connection update information.
-
struct doca_flow_ct_aging_counter
- Counter statistics.
-
struct doca_flow_ct_aging_counter_state
- CT aging counter state.
-
struct doca_flow_ct_aging_ctx
- CT aging user plugin context.
-
struct doca_flow_ct_aging_ops
- CT aging user plugin callbacks.
-
struct doca_flow_ct_cfg
-
struct doca_flow_ct_direction_cfg
-
struct doca_flow_ct_match
- doca flow CT match pattern
-
struct doca_flow_ct_match4
- doca flow CT IPv4 match pattern
-
struct doca_flow_ct_match6
- doca flow CT IPv6 match pattern
-
union doca_flow_ct_meta
- CT packet meta data.
-
struct doca_flow_ct_pkt
-
struct doca_flow_ct_worker_callbacks
Defines
- #define DOCA_FLOW_CT_ACTION_HANDLE_INVALID (UINT32_MAX)
- #define DOCA_FLOW_CT_META_TYPE_MASK 0x3
Typedefs
- typedef void ( *doca_flow_ct_flow_log_cb )( doca_flow_pipe* pipe, void* entry, uint16_t queue, void* usr_ctx )
- typedef void ( *doca_flow_ct_sync_acquire_cb )( int32_t queue )
- typedef void ( *doca_flow_ct_sync_release_cb )( int32_t queue )
Enumerations
- enum doca_flow_ct_entry_flags
- doca flow CT entry operation flags
- enum doca_flow_ct_flags
- CT flags.
- enum doca_flow_ct_hash_type
- CT hash table type.
- enum doca_flow_ct_meta_type
- enum doca_flow_ct_rule_opr
- enum doca_flow_ct_session_type
- CT l3 session types.
Functions
- doca_error_t doca_flow_ct_actions_add_shared ( uint16_t ctrl_queue, doca_flow_pipe* pipe, const doca_flow_ct_actions actions[], uint32_t nb_actions, uint32_t actions_handles[] )
- Add shared modify-action.
- doca_error_t doca_flow_ct_actions_rm_shared ( uint16_t ctrl_queue, doca_flow_pipe* pipe, uint32_t actions_handles[], uint32_t nb_actions )
- Remove shared modify-action.
- doca_error_t doca_flow_ct_add_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match_origin, doca_flow_ct_match* match_reply, const doca_flow_ct_actions* actions_origin, const doca_flow_ct_actions* actions_reply, uint32_t fwd_handle_origin, uint32_t fwd_handle_reply, uint32_t timeout_s, void* usr_ctx, doca_flow_pipe_entry* entry )
- Add new entry to doca flow CT pipe.
- DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_timeout ( doca_flow_ct_aging_ctx* ctx, uint32_t* aging_conn_ids, uint32_t n )
- Remove timeout connections inside aging plugin timer callback.
- DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_update ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_conn_update_info* info, uint32_t n )
- Update connection counter inside aging plugin timer callback.
- doca_error_t doca_flow_ct_aging_counter_query ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter* ctrs, uint32_t n )
- Get counter statistics inside aging plugin timer callback.
- doca_error_t doca_flow_ct_aging_counter_state_get ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter_state* ctrs, uint32_t n )
- Get counter state inside aging plugin timer callback.
- doca_error_t doca_flow_ct_aging_counter_state_set ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter_state* ctrs, uint32_t n )
- Set counter state inside aging plugin timer callback.
- doca_error_t doca_flow_ct_cap_is_dev_supported ( const doca_devinfo* devinfo )
- Check if doca device supported by CT.
- DOCA_EXPERIMENTAL void doca_flow_ct_destroy ( void )
- Destroy the doca flow ct.
- doca_error_t doca_flow_ct_entry_add_dir ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match, const doca_flow_ct_actions* actions, uint32_t fwd_handle, doca_flow_pipe_entry* entry )
- Add missing direction rule to CT connection.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_aging_conn_id ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
- doca_error_t doca_flow_ct_entry_get_by_id ( uint16_t queue, doca_flow_pipe* pipe, uint32_t conn_id, doca_flow_pipe_entry** entry, void** user_ctx )
- Retrieves the entry from CT pipe based on the given connection ID.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_conn_id ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
- DOCA_EXPERIMENTAL void* doca_flow_ct_entry_get_user_ctx ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
- doca_error_t doca_flow_ct_entry_prepare ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match_origin, uint32_t hash_origin, doca_flow_ct_match* match_reply, uint32_t hash_reply, doca_flow_pipe_entry** entry, bool* conn_found )
- Lookup recent CT entry and create on miss.
- doca_error_t doca_flow_ct_entry_prepare_rollback ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
- Free the CT entry that hasn't been added to CT pipe.
- doca_error_t doca_flow_ct_fwd_register ( doca_flow_port* port, uint32_t fwd_count, doca_flow_fwd fwd[], uint32_t fwd_handle[] )
- CT register multiple forwards pipes.
- doca_error_t doca_flow_ct_get_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, doca_flow_ct_match* match_origin, doca_flow_ct_match* match_reply, uint64_t* entry_flags )
- Get CT entry match pattern.
- doca_error_t doca_flow_ct_init ( const doca_flow_ct_cfg* cfg )
- Initialize the doca flow ct.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_action_offset ( bool is_reply )
- Get action data bit offset in meta data field.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_match_zone ( uint32_t meta, bool is_reply )
- Get zone from packet meta.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_user_offset ( bool is_reply )
- Get User data bit offset in meta data field.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_zone ( uint32_t meta, bool is_reply )
- Get modify meta zone data.
- 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 void doca_flow_ct_meta_mask_prepare ( doca_flow_meta* meta, bool is_reply )
- Prepare meta as mask with zone and CT type.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_prepare ( doca_flow_meta* meta, uint32_t zone, bool is_reply )
- Prepare meta with zone and default CT type.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_action ( uint32_t* meta, uint32_t action_data, bool is_reply )
- Set meta action data applies to identified connection packets.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_match_zone ( doca_flow_meta* meta, uint32_t zone, bool is_reply )
- Set meta match zone data to doca_flow meta.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_user ( uint32_t* meta, uint32_t user_data, bool is_reply )
- Set user data in meta data field.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_zone ( uint32_t* meta, uint32_t zone, bool is_reply )
- Set meta zone data applies to identified connection packets.
- doca_error_t doca_flow_ct_query_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, doca_flow_query* stats_origin, doca_flow_query* stats_reply, uint64_t* last_hit_s )
- Extract information about specific entry.
- doca_error_t doca_flow_ct_rm_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry )
- remove CT entry.
- DOCA_EXPERIMENTAL void doca_flow_ct_set_vxlan_dst_port ( uint16_t dst_port )
- Sets UDP outer destination port for VxLAN traffic.
- doca_error_t doca_flow_ct_update_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, const doca_flow_ct_actions* actions_origin, const 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.
Variables
- doca_flow_ct_rule_opr(* ( *doca_flow_ct_rule_pkt_cb )( int32_t queue, doca_flow_ct_pkt* pkt, uint32_t* action_handle_origin, uint32_t* action_handle_reply, uint32_t* fwd_handle_origin, uint32_t* fwd_handle_reply )
Defines
- #define DOCA_FLOW_CT_ACTION_HANDLE_INVALID (UINT32_MAX)
invalid CT action handle
- #define DOCA_FLOW_CT_META_TYPE_MASK 0x3
Meta type mask
Typedefs
- void ( *doca_flow_ct_flow_log_cb )( doca_flow_pipe* pipe, void* entry, uint16_t queue, void* usr_ctx )
Flow log callback function
- void ( *doca_flow_ct_sync_acquire_cb )( int32_t queue )
shared actions sync_acquire, called from each worker at start
- void ( *doca_flow_ct_sync_release_cb )( int32_t queue )
shared actions sync_release, called from each worker on destroy
Enumerations
- enum doca_flow_ct_entry_flags
-
Values
- DOCA_FLOW_CT_ENTRY_FLAGS_NO_WAIT = (1<<0)
- entry will not be buffered, send to hardware immediately
- DOCA_FLOW_CT_ENTRY_FLAGS_DIR_ORIGIN = (1<<1)
- apply to origin direction
- DOCA_FLOW_CT_ENTRY_FLAGS_DIR_REPLY = (1<<2)
- apply to reply direction
- DOCA_FLOW_CT_ENTRY_FLAGS_IPV6_ORIGIN = (1<<3)
- origin direction is IPv6, union in struct doca_flow_ct_match is ipv6
- DOCA_FLOW_CT_ENTRY_FLAGS_IPV6_REPLY = (1<<4)
- reply direction is IPv6, union in struct doca_flow_ct_match is ipv6
- DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_ORIGIN = (1<<5)
- Apply counter to origin direction
- DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_REPLY = (1<<6)
- Apply counter to reply direction
- DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_SHARED = (1<<7)
- Counter is shared for both direction
- DOCA_FLOW_CT_ENTRY_FLAGS_FLOW_LOG = (1<<8)
- Enable flow log on entry removed
- DOCA_FLOW_CT_ENTRY_FLAGS_ALLOC_ON_MISS = (1<<9)
- Allocate on entry not found
- DOCA_FLOW_CT_ENTRY_FLAGS_DUP_FILTER_ORIGIN = 1u<<10
- Enable duplication filter on origin
- DOCA_FLOW_CT_ENTRY_FLAGS_DUP_FILTER_REPLY = 1u<<11
- Enable duplication filter on reply
- enum doca_flow_ct_flags
-
Values
- DOCA_FLOW_CT_FLAG_STATS = 1u<<0
- Enable counter for internal pipes
- DOCA_FLOW_CT_FLAG_WORKER_STATS = 1u<<1
- Enable worker counter dump
- DOCA_FLOW_CT_FLAG_NO_AGING = 1u<<2
- Bypass aging scan
- DOCA_FLOW_CT_FLAG_SW_PKT_PARSING = 1u<<3
- Force software packet parsing
- DOCA_FLOW_CT_FLAG_MANAGED = 1u<<4
- User managed worker thread, API only
- DOCA_FLOW_CT_FLAG_ASYMMETRIC_TUNNEL = 1u<<5
- Tunnel or non-tunnel in different direction
- DOCA_FLOW_CT_FLAG_ASYMMETRIC_COUNTER = 1u<<6
- Different counter in both direction
- DOCA_FLOW_CT_FLAG_NO_COUNTER = 1u<<7
- Disable counter support
- DOCA_FLOW_CT_FLAG_CT_PIPE_ONLY = 1u<<8
- DOCA_FLOW_CT_FLAG_WIRE_TO_WIRE = 1u<<9
- User responsible to set the CT type Traffic will be from wire to wire
- DOCA_FLOW_CT_FLAG_CALC_TUN_IP_CHKSUM = 1u<<10
- Enable HW to calculate and set the checksum on L3 header (IPv4)
- DOCA_FLOW_CT_FLAG_DUP_FILTER_UDP_ONLY = 1u<<11
- Apply connection duplication filter for UDP connections only
- enum doca_flow_ct_hash_type
-
Values
- DOCA_FLOW_CT_HASH_NONE
- No hash table, besides zone, meta data bits reserved as connection ID.
- DOCA_FLOW_CT_HASH_SYMMETRIC
- Hardware symmetric hash function
- enum doca_flow_ct_meta_type
Meta connection type
Values
- DOCA_FLOW_CT_META_NONE
- Regular payload traffic
- DOCA_FLOW_CT_META_NEW
- SYN or first UDP packet
- DOCA_FLOW_CT_META_END
- FIN or RST packet
- DOCA_FLOW_CT_META_UPDATE
- Payload to update user action data
- enum doca_flow_ct_rule_opr
packet callback return value, defines what CT should do with this packet
Values
- DOCA_FLOW_CT_RULE_OK
- all valid, create a rule
- DOCA_FLOW_CT_RULE_DROP
- drop packet
- DOCA_FLOW_CT_RULE_TX_ONLY
- do not create a rule, just forward packet
- enum doca_flow_ct_session_type
-
Values
- DOCA_FLOW_CT_SESSION_IPV4
- IPv4 session.
- DOCA_FLOW_CT_SESSION_IPV6
- IPv6 session.
- DOCA_FLOW_CT_SESSION_BOTH
- Total session.
- DOCA_FLOW_CT_SESSION_MAX
- Max session types.
Functions
- doca_error_t doca_flow_ct_actions_add_shared ( uint16_t ctrl_queue, doca_flow_pipe* pipe, const doca_flow_ct_actions actions[], uint32_t nb_actions, uint32_t actions_handles[] )
-
Add shared modify-action.
Parameters
- ctrl_queue
- control queue id.
- pipe
- Pointer to pipe.
- actions
- list of actions data, each updated with action id
- nb_actions
- number of actions to create
- actions_handles
- list of handles allocated for the input actions
Returns
DOCA_SUCCESS - in case of success Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_EMPTY - user actions pool is empty
- DOCA_ERROR_BAD_STATE - wrong number of HW responses
Description
- doca_error_t doca_flow_ct_actions_rm_shared ( uint16_t ctrl_queue, doca_flow_pipe* pipe, uint32_t actions_handles[], uint32_t nb_actions )
-
Remove shared modify-action.
Parameters
- ctrl_queue
- control ctrl queue id.
- pipe
- Pointer to pipe.
- actions_handles
- list of action ids
- nb_actions
- number of actions to create
Returns
DOCA_SUCCESS - always success
Description
- doca_error_t doca_flow_ct_add_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match_origin, doca_flow_ct_match* match_reply, const doca_flow_ct_actions* actions_origin, const doca_flow_ct_actions* actions_reply, uint32_t fwd_handle_origin, uint32_t fwd_handle_reply, uint32_t timeout_s, void* usr_ctx, doca_flow_pipe_entry* entry )
-
Add new entry to doca flow CT pipe.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- match_origin
- match pattern in origin direction.
- match_reply
- match pattern in reply direction, default to reverse of origin pattern.
- actions_origin
- actions to set on origin direction
- actions_reply
- actions to set on reply direction
- fwd_handle_origin
- fwd handle for origin direction
- fwd_handle_reply
- fwd handle for reply direction
- timeout_s
- aging timeout in second, 0 to disable aging
- usr_ctx
- user context data to associate to entry
- entry
- pointer of the CT entry
Returns
DOCA_SUCCESS - in case of success.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_timeout ( doca_flow_ct_aging_ctx* ctx, uint32_t* aging_conn_ids, uint32_t n )
-
Remove timeout connections inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- aging_conn_ids
- List of aging global connection IDs
- n
- Number of connections to remove
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_update ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_conn_update_info* info, uint32_t n )
-
Update connection counter inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- info
- List of connection info
- n
- Number of connections to update
Description
- doca_error_t doca_flow_ct_aging_counter_query ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter* ctrs, uint32_t n )
-
Get counter statistics inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- ctrs
- List of counter states with counter ID set
- n
- Number of counter statistics to get
Returns
DOCA_SUCCESS in case of success, others on error.
Description
- doca_error_t doca_flow_ct_aging_counter_state_get ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter_state* ctrs, uint32_t n )
-
Get counter state inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- ctrs
- List of counter states with counter ID set
- n
- Number of counter states to get
Returns
DOCA_SUCCESS in case of success, others on error.
Description
- doca_error_t doca_flow_ct_aging_counter_state_set ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter_state* ctrs, uint32_t n )
-
Set counter state inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- ctrs
- List of counter states
- n
- Number of counter states to set
Returns
DOCA_SUCCESS in case of success, others on error.
Description
- doca_error_t doca_flow_ct_cap_is_dev_supported ( const doca_devinfo* devinfo )
-
Check if doca device supported by CT.
Parameters
- devinfo
- Doca device info.
Returns
DOCA_SUCCESS - device supported by CT. Error code - in case of failure:
- DOCA_ERROR_NOT_SUPPORTED - provided devinfo does not support CT.
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_destroy ( void )
-
Destroy the doca flow ct.
Description
Release all the resources used by doca flow ct.
Must be invoked before doca flow destroy.
- doca_error_t doca_flow_ct_entry_add_dir ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match, const doca_flow_ct_actions* actions, uint32_t fwd_handle, doca_flow_pipe_entry* entry )
-
Add missing direction rule to CT connection.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- match
- match pattern of the direction.
- actions
- actions to set of the direction
- fwd_handle
- fwd handle for the input direction created
- entry
- pointer of the entry
Returns
DOCA_SUCCESS - in case of success.
Description
The direction must be specified via flags, must be empty when the connection created. Must call `doca_flow_entries_process` to polling adding result.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_aging_conn_id ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
-
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- entry
- CT entry.
Returns
The aging connection ID associated with the CT entry. UINT32_MAX - in case of failure.
Description
Retrieves the aging connection ID associated with a given CT entry.
- doca_error_t doca_flow_ct_entry_get_by_id ( uint16_t queue, doca_flow_pipe* pipe, uint32_t conn_id, doca_flow_pipe_entry** entry, void** user_ctx )
-
Retrieves the entry from CT pipe based on the given connection ID.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- conn_id
- CT connection ID inside queue.
- entry
- CT entry retrieved by the query.
- user_ctx
- User context associated with the CT entry.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - wrong pipe state.
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_conn_id ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
-
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- entry
- CT entry.
Returns
The connection ID associated with the CT entry. UINT32_MAX - in case of failure.
Description
Retrieves the connection ID associated with a given CT entry.
- DOCA_EXPERIMENTAL void* doca_flow_ct_entry_get_user_ctx ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
-
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- entry
- The CT pipe entry to query.
Returns
A pointer to the user context associated with the CT entry. NULL - in case of failure.
Description
Retrieves the user context associated with a specific CT entry.
- doca_error_t doca_flow_ct_entry_prepare ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match_origin, uint32_t hash_origin, doca_flow_ct_match* match_reply, uint32_t hash_reply, doca_flow_pipe_entry** entry, bool* conn_found )
-
Lookup recent CT entry and create on miss.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- match_origin
- match pattern in origin direction.
- hash_origin
- 5 tuple hash of origin direction.
- match_reply
- match pattern in reply direction, default to reverse of origin pattern.
- hash_reply
- 5 tuple hash of reply direction.
- entry
- pointer to save the new entry
- conn_found
- whether the entry is found in recent list.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_BAD_STATE - invalid pipe state.
- DOCA_ERROR_NOT_SUPPORTED - unsupported operation.
- DOCA_ERROR_FULL - pipe is full.
Description
- doca_error_t doca_flow_ct_entry_prepare_rollback ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
-
Free the CT entry that hasn't been added to CT pipe.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- entry
- pointer to the CT entry
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_BAD_STATE - invalid pipe state.
Description
- doca_error_t doca_flow_ct_fwd_register ( doca_flow_port* port, uint32_t fwd_count, doca_flow_fwd fwd[], uint32_t fwd_handle[] )
-
CT register multiple forwards pipes.
Parameters
- port
- Port struct.
- fwd_count
- number of CT forwards
- fwd
- array of CT forwards
- fwd_handle
- array of forward handles
Returns
DOCA_SUCCESS - in case of success Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_FOUND - fwd pipe not found
- DOCA_ERROR_NOT_SUPPORTED - fwd type not supported
- DOCA_ERROR_BAD_STATE - fwd register should be called before CT pipe creation
Description
- doca_error_t doca_flow_ct_get_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, doca_flow_ct_match* match_origin, doca_flow_ct_match* match_reply, uint64_t* entry_flags )
-
Get CT entry match pattern.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- entry
- CT entry.
- match_origin
- Pointer to save match pattern of origin direction
- match_reply
- Pointer to save match pattern of reply direction
- entry_flags
- Entry flags, see doca_flow_ct_entry_flags.
Returns
DOCA_SUCCESS - in case of success.
Description
- doca_error_t doca_flow_ct_init ( const doca_flow_ct_cfg* cfg )
-
Initialize the doca flow ct.
Parameters
- cfg
- CT configuration.
Returns
0 on success, a negative errno value otherwise.
Description
This is the global initialization function for doca flow ct. It initializes all resources used by doca flow.
Must be invoked first before any other function in this API. this is a one time call, used for doca flow ct initialization and global configurations.
Must be invoked after Doca Flow initilization, before port start.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_action_offset ( bool is_reply )
-
Get action data bit offset in meta data field.
Parameters
- is_reply
- Reply direction in asymmetric mode.
Returns
Action data bit offset.
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_match_zone ( uint32_t meta, bool is_reply )
-
Get zone from packet meta.
Parameters
- meta
- Packet meta.
- is_reply
- Reply direction in asymmetric mode.
Returns
Zone
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_user_offset ( bool is_reply )
-
Get User data bit offset in meta data field.
Parameters
- is_reply
- Reply direction in asymmetric mode.
Returns
User data bit offset.
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_zone ( uint32_t meta, bool is_reply )
-
Get modify meta zone data.
Parameters
- meta
- CT meta.
- is_reply
- Get reply direction zone in asymmetric mode.
Returns
Zone value.
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_zone_offset ( bool is_reply )
-
Get zone data bit offset in meta data field.
Parameters
- is_reply
- Reply direction in asymmetric mode.
Returns
Zone data bit offset.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_mask_prepare ( doca_flow_meta* meta, bool is_reply )
-
Prepare meta as mask with zone and CT type.
Parameters
- meta
- Doca flow meta.
- is_reply
- Prepare reply direction zone in asymmetric mode.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_prepare ( doca_flow_meta* meta, uint32_t zone, bool is_reply )
-
Prepare meta with zone and default CT type.
Parameters
- meta
- Doca flow meta.
- zone
- Zone value.
- is_reply
- Prepare reply direction zone in asymmetric mode.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_action ( uint32_t* meta, uint32_t action_data, bool is_reply )
-
Set meta action data applies to identified connection packets.
Parameters
- meta
- CT meta.
- action_data
- Action data.
- is_reply
- Reply direction in asymmetric mode.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_match_zone ( doca_flow_meta* meta, uint32_t zone, bool is_reply )
-
Set meta match zone data to doca_flow meta.
Parameters
- meta
- doca_flow meta.
- zone
- Zone value.
- is_reply
- Set reply direction zone in asymmetric mode.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_user ( uint32_t* meta, uint32_t user_data, bool is_reply )
-
Set user data in meta data field.
Parameters
- meta
- CT meta.
- user_data
- User data value.
- is_reply
- Reply direction in asymmetric mode.
Description
User data is ignored by worker, can't be carried with identified connection packets.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_zone ( uint32_t* meta, uint32_t zone, bool is_reply )
-
Set meta zone data applies to identified connection packets.
Parameters
- meta
- CT meta.
- zone
- Zone value.
- is_reply
- Set reply direction zone in asymmetric mode.
Description
- doca_error_t doca_flow_ct_query_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, doca_flow_query* stats_origin, doca_flow_query* stats_reply, uint64_t* last_hit_s )
-
Extract information about specific entry.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- entry
- The CT pipe entry to query.
- stats_origin
- Data of origin direction retrieved by the query.
- stats_reply
- Data of reply direction retrieved by the query.
- last_hit_s
- Last hit time in the number of seconds since the Epoch.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Query the packet statistics about specific CT pipe entry
- doca_error_t doca_flow_ct_rm_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry )
-
remove CT entry.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- entry
- The CT pipe entry to query.
Returns
DOCA_SUCCESS - in case of success. DOCA_ERROR_INVALID_VALUE - in case of invalid input. DOCA_ERROR_IN_PROGRESS - in case of connection is in progress of hardware processing. DOCA_ERROR_NOT_FOUND - in case of entry not found or destroyed. DOCA_ERROR_BAD_STATE - in case of invalid pipe or connection state.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_set_vxlan_dst_port ( uint16_t dst_port )
-
Sets UDP outer destination port for VxLAN traffic.
Parameters
- dst_port
- outer UDP destination value.
Description
This is to initialization the UDP outer destination port for VxLAN traffic. Sets the VxLAN dest port global variable value.
Optional, default to 4789. Must be invoked after Doca Flow and CT initialization.
- doca_error_t doca_flow_ct_update_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, const doca_flow_ct_actions* actions_origin, const 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.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- entry
- The CT pipe entry to query.
- actions_origin
- actions to set on origin direction
- actions_reply
- actions ta to set on reply direction
- fwd_handle_origin
- fwd handle for origin direction
- fwd_handle_reply
- fwd handle for reply direction
- timeout_s
- aging timeout in second, 0 to disable aging
Returns
DOCA_SUCCESS - in case of success.
Description
Variables
- doca_flow_ct_rule_opr(* ( *doca_flow_ct_rule_pkt_cb )( int32_t queue, doca_flow_ct_pkt* pkt, uint32_t* action_handle_origin, uint32_t* action_handle_reply, uint32_t* fwd_handle_origin, uint32_t* fwd_handle_reply )
shared actions pkt, called from each worker on first packet of a flow
1.15.3. Doca Flow Net
[ DOCA Flow ]
DOCA HW offload flow net structure define. For more details please refer to the user guide on DOCA devzone.
Classes
-
struct doca_flow_ct_ip4
-
struct doca_flow_ct_ip6
-
union doca_flow_geneve_option
- doca flow GENEVE option single DW.
-
struct doca_flow_header_eth
- doca flow eth header
-
struct doca_flow_header_eth_vlan
- doca flow vlan header
-
struct doca_flow_header_geneve
- doca flow GENEVE header.
-
struct doca_flow_header_icmp
- doca flow icmp header in match data
-
struct doca_flow_header_ip4
- doca flow ipv4 header in match data
-
struct doca_flow_header_ip6
- doca flow ipv6 header in match data
-
struct doca_flow_header_l4_port
- doca flow tcp or udp port header in match data
-
struct doca_flow_header_mpls
- doca flow MPLS header.
-
struct doca_flow_header_psp
- doca flow psp header in match data and modify/encap actions
-
struct doca_flow_header_tcp
- doca flow tcp header in match data
-
struct doca_flow_header_udp
- doca flow udp header in match data
-
struct doca_flow_ip_addr
- doca flow ip address
-
struct doca_flow_tun
- doca flow tunnel information
Defines
- #define DOCA_FLOW_CRYPTO_HEADER_LEN_MAX
- #define DOCA_FLOW_CRYPTO_KEY_LEN_MAX 32
- #define DOCA_FLOW_ENCAP_GENEVE_OPT_LEN_MAX 19
- #define DOCA_FLOW_ESP_HEADER_LEN
- #define DOCA_FLOW_ETHER_ADDR_LEN (6)
- #define DOCA_FLOW_ETHER_TYPE_IPV4 (0x0800)
- #define DOCA_FLOW_ETHER_TYPE_IPV6 (0x86DD)
- #define DOCA_FLOW_ETHER_TYPE_TEB (0x6558)
- #define DOCA_FLOW_GENEVE_DATA_OPTION_LEN_MAX 31
- #define DOCA_FLOW_GENEVE_DEFAULT_PORT (6081)
- #define DOCA_FLOW_GENEVE_NUM_OF_OPTIONS_MAX 8
- #define DOCA_FLOW_GENEVE_OPT_LEN_MAX 63
- #define DOCA_FLOW_GTPU_DEFAULT_PORT (2152)
- #define DOCA_FLOW_MPLS_DEFAULT_PORT (6635)
- #define DOCA_FLOW_MPLS_LABELS_MAX 5
- #define DOCA_FLOW_PROTO_ESP (50)
- #define DOCA_FLOW_PROTO_GRE (47)
- #define DOCA_FLOW_PROTO_ICMP (1)
- #define DOCA_FLOW_PROTO_ICMP6 (58)
- #define DOCA_FLOW_PROTO_IPV4 (4)
- #define DOCA_FLOW_PROTO_IPV6 (41)
- #define DOCA_FLOW_PROTO_TCP (6)
- #define DOCA_FLOW_PROTO_UDP (17)
- #define DOCA_FLOW_PSP_DEFAULT_PORT (1000)
- #define DOCA_FLOW_PSP_HEADER_LEN
- #define DOCA_FLOW_UDP_HEADER_LEN 8
- #define DOCA_FLOW_VXLAN_DEFAULT_PORT (4789)
- #define DOCA_FLOW_VXLAN_GPE_DEFAULT_PORT (4790)
- #define DOCA_FLOW_VXLAN_GPE_TYPE_ETH 3
- #define DOCA_FLOW_VXLAN_GPE_TYPE_GBP 6
- #define DOCA_FLOW_VXLAN_GPE_TYPE_IPV4 1
- #define DOCA_FLOW_VXLAN_GPE_TYPE_IPV6 2
- #define DOCA_FLOW_VXLAN_GPE_TYPE_MPLS 5
- #define DOCA_FLOW_VXLAN_GPE_TYPE_NSH 4
- #define DOCA_FLOW_VXLAN_GPE_TYPE_VBNG 7
Enumerations
- enum doca_flow_ip_fragment_flags
- doca flow IP fragment flags
- enum doca_flow_l3_type
- doca flow layer 3 packet type
- enum doca_flow_l4_type_ext
- doca flow layer 4 packet extend type
- enum doca_flow_tun_ext_gre_type
- doca flow tun extension gre type
- enum doca_flow_tun_ext_vxlan_type
- doca flow tunnel extension vxlan type
- enum doca_flow_tun_type
- doca flow tunnel type
Defines
- #define DOCA_FLOW_CRYPTO_HEADER_LEN_MAX
Crypto tunnel header may consist of:
-
Ethernet addresses
-
Ethernet type
-
optional VLAN and 802.1Q headers
-
IPv4 (with full options) or IPv6 (w/o options)
-
optional UDP header
-
PSP (or other crypto protocol) header
Value
(DOCA_FLOW_ETHER_ADDR_LEN * 2 + sizeof(doca_be16_t) + sizeof(doca_be16_t) * 2 * 2 + sizeof(doca_be32_t) * 15 + \ sizeof(doca_be32_t) * 2 + DOCA_FLOW_PSP_HEADER_LEN)
-
- #define DOCA_FLOW_CRYPTO_KEY_LEN_MAX 32
Crypto key maximal length in bytes
- #define DOCA_FLOW_ENCAP_GENEVE_OPT_LEN_MAX 19
Max GENEVE options length in single encap data (in 4 bytes granularity). Encap total size is 128
- #define DOCA_FLOW_ESP_HEADER_LEN
IPsec ESP header maximal length in bytes
Value
(4 * sizeof(doca_be32_t))
- #define DOCA_FLOW_ETHER_ADDR_LEN (6)
length of ether add length.
- #define DOCA_FLOW_ETHER_TYPE_IPV4 (0x0800)
Ethernet frame types IPv4 Protocol.
- #define DOCA_FLOW_ETHER_TYPE_IPV6 (0x86DD)
IPv6 Protocol.
- #define DOCA_FLOW_ETHER_TYPE_TEB (0x6558)
Transparent Ethernet Bridging.
- #define DOCA_FLOW_GENEVE_DATA_OPTION_LEN_MAX 31
Max data length in single GENEVE option (in 4 bytes granularity).
- #define DOCA_FLOW_GENEVE_DEFAULT_PORT (6081)
default GENEVE port id.
- #define DOCA_FLOW_GENEVE_NUM_OF_OPTIONS_MAX 8
Upper bound for GENEVE TLV options number.
- #define DOCA_FLOW_GENEVE_OPT_LEN_MAX 63
Max GENEVE options length in single packet (in 4 bytes granularity).
- #define DOCA_FLOW_GTPU_DEFAULT_PORT (2152)
gtpu upd port id.
- #define DOCA_FLOW_MPLS_DEFAULT_PORT (6635)
default MPLS port id.
- #define DOCA_FLOW_MPLS_LABELS_MAX 5
Max MPLS labels in single match.
- #define DOCA_FLOW_PROTO_ESP (50)
Encapsulated Security Payload Protocol.
- #define DOCA_FLOW_PROTO_GRE (47)
Cisco GRE tunnels (rfc 1701,1702).
- #define DOCA_FLOW_PROTO_ICMP (1)
Internet Control Message Protocol v4.
- #define DOCA_FLOW_PROTO_ICMP6 (58)
Internet Control Message Protocol v6.
- #define DOCA_FLOW_PROTO_IPV4 (4)
Internet Protocol v4.
- #define DOCA_FLOW_PROTO_IPV6 (41)
Internet Protocol v6.
- #define DOCA_FLOW_PROTO_TCP (6)
Transmission Control Protocol.
- #define DOCA_FLOW_PROTO_UDP (17)
User Datagram Protocol.
- #define DOCA_FLOW_PSP_DEFAULT_PORT (1000)
default PSP port id.
- #define DOCA_FLOW_PSP_HEADER_LEN
PSP header maximal length in bytes
Value
(6 * sizeof(doca_be32_t))
- #define DOCA_FLOW_UDP_HEADER_LEN 8
UDP header length in bytes
- #define DOCA_FLOW_VXLAN_DEFAULT_PORT (4789)
default vxlan port id.
- #define DOCA_FLOW_VXLAN_GPE_DEFAULT_PORT (4790)
default vxlan-gpe port id.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_ETH 3
Ethernet Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_GBP 6
GBP Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_IPV4 1
VXLAN GPE next protocol definition IPv4 Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_IPV6 2
IPv6 Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_MPLS 5
MPLS Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_NSH 4
NSH Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_VBNG 7
vBNG Protocol.
Enumerations
- enum doca_flow_ip_fragment_flags
Those flags are used in 'flags_fragment_offset' ip4 field.
Values
- DOCA_FLOW_IP4_FLAG_MORE_FRAGMENTS = (1<<13)
- Ipv4 More Fragments (MF) flag
- DOCA_FLOW_IP4_FLAG_DONT_FRAGMENT = (1<<14)
- Ipv4 Don't Fragment (DF) flag
- enum doca_flow_l3_type
-
Values
- DOCA_FLOW_L3_TYPE_NONE = 0
- l3 type is not set
- DOCA_FLOW_L3_TYPE_IP4
- l3 type is ipv4
- DOCA_FLOW_L3_TYPE_IP6
- l3 type is ipv6
- enum doca_flow_l4_type_ext
-
Values
- DOCA_FLOW_L4_TYPE_EXT_NONE = 0
- l4 ext type is not set
- DOCA_FLOW_L4_TYPE_EXT_TCP
- l4 ext type is tcp
- DOCA_FLOW_L4_TYPE_EXT_UDP
- l4 ext type is udp
- DOCA_FLOW_L4_TYPE_EXT_ICMP
- l4 ext type is icmp
- DOCA_FLOW_L4_TYPE_EXT_ICMP6
- l4 ext type is icmp6
- DOCA_FLOW_L4_TYPE_EXT_TRANSPORT
- l4 ext type is transport
- enum doca_flow_tun_ext_gre_type
-
Values
- DOCA_FLOW_TUN_EXT_GRE_STANDARD = 0
- GRE tunnel extension is STANDARD
- DOCA_FLOW_TUN_EXT_GRE_NVGRE
- GRE tunnel extension is NVGRE
- enum doca_flow_tun_ext_vxlan_type
-
Values
- DOCA_FLOW_TUN_EXT_VXLAN_STANDARD = 0
- Vxlan tunnel extension is Standard
- DOCA_FLOW_TUN_EXT_VXLAN_GPE
- Vxlan tunnel extension is GPE type
- DOCA_FLOW_TUN_EXT_VXLAN_GBP
- Vxlan tunnel extension is GBP type
- enum doca_flow_tun_type
-
Values
- DOCA_FLOW_TUN_NONE = 0
- tunnel is not set
- DOCA_FLOW_TUN_VXLAN
- tunnel is vxlan type
- DOCA_FLOW_TUN_GTPU
- tunnel is gtpu type
- DOCA_FLOW_TUN_GRE
- tunnel is gre type
- DOCA_FLOW_TUN_ESP
- tunnel is ipsec esp type
- DOCA_FLOW_TUN_MPLS_O_UDP
- tunnel is mpls over udp type
- DOCA_FLOW_TUN_GENEVE
- tunnel is geneve type
- DOCA_FLOW_TUN_PSP
- tunnel is psp type
- DOCA_FLOW_TUN_MAX
- tunnel is geneve type
1.15.4. DOCA Flow Tune Server
[ DOCA Flow ]
Classes
-
struct doca_flow_tune_server_kpi_res
- DOCA Flow Tune Server KPI result.
-
struct doca_flow_tune_server_shared_resources_kpi_res
- DOCA Flow Tune Server shared resources.
Functions
- DOCA_EXPERIMENTAL void doca_flow_tune_server_destroy ( void )
- Destroy the doca flow tune server.
- doca_error_t doca_flow_tune_server_get_kpi ( doca_flow_tune_server_kpi_type kpi_type, doca_flow_tune_server_kpi_res* res )
- Retrieve application scope Key Performance Indicator.
- doca_error_t doca_flow_tune_server_get_port_ids ( uint16_t* port_id_arr, uint16_t port_id_arr_len, uint16_t* nr_ports )
- Retrieve ports identification numbers.
- doca_error_t doca_flow_tune_server_get_port_kpi ( uint16_t port_id, doca_flow_tune_server_kpi_type kpi_type, doca_flow_tune_server_kpi_res* res )
- Retrieve Key Performance Indicator from a specific port.
- doca_error_t doca_flow_tune_server_init ( void )
- Initialize a DOCA flow tune server.
- doca_error_t doca_flow_tune_server_query_pipe_line ( FILE* fp )
- Query and dump pipes info of all ports.
Functions
- DOCA_EXPERIMENTAL void doca_flow_tune_server_destroy ( void )
-
Destroy the doca flow tune server.
Description
Release all the resources used by doca flow tune server.
should it be invoked before doca_flow_destroy
Must be invoked at the end of the application, before it exits.
- doca_error_t doca_flow_tune_server_get_kpi ( doca_flow_tune_server_kpi_type kpi_type, doca_flow_tune_server_kpi_res* res )
-
Retrieve application scope Key Performance Indicator.
Parameters
- kpi_type
- Key Performance Indicator type to retrieve.
- res
- Result struct is being filled according to KPI type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported configuration.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_tune_server_get_port_ids ( uint16_t* port_id_arr, uint16_t port_id_arr_len, uint16_t* nr_ports )
-
Retrieve ports identification numbers.
Parameters
- port_id_arr
- Pointer to port ids array to fill.
- port_id_arr_len
- Port ids array length.
- nr_ports
- Numbers of port ids assigned
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported configuration.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Retrieve Flow application's port identification numbers.
- doca_error_t doca_flow_tune_server_get_port_kpi ( uint16_t port_id, doca_flow_tune_server_kpi_type kpi_type, doca_flow_tune_server_kpi_res* res )
-
Retrieve Key Performance Indicator from a specific port.
Parameters
- port_id
- KPI port id to query.
- kpi_type
- Key Performance Indicator type to retrieve.
- res
- Result struct is being filled according to KPI type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported configuration.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_tune_server_init ( void )
-
Initialize a DOCA flow tune server.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NOT_SUPPORTED - functionality isn't support in this (runtime) version.
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This is the global initialization function for doca flow tune server. It initializes all resources used by doca flow tune server.
Should be called after doca_flow_init().
- doca_error_t doca_flow_tune_server_query_pipe_line ( FILE* fp )
-
Query and dump pipes info of all ports.
Parameters
- fp
- Pointer to opened file to save pipeline info
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Dump all pipes information.
1.15.1. Doca Flow Crypto
[ DOCA Flow ]
DOCA HW offload flow cryptonet structure define. For more details please refer to the user guide on DOCA devzone.
Classes
-
struct doca_flow_crypto_key_cfg
- doca flow crypto key configuration
Enumerations
- enum doca_flow_crypto_action_type
- doca flow crypto operation action type
- enum doca_flow_crypto_encap_action_type
- doca flow crypto operation reformat type
- enum doca_flow_crypto_encap_net_type
- doca flow crypto operation encapsulation header type
- enum doca_flow_crypto_icv_len
- doca flow crypto ICV length
- enum doca_flow_crypto_key_type
- doca flow crypto key type
- enum doca_flow_crypto_replay_win_size
- doca flow crypto replay window size
- enum doca_flow_crypto_resource_type
- doca flow crypto operation resource type
- enum doca_flow_crypto_sn_offload_type
- doca flow crypto SN oflload type
Functions
- DOCA_EXPERIMENTAL int doca_flow_crypto_ipsec_resource_handle ( doca_flow_port* port, uint64_t quota, uint32_t max_processed_resources )
- Handle ipsec resources.
- doca_error_t doca_flow_crypto_psp_master_key_rotate ( doca_flow_port* port )
- Rotate PSP master key.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_alloc ( doca_flow_port* port, doca_flow_crypto_key_type key_type, uint32_t nr_spi_keys, doca_flow_crypto_psp_spi_key_bulk** spi_key_bulk )
- Allocate an array of spi and key pairs.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_clear ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
- Clear the bulk data.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_free ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
- Free the memory for spi key bulk.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_generate ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
- Fill a bulk with new pairs of SPI and key.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_get ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk, uint32_t spi_key_idx, uint32_t* spi, uint32_t* key )
- Get SPI and key for specific index in the bulk.
- doca_error_t doca_flow_crypto_psp_spi_key_wipe ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk, uint32_t spi_key_idx )
- Wipe the memory of a key for specific index in the bulk.
Enumerations
- enum doca_flow_crypto_action_type
-
Values
- DOCA_FLOW_CRYPTO_ACTION_NONE = 0
- No crypto action performed
- DOCA_FLOW_CRYPTO_ACTION_ENCRYPT
- Perform encryption
- DOCA_FLOW_CRYPTO_ACTION_DECRYPT
- Perform decryption/authentication
- enum doca_flow_crypto_encap_action_type
-
Values
- DOCA_FLOW_CRYPTO_REFORMAT_NONE = 0
- No reformat action performed
- DOCA_FLOW_CRYPTO_REFORMAT_ENCAP
- Perform encapsulation action
- DOCA_FLOW_CRYPTO_REFORMAT_DECAP
- Perform decapsulation action
- enum doca_flow_crypto_encap_net_type
-
Values
- DOCA_FLOW_CRYPTO_HEADER_NONE = 0
- No network header involved
- DOCA_FLOW_CRYPTO_HEADER_ESP_TUNNEL
- ESP tunnel header type
- DOCA_FLOW_CRYPTO_HEADER_ESP_OVER_IPV4
- IPv4 network header type
- DOCA_FLOW_CRYPTO_HEADER_ESP_OVER_IPV6
- IPv6 network header type
- DOCA_FLOW_CRYPTO_HEADER_UDP_ESP_OVER_IPV4
- IPv4 + UDP network header type
- DOCA_FLOW_CRYPTO_HEADER_UDP_ESP_OVER_IPV6
- IPv6 + UDP network header type
- DOCA_FLOW_CRYPTO_HEADER_ESP_OVER_LAN
- UDP, TCP or ICMP network header type
- DOCA_FLOW_CRYPTO_HEADER_PSP_TUNNEL
- PSP tunnel header type
- DOCA_FLOW_CRYPTO_HEADER_PSP_OVER_IPV4
- PSP transport IPv4 network header type
- DOCA_FLOW_CRYPTO_HEADER_PSP_OVER_IPV6
- PSP transport IPv6 network header type
- enum doca_flow_crypto_icv_len
-
Values
- DOCA_FLOW_CRYPTO_ICV_LENGTH_8
- size of 8 bit
- DOCA_FLOW_CRYPTO_ICV_LENGTH_12
- size of 12 bit
- DOCA_FLOW_CRYPTO_ICV_LENGTH_16
- size of 16 bit
- enum doca_flow_crypto_key_type
-
Values
- DOCA_FLOW_CRYPTO_KEY_128
- Key type 128
- DOCA_FLOW_CRYPTO_KEY_256
- Key type 256
- enum doca_flow_crypto_replay_win_size
-
Values
- DOCA_FLOW_CRYPTO_REPLAY_WIN_SIZE_32
- Replay window size of 32 bit
- DOCA_FLOW_CRYPTO_REPLAY_WIN_SIZE_64
- Replay window size of 64 bit
- DOCA_FLOW_CRYPTO_REPLAY_WIN_SIZE_128
- Replay window size of 128 bit
- DOCA_FLOW_CRYPTO_REPLAY_WIN_SIZE_256
- Replay window size of 256 bit
- enum doca_flow_crypto_resource_type
-
Values
- DOCA_FLOW_CRYPTO_RESOURCE_NONE = 0
- No security resource engaged
- DOCA_FLOW_CRYPTO_RESOURCE_IPSEC_SA
- IPsec resource action
- DOCA_FLOW_CRYPTO_RESOURCE_PSP
- PSP resource action
- enum doca_flow_crypto_sn_offload_type
-
Values
- DOCA_FLOW_CRYPTO_SN_OFFLOAD_INC
- Increment sequence number - encrypt direction
- DOCA_FLOW_CRYPTO_SN_OFFLOAD_AR
- Anti-replay - decrypt direction
Functions
- DOCA_EXPERIMENTAL int doca_flow_crypto_ipsec_resource_handle ( doca_flow_port* port, uint64_t quota, uint32_t max_processed_resources )
-
Handle ipsec resources.
Parameters
- port
- Port to handle resources
- quota
- Max time quota in micro seconds, 0: no limit.
- max_processed_resources
- Max resource for this function to handle, 0: no limit.
Returns
> 0 the number of hadled resources. 0 no resource handled in current call. -1 full cycle done.
Description
Update relevnt data according to HW state. This API must be called in order to keep a valid state of a sequence number.
Handling of resources can take too much time, so we split each cycle to small chunks that are limited by some time quota.
As long as the function doesn't return -1, more resources are pending processing for this cycle.
- doca_error_t doca_flow_crypto_psp_master_key_rotate ( doca_flow_port* port )
-
Rotate PSP master key.
Parameters
- port
- Pointer to doca flow port.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - driver error.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This API is used to rotate PSP master key. New key will be used to generate pairs of SPI and key, and old key is still valid for decryption until another key rotate will be called.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_alloc ( doca_flow_port* port, doca_flow_crypto_key_type key_type, uint32_t nr_spi_keys, doca_flow_crypto_psp_spi_key_bulk** spi_key_bulk )
-
Allocate an array of spi and key pairs.
Parameters
- port
- Pointer to doca flow port.
- key_type
- DOCA_FLOW_CRYPTO_KEY_128 or DOCA_FLOW_CRYPTO_KEY_256.
- nr_spi_keys
- Array length.
- spi_key_bulk
- Spi key bulk handler on success
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This API is used to allocate the memory needed for the array, based on the key type and the number of spi keys.
To fill the array need to call doca_flow_crypto_psp_spi_key_bulk_generate function To free the memory need to call doca_flow_crypto_psp_spi_key_bulk_free function
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_clear ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
-
Clear the bulk data.
Parameters
- spi_key_bulk
- pointer to spi key bulk
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Clear the allocated bulk data. After all the keys in the bulk were disposed, if the user is going to generate new bulk in the future, it is recommended to clear the bulk memory with this API.
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_free ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
-
Free the memory for spi key bulk.
Parameters
- spi_key_bulk
- pointer to spi key bulk
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_generate ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk )
-
Fill a bulk with new pairs of SPI and key.
Parameters
- spi_key_bulk
- pointer to spi key bulk
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - memory allocation failed.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Fill an allocated bulk object with new pairs, based on the key type and number of spi keys. This API can be used more than once on allocated bulk.
To get a pair based on an index need to call doca_flow_crypto_psp_spi_key_bulk_get function
- doca_error_t doca_flow_crypto_psp_spi_key_bulk_get ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk, uint32_t spi_key_idx, uint32_t* spi, uint32_t* key )
-
Get SPI and key for specific index in the bulk.
Parameters
- spi_key_bulk
- pointer to spi key bulk
- spi_key_idx
- Index in the bulk
- spi
- pointer to the spi
- key
- pointer to the key
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_crypto_psp_spi_key_wipe ( doca_flow_crypto_psp_spi_key_bulk* spi_key_bulk, uint32_t spi_key_idx )
-
Wipe the memory of a key for specific index in the bulk.
Parameters
- spi_key_bulk
- pointer to spi key bulk
- spi_key_idx
- Index in the bulk
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
1.15.2. Doca Flow CT
[ DOCA Flow ]
DOCA HW connection tracking library.
Classes
-
struct doca_flow_ct_actions
-
union doca_flow_ct_aging_conn
- CT aging connection info.
-
struct doca_flow_ct_aging_conn_event
- CT aging user plugin connection event.
-
struct doca_flow_ct_aging_conn_update_info
- Connection update information.
-
struct doca_flow_ct_aging_counter
- Counter statistics.
-
struct doca_flow_ct_aging_counter_state
- CT aging counter state.
-
struct doca_flow_ct_aging_ctx
- CT aging user plugin context.
-
struct doca_flow_ct_aging_ops
- CT aging user plugin callbacks.
-
struct doca_flow_ct_cfg
-
struct doca_flow_ct_direction_cfg
-
struct doca_flow_ct_match
- doca flow CT match pattern
-
struct doca_flow_ct_match4
- doca flow CT IPv4 match pattern
-
struct doca_flow_ct_match6
- doca flow CT IPv6 match pattern
-
union doca_flow_ct_meta
- CT packet meta data.
-
struct doca_flow_ct_pkt
-
struct doca_flow_ct_worker_callbacks
Defines
- #define DOCA_FLOW_CT_ACTION_HANDLE_INVALID (UINT32_MAX)
- #define DOCA_FLOW_CT_META_TYPE_MASK 0x3
Typedefs
- typedef void ( *doca_flow_ct_flow_log_cb )( doca_flow_pipe* pipe, void* entry, uint16_t queue, void* usr_ctx )
- typedef void ( *doca_flow_ct_sync_acquire_cb )( int32_t queue )
- typedef void ( *doca_flow_ct_sync_release_cb )( int32_t queue )
Enumerations
- enum doca_flow_ct_entry_flags
- doca flow CT entry operation flags
- enum doca_flow_ct_flags
- CT flags.
- enum doca_flow_ct_hash_type
- CT hash table type.
- enum doca_flow_ct_meta_type
- enum doca_flow_ct_rule_opr
- enum doca_flow_ct_session_type
- CT l3 session types.
Functions
- doca_error_t doca_flow_ct_actions_add_shared ( uint16_t ctrl_queue, doca_flow_pipe* pipe, const doca_flow_ct_actions actions[], uint32_t nb_actions, uint32_t actions_handles[] )
- Add shared modify-action.
- doca_error_t doca_flow_ct_actions_rm_shared ( uint16_t ctrl_queue, doca_flow_pipe* pipe, uint32_t actions_handles[], uint32_t nb_actions )
- Remove shared modify-action.
- doca_error_t doca_flow_ct_add_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match_origin, doca_flow_ct_match* match_reply, const doca_flow_ct_actions* actions_origin, const doca_flow_ct_actions* actions_reply, uint32_t fwd_handle_origin, uint32_t fwd_handle_reply, uint32_t timeout_s, void* usr_ctx, doca_flow_pipe_entry* entry )
- Add new entry to doca flow CT pipe.
- DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_timeout ( doca_flow_ct_aging_ctx* ctx, uint32_t* aging_conn_ids, uint32_t n )
- Remove timeout connections inside aging plugin timer callback.
- DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_update ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_conn_update_info* info, uint32_t n )
- Update connection counter inside aging plugin timer callback.
- doca_error_t doca_flow_ct_aging_counter_query ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter* ctrs, uint32_t n )
- Get counter statistics inside aging plugin timer callback.
- doca_error_t doca_flow_ct_aging_counter_state_get ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter_state* ctrs, uint32_t n )
- Get counter state inside aging plugin timer callback.
- doca_error_t doca_flow_ct_aging_counter_state_set ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter_state* ctrs, uint32_t n )
- Set counter state inside aging plugin timer callback.
- doca_error_t doca_flow_ct_cap_is_dev_supported ( const doca_devinfo* devinfo )
- Check if doca device supported by CT.
- DOCA_EXPERIMENTAL void doca_flow_ct_destroy ( void )
- Destroy the doca flow ct.
- doca_error_t doca_flow_ct_entry_add_dir ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match, const doca_flow_ct_actions* actions, uint32_t fwd_handle, doca_flow_pipe_entry* entry )
- Add missing direction rule to CT connection.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_aging_conn_id ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
- doca_error_t doca_flow_ct_entry_get_by_id ( uint16_t queue, doca_flow_pipe* pipe, uint32_t conn_id, doca_flow_pipe_entry** entry, void** user_ctx )
- Retrieves the entry from CT pipe based on the given connection ID.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_conn_id ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
- DOCA_EXPERIMENTAL void* doca_flow_ct_entry_get_user_ctx ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
- doca_error_t doca_flow_ct_entry_prepare ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match_origin, uint32_t hash_origin, doca_flow_ct_match* match_reply, uint32_t hash_reply, doca_flow_pipe_entry** entry, bool* conn_found )
- Lookup recent CT entry and create on miss.
- doca_error_t doca_flow_ct_entry_prepare_rollback ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
- Free the CT entry that hasn't been added to CT pipe.
- doca_error_t doca_flow_ct_fwd_register ( doca_flow_port* port, uint32_t fwd_count, doca_flow_fwd fwd[], uint32_t fwd_handle[] )
- CT register multiple forwards pipes.
- doca_error_t doca_flow_ct_get_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, doca_flow_ct_match* match_origin, doca_flow_ct_match* match_reply, uint64_t* entry_flags )
- Get CT entry match pattern.
- doca_error_t doca_flow_ct_init ( const doca_flow_ct_cfg* cfg )
- Initialize the doca flow ct.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_action_offset ( bool is_reply )
- Get action data bit offset in meta data field.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_match_zone ( uint32_t meta, bool is_reply )
- Get zone from packet meta.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_user_offset ( bool is_reply )
- Get User data bit offset in meta data field.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_zone ( uint32_t meta, bool is_reply )
- Get modify meta zone data.
- 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 void doca_flow_ct_meta_mask_prepare ( doca_flow_meta* meta, bool is_reply )
- Prepare meta as mask with zone and CT type.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_prepare ( doca_flow_meta* meta, uint32_t zone, bool is_reply )
- Prepare meta with zone and default CT type.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_action ( uint32_t* meta, uint32_t action_data, bool is_reply )
- Set meta action data applies to identified connection packets.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_match_zone ( doca_flow_meta* meta, uint32_t zone, bool is_reply )
- Set meta match zone data to doca_flow meta.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_user ( uint32_t* meta, uint32_t user_data, bool is_reply )
- Set user data in meta data field.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_zone ( uint32_t* meta, uint32_t zone, bool is_reply )
- Set meta zone data applies to identified connection packets.
- doca_error_t doca_flow_ct_query_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, doca_flow_query* stats_origin, doca_flow_query* stats_reply, uint64_t* last_hit_s )
- Extract information about specific entry.
- doca_error_t doca_flow_ct_rm_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry )
- remove CT entry.
- DOCA_EXPERIMENTAL void doca_flow_ct_set_vxlan_dst_port ( uint16_t dst_port )
- Sets UDP outer destination port for VxLAN traffic.
- doca_error_t doca_flow_ct_update_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, const doca_flow_ct_actions* actions_origin, const 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.
Variables
- doca_flow_ct_rule_opr(* ( *doca_flow_ct_rule_pkt_cb )( int32_t queue, doca_flow_ct_pkt* pkt, uint32_t* action_handle_origin, uint32_t* action_handle_reply, uint32_t* fwd_handle_origin, uint32_t* fwd_handle_reply )
Defines
- #define DOCA_FLOW_CT_ACTION_HANDLE_INVALID (UINT32_MAX)
invalid CT action handle
- #define DOCA_FLOW_CT_META_TYPE_MASK 0x3
Meta type mask
Typedefs
- void ( *doca_flow_ct_flow_log_cb )( doca_flow_pipe* pipe, void* entry, uint16_t queue, void* usr_ctx )
Flow log callback function
- void ( *doca_flow_ct_sync_acquire_cb )( int32_t queue )
shared actions sync_acquire, called from each worker at start
- void ( *doca_flow_ct_sync_release_cb )( int32_t queue )
shared actions sync_release, called from each worker on destroy
Enumerations
- enum doca_flow_ct_entry_flags
-
Values
- DOCA_FLOW_CT_ENTRY_FLAGS_NO_WAIT = (1<<0)
- entry will not be buffered, send to hardware immediately
- DOCA_FLOW_CT_ENTRY_FLAGS_DIR_ORIGIN = (1<<1)
- apply to origin direction
- DOCA_FLOW_CT_ENTRY_FLAGS_DIR_REPLY = (1<<2)
- apply to reply direction
- DOCA_FLOW_CT_ENTRY_FLAGS_IPV6_ORIGIN = (1<<3)
- origin direction is IPv6, union in struct doca_flow_ct_match is ipv6
- DOCA_FLOW_CT_ENTRY_FLAGS_IPV6_REPLY = (1<<4)
- reply direction is IPv6, union in struct doca_flow_ct_match is ipv6
- DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_ORIGIN = (1<<5)
- Apply counter to origin direction
- DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_REPLY = (1<<6)
- Apply counter to reply direction
- DOCA_FLOW_CT_ENTRY_FLAGS_COUNTER_SHARED = (1<<7)
- Counter is shared for both direction
- DOCA_FLOW_CT_ENTRY_FLAGS_FLOW_LOG = (1<<8)
- Enable flow log on entry removed
- DOCA_FLOW_CT_ENTRY_FLAGS_ALLOC_ON_MISS = (1<<9)
- Allocate on entry not found
- DOCA_FLOW_CT_ENTRY_FLAGS_DUP_FILTER_ORIGIN = 1u<<10
- Enable duplication filter on origin
- DOCA_FLOW_CT_ENTRY_FLAGS_DUP_FILTER_REPLY = 1u<<11
- Enable duplication filter on reply
- enum doca_flow_ct_flags
-
Values
- DOCA_FLOW_CT_FLAG_STATS = 1u<<0
- Enable counter for internal pipes
- DOCA_FLOW_CT_FLAG_WORKER_STATS = 1u<<1
- Enable worker counter dump
- DOCA_FLOW_CT_FLAG_NO_AGING = 1u<<2
- Bypass aging scan
- DOCA_FLOW_CT_FLAG_SW_PKT_PARSING = 1u<<3
- Force software packet parsing
- DOCA_FLOW_CT_FLAG_MANAGED = 1u<<4
- User managed worker thread, API only
- DOCA_FLOW_CT_FLAG_ASYMMETRIC_TUNNEL = 1u<<5
- Tunnel or non-tunnel in different direction
- DOCA_FLOW_CT_FLAG_ASYMMETRIC_COUNTER = 1u<<6
- Different counter in both direction
- DOCA_FLOW_CT_FLAG_NO_COUNTER = 1u<<7
- Disable counter support
- DOCA_FLOW_CT_FLAG_CT_PIPE_ONLY = 1u<<8
- DOCA_FLOW_CT_FLAG_WIRE_TO_WIRE = 1u<<9
- User responsible to set the CT type Traffic will be from wire to wire
- DOCA_FLOW_CT_FLAG_CALC_TUN_IP_CHKSUM = 1u<<10
- Enable HW to calculate and set the checksum on L3 header (IPv4)
- DOCA_FLOW_CT_FLAG_DUP_FILTER_UDP_ONLY = 1u<<11
- Apply connection duplication filter for UDP connections only
- enum doca_flow_ct_hash_type
-
Values
- DOCA_FLOW_CT_HASH_NONE
- No hash table, besides zone, meta data bits reserved as connection ID.
- DOCA_FLOW_CT_HASH_SYMMETRIC
- Hardware symmetric hash function
- enum doca_flow_ct_meta_type
Meta connection type
Values
- DOCA_FLOW_CT_META_NONE
- Regular payload traffic
- DOCA_FLOW_CT_META_NEW
- SYN or first UDP packet
- DOCA_FLOW_CT_META_END
- FIN or RST packet
- DOCA_FLOW_CT_META_UPDATE
- Payload to update user action data
- enum doca_flow_ct_rule_opr
packet callback return value, defines what CT should do with this packet
Values
- DOCA_FLOW_CT_RULE_OK
- all valid, create a rule
- DOCA_FLOW_CT_RULE_DROP
- drop packet
- DOCA_FLOW_CT_RULE_TX_ONLY
- do not create a rule, just forward packet
- enum doca_flow_ct_session_type
-
Values
- DOCA_FLOW_CT_SESSION_IPV4
- IPv4 session.
- DOCA_FLOW_CT_SESSION_IPV6
- IPv6 session.
- DOCA_FLOW_CT_SESSION_BOTH
- Total session.
- DOCA_FLOW_CT_SESSION_MAX
- Max session types.
Functions
- doca_error_t doca_flow_ct_actions_add_shared ( uint16_t ctrl_queue, doca_flow_pipe* pipe, const doca_flow_ct_actions actions[], uint32_t nb_actions, uint32_t actions_handles[] )
-
Add shared modify-action.
Parameters
- ctrl_queue
- control queue id.
- pipe
- Pointer to pipe.
- actions
- list of actions data, each updated with action id
- nb_actions
- number of actions to create
- actions_handles
- list of handles allocated for the input actions
Returns
DOCA_SUCCESS - in case of success Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_EMPTY - user actions pool is empty
- DOCA_ERROR_BAD_STATE - wrong number of HW responses
Description
- doca_error_t doca_flow_ct_actions_rm_shared ( uint16_t ctrl_queue, doca_flow_pipe* pipe, uint32_t actions_handles[], uint32_t nb_actions )
-
Remove shared modify-action.
Parameters
- ctrl_queue
- control ctrl queue id.
- pipe
- Pointer to pipe.
- actions_handles
- list of action ids
- nb_actions
- number of actions to create
Returns
DOCA_SUCCESS - always success
Description
- doca_error_t doca_flow_ct_add_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match_origin, doca_flow_ct_match* match_reply, const doca_flow_ct_actions* actions_origin, const doca_flow_ct_actions* actions_reply, uint32_t fwd_handle_origin, uint32_t fwd_handle_reply, uint32_t timeout_s, void* usr_ctx, doca_flow_pipe_entry* entry )
-
Add new entry to doca flow CT pipe.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- match_origin
- match pattern in origin direction.
- match_reply
- match pattern in reply direction, default to reverse of origin pattern.
- actions_origin
- actions to set on origin direction
- actions_reply
- actions to set on reply direction
- fwd_handle_origin
- fwd handle for origin direction
- fwd_handle_reply
- fwd handle for reply direction
- timeout_s
- aging timeout in second, 0 to disable aging
- usr_ctx
- user context data to associate to entry
- entry
- pointer of the CT entry
Returns
DOCA_SUCCESS - in case of success.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_timeout ( doca_flow_ct_aging_ctx* ctx, uint32_t* aging_conn_ids, uint32_t n )
-
Remove timeout connections inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- aging_conn_ids
- List of aging global connection IDs
- n
- Number of connections to remove
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_aging_conn_update ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_conn_update_info* info, uint32_t n )
-
Update connection counter inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- info
- List of connection info
- n
- Number of connections to update
Description
- doca_error_t doca_flow_ct_aging_counter_query ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter* ctrs, uint32_t n )
-
Get counter statistics inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- ctrs
- List of counter states with counter ID set
- n
- Number of counter statistics to get
Returns
DOCA_SUCCESS in case of success, others on error.
Description
- doca_error_t doca_flow_ct_aging_counter_state_get ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter_state* ctrs, uint32_t n )
-
Get counter state inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- ctrs
- List of counter states with counter ID set
- n
- Number of counter states to get
Returns
DOCA_SUCCESS in case of success, others on error.
Description
- doca_error_t doca_flow_ct_aging_counter_state_set ( doca_flow_ct_aging_ctx* ctx, doca_flow_ct_aging_counter_state* ctrs, uint32_t n )
-
Set counter state inside aging plugin timer callback.
Parameters
- ctx
- CT Aging callback context
- ctrs
- List of counter states
- n
- Number of counter states to set
Returns
DOCA_SUCCESS in case of success, others on error.
Description
- doca_error_t doca_flow_ct_cap_is_dev_supported ( const doca_devinfo* devinfo )
-
Check if doca device supported by CT.
Parameters
- devinfo
- Doca device info.
Returns
DOCA_SUCCESS - device supported by CT. Error code - in case of failure:
- DOCA_ERROR_NOT_SUPPORTED - provided devinfo does not support CT.
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_DRIVER - failed to query capability support.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_destroy ( void )
-
Destroy the doca flow ct.
Description
Release all the resources used by doca flow ct.
Must be invoked before doca flow destroy.
- doca_error_t doca_flow_ct_entry_add_dir ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match, const doca_flow_ct_actions* actions, uint32_t fwd_handle, doca_flow_pipe_entry* entry )
-
Add missing direction rule to CT connection.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- match
- match pattern of the direction.
- actions
- actions to set of the direction
- fwd_handle
- fwd handle for the input direction created
- entry
- pointer of the entry
Returns
DOCA_SUCCESS - in case of success.
Description
The direction must be specified via flags, must be empty when the connection created. Must call `doca_flow_entries_process` to polling adding result.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_aging_conn_id ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
-
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- entry
- CT entry.
Returns
The aging connection ID associated with the CT entry. UINT32_MAX - in case of failure.
Description
Retrieves the aging connection ID associated with a given CT entry.
- doca_error_t doca_flow_ct_entry_get_by_id ( uint16_t queue, doca_flow_pipe* pipe, uint32_t conn_id, doca_flow_pipe_entry** entry, void** user_ctx )
-
Retrieves the entry from CT pipe based on the given connection ID.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- conn_id
- CT connection ID inside queue.
- entry
- CT entry retrieved by the query.
- user_ctx
- User context associated with the CT entry.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - wrong pipe state.
- DOCA_ERROR_INVALID_VALUE - received invalid input.
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_entry_get_conn_id ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
-
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- entry
- CT entry.
Returns
The connection ID associated with the CT entry. UINT32_MAX - in case of failure.
Description
Retrieves the connection ID associated with a given CT entry.
- DOCA_EXPERIMENTAL void* doca_flow_ct_entry_get_user_ctx ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
-
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- entry
- The CT pipe entry to query.
Returns
A pointer to the user context associated with the CT entry. NULL - in case of failure.
Description
Retrieves the user context associated with a specific CT entry.
- doca_error_t doca_flow_ct_entry_prepare ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_ct_match* match_origin, uint32_t hash_origin, doca_flow_ct_match* match_reply, uint32_t hash_reply, doca_flow_pipe_entry** entry, bool* conn_found )
-
Lookup recent CT entry and create on miss.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- match_origin
- match pattern in origin direction.
- hash_origin
- 5 tuple hash of origin direction.
- match_reply
- match pattern in reply direction, default to reverse of origin pattern.
- hash_reply
- 5 tuple hash of reply direction.
- entry
- pointer to save the new entry
- conn_found
- whether the entry is found in recent list.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_BAD_STATE - invalid pipe state.
- DOCA_ERROR_NOT_SUPPORTED - unsupported operation.
- DOCA_ERROR_FULL - pipe is full.
Description
- doca_error_t doca_flow_ct_entry_prepare_rollback ( uint16_t queue, doca_flow_pipe* pipe, doca_flow_pipe_entry* entry )
-
Free the CT entry that hasn't been added to CT pipe.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- entry
- pointer to the CT entry
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_BAD_STATE - invalid pipe state.
Description
- doca_error_t doca_flow_ct_fwd_register ( doca_flow_port* port, uint32_t fwd_count, doca_flow_fwd fwd[], uint32_t fwd_handle[] )
-
CT register multiple forwards pipes.
Parameters
- port
- Port struct.
- fwd_count
- number of CT forwards
- fwd
- array of CT forwards
- fwd_handle
- array of forward handles
Returns
DOCA_SUCCESS - in case of success Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_FOUND - fwd pipe not found
- DOCA_ERROR_NOT_SUPPORTED - fwd type not supported
- DOCA_ERROR_BAD_STATE - fwd register should be called before CT pipe creation
Description
- doca_error_t doca_flow_ct_get_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, doca_flow_ct_match* match_origin, doca_flow_ct_match* match_reply, uint64_t* entry_flags )
-
Get CT entry match pattern.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- entry
- CT entry.
- match_origin
- Pointer to save match pattern of origin direction
- match_reply
- Pointer to save match pattern of reply direction
- entry_flags
- Entry flags, see doca_flow_ct_entry_flags.
Returns
DOCA_SUCCESS - in case of success.
Description
- doca_error_t doca_flow_ct_init ( const doca_flow_ct_cfg* cfg )
-
Initialize the doca flow ct.
Parameters
- cfg
- CT configuration.
Returns
0 on success, a negative errno value otherwise.
Description
This is the global initialization function for doca flow ct. It initializes all resources used by doca flow.
Must be invoked first before any other function in this API. this is a one time call, used for doca flow ct initialization and global configurations.
Must be invoked after Doca Flow initilization, before port start.
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_action_offset ( bool is_reply )
-
Get action data bit offset in meta data field.
Parameters
- is_reply
- Reply direction in asymmetric mode.
Returns
Action data bit offset.
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_match_zone ( uint32_t meta, bool is_reply )
-
Get zone from packet meta.
Parameters
- meta
- Packet meta.
- is_reply
- Reply direction in asymmetric mode.
Returns
Zone
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_user_offset ( bool is_reply )
-
Get User data bit offset in meta data field.
Parameters
- is_reply
- Reply direction in asymmetric mode.
Returns
User data bit offset.
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_zone ( uint32_t meta, bool is_reply )
-
Get modify meta zone data.
Parameters
- meta
- CT meta.
- is_reply
- Get reply direction zone in asymmetric mode.
Returns
Zone value.
Description
- DOCA_EXPERIMENTAL uint32_t doca_flow_ct_meta_get_zone_offset ( bool is_reply )
-
Get zone data bit offset in meta data field.
Parameters
- is_reply
- Reply direction in asymmetric mode.
Returns
Zone data bit offset.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_mask_prepare ( doca_flow_meta* meta, bool is_reply )
-
Prepare meta as mask with zone and CT type.
Parameters
- meta
- Doca flow meta.
- is_reply
- Prepare reply direction zone in asymmetric mode.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_prepare ( doca_flow_meta* meta, uint32_t zone, bool is_reply )
-
Prepare meta with zone and default CT type.
Parameters
- meta
- Doca flow meta.
- zone
- Zone value.
- is_reply
- Prepare reply direction zone in asymmetric mode.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_action ( uint32_t* meta, uint32_t action_data, bool is_reply )
-
Set meta action data applies to identified connection packets.
Parameters
- meta
- CT meta.
- action_data
- Action data.
- is_reply
- Reply direction in asymmetric mode.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_match_zone ( doca_flow_meta* meta, uint32_t zone, bool is_reply )
-
Set meta match zone data to doca_flow meta.
Parameters
- meta
- doca_flow meta.
- zone
- Zone value.
- is_reply
- Set reply direction zone in asymmetric mode.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_user ( uint32_t* meta, uint32_t user_data, bool is_reply )
-
Set user data in meta data field.
Parameters
- meta
- CT meta.
- user_data
- User data value.
- is_reply
- Reply direction in asymmetric mode.
Description
User data is ignored by worker, can't be carried with identified connection packets.
- DOCA_EXPERIMENTAL void doca_flow_ct_meta_set_zone ( uint32_t* meta, uint32_t zone, bool is_reply )
-
Set meta zone data applies to identified connection packets.
Parameters
- meta
- CT meta.
- zone
- Zone value.
- is_reply
- Set reply direction zone in asymmetric mode.
Description
- doca_error_t doca_flow_ct_query_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, doca_flow_query* stats_origin, doca_flow_query* stats_reply, uint64_t* last_hit_s )
-
Extract information about specific entry.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- entry
- The CT pipe entry to query.
- stats_origin
- Data of origin direction retrieved by the query.
- stats_reply
- Data of reply direction retrieved by the query.
- last_hit_s
- Last hit time in the number of seconds since the Epoch.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Query the packet statistics about specific CT pipe entry
- doca_error_t doca_flow_ct_rm_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry )
-
remove CT entry.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- entry
- The CT pipe entry to query.
Returns
DOCA_SUCCESS - in case of success. DOCA_ERROR_INVALID_VALUE - in case of invalid input. DOCA_ERROR_IN_PROGRESS - in case of connection is in progress of hardware processing. DOCA_ERROR_NOT_FOUND - in case of entry not found or destroyed. DOCA_ERROR_BAD_STATE - in case of invalid pipe or connection state.
Description
- DOCA_EXPERIMENTAL void doca_flow_ct_set_vxlan_dst_port ( uint16_t dst_port )
-
Sets UDP outer destination port for VxLAN traffic.
Parameters
- dst_port
- outer UDP destination value.
Description
This is to initialization the UDP outer destination port for VxLAN traffic. Sets the VxLAN dest port global variable value.
Optional, default to 4789. Must be invoked after Doca Flow and CT initialization.
- doca_error_t doca_flow_ct_update_entry ( uint16_t queue, doca_flow_pipe* pipe, uint32_t flags, doca_flow_pipe_entry* entry, const doca_flow_ct_actions* actions_origin, const 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.
Parameters
- queue
- queue ID, offset from doca_flow.nb_queues.
- pipe
- Pointer to pipe.
- flags
- operation flags, see doca_flow_ct_entry_flags.
- entry
- The CT pipe entry to query.
- actions_origin
- actions to set on origin direction
- actions_reply
- actions ta to set on reply direction
- fwd_handle_origin
- fwd handle for origin direction
- fwd_handle_reply
- fwd handle for reply direction
- timeout_s
- aging timeout in second, 0 to disable aging
Returns
DOCA_SUCCESS - in case of success.
Description
Variables
- doca_flow_ct_rule_opr(* ( *doca_flow_ct_rule_pkt_cb )( int32_t queue, doca_flow_ct_pkt* pkt, uint32_t* action_handle_origin, uint32_t* action_handle_reply, uint32_t* fwd_handle_origin, uint32_t* fwd_handle_reply )
shared actions pkt, called from each worker on first packet of a flow
1.15.3. Doca Flow Net
[ DOCA Flow ]
DOCA HW offload flow net structure define. For more details please refer to the user guide on DOCA devzone.
Classes
-
struct doca_flow_ct_ip4
-
struct doca_flow_ct_ip6
-
union doca_flow_geneve_option
- doca flow GENEVE option single DW.
-
struct doca_flow_header_eth
- doca flow eth header
-
struct doca_flow_header_eth_vlan
- doca flow vlan header
-
struct doca_flow_header_geneve
- doca flow GENEVE header.
-
struct doca_flow_header_icmp
- doca flow icmp header in match data
-
struct doca_flow_header_ip4
- doca flow ipv4 header in match data
-
struct doca_flow_header_ip6
- doca flow ipv6 header in match data
-
struct doca_flow_header_l4_port
- doca flow tcp or udp port header in match data
-
struct doca_flow_header_mpls
- doca flow MPLS header.
-
struct doca_flow_header_psp
- doca flow psp header in match data and modify/encap actions
-
struct doca_flow_header_tcp
- doca flow tcp header in match data
-
struct doca_flow_header_udp
- doca flow udp header in match data
-
struct doca_flow_ip_addr
- doca flow ip address
-
struct doca_flow_tun
- doca flow tunnel information
Defines
- #define DOCA_FLOW_CRYPTO_HEADER_LEN_MAX
- #define DOCA_FLOW_CRYPTO_KEY_LEN_MAX 32
- #define DOCA_FLOW_ENCAP_GENEVE_OPT_LEN_MAX 19
- #define DOCA_FLOW_ESP_HEADER_LEN
- #define DOCA_FLOW_ETHER_ADDR_LEN (6)
- #define DOCA_FLOW_ETHER_TYPE_IPV4 (0x0800)
- #define DOCA_FLOW_ETHER_TYPE_IPV6 (0x86DD)
- #define DOCA_FLOW_ETHER_TYPE_TEB (0x6558)
- #define DOCA_FLOW_GENEVE_DATA_OPTION_LEN_MAX 31
- #define DOCA_FLOW_GENEVE_DEFAULT_PORT (6081)
- #define DOCA_FLOW_GENEVE_NUM_OF_OPTIONS_MAX 8
- #define DOCA_FLOW_GENEVE_OPT_LEN_MAX 63
- #define DOCA_FLOW_GTPU_DEFAULT_PORT (2152)
- #define DOCA_FLOW_MPLS_DEFAULT_PORT (6635)
- #define DOCA_FLOW_MPLS_LABELS_MAX 5
- #define DOCA_FLOW_PROTO_ESP (50)
- #define DOCA_FLOW_PROTO_GRE (47)
- #define DOCA_FLOW_PROTO_ICMP (1)
- #define DOCA_FLOW_PROTO_ICMP6 (58)
- #define DOCA_FLOW_PROTO_IPV4 (4)
- #define DOCA_FLOW_PROTO_IPV6 (41)
- #define DOCA_FLOW_PROTO_TCP (6)
- #define DOCA_FLOW_PROTO_UDP (17)
- #define DOCA_FLOW_PSP_DEFAULT_PORT (1000)
- #define DOCA_FLOW_PSP_HEADER_LEN
- #define DOCA_FLOW_UDP_HEADER_LEN 8
- #define DOCA_FLOW_VXLAN_DEFAULT_PORT (4789)
- #define DOCA_FLOW_VXLAN_GPE_DEFAULT_PORT (4790)
- #define DOCA_FLOW_VXLAN_GPE_TYPE_ETH 3
- #define DOCA_FLOW_VXLAN_GPE_TYPE_GBP 6
- #define DOCA_FLOW_VXLAN_GPE_TYPE_IPV4 1
- #define DOCA_FLOW_VXLAN_GPE_TYPE_IPV6 2
- #define DOCA_FLOW_VXLAN_GPE_TYPE_MPLS 5
- #define DOCA_FLOW_VXLAN_GPE_TYPE_NSH 4
- #define DOCA_FLOW_VXLAN_GPE_TYPE_VBNG 7
Enumerations
- enum doca_flow_ip_fragment_flags
- doca flow IP fragment flags
- enum doca_flow_l3_type
- doca flow layer 3 packet type
- enum doca_flow_l4_type_ext
- doca flow layer 4 packet extend type
- enum doca_flow_tun_ext_gre_type
- doca flow tun extension gre type
- enum doca_flow_tun_ext_vxlan_type
- doca flow tunnel extension vxlan type
- enum doca_flow_tun_type
- doca flow tunnel type
Defines
- #define DOCA_FLOW_CRYPTO_HEADER_LEN_MAX
Crypto tunnel header may consist of:
-
Ethernet addresses
-
Ethernet type
-
optional VLAN and 802.1Q headers
-
IPv4 (with full options) or IPv6 (w/o options)
-
optional UDP header
-
PSP (or other crypto protocol) header
Value
(DOCA_FLOW_ETHER_ADDR_LEN * 2 + sizeof(doca_be16_t) + sizeof(doca_be16_t) * 2 * 2 + sizeof(doca_be32_t) * 15 + \ sizeof(doca_be32_t) * 2 + DOCA_FLOW_PSP_HEADER_LEN)
-
- #define DOCA_FLOW_CRYPTO_KEY_LEN_MAX 32
Crypto key maximal length in bytes
- #define DOCA_FLOW_ENCAP_GENEVE_OPT_LEN_MAX 19
Max GENEVE options length in single encap data (in 4 bytes granularity). Encap total size is 128
- #define DOCA_FLOW_ESP_HEADER_LEN
IPsec ESP header maximal length in bytes
Value
(4 * sizeof(doca_be32_t))
- #define DOCA_FLOW_ETHER_ADDR_LEN (6)
length of ether add length.
- #define DOCA_FLOW_ETHER_TYPE_IPV4 (0x0800)
Ethernet frame types IPv4 Protocol.
- #define DOCA_FLOW_ETHER_TYPE_IPV6 (0x86DD)
IPv6 Protocol.
- #define DOCA_FLOW_ETHER_TYPE_TEB (0x6558)
Transparent Ethernet Bridging.
- #define DOCA_FLOW_GENEVE_DATA_OPTION_LEN_MAX 31
Max data length in single GENEVE option (in 4 bytes granularity).
- #define DOCA_FLOW_GENEVE_DEFAULT_PORT (6081)
default GENEVE port id.
- #define DOCA_FLOW_GENEVE_NUM_OF_OPTIONS_MAX 8
Upper bound for GENEVE TLV options number.
- #define DOCA_FLOW_GENEVE_OPT_LEN_MAX 63
Max GENEVE options length in single packet (in 4 bytes granularity).
- #define DOCA_FLOW_GTPU_DEFAULT_PORT (2152)
gtpu upd port id.
- #define DOCA_FLOW_MPLS_DEFAULT_PORT (6635)
default MPLS port id.
- #define DOCA_FLOW_MPLS_LABELS_MAX 5
Max MPLS labels in single match.
- #define DOCA_FLOW_PROTO_ESP (50)
Encapsulated Security Payload Protocol.
- #define DOCA_FLOW_PROTO_GRE (47)
Cisco GRE tunnels (rfc 1701,1702).
- #define DOCA_FLOW_PROTO_ICMP (1)
Internet Control Message Protocol v4.
- #define DOCA_FLOW_PROTO_ICMP6 (58)
Internet Control Message Protocol v6.
- #define DOCA_FLOW_PROTO_IPV4 (4)
Internet Protocol v4.
- #define DOCA_FLOW_PROTO_IPV6 (41)
Internet Protocol v6.
- #define DOCA_FLOW_PROTO_TCP (6)
Transmission Control Protocol.
- #define DOCA_FLOW_PROTO_UDP (17)
User Datagram Protocol.
- #define DOCA_FLOW_PSP_DEFAULT_PORT (1000)
default PSP port id.
- #define DOCA_FLOW_PSP_HEADER_LEN
PSP header maximal length in bytes
Value
(6 * sizeof(doca_be32_t))
- #define DOCA_FLOW_UDP_HEADER_LEN 8
UDP header length in bytes
- #define DOCA_FLOW_VXLAN_DEFAULT_PORT (4789)
default vxlan port id.
- #define DOCA_FLOW_VXLAN_GPE_DEFAULT_PORT (4790)
default vxlan-gpe port id.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_ETH 3
Ethernet Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_GBP 6
GBP Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_IPV4 1
VXLAN GPE next protocol definition IPv4 Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_IPV6 2
IPv6 Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_MPLS 5
MPLS Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_NSH 4
NSH Protocol.
- #define DOCA_FLOW_VXLAN_GPE_TYPE_VBNG 7
vBNG Protocol.
Enumerations
- enum doca_flow_ip_fragment_flags
Those flags are used in 'flags_fragment_offset' ip4 field.
Values
- DOCA_FLOW_IP4_FLAG_MORE_FRAGMENTS = (1<<13)
- Ipv4 More Fragments (MF) flag
- DOCA_FLOW_IP4_FLAG_DONT_FRAGMENT = (1<<14)
- Ipv4 Don't Fragment (DF) flag
- enum doca_flow_l3_type
-
Values
- DOCA_FLOW_L3_TYPE_NONE = 0
- l3 type is not set
- DOCA_FLOW_L3_TYPE_IP4
- l3 type is ipv4
- DOCA_FLOW_L3_TYPE_IP6
- l3 type is ipv6
- enum doca_flow_l4_type_ext
-
Values
- DOCA_FLOW_L4_TYPE_EXT_NONE = 0
- l4 ext type is not set
- DOCA_FLOW_L4_TYPE_EXT_TCP
- l4 ext type is tcp
- DOCA_FLOW_L4_TYPE_EXT_UDP
- l4 ext type is udp
- DOCA_FLOW_L4_TYPE_EXT_ICMP
- l4 ext type is icmp
- DOCA_FLOW_L4_TYPE_EXT_ICMP6
- l4 ext type is icmp6
- DOCA_FLOW_L4_TYPE_EXT_TRANSPORT
- l4 ext type is transport
- enum doca_flow_tun_ext_gre_type
-
Values
- DOCA_FLOW_TUN_EXT_GRE_STANDARD = 0
- GRE tunnel extension is STANDARD
- DOCA_FLOW_TUN_EXT_GRE_NVGRE
- GRE tunnel extension is NVGRE
- enum doca_flow_tun_ext_vxlan_type
-
Values
- DOCA_FLOW_TUN_EXT_VXLAN_STANDARD = 0
- Vxlan tunnel extension is Standard
- DOCA_FLOW_TUN_EXT_VXLAN_GPE
- Vxlan tunnel extension is GPE type
- DOCA_FLOW_TUN_EXT_VXLAN_GBP
- Vxlan tunnel extension is GBP type
- enum doca_flow_tun_type
-
Values
- DOCA_FLOW_TUN_NONE = 0
- tunnel is not set
- DOCA_FLOW_TUN_VXLAN
- tunnel is vxlan type
- DOCA_FLOW_TUN_GTPU
- tunnel is gtpu type
- DOCA_FLOW_TUN_GRE
- tunnel is gre type
- DOCA_FLOW_TUN_ESP
- tunnel is ipsec esp type
- DOCA_FLOW_TUN_MPLS_O_UDP
- tunnel is mpls over udp type
- DOCA_FLOW_TUN_GENEVE
- tunnel is geneve type
- DOCA_FLOW_TUN_PSP
- tunnel is psp type
- DOCA_FLOW_TUN_MAX
- tunnel is geneve type
1.15.4. DOCA Flow Tune Server
[ DOCA Flow ]
Classes
-
struct doca_flow_tune_server_kpi_res
- DOCA Flow Tune Server KPI result.
-
struct doca_flow_tune_server_shared_resources_kpi_res
- DOCA Flow Tune Server shared resources.
Functions
- DOCA_EXPERIMENTAL void doca_flow_tune_server_destroy ( void )
- Destroy the doca flow tune server.
- doca_error_t doca_flow_tune_server_get_kpi ( doca_flow_tune_server_kpi_type kpi_type, doca_flow_tune_server_kpi_res* res )
- Retrieve application scope Key Performance Indicator.
- doca_error_t doca_flow_tune_server_get_port_ids ( uint16_t* port_id_arr, uint16_t port_id_arr_len, uint16_t* nr_ports )
- Retrieve ports identification numbers.
- doca_error_t doca_flow_tune_server_get_port_kpi ( uint16_t port_id, doca_flow_tune_server_kpi_type kpi_type, doca_flow_tune_server_kpi_res* res )
- Retrieve Key Performance Indicator from a specific port.
- doca_error_t doca_flow_tune_server_init ( void )
- Initialize a DOCA flow tune server.
- doca_error_t doca_flow_tune_server_query_pipe_line ( FILE* fp )
- Query and dump pipes info of all ports.
Functions
- DOCA_EXPERIMENTAL void doca_flow_tune_server_destroy ( void )
-
Destroy the doca flow tune server.
Description
Release all the resources used by doca flow tune server.
should it be invoked before doca_flow_destroy
Must be invoked at the end of the application, before it exits.
- doca_error_t doca_flow_tune_server_get_kpi ( doca_flow_tune_server_kpi_type kpi_type, doca_flow_tune_server_kpi_res* res )
-
Retrieve application scope Key Performance Indicator.
Parameters
- kpi_type
- Key Performance Indicator type to retrieve.
- res
- Result struct is being filled according to KPI type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported configuration.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_tune_server_get_port_ids ( uint16_t* port_id_arr, uint16_t port_id_arr_len, uint16_t* nr_ports )
-
Retrieve ports identification numbers.
Parameters
- port_id_arr
- Pointer to port ids array to fill.
- port_id_arr_len
- Port ids array length.
- nr_ports
- Numbers of port ids assigned
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported configuration.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Retrieve Flow application's port identification numbers.
- doca_error_t doca_flow_tune_server_get_port_kpi ( uint16_t port_id, doca_flow_tune_server_kpi_type kpi_type, doca_flow_tune_server_kpi_res* res )
-
Retrieve Key Performance Indicator from a specific port.
Parameters
- port_id
- KPI port id to query.
- kpi_type
- Key Performance Indicator type to retrieve.
- res
- Result struct is being filled according to KPI type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_NO_MEMORY - memory allocation failed.
- DOCA_ERROR_NOT_SUPPORTED - unsupported configuration.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
- doca_error_t doca_flow_tune_server_init ( void )
-
Initialize a DOCA flow tune server.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NOT_SUPPORTED - functionality isn't support in this (runtime) version.
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
This is the global initialization function for doca flow tune server. It initializes all resources used by doca flow tune server.
Should be called after doca_flow_init().
- doca_error_t doca_flow_tune_server_query_pipe_line ( FILE* fp )
-
Query and dump pipes info of all ports.
Parameters
- fp
- Pointer to opened file to save pipeline info
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input.
- DOCA_ERROR_UNKNOWN - otherwise.
Description
Dump all pipes information.
Modules
-
DOCA GPUNetIO Device - Buffer
-
DOCA GPUNetIO Device - Definitions
-
DOCA GPUNetIO Device - Ethernet RXQ
-
DOCA GPUNetIO Device - Ethernet TXQ
-
DOCA GPUNetIO Device - RDMA
-
DOCA GPUNetIO Device - Semaphore
-
DOCA GPUNetIO Device - Source
Defines
- #define DOCA_GPUNETIO_VOLATILE ( x )
Enumerations
Functions
- doca_error_t doca_gpu_create ( const char* gpu_bus_id, doca_gpu** gpu_dev )
- Create a DOCA GPUNETIO handler.
- doca_error_t doca_gpu_destroy ( doca_gpu* gpu_dev )
- Destroy a DOCA GPUNETIO handler.
- doca_error_t doca_gpu_dmabuf_fd ( doca_gpu* gpu_dev, void* memptr_gpu, size_t size, int* dmabuf_fd )
- doca_error_t doca_gpu_mem_alloc ( doca_gpu* gpu_dev, size_t size, size_t alignment, doca_gpu_mem_type mtype, void** memptr_gpu, void** memptr_cpu )
- doca_error_t doca_gpu_mem_free ( doca_gpu* gpu, void* memptr_gpu )
- doca_error_t doca_gpu_semaphore_create ( doca_gpu* gpu_dev, doca_gpu_semaphore** semaphore )
- doca_error_t doca_gpu_semaphore_destroy ( doca_gpu_semaphore* semaphore )
- doca_error_t doca_gpu_semaphore_get_custom_info_addr ( doca_gpu_semaphore* semaphore_cpu, uint32_t idx, void** custom_info )
- doca_error_t doca_gpu_semaphore_get_gpu_handle ( doca_gpu_semaphore* semaphore_cpu, doca_gpu_semaphore_gpu** semaphore_gpu )
- doca_error_t doca_gpu_semaphore_get_status ( doca_gpu_semaphore* semaphore_cpu, uint32_t idx, doca_gpu_semaphore_status ** status )
- doca_error_t doca_gpu_semaphore_set_custom_info ( doca_gpu_semaphore* semaphore, uint32_t nbytes, doca_gpu_mem_type mtype )
- doca_error_t doca_gpu_semaphore_set_items_num ( doca_gpu_semaphore* semaphore, uint32_t num_items )
- doca_error_t doca_gpu_semaphore_set_memory_type ( doca_gpu_semaphore* semaphore, doca_gpu_mem_type mtype )
- doca_error_t doca_gpu_semaphore_set_status ( doca_gpu_semaphore* semaphore_cpu, uint32_t idx, doca_gpu_semaphore_status status )
- doca_error_t doca_gpu_semaphore_start ( doca_gpu_semaphore* semaphore )
- doca_error_t doca_gpu_semaphore_stop ( doca_gpu_semaphore* semaphore )
Defines
- #define DOCA_GPUNETIO_VOLATILE ( x )
Macro to temporarily cast a variable to volatile.
Value
(*(volatile typeof(x) *)&(x))
Enumerations
- enum doca_gpu_semaphore_status
Semaphore list of possible statuses.
Values
- DOCA_GPU_SEMAPHORE_STATUS_FREE = 0
- DOCA_GPU_SEMAPHORE_STATUS_READY = 1
- DOCA_GPU_SEMAPHORE_STATUS_DONE = 2
- DOCA_GPU_SEMAPHORE_STATUS_HOLD = 3
- DOCA_GPU_SEMAPHORE_STATUS_ERROR = 4
- DOCA_GPU_SEMAPHORE_STATUS_EXIT = 5
Functions
- doca_error_t doca_gpu_create ( const char* gpu_bus_id, doca_gpu** gpu_dev )
-
Create a DOCA GPUNETIO handler.
Parameters
- gpu_bus_id
- GPU PCIe address.
- gpu_dev
- Pointer to the newly created gpu device handler.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - gpu_dev argument is a NULL pointer.
- DOCA_ERROR_NOT_FOUND - GPU not found at the input PCIe address
- DOCA_ERROR_NO_MEMORY - failed to alloc doca_gpu.
Description
- doca_error_t doca_gpu_destroy ( doca_gpu* gpu_dev )
-
Destroy a DOCA GPUNETIO handler.
Parameters
- gpu_dev
- Pointer to handler to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
Description
- doca_error_t doca_gpu_dmabuf_fd ( doca_gpu* gpu_dev, void* memptr_gpu, size_t size, int* dmabuf_fd )
-
Parameters
- gpu_dev
- DOCA GPUNetIO handler.
- memptr_gpu
- GPU memory pointer to be freed.
- size
- Size in bytes to map.
- dmabuf_fd
- DMABuf file descriptor
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_SUPPORTED - DMABuf not supported
Description
Return a DMABuf file descriptor from a GPU memory address if the GPU device and CUDA installation supports DMABuf.
- doca_error_t doca_gpu_mem_alloc ( doca_gpu* gpu_dev, size_t size, size_t alignment, doca_gpu_mem_type mtype, void** memptr_gpu, void** memptr_cpu )
-
Parameters
- gpu_dev
- DOCA GPUNetIO handler.
- size
- Buffer size in bytes.
- alignment
- Buffer memory alignment. If 0, the return is a pointer that is suitably aligned for any kind of variable (in the same manner as malloc()). Otherwise, the return is a pointer that is a multiple of *align*. Alignment value must be a power of two.
- mtype
- Type of memory buffer. See enum doca_gpu_memtype for reference.
- memptr_gpu
- GPU memory pointer. Must be used with CUDA API and within CUDA kernels.
- memptr_cpu
- CPU memory pointer. Must be used for CPU direct access to the memory.
Returns
Non NULL memptr_gpu pointer on success, NULL otherwise. Non NULL memptr_cpu pointer on success in case of DOCA_GPU_MEM_TYPE_CPU_GPU and DOCA_GPU_MEM_TYPE_GPU_CPU, NULL otherwise. DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NO_MEMORY - if an error occurred dealing with GPU memory.
Description
Allocate a GPU accessible memory buffer. Assumes DPDK has been already attached with doca_gpu_to_dpdk(). According to the memory type specified, the buffer can be allocated in:
-
DOCA_GPU_MEM_TYPE_GPU memptr_gpu is not NULL while memptr_cpu is NULL.
-
DOCA_GPU_MEM_TYPE_GPU_CPU both memptr_gpu and memptr_cpu are not NULL.
-
DOCA_GPU_MEM_TYPE_CPU_GPU both memptr_gpu and memptr_cpu are not NULL.
- doca_error_t doca_gpu_mem_free ( doca_gpu* gpu, void* memptr_gpu )
-
Parameters
- gpu
- DOCA GPUNetIO handler.
- memptr_gpu
- GPU memory pointer to be freed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Free a GPU memory buffer. Only memory allocated with doca_gpu_mem_alloc() can be freed with this function.
- doca_error_t doca_gpu_semaphore_create ( doca_gpu* gpu_dev, doca_gpu_semaphore** semaphore )
-
Parameters
- gpu_dev
- DOCA GPUNetIO handler.
- semaphore
- Pointer to the newly created semaphore handler.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Create a DOCA GPUNetIO semaphore.
- doca_error_t doca_gpu_semaphore_destroy ( doca_gpu_semaphore* semaphore )
-
Parameters
- semaphore
- DOCA GPUNetIO semaphore handler.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Stop a DOCA GPUNetIO semaphore.
- doca_error_t doca_gpu_semaphore_get_custom_info_addr ( doca_gpu_semaphore* semaphore_cpu, uint32_t idx, void** custom_info )
-
Parameters
- semaphore_cpu
- DOCA GPUNetIO semaphore CPU handler.
- idx
- DOCA GPUNetIO semaphore item index.
- custom_info
- DOCA GPUNetIO semaphore custom info pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get pointer to DOCA GPUNetIO semaphore item associated custom info. This can be done only if custom info memory was set to DOCA_GPU_MEM_TYPE_GPU_CPU or DOCA_GPU_MEM_TYPE_CPU_GPU.
- doca_error_t doca_gpu_semaphore_get_gpu_handle ( doca_gpu_semaphore* semaphore_cpu, doca_gpu_semaphore_gpu** semaphore_gpu )
-
Parameters
- semaphore_cpu
- DOCA GPUNetIO semaphore CPU handler.
- semaphore_gpu
- DOCA GPUNetIO semaphore GPU handler.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get a DOCA GPUNetIO semaphore handle for GPU. This can be used within a CUDA kernel.
- doca_error_t doca_gpu_semaphore_get_status ( doca_gpu_semaphore* semaphore_cpu, uint32_t idx, doca_gpu_semaphore_status ** status )
-
Parameters
- semaphore_cpu
- DOCA GPUNetIO semaphore CPU handler.
- idx
- DOCA GPUNetIO semaphore item index.
- status
- DOCA GPUNetIO semaphore status.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get DOCA GPUNetIO semaphore status from CPU. This can be done only if item memory was set to DOCA_GPU_MEM_TYPE_GPU_CPU or DOCA_GPU_MEM_TYPE_CPU_GPU.
- doca_error_t doca_gpu_semaphore_set_custom_info ( doca_gpu_semaphore* semaphore, uint32_t nbytes, doca_gpu_mem_type mtype )
-
Parameters
- semaphore
- DOCA GPUNetIO semaphore handler.
- nbytes
- DOCA GPUNetIO semaphore number of items.
- mtype
- DOCA GPUNetIO semaphore memory type.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Attach to each item in the DOCA GPUNetIO semaphore a custom user-defined structure defined through a number of bytes reserved for each item. Specify also which memory to use for the custom info items.
- doca_error_t doca_gpu_semaphore_set_items_num ( doca_gpu_semaphore* semaphore, uint32_t num_items )
-
Parameters
- semaphore
- DOCA GPUNetIO semaphore handler.
- num_items
- DOCA GPUNetIO semaphore number of items.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Allocate DOCA GPUNetIO semaphore number of items.
- doca_error_t doca_gpu_semaphore_set_memory_type ( doca_gpu_semaphore* semaphore, doca_gpu_mem_type mtype )
-
Parameters
- semaphore
- DOCA GPUNetIO semaphore handler.
- mtype
- DOCA GPUNetIO semaphore items type of memory.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Type of memory to be used to allocate DOCA GPUNetIO semaphore items. It determines semaphore visibility: GPU only or GPU and CPU.
- doca_error_t doca_gpu_semaphore_set_status ( doca_gpu_semaphore* semaphore_cpu, uint32_t idx, doca_gpu_semaphore_status status )
-
Parameters
- semaphore_cpu
- DOCA GPUNetIO semaphore CPU handler.
- idx
- DOCA GPUNetIO semaphore item index.
- status
- DOCA GPUNetIO semaphore status.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status from CPU. This can be done only if item memory was set to DOCA_GPU_MEM_TYPE_GPU_CPU or DOCA_GPU_MEM_TYPE_CPU_GPU.
- doca_error_t doca_gpu_semaphore_start ( doca_gpu_semaphore* semaphore )
-
Parameters
- semaphore
- DOCA GPUNetIO semaphore handler.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Start a DOCA GPUNetIO semaphore. Attributes can't be set after this point.
- doca_error_t doca_gpu_semaphore_stop ( doca_gpu_semaphore* semaphore )
-
Parameters
- semaphore
- DOCA GPUNetIO semaphore handler.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Stop a DOCA GPUNetIO semaphore.
DOCA GPUNetIO Device - Buffer
DOCA GPUNetIO Device - Definitions
DOCA GPUNetIO Device - Ethernet RXQ
DOCA GPUNetIO Device - Ethernet TXQ
DOCA GPUNetIO Device - RDMA
DOCA GPUNetIO Device - Semaphore
DOCA GPUNetIO Device - Source
1.16.1. DOCA GPUNetIO Device - Buffer
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Functions
- __device__ doca_error_t doca_gpu_dev_buf_get_addr ( const doca_gpu_buf* buf, uintptr_t* addr )
- Retrieve memory address of the packet stored in the doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_buf_get_buf ( const doca_gpu_buf_arr* buf_arr_gpu, const uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
- Retrieve a specific doca_gpu_buf pointer from doca_gpu_buf_arr object.
Functions
- __device__ doca_error_t doca_gpu_dev_buf_get_addr ( const doca_gpu_buf* buf, uintptr_t* addr )
-
Retrieve memory address of the packet stored in the doca_gpu_buf.
Parameters
- buf
- doca_gpu_buf
- addr
- Memory address of the packet in the doca_gpu_buf object
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_buf_get_buf ( const doca_gpu_buf_arr* buf_arr_gpu, const uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
-
Retrieve a specific doca_gpu_buf pointer from doca_gpu_buf_arr object.
Parameters
- buf_arr_gpu
- doca_gpu_buf_arr object.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- buf
- doca_gpu_buf pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
1.16.2. DOCA GPUNetIO Device - Definitions
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Enumerations
- enum doca_gpu_send_flags
Enumerations
- enum doca_gpu_send_flags
Set of properties to enable when pushing a new element in a send queue.
Values
- DOCA_GPU_SEND_FLAG_NONE = 0
- No specific property must be enabled. Best configuration to enhance the performance.
- DOCA_GPU_SEND_FLAG_NOTIFY = 1<<0
- Return a notification when a send or wait item is actually executed. Please note this is requires the DOCA PE on the CPU side to check the Eth Txq context (send queue) and cleanup every notification (can be set via doca_eth_txq_gpu_event_notify_send_packet_register function). For this reason, this flag should be set mostly for debugging purposes as it may affect the overall performance if CPU is not fast enough to query and cleanup the notifications.
- DOCA_GPU_SEND_FLAG_NONE = 0
- No specific property must be enabled. Best configuration to enhance the performance.
- DOCA_GPU_SEND_FLAG_NOTIFY = 1<<0
- Return a notification when a send or wait item is actually executed. Please note this is requires the DOCA PE on the CPU side to check the Eth Txq context (send queue) and cleanup every notification (can be set via doca_eth_txq_gpu_event_notify_send_packet_register function). For this reason, this flag should be set mostly for debugging purposes as it may affect the overall performance if CPU is not fast enough to query and cleanup the notifications.
1.16.3. DOCA GPUNetIO Device - Ethernet RXQ
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Functions
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf ( doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
- Retrieve a specific doca_gpu_buf pointer from Ethernet receive object.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_bytes ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint32_t* nbytes )
- Return packet bytes associated to a received doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_timestamp ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint64_t* timestamp_ns )
- Return packet timestamp associated to a received doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_block ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
- Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-block. It's developer responsibility to ensure each block invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If maximum number of packets is 0, it's ignored and only the timeout indicates the exit condition. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition. If both are 0, the function will never return.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_thread ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
- Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-thread. It's developer responsibility to ensure each thread invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_warp ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
- Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-warp. It's developer responsibility to ensure each warp invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
Functions
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf ( doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
-
Retrieve a specific doca_gpu_buf pointer from Ethernet receive object.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- buf
- doca_gpu_buf pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_bytes ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint32_t* nbytes )
-
Return packet bytes associated to a received doca_gpu_buf.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- nbytes
- Received number of bytes of the packet in doca_gpu_buf
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_timestamp ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint64_t* timestamp_ns )
-
Return packet timestamp associated to a received doca_gpu_buf.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- timestamp_ns
- Received timestamp of the packet in doca_gpu_buf
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_block ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
-
Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-block. It's developer responsibility to ensure each block invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If maximum number of packets is 0, it's ignored and only the timeout indicates the exit condition. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition. If both are 0, the function will never return.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- max_rx_pkts
- Max number of packets to receive.
- timeout_ns
- Max number of ns to wait before returning. If 0, timeout is not considered.
- num_rx_pkts
- Number of actually received packets.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf used to receive the very first packet.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_thread ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
-
Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-thread. It's developer responsibility to ensure each thread invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- max_rx_pkts
- Max number of packets to receive. Can't be 0.
- timeout_ns
- Max number of ns to wait before returning. If 0, timeout is not considered.
- num_rx_pkts
- Number of actually received packets.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf used to receive the very first packet.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_warp ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
-
Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-warp. It's developer responsibility to ensure each warp invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- max_rx_pkts
- Max number of packets to receive. Can't be 0.
- timeout_ns
- Max number of ns to wait before returning. If 0, timeout is not considered.
- num_rx_pkts
- Number of actually received packets.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf used to receive the very first packet.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
1.16.4. DOCA GPUNetIO Device - Ethernet TXQ
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Enumerations
- enum doca_gpu_send_flags
Functions
- __device__ doca_error_t doca_gpu_dev_eth_txq_calculate_timestamp ( const doca_gpu_eth_txq* eth_txq, const uint64_t timestamp_ns, uint64_t* wait_on_time_value )
- Similarly to doca_eth_txq_calculate_timestamp() it returns the wait on time value to use with doca_gpu_dev_eth_txq_wait_time_enqueue_* functions. It works only if wait on time support on the txq is DOCA_ETH_WAIT_ON_TIME_TYPE_NATIVE.
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_strong ( doca_gpu_eth_txq* eth_txq )
- Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_strong() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_strong() and then another doca_gpu_dev_eth_txq_commit_strong() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_strong() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_weak ( doca_gpu_eth_txq* eth_txq, const uint32_t elements )
- Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_weak() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_weak() and then another doca_gpu_dev_eth_txq_commit_weak() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_weak() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_eth_txq_get_info ( doca_gpu_eth_txq* eth_txq, uint32_t* curr_position, uint32_t* mask_max_position )
- Get latest occupied position in the send queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern. Please ensure to query this function before starting to enqueue packets in weak mode. The library updated the curr_position value after every doca_gpu_dev_eth_txq_commit_*() The position index should be always masked with mask_max_position value.
- __device__ doca_error_t doca_gpu_dev_eth_txq_push ( doca_gpu_eth_txq* eth_txq )
- Flush the queue sending packets enqueued. Must be invoked right after doca_gpu_dev_eth_txq_commit_strong() or doca_gpu_dev_eth_txq_commit_weak(). Only one thread can invoke this function.
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_strong ( doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t flags_bitmask )
- Enqueue a new packet on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Each invocation of this function will reserve the next descriptor of the send queue for the doca_gpu_buf that must be sent. With this "strong" version, developer doesn't have to worry about send queue management. Multiple threads can invoke this function on the same queue to enqueue multiple packets simultaneously.
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_weak ( const doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t position, const uint32_t flags_bitmask )
- Enqueue a new packets on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the doca_gpu_buf should be placed in the send queue. It's developer responsibility to enqueue the doca_gpu_buf in sequential position with respect to other doca_gpu_buf or barriers enqueued by other CUDA threads in the queue. Multiple CUDA threads can invoke this function on the same queue to enqueue doca_gpu_buf simultaneously in different positions.
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_strong ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t flags_bitmask )
- Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. With this "strong" version, developer doesn't have to worry about send queue management. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously.
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_weak ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t position, const uint32_t flags_bitmask )
- Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the barrier should be placed in the send queue. It's developer responsibility to enqueue barrier in sequential position wrt other doca_gpu_buf or barriers avoiding empty elements in the queue. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously in different positions.
Enumerations
- enum doca_gpu_send_flags
Set of properties to enable when pushing a new element in a send queue.
Values
- DOCA_GPU_SEND_FLAG_NONE = 0
- No specific property must be enabled. Best configuration to enhance the performance.
- DOCA_GPU_SEND_FLAG_NOTIFY = 1<<0
- Return a notification when a send or wait item is actually executed. Please note this is requires the DOCA PE on the CPU side to check the Eth Txq context (send queue) and cleanup every notification (can be set via doca_eth_txq_gpu_event_notify_send_packet_register function). For this reason, this flag should be set mostly for debugging purposes as it may affect the overall performance if CPU is not fast enough to query and cleanup the notifications.
- DOCA_GPU_SEND_FLAG_NONE = 0
- No specific property must be enabled. Best configuration to enhance the performance.
- DOCA_GPU_SEND_FLAG_NOTIFY = 1<<0
- Return a notification when a send or wait item is actually executed. Please note this is requires the DOCA PE on the CPU side to check the Eth Txq context (send queue) and cleanup every notification (can be set via doca_eth_txq_gpu_event_notify_send_packet_register function). For this reason, this flag should be set mostly for debugging purposes as it may affect the overall performance if CPU is not fast enough to query and cleanup the notifications.
Functions
- __device__ doca_error_t doca_gpu_dev_eth_txq_calculate_timestamp ( const doca_gpu_eth_txq* eth_txq, const uint64_t timestamp_ns, uint64_t* wait_on_time_value )
-
Similarly to doca_eth_txq_calculate_timestamp() it returns the wait on time value to use with doca_gpu_dev_eth_txq_wait_time_enqueue_* functions. It works only if wait on time support on the txq is DOCA_ETH_WAIT_ON_TIME_TYPE_NATIVE.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- timestamp_ns
- UTC timestampt to convert
- wait_on_time_value
- Wait on time value
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_SUPPORTED - wait on time support is not NATIVE
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_strong ( doca_gpu_eth_txq* eth_txq )
-
Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_strong() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_strong() and then another doca_gpu_dev_eth_txq_commit_strong() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_strong() invoked by multiple threads.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_weak ( doca_gpu_eth_txq* eth_txq, const uint32_t elements )
-
Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_weak() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_weak() and then another doca_gpu_dev_eth_txq_commit_weak() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_weak() invoked by multiple threads.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- elements
- Number of elements pushed in the queue since last commit.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_get_info ( doca_gpu_eth_txq* eth_txq, uint32_t* curr_position, uint32_t* mask_max_position )
-
Get latest occupied position in the send queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern. Please ensure to query this function before starting to enqueue packets in weak mode. The library updated the curr_position value after every doca_gpu_dev_eth_txq_commit_*() The position index should be always masked with mask_max_position value.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- curr_position
- Next available packet position in the queue.
- mask_max_position
- Mask of the max index position usable in this queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_push ( doca_gpu_eth_txq* eth_txq )
-
Flush the queue sending packets enqueued. Must be invoked right after doca_gpu_dev_eth_txq_commit_strong() or doca_gpu_dev_eth_txq_commit_weak(). Only one thread can invoke this function.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_strong ( doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t flags_bitmask )
-
Enqueue a new packet on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Each invocation of this function will reserve the next descriptor of the send queue for the doca_gpu_buf that must be sent. With this "strong" version, developer doesn't have to worry about send queue management. Multiple threads can invoke this function on the same queue to enqueue multiple packets simultaneously.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- buf_ptr
- doca_gpu_buf to send
- nbytes
- Number of bytes to send from the doca_gpu_buf
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_weak ( const doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t position, const uint32_t flags_bitmask )
-
Enqueue a new packets on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the doca_gpu_buf should be placed in the send queue. It's developer responsibility to enqueue the doca_gpu_buf in sequential position with respect to other doca_gpu_buf or barriers enqueued by other CUDA threads in the queue. Multiple CUDA threads can invoke this function on the same queue to enqueue doca_gpu_buf simultaneously in different positions.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- buf_ptr
- doca_gpu_buf to send
- nbytes
- Number of bytes to send from the doca_gpu_buf
- position
- Position (index) of the doca_gpu_buf in the send queue.
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_strong ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t flags_bitmask )
-
Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. With this "strong" version, developer doesn't have to worry about send queue management. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- wait_on_time_value
- Wait on time value returned by doca_gpu_dev_eth_txq_calculate_timestamp or doca_eth_txq_calculate_timestamp
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_weak ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t position, const uint32_t flags_bitmask )
-
Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the barrier should be placed in the send queue. It's developer responsibility to enqueue barrier in sequential position wrt other doca_gpu_buf or barriers avoiding empty elements in the queue. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously in different positions.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- wait_on_time_value
- Wait on time value returned by doca_gpu_dev_eth_txq_calculate_timestamp or doca_eth_txq_calculate_timestamp
- position
- Position (index) of the barrier in the send queue.
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
1.16.5. DOCA GPUNetIO Device - RDMA
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Enumerations
- enum doca_gpu_dev_rdma_recv_wait_flags
- enum doca_gpu_dev_rdma_send_flags
- enum doca_gpu_dev_rdma_write_flags
Functions
- __device__ doca_error_t doca_gpu_dev_rdma_commit_strong ( doca_gpu_dev_rdma* rdma )
- Create a commit point in the RDMA Recv queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_commit_weak ( doca_gpu_dev_rdma* rdma, uint32_t num_ops )
- Create a commit point in the RDMA Recv queue - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_flush ( doca_gpu_dev_rdma* rdma )
- Wait for the completion of all the previous RDMA Write, Read or Send posted on the RDMA queue. This function is not mandatory if the application doesn't need to wait for the completion of posted RDMA operations before moving forward with other RDMA operations.
- __device__ doca_error_t doca_gpu_dev_rdma_get_info ( doca_gpu_dev_rdma* rdma, uint32_t* curr_position, uint32_t* mask_max_position )
- Get latest occupied position in the RDMA queue and max position index that can be used in the queue.
- __device__ doca_error_t doca_gpu_dev_rdma_get_recv ( doca_gpu_dev_rdma* rdma, doca_gpu_dev_rdma_r** rdma_r )
- Post a RDMA Recv operation in the RDMA GPU queue. It returns an uint64_t handler that must be used with doca_gpu_dev_rdma_recv_wait() to wait for the completion of the receive operation.
- __device__ doca_error_t doca_gpu_dev_rdma_read_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, const uint32_t flags_bitmask )
- Enqueue an RDMA Read operation in the RDMA GPU queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_read_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, const uint32_t flags_bitmask, uint32_t position )
- Enqueue an RDMA Read operation in the RDMA GPU queue - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_commit_strong ( doca_gpu_dev_rdma_r* rdma_r )
- Create a commit point in the RDMA Recv queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_commit_weak ( doca_gpu_dev_rdma_r* rdma_r, uint32_t num_ops )
- Commit the RDMA Recv queue executing the operations enqueued in it - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_get_info ( doca_gpu_dev_rdma_r* rdma_r, uint32_t* curr_position, uint32_t* mask_max_position )
- Get latest occupied position in the RDMA Recv queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_strong ( doca_gpu_dev_rdma_r* rdma_r, doca_gpu_buf* recv_buf, size_t recv_length, uint64_t recv_offset, const uint32_t flags_bitmask, uint64_t* hdl )
- Post a RDMA Recv operation in the RDMA GPU queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_wait ( doca_gpu_dev_rdma_r* rdma_r, uint64_t* hdl, const doca_gpu_dev_rdma_recv_wait_flags flags, doca_rdma_opcode ** opcode, uint32_t* imm )
- Wait for the completion of a specific RDMA Recv operation in the RDMA GPU queue.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_wait_all ( doca_gpu_dev_rdma_r* rdma_r )
- Wait for the completion of all the RDMA Recv operation in the RDMA GPU queue.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_weak ( doca_gpu_dev_rdma_r* rdma_r, doca_gpu_buf* recv_buf, size_t recv_length, uint64_t recv_offset, const uint32_t flags_bitmask, uint32_t position, uint64_t* hdl )
- Post a RDMA Recv operation in the RDMA GPU queue - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_send_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* send_buf, uint64_t send_offset, size_t src_length, uint32_t imm, const doca_gpu_dev_rdma_send_flags flags )
- Enqueue an RDMA Send operation in the RDMA GPU queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_send_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* send_buf, uint64_t send_offset, size_t src_length, uint32_t imm, const doca_gpu_dev_rdma_send_flags flags, uint32_t position )
- Enqueue an RDMA Send operation in the RDMA GPU queue - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_write_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, uint32_t imm, const doca_gpu_dev_rdma_write_flags flags )
- Enqueue an RDMA Write operation in the RDMA GPU queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_write_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, uint32_t imm, const doca_gpu_dev_rdma_write_flags flags, uint32_t position )
- Enqueue an RDMA Write operation in the RDMA GPU queue - Weak mode.
Enumerations
- enum doca_gpu_dev_rdma_recv_wait_flags
RDMA Recv wait modes
Values
- DOCA_GPU_RDMA_RECV_WAIT_FLAG_NB = 0
- Non-Blocking mode: the wait receive function doca_gpu_dev_rdma_recv_wait checks if the receive operation happened (data has been received) and exit from the function. If nothing has been received, the function doesn't block the execution.
- DOCA_GPU_RDMA_RECV_WAIT_FLAG_B = 1
- Blocking mode: the wait receive function doca_gpu_dev_rdma_recv_wait blocks the execution waiting for the receive operations to be executed.
- enum doca_gpu_dev_rdma_send_flags
RDMA Send operations modes
Values
- DOCA_GPU_RDMA_SEND_FLAG_NONE = 0
- DOCA_GPU_RDMA_SEND_FLAG_IMM = 1
- enum doca_gpu_dev_rdma_write_flags
RDMA Write operations modes
Values
- DOCA_GPU_RDMA_WRITE_FLAG_NONE = 0
- DOCA_GPU_RDMA_WRITE_FLAG_IMM = 1
Functions
- __device__ doca_error_t doca_gpu_dev_rdma_commit_strong ( doca_gpu_dev_rdma* rdma )
-
Create a commit point in the RDMA Recv queue - Strong mode.
Parameters
- rdma
- - RDMA GPU handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Only one CUDA thread can invoke this function after a sequence of doca_gpu_dev_rdma_*() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_rdma_commit_weak ( doca_gpu_dev_rdma* rdma, uint32_t num_ops )
-
Create a commit point in the RDMA Recv queue - Weak mode.
Parameters
- rdma
- - RDMA GPU handle
- num_ops
- - Number of RDMA operations enqueued since last commit.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Only one CUDA thread can invoke this function after a sequence of doca_gpu_dev_rdma_*() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_rdma_flush ( doca_gpu_dev_rdma* rdma )
-
Wait for the completion of all the previous RDMA Write, Read or Send posted on the RDMA queue. This function is not mandatory if the application doesn't need to wait for the completion of posted RDMA operations before moving forward with other RDMA operations.
Parameters
- rdma
- - RDMA GPU handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Only one CUDA thread can invoke this function after doca_gpu_dev_rdma_commit().
- __device__ doca_error_t doca_gpu_dev_rdma_get_info ( doca_gpu_dev_rdma* rdma, uint32_t* curr_position, uint32_t* mask_max_position )
-
Get latest occupied position in the RDMA queue and max position index that can be used in the queue.
Parameters
- rdma
- - RDMA GPU queue handle
- curr_position
- - Next available packet position in the queue.
- mask_max_position
- - Mask of the max index position usable in this queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Highly recommended to use in case of weak pattern. Please ensure to query this function before starting to enqueue RDMA operations in weak mode. The library updated the curr_position value after every doca_gpu_dev_rdma_commit_*() The position index should be always masked with mask_max_position value.
- __device__ doca_error_t doca_gpu_dev_rdma_get_recv ( doca_gpu_dev_rdma* rdma, doca_gpu_dev_rdma_r** rdma_r )
-
Post a RDMA Recv operation in the RDMA GPU queue. It returns an uint64_t handler that must be used with doca_gpu_dev_rdma_recv_wait() to wait for the completion of the receive operation.
Parameters
- rdma
- - RDMA GPU queue handle
- rdma_r
- - RDMA Recv GPU queue handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_rdma_read_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, const uint32_t flags_bitmask )
-
Enqueue an RDMA Read operation in the RDMA GPU queue - Strong mode.
Parameters
- rdma
- - RDMA GPU queue handle
- remote_buf
- - remote buffer GPU handle
- remote_offset
- - Bytes offset from remote buffer initial address
- local_buf
- - local buffer GPU handle
- local_offset
- - Bytes offset from local buffer initial address
- length
- - Number of bytes to read
- flags_bitmask
- - reserved for future use. Must be 0.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
RDMA operation position is derived internally by the function.
- __device__ doca_error_t doca_gpu_dev_rdma_read_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, const uint32_t flags_bitmask, uint32_t position )
-
Enqueue an RDMA Read operation in the RDMA GPU queue - Weak mode.
Parameters
- rdma
- - RDMA GPU queue handle
- remote_buf
- - remote buffer GPU handle
- remote_offset
- - Bytes offset from remote buffer initial address
- local_buf
- - local buffer GPU handle
- local_offset
- - Bytes offset from local buffer initial address
- length
- - Number of bytes to read
- flags_bitmask
- - reserved for future use. Must be 0.
- position
- - Position (index) of the read in the RDMA queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Multiple CUDA threads can invoke this function on the same RDMA queue to enqueue operations simultaneously in different positions. It's developer responsibility to enqueue the read operation in sequential position index with respect to other RDMA operations enqueued by other CUDA threads in the queue.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_commit_strong ( doca_gpu_dev_rdma_r* rdma_r )
-
Create a commit point in the RDMA Recv queue - Strong mode.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Must be invoked after enqueing multiple items in the RDMA queue with doca_gpu_dev_rdma_recv() functions. After this function the doca_gpu_dev_rdma_recv_wait() should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_rdma_recv() and then another doca_gpu_dev_rdma_recv_commit() right after. Only one CUDA thread can invoke this function after a sequence of doca_gpu_dev_rdma_recv() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_commit_weak ( doca_gpu_dev_rdma_r* rdma_r, uint32_t num_ops )
-
Commit the RDMA Recv queue executing the operations enqueued in it - Weak mode.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- num_ops
- - Number of RDMA Recv operations enqueued since last commit.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Only one CUDA thread can invoke this function after a sequence of doca_gpu_dev_rdma_*() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_get_info ( doca_gpu_dev_rdma_r* rdma_r, uint32_t* curr_position, uint32_t* mask_max_position )
-
Get latest occupied position in the RDMA Recv queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- curr_position
- - Next available packet position in the queue.
- mask_max_position
- - Mask of the max index position usable in this queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Please ensure to query this function before starting to enqueue RDMA Recv operations in weak mode. The library updated the curr_position value after every doca_gpu_dev_rdma_recv_commit_*() The position index should be always masked with mask_max_position value.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_strong ( doca_gpu_dev_rdma_r* rdma_r, doca_gpu_buf* recv_buf, size_t recv_length, uint64_t recv_offset, const uint32_t flags_bitmask, uint64_t* hdl )
-
Post a RDMA Recv operation in the RDMA GPU queue - Strong mode.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- recv_buf
- - receive buffer GPU handle
- recv_length
- - Number of bytes to receive
- recv_offset
- - Number of bytes offset where to receive the packet
- flags_bitmask
- - reserved for future use. Must be 0.
- hdl
- - RDMA Recv operation handler
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
It returns an uint64_t handler that can be used with doca_gpu_dev_rdma_recv_wait() to wait for the completion of the receive operation.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_wait ( doca_gpu_dev_rdma_r* rdma_r, uint64_t* hdl, const doca_gpu_dev_rdma_recv_wait_flags flags, doca_rdma_opcode ** opcode, uint32_t* imm )
-
Wait for the completion of a specific RDMA Recv operation in the RDMA GPU queue.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- hdl
- - RDMA Recv operation handler
- flags
- opcode
- - RDMA Recv opcode
- imm
- - Imm data received in case of RDMA Write with Imm data set
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
It wait for the completion of the RDMA Recv operation represented by the doca_gpu_rdma_recv_h handler. Only one CUDA thread can invoke this function on a specific handler.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_wait_all ( doca_gpu_dev_rdma_r* rdma_r )
-
Wait for the completion of all the RDMA Recv operation in the RDMA GPU queue.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
It doesn't return any info, it just wait for the completion of all the receives posted and commited. Can be used after doca_gpu_dev_rdma_recv_commit() and can't be used in parallel with doca_gpu_dev_rdma_recv_wait(). Only one CUDA thread can invoke this function.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_weak ( doca_gpu_dev_rdma_r* rdma_r, doca_gpu_buf* recv_buf, size_t recv_length, uint64_t recv_offset, const uint32_t flags_bitmask, uint32_t position, uint64_t* hdl )
-
Post a RDMA Recv operation in the RDMA GPU queue - Weak mode.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- recv_buf
- - receive buffer GPU handle
- recv_length
- - Number of bytes to receive
- recv_offset
- - Number of bytes offset where to receive the packet
- flags_bitmask
- - reserved for future use. Must be 0.
- position
- - Position (index) of the recv in the RDMA queue.
- hdl
- - RDMA Recv operation handler
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Multiple CUDA threads can invoke this function on the same RDMA Recv queue to enqueue operations simultaneously in different positions. It's developer responsibility to enqueue the recv operation in sequential position index with respect to other RDMA Recv operations enqueued by other CUDA threads in the queue.
- __device__ doca_error_t doca_gpu_dev_rdma_send_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* send_buf, uint64_t send_offset, size_t src_length, uint32_t imm, const doca_gpu_dev_rdma_send_flags flags )
-
Enqueue an RDMA Send operation in the RDMA GPU queue - Strong mode.
Parameters
- rdma
- - RDMA GPU queue handle
- send_buf
- - source buffer GPU handle
- send_offset
- - Bytes offset from source buffer initial address
- src_length
- - Number of bytes to send
- imm
- - Immediate 32bit value, big endian format
- flags
- - send mode from enum doca_gpu_dev_rdma_send_flags
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
RDMA operation position is derived internally by the function.
- __device__ doca_error_t doca_gpu_dev_rdma_send_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* send_buf, uint64_t send_offset, size_t src_length, uint32_t imm, const doca_gpu_dev_rdma_send_flags flags, uint32_t position )
-
Enqueue an RDMA Send operation in the RDMA GPU queue - Weak mode.
Parameters
- rdma
- - RDMA GPU queue handle
- send_buf
- - source buffer GPU handle
- send_offset
- - Bytes offset from source buffer initial address
- src_length
- imm
- flags
- position
- - Position (index) of the send in the RDMA queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Multiple CUDA threads can invoke this function on the same RDMA queue to enqueue operations simultaneously in different positions. It's developer responsibility to enqueue the send operation in sequential position index with respect to other RDMA operations enqueued by other CUDA threads in the queue.
- __device__ doca_error_t doca_gpu_dev_rdma_write_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, uint32_t imm, const doca_gpu_dev_rdma_write_flags flags )
-
Enqueue an RDMA Write operation in the RDMA GPU queue - Strong mode.
Parameters
- rdma
- - RDMA GPU queue handle
- remote_buf
- - remote buffer GPU handle
- remote_offset
- - Bytes offset from remote buffer initial address
- local_buf
- - local buffer GPU handle
- local_offset
- - Bytes offset from local buffer initial address
- length
- - Number of bytes to write
- imm
- - Immediate 32bit value, big endian format
- flags
- - write mode from enum doca_gpu_dev_rdma_write_flags
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
RDMA operation position is derived internally by the function.
- __device__ doca_error_t doca_gpu_dev_rdma_write_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, uint32_t imm, const doca_gpu_dev_rdma_write_flags flags, uint32_t position )
-
Enqueue an RDMA Write operation in the RDMA GPU queue - Weak mode.
Parameters
- rdma
- - RDMA GPU queue handle
- remote_buf
- - remote buffer GPU handle
- remote_offset
- - Bytes offset from remote buffer initial address
- local_buf
- - local buffer GPU handle
- local_offset
- - Bytes offset from local buffer initial address
- length
- - Number of bytes to write
- imm
- - Immediate 32bit value, big endian format
- flags
- - write mode from enum doca_gpu_dev_rdma_write_flags
- position
- - Position (index) of the write in the RDMA queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Multiple CUDA threads can invoke this function on the same RDMA queue to enqueue operations simultaneously in different positions. It's developer responsibility to enqueue the write operation in sequential position index with respect to other RDMA operations enqueued by other CUDA threads in the queue.
1.16.6. DOCA GPUNetIO Device - Semaphore
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Functions
- __device__ doca_error_t doca_gpu_dev_semaphore_get_custom_info_addr ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, void** custom_info )
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status ** status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_get_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status ** status )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t num_packets, uint64_t doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status_cas ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status_compare, doca_gpu_semaphore_status status_val )
Functions
- __device__ doca_error_t doca_gpu_dev_semaphore_get_custom_info_addr ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, void** custom_info )
-
Parameters
- semaphore_gpu
- idx
- DOCA GPUNetIO semaphore item index.
- custom_info
- DOCA GPUNetIO semaphore custom info pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get pointer to DOCA GPUNetIO semaphore item associated custom info.
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status ** status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get DOCA GPUNetIO semaphore packet info.
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status to check.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - if semaphore status doesn't match input status
Description
Get DOCA GPUNetIO semaphore packet info if the semaphore status matches the status provided as input parameter.
- __device__ doca_error_t doca_gpu_dev_semaphore_get_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status ** status )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get DOCA GPUNetIO semaphore status from CPU.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t num_packets, uint64_t doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status, number of packets and first doca gpu buf idx from GPU.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status )
-
Parameters
- semaphore_gpu
- idx
- DOCA GPUNetIO semaphore item index.
- status
- DOCA GPUNetIO semaphore status.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status from GPU.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status_cas ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status_compare, doca_gpu_semaphore_status status_val )
-
Parameters
- semaphore_gpu
- idx
- DOCA GPUNetIO semaphore item index.
- status_compare
- DOCA GPUNetIO semaphore status to compare before changing to the new value.
- status_val
- DOCA GPUNetIO semaphore status new value if status comparison return true.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_PERMITTED - if status_compare doesn't match with actual semaphore status
Description
Set DOCA GPUNetIO semaphore status from GPU using an atomic CAS operation.
1.16.7. DOCA GPUNetIO Device - Source
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Functions
- __device__ doca_error_t doca_gpu_dev_buf_get_addr ( const doca_gpu_buf* buf, uintptr_t* addr )
- Retrieve memory address of the packet stored in the doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_buf_get_buf ( const doca_gpu_buf_arr* buf_arr_gpu, const uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
- Retrieve a specific doca_gpu_buf pointer from doca_gpu_buf_arr object.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf ( doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
- Retrieve a specific doca_gpu_buf pointer from Ethernet receive object.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_timestamp ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint64_t* timestamp_ns )
- Return packet timestamp associated to a received doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_thread ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
- Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-thread. It's developer responsibility to ensure each thread invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_weak ( doca_gpu_eth_txq* eth_txq, const uint32_t elements )
- Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_weak() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_weak() and then another doca_gpu_dev_eth_txq_commit_weak() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_weak() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_eth_txq_get_info ( doca_gpu_eth_txq* eth_txq, uint32_t* curr_position, uint32_t* mask_max_position )
- Get latest occupied position in the send queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern. Please ensure to query this function before starting to enqueue packets in weak mode. The library updated the curr_position value after every doca_gpu_dev_eth_txq_commit_*() The position index should be always masked with mask_max_position value.
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_weak ( const doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t position, const uint32_t flags_bitmask )
- Enqueue a new packets on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the doca_gpu_buf should be placed in the send queue. It's developer responsibility to enqueue the doca_gpu_buf in sequential position with respect to other doca_gpu_buf or barriers enqueued by other CUDA threads in the queue. Multiple CUDA threads can invoke this function on the same queue to enqueue doca_gpu_buf simultaneously in different positions.
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_weak ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t position, const uint32_t flags_bitmask )
- Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the barrier should be placed in the send queue. It's developer responsibility to enqueue barrier in sequential position wrt other doca_gpu_buf or barriers avoiding empty elements in the queue. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously in different positions.
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t num_packets, uint64_t doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status )
Functions
- __device__ doca_error_t doca_gpu_dev_buf_get_addr ( const doca_gpu_buf* buf, uintptr_t* addr )
-
Retrieve memory address of the packet stored in the doca_gpu_buf.
Parameters
- buf
- doca_gpu_buf
- addr
- Memory address of the packet in the doca_gpu_buf object
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_buf_get_buf ( const doca_gpu_buf_arr* buf_arr_gpu, const uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
-
Retrieve a specific doca_gpu_buf pointer from doca_gpu_buf_arr object.
Parameters
- buf_arr_gpu
- doca_gpu_buf_arr object.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- buf
- doca_gpu_buf pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf ( doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
-
Retrieve a specific doca_gpu_buf pointer from Ethernet receive object.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- buf
- doca_gpu_buf pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_timestamp ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint64_t* timestamp_ns )
-
Return packet timestamp associated to a received doca_gpu_buf.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- timestamp_ns
- Received timestamp of the packet in doca_gpu_buf
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_thread ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
-
Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-thread. It's developer responsibility to ensure each thread invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- max_rx_pkts
- Max number of packets to receive. Can't be 0.
- timeout_ns
- Max number of ns to wait before returning. If 0, timeout is not considered.
- num_rx_pkts
- Number of actually received packets.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf used to receive the very first packet.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_weak ( doca_gpu_eth_txq* eth_txq, const uint32_t elements )
-
Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_weak() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_weak() and then another doca_gpu_dev_eth_txq_commit_weak() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_weak() invoked by multiple threads.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- elements
- Number of elements pushed in the queue since last commit.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_get_info ( doca_gpu_eth_txq* eth_txq, uint32_t* curr_position, uint32_t* mask_max_position )
-
Get latest occupied position in the send queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern. Please ensure to query this function before starting to enqueue packets in weak mode. The library updated the curr_position value after every doca_gpu_dev_eth_txq_commit_*() The position index should be always masked with mask_max_position value.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- curr_position
- Next available packet position in the queue.
- mask_max_position
- Mask of the max index position usable in this queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_weak ( const doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t position, const uint32_t flags_bitmask )
-
Enqueue a new packets on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the doca_gpu_buf should be placed in the send queue. It's developer responsibility to enqueue the doca_gpu_buf in sequential position with respect to other doca_gpu_buf or barriers enqueued by other CUDA threads in the queue. Multiple CUDA threads can invoke this function on the same queue to enqueue doca_gpu_buf simultaneously in different positions.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- buf_ptr
- doca_gpu_buf to send
- nbytes
- Number of bytes to send from the doca_gpu_buf
- position
- Position (index) of the doca_gpu_buf in the send queue.
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_weak ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t position, const uint32_t flags_bitmask )
-
Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the barrier should be placed in the send queue. It's developer responsibility to enqueue barrier in sequential position wrt other doca_gpu_buf or barriers avoiding empty elements in the queue. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously in different positions.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- wait_on_time_value
- Wait on time value returned by doca_gpu_dev_eth_txq_calculate_timestamp or doca_eth_txq_calculate_timestamp
- position
- Position (index) of the barrier in the send queue.
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status to check.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - if semaphore status doesn't match input status
Description
Get DOCA GPUNetIO semaphore packet info if the semaphore status matches the status provided as input parameter.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t num_packets, uint64_t doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status, number of packets and first doca gpu buf idx from GPU.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status )
-
Parameters
- semaphore_gpu
- idx
- DOCA GPUNetIO semaphore item index.
- status
- DOCA GPUNetIO semaphore status.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status from GPU.
1.16.1. DOCA GPUNetIO Device - Buffer
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Functions
- __device__ doca_error_t doca_gpu_dev_buf_get_addr ( const doca_gpu_buf* buf, uintptr_t* addr )
- Retrieve memory address of the packet stored in the doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_buf_get_buf ( const doca_gpu_buf_arr* buf_arr_gpu, const uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
- Retrieve a specific doca_gpu_buf pointer from doca_gpu_buf_arr object.
Functions
- __device__ doca_error_t doca_gpu_dev_buf_get_addr ( const doca_gpu_buf* buf, uintptr_t* addr )
-
Retrieve memory address of the packet stored in the doca_gpu_buf.
Parameters
- buf
- doca_gpu_buf
- addr
- Memory address of the packet in the doca_gpu_buf object
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_buf_get_buf ( const doca_gpu_buf_arr* buf_arr_gpu, const uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
-
Retrieve a specific doca_gpu_buf pointer from doca_gpu_buf_arr object.
Parameters
- buf_arr_gpu
- doca_gpu_buf_arr object.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- buf
- doca_gpu_buf pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
1.16.2. DOCA GPUNetIO Device - Definitions
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Enumerations
- enum doca_gpu_send_flags
Enumerations
- enum doca_gpu_send_flags
Set of properties to enable when pushing a new element in a send queue.
Values
- DOCA_GPU_SEND_FLAG_NONE = 0
- No specific property must be enabled. Best configuration to enhance the performance.
- DOCA_GPU_SEND_FLAG_NOTIFY = 1<<0
- Return a notification when a send or wait item is actually executed. Please note this is requires the DOCA PE on the CPU side to check the Eth Txq context (send queue) and cleanup every notification (can be set via doca_eth_txq_gpu_event_notify_send_packet_register function). For this reason, this flag should be set mostly for debugging purposes as it may affect the overall performance if CPU is not fast enough to query and cleanup the notifications.
- DOCA_GPU_SEND_FLAG_NONE = 0
- No specific property must be enabled. Best configuration to enhance the performance.
- DOCA_GPU_SEND_FLAG_NOTIFY = 1<<0
- Return a notification when a send or wait item is actually executed. Please note this is requires the DOCA PE on the CPU side to check the Eth Txq context (send queue) and cleanup every notification (can be set via doca_eth_txq_gpu_event_notify_send_packet_register function). For this reason, this flag should be set mostly for debugging purposes as it may affect the overall performance if CPU is not fast enough to query and cleanup the notifications.
1.16.3. DOCA GPUNetIO Device - Ethernet RXQ
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Functions
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf ( doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
- Retrieve a specific doca_gpu_buf pointer from Ethernet receive object.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_bytes ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint32_t* nbytes )
- Return packet bytes associated to a received doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_timestamp ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint64_t* timestamp_ns )
- Return packet timestamp associated to a received doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_block ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
- Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-block. It's developer responsibility to ensure each block invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If maximum number of packets is 0, it's ignored and only the timeout indicates the exit condition. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition. If both are 0, the function will never return.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_thread ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
- Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-thread. It's developer responsibility to ensure each thread invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_warp ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
- Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-warp. It's developer responsibility to ensure each warp invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
Functions
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf ( doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
-
Retrieve a specific doca_gpu_buf pointer from Ethernet receive object.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- buf
- doca_gpu_buf pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_bytes ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint32_t* nbytes )
-
Return packet bytes associated to a received doca_gpu_buf.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- nbytes
- Received number of bytes of the packet in doca_gpu_buf
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_timestamp ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint64_t* timestamp_ns )
-
Return packet timestamp associated to a received doca_gpu_buf.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- timestamp_ns
- Received timestamp of the packet in doca_gpu_buf
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_block ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
-
Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-block. It's developer responsibility to ensure each block invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If maximum number of packets is 0, it's ignored and only the timeout indicates the exit condition. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition. If both are 0, the function will never return.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- max_rx_pkts
- Max number of packets to receive.
- timeout_ns
- Max number of ns to wait before returning. If 0, timeout is not considered.
- num_rx_pkts
- Number of actually received packets.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf used to receive the very first packet.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_thread ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
-
Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-thread. It's developer responsibility to ensure each thread invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- max_rx_pkts
- Max number of packets to receive. Can't be 0.
- timeout_ns
- Max number of ns to wait before returning. If 0, timeout is not considered.
- num_rx_pkts
- Number of actually received packets.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf used to receive the very first packet.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_warp ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
-
Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-warp. It's developer responsibility to ensure each warp invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- max_rx_pkts
- Max number of packets to receive. Can't be 0.
- timeout_ns
- Max number of ns to wait before returning. If 0, timeout is not considered.
- num_rx_pkts
- Number of actually received packets.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf used to receive the very first packet.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
1.16.4. DOCA GPUNetIO Device - Ethernet TXQ
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Enumerations
- enum doca_gpu_send_flags
Functions
- __device__ doca_error_t doca_gpu_dev_eth_txq_calculate_timestamp ( const doca_gpu_eth_txq* eth_txq, const uint64_t timestamp_ns, uint64_t* wait_on_time_value )
- Similarly to doca_eth_txq_calculate_timestamp() it returns the wait on time value to use with doca_gpu_dev_eth_txq_wait_time_enqueue_* functions. It works only if wait on time support on the txq is DOCA_ETH_WAIT_ON_TIME_TYPE_NATIVE.
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_strong ( doca_gpu_eth_txq* eth_txq )
- Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_strong() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_strong() and then another doca_gpu_dev_eth_txq_commit_strong() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_strong() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_weak ( doca_gpu_eth_txq* eth_txq, const uint32_t elements )
- Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_weak() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_weak() and then another doca_gpu_dev_eth_txq_commit_weak() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_weak() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_eth_txq_get_info ( doca_gpu_eth_txq* eth_txq, uint32_t* curr_position, uint32_t* mask_max_position )
- Get latest occupied position in the send queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern. Please ensure to query this function before starting to enqueue packets in weak mode. The library updated the curr_position value after every doca_gpu_dev_eth_txq_commit_*() The position index should be always masked with mask_max_position value.
- __device__ doca_error_t doca_gpu_dev_eth_txq_push ( doca_gpu_eth_txq* eth_txq )
- Flush the queue sending packets enqueued. Must be invoked right after doca_gpu_dev_eth_txq_commit_strong() or doca_gpu_dev_eth_txq_commit_weak(). Only one thread can invoke this function.
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_strong ( doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t flags_bitmask )
- Enqueue a new packet on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Each invocation of this function will reserve the next descriptor of the send queue for the doca_gpu_buf that must be sent. With this "strong" version, developer doesn't have to worry about send queue management. Multiple threads can invoke this function on the same queue to enqueue multiple packets simultaneously.
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_weak ( const doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t position, const uint32_t flags_bitmask )
- Enqueue a new packets on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the doca_gpu_buf should be placed in the send queue. It's developer responsibility to enqueue the doca_gpu_buf in sequential position with respect to other doca_gpu_buf or barriers enqueued by other CUDA threads in the queue. Multiple CUDA threads can invoke this function on the same queue to enqueue doca_gpu_buf simultaneously in different positions.
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_strong ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t flags_bitmask )
- Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. With this "strong" version, developer doesn't have to worry about send queue management. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously.
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_weak ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t position, const uint32_t flags_bitmask )
- Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the barrier should be placed in the send queue. It's developer responsibility to enqueue barrier in sequential position wrt other doca_gpu_buf or barriers avoiding empty elements in the queue. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously in different positions.
Enumerations
- enum doca_gpu_send_flags
Set of properties to enable when pushing a new element in a send queue.
Values
- DOCA_GPU_SEND_FLAG_NONE = 0
- No specific property must be enabled. Best configuration to enhance the performance.
- DOCA_GPU_SEND_FLAG_NOTIFY = 1<<0
- Return a notification when a send or wait item is actually executed. Please note this is requires the DOCA PE on the CPU side to check the Eth Txq context (send queue) and cleanup every notification (can be set via doca_eth_txq_gpu_event_notify_send_packet_register function). For this reason, this flag should be set mostly for debugging purposes as it may affect the overall performance if CPU is not fast enough to query and cleanup the notifications.
- DOCA_GPU_SEND_FLAG_NONE = 0
- No specific property must be enabled. Best configuration to enhance the performance.
- DOCA_GPU_SEND_FLAG_NOTIFY = 1<<0
- Return a notification when a send or wait item is actually executed. Please note this is requires the DOCA PE on the CPU side to check the Eth Txq context (send queue) and cleanup every notification (can be set via doca_eth_txq_gpu_event_notify_send_packet_register function). For this reason, this flag should be set mostly for debugging purposes as it may affect the overall performance if CPU is not fast enough to query and cleanup the notifications.
Functions
- __device__ doca_error_t doca_gpu_dev_eth_txq_calculate_timestamp ( const doca_gpu_eth_txq* eth_txq, const uint64_t timestamp_ns, uint64_t* wait_on_time_value )
-
Similarly to doca_eth_txq_calculate_timestamp() it returns the wait on time value to use with doca_gpu_dev_eth_txq_wait_time_enqueue_* functions. It works only if wait on time support on the txq is DOCA_ETH_WAIT_ON_TIME_TYPE_NATIVE.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- timestamp_ns
- UTC timestampt to convert
- wait_on_time_value
- Wait on time value
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_SUPPORTED - wait on time support is not NATIVE
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_strong ( doca_gpu_eth_txq* eth_txq )
-
Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_strong() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_strong() and then another doca_gpu_dev_eth_txq_commit_strong() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_strong() invoked by multiple threads.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_weak ( doca_gpu_eth_txq* eth_txq, const uint32_t elements )
-
Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_weak() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_weak() and then another doca_gpu_dev_eth_txq_commit_weak() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_weak() invoked by multiple threads.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- elements
- Number of elements pushed in the queue since last commit.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_get_info ( doca_gpu_eth_txq* eth_txq, uint32_t* curr_position, uint32_t* mask_max_position )
-
Get latest occupied position in the send queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern. Please ensure to query this function before starting to enqueue packets in weak mode. The library updated the curr_position value after every doca_gpu_dev_eth_txq_commit_*() The position index should be always masked with mask_max_position value.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- curr_position
- Next available packet position in the queue.
- mask_max_position
- Mask of the max index position usable in this queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_push ( doca_gpu_eth_txq* eth_txq )
-
Flush the queue sending packets enqueued. Must be invoked right after doca_gpu_dev_eth_txq_commit_strong() or doca_gpu_dev_eth_txq_commit_weak(). Only one thread can invoke this function.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_strong ( doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t flags_bitmask )
-
Enqueue a new packet on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Each invocation of this function will reserve the next descriptor of the send queue for the doca_gpu_buf that must be sent. With this "strong" version, developer doesn't have to worry about send queue management. Multiple threads can invoke this function on the same queue to enqueue multiple packets simultaneously.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- buf_ptr
- doca_gpu_buf to send
- nbytes
- Number of bytes to send from the doca_gpu_buf
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_weak ( const doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t position, const uint32_t flags_bitmask )
-
Enqueue a new packets on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the doca_gpu_buf should be placed in the send queue. It's developer responsibility to enqueue the doca_gpu_buf in sequential position with respect to other doca_gpu_buf or barriers enqueued by other CUDA threads in the queue. Multiple CUDA threads can invoke this function on the same queue to enqueue doca_gpu_buf simultaneously in different positions.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- buf_ptr
- doca_gpu_buf to send
- nbytes
- Number of bytes to send from the doca_gpu_buf
- position
- Position (index) of the doca_gpu_buf in the send queue.
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_strong ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t flags_bitmask )
-
Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. With this "strong" version, developer doesn't have to worry about send queue management. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- wait_on_time_value
- Wait on time value returned by doca_gpu_dev_eth_txq_calculate_timestamp or doca_eth_txq_calculate_timestamp
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_weak ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t position, const uint32_t flags_bitmask )
-
Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the barrier should be placed in the send queue. It's developer responsibility to enqueue barrier in sequential position wrt other doca_gpu_buf or barriers avoiding empty elements in the queue. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously in different positions.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- wait_on_time_value
- Wait on time value returned by doca_gpu_dev_eth_txq_calculate_timestamp or doca_eth_txq_calculate_timestamp
- position
- Position (index) of the barrier in the send queue.
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
1.16.5. DOCA GPUNetIO Device - RDMA
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Enumerations
- enum doca_gpu_dev_rdma_recv_wait_flags
- enum doca_gpu_dev_rdma_send_flags
- enum doca_gpu_dev_rdma_write_flags
Functions
- __device__ doca_error_t doca_gpu_dev_rdma_commit_strong ( doca_gpu_dev_rdma* rdma )
- Create a commit point in the RDMA Recv queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_commit_weak ( doca_gpu_dev_rdma* rdma, uint32_t num_ops )
- Create a commit point in the RDMA Recv queue - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_flush ( doca_gpu_dev_rdma* rdma )
- Wait for the completion of all the previous RDMA Write, Read or Send posted on the RDMA queue. This function is not mandatory if the application doesn't need to wait for the completion of posted RDMA operations before moving forward with other RDMA operations.
- __device__ doca_error_t doca_gpu_dev_rdma_get_info ( doca_gpu_dev_rdma* rdma, uint32_t* curr_position, uint32_t* mask_max_position )
- Get latest occupied position in the RDMA queue and max position index that can be used in the queue.
- __device__ doca_error_t doca_gpu_dev_rdma_get_recv ( doca_gpu_dev_rdma* rdma, doca_gpu_dev_rdma_r** rdma_r )
- Post a RDMA Recv operation in the RDMA GPU queue. It returns an uint64_t handler that must be used with doca_gpu_dev_rdma_recv_wait() to wait for the completion of the receive operation.
- __device__ doca_error_t doca_gpu_dev_rdma_read_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, const uint32_t flags_bitmask )
- Enqueue an RDMA Read operation in the RDMA GPU queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_read_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, const uint32_t flags_bitmask, uint32_t position )
- Enqueue an RDMA Read operation in the RDMA GPU queue - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_commit_strong ( doca_gpu_dev_rdma_r* rdma_r )
- Create a commit point in the RDMA Recv queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_commit_weak ( doca_gpu_dev_rdma_r* rdma_r, uint32_t num_ops )
- Commit the RDMA Recv queue executing the operations enqueued in it - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_get_info ( doca_gpu_dev_rdma_r* rdma_r, uint32_t* curr_position, uint32_t* mask_max_position )
- Get latest occupied position in the RDMA Recv queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_strong ( doca_gpu_dev_rdma_r* rdma_r, doca_gpu_buf* recv_buf, size_t recv_length, uint64_t recv_offset, const uint32_t flags_bitmask, uint64_t* hdl )
- Post a RDMA Recv operation in the RDMA GPU queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_wait ( doca_gpu_dev_rdma_r* rdma_r, uint64_t* hdl, const doca_gpu_dev_rdma_recv_wait_flags flags, doca_rdma_opcode ** opcode, uint32_t* imm )
- Wait for the completion of a specific RDMA Recv operation in the RDMA GPU queue.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_wait_all ( doca_gpu_dev_rdma_r* rdma_r )
- Wait for the completion of all the RDMA Recv operation in the RDMA GPU queue.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_weak ( doca_gpu_dev_rdma_r* rdma_r, doca_gpu_buf* recv_buf, size_t recv_length, uint64_t recv_offset, const uint32_t flags_bitmask, uint32_t position, uint64_t* hdl )
- Post a RDMA Recv operation in the RDMA GPU queue - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_send_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* send_buf, uint64_t send_offset, size_t src_length, uint32_t imm, const doca_gpu_dev_rdma_send_flags flags )
- Enqueue an RDMA Send operation in the RDMA GPU queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_send_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* send_buf, uint64_t send_offset, size_t src_length, uint32_t imm, const doca_gpu_dev_rdma_send_flags flags, uint32_t position )
- Enqueue an RDMA Send operation in the RDMA GPU queue - Weak mode.
- __device__ doca_error_t doca_gpu_dev_rdma_write_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, uint32_t imm, const doca_gpu_dev_rdma_write_flags flags )
- Enqueue an RDMA Write operation in the RDMA GPU queue - Strong mode.
- __device__ doca_error_t doca_gpu_dev_rdma_write_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, uint32_t imm, const doca_gpu_dev_rdma_write_flags flags, uint32_t position )
- Enqueue an RDMA Write operation in the RDMA GPU queue - Weak mode.
Enumerations
- enum doca_gpu_dev_rdma_recv_wait_flags
RDMA Recv wait modes
Values
- DOCA_GPU_RDMA_RECV_WAIT_FLAG_NB = 0
- Non-Blocking mode: the wait receive function doca_gpu_dev_rdma_recv_wait checks if the receive operation happened (data has been received) and exit from the function. If nothing has been received, the function doesn't block the execution.
- DOCA_GPU_RDMA_RECV_WAIT_FLAG_B = 1
- Blocking mode: the wait receive function doca_gpu_dev_rdma_recv_wait blocks the execution waiting for the receive operations to be executed.
- enum doca_gpu_dev_rdma_send_flags
RDMA Send operations modes
Values
- DOCA_GPU_RDMA_SEND_FLAG_NONE = 0
- DOCA_GPU_RDMA_SEND_FLAG_IMM = 1
- enum doca_gpu_dev_rdma_write_flags
RDMA Write operations modes
Values
- DOCA_GPU_RDMA_WRITE_FLAG_NONE = 0
- DOCA_GPU_RDMA_WRITE_FLAG_IMM = 1
Functions
- __device__ doca_error_t doca_gpu_dev_rdma_commit_strong ( doca_gpu_dev_rdma* rdma )
-
Create a commit point in the RDMA Recv queue - Strong mode.
Parameters
- rdma
- - RDMA GPU handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Only one CUDA thread can invoke this function after a sequence of doca_gpu_dev_rdma_*() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_rdma_commit_weak ( doca_gpu_dev_rdma* rdma, uint32_t num_ops )
-
Create a commit point in the RDMA Recv queue - Weak mode.
Parameters
- rdma
- - RDMA GPU handle
- num_ops
- - Number of RDMA operations enqueued since last commit.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Only one CUDA thread can invoke this function after a sequence of doca_gpu_dev_rdma_*() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_rdma_flush ( doca_gpu_dev_rdma* rdma )
-
Wait for the completion of all the previous RDMA Write, Read or Send posted on the RDMA queue. This function is not mandatory if the application doesn't need to wait for the completion of posted RDMA operations before moving forward with other RDMA operations.
Parameters
- rdma
- - RDMA GPU handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Only one CUDA thread can invoke this function after doca_gpu_dev_rdma_commit().
- __device__ doca_error_t doca_gpu_dev_rdma_get_info ( doca_gpu_dev_rdma* rdma, uint32_t* curr_position, uint32_t* mask_max_position )
-
Get latest occupied position in the RDMA queue and max position index that can be used in the queue.
Parameters
- rdma
- - RDMA GPU queue handle
- curr_position
- - Next available packet position in the queue.
- mask_max_position
- - Mask of the max index position usable in this queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Highly recommended to use in case of weak pattern. Please ensure to query this function before starting to enqueue RDMA operations in weak mode. The library updated the curr_position value after every doca_gpu_dev_rdma_commit_*() The position index should be always masked with mask_max_position value.
- __device__ doca_error_t doca_gpu_dev_rdma_get_recv ( doca_gpu_dev_rdma* rdma, doca_gpu_dev_rdma_r** rdma_r )
-
Post a RDMA Recv operation in the RDMA GPU queue. It returns an uint64_t handler that must be used with doca_gpu_dev_rdma_recv_wait() to wait for the completion of the receive operation.
Parameters
- rdma
- - RDMA GPU queue handle
- rdma_r
- - RDMA Recv GPU queue handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_rdma_read_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, const uint32_t flags_bitmask )
-
Enqueue an RDMA Read operation in the RDMA GPU queue - Strong mode.
Parameters
- rdma
- - RDMA GPU queue handle
- remote_buf
- - remote buffer GPU handle
- remote_offset
- - Bytes offset from remote buffer initial address
- local_buf
- - local buffer GPU handle
- local_offset
- - Bytes offset from local buffer initial address
- length
- - Number of bytes to read
- flags_bitmask
- - reserved for future use. Must be 0.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
RDMA operation position is derived internally by the function.
- __device__ doca_error_t doca_gpu_dev_rdma_read_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, const uint32_t flags_bitmask, uint32_t position )
-
Enqueue an RDMA Read operation in the RDMA GPU queue - Weak mode.
Parameters
- rdma
- - RDMA GPU queue handle
- remote_buf
- - remote buffer GPU handle
- remote_offset
- - Bytes offset from remote buffer initial address
- local_buf
- - local buffer GPU handle
- local_offset
- - Bytes offset from local buffer initial address
- length
- - Number of bytes to read
- flags_bitmask
- - reserved for future use. Must be 0.
- position
- - Position (index) of the read in the RDMA queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Multiple CUDA threads can invoke this function on the same RDMA queue to enqueue operations simultaneously in different positions. It's developer responsibility to enqueue the read operation in sequential position index with respect to other RDMA operations enqueued by other CUDA threads in the queue.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_commit_strong ( doca_gpu_dev_rdma_r* rdma_r )
-
Create a commit point in the RDMA Recv queue - Strong mode.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Must be invoked after enqueing multiple items in the RDMA queue with doca_gpu_dev_rdma_recv() functions. After this function the doca_gpu_dev_rdma_recv_wait() should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_rdma_recv() and then another doca_gpu_dev_rdma_recv_commit() right after. Only one CUDA thread can invoke this function after a sequence of doca_gpu_dev_rdma_recv() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_commit_weak ( doca_gpu_dev_rdma_r* rdma_r, uint32_t num_ops )
-
Commit the RDMA Recv queue executing the operations enqueued in it - Weak mode.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- num_ops
- - Number of RDMA Recv operations enqueued since last commit.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Only one CUDA thread can invoke this function after a sequence of doca_gpu_dev_rdma_*() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_get_info ( doca_gpu_dev_rdma_r* rdma_r, uint32_t* curr_position, uint32_t* mask_max_position )
-
Get latest occupied position in the RDMA Recv queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- curr_position
- - Next available packet position in the queue.
- mask_max_position
- - Mask of the max index position usable in this queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Please ensure to query this function before starting to enqueue RDMA Recv operations in weak mode. The library updated the curr_position value after every doca_gpu_dev_rdma_recv_commit_*() The position index should be always masked with mask_max_position value.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_strong ( doca_gpu_dev_rdma_r* rdma_r, doca_gpu_buf* recv_buf, size_t recv_length, uint64_t recv_offset, const uint32_t flags_bitmask, uint64_t* hdl )
-
Post a RDMA Recv operation in the RDMA GPU queue - Strong mode.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- recv_buf
- - receive buffer GPU handle
- recv_length
- - Number of bytes to receive
- recv_offset
- - Number of bytes offset where to receive the packet
- flags_bitmask
- - reserved for future use. Must be 0.
- hdl
- - RDMA Recv operation handler
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
It returns an uint64_t handler that can be used with doca_gpu_dev_rdma_recv_wait() to wait for the completion of the receive operation.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_wait ( doca_gpu_dev_rdma_r* rdma_r, uint64_t* hdl, const doca_gpu_dev_rdma_recv_wait_flags flags, doca_rdma_opcode ** opcode, uint32_t* imm )
-
Wait for the completion of a specific RDMA Recv operation in the RDMA GPU queue.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- hdl
- - RDMA Recv operation handler
- flags
- opcode
- - RDMA Recv opcode
- imm
- - Imm data received in case of RDMA Write with Imm data set
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
It wait for the completion of the RDMA Recv operation represented by the doca_gpu_rdma_recv_h handler. Only one CUDA thread can invoke this function on a specific handler.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_wait_all ( doca_gpu_dev_rdma_r* rdma_r )
-
Wait for the completion of all the RDMA Recv operation in the RDMA GPU queue.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
It doesn't return any info, it just wait for the completion of all the receives posted and commited. Can be used after doca_gpu_dev_rdma_recv_commit() and can't be used in parallel with doca_gpu_dev_rdma_recv_wait(). Only one CUDA thread can invoke this function.
- __device__ doca_error_t doca_gpu_dev_rdma_recv_weak ( doca_gpu_dev_rdma_r* rdma_r, doca_gpu_buf* recv_buf, size_t recv_length, uint64_t recv_offset, const uint32_t flags_bitmask, uint32_t position, uint64_t* hdl )
-
Post a RDMA Recv operation in the RDMA GPU queue - Weak mode.
Parameters
- rdma_r
- - RDMA Recv GPU queue handle
- recv_buf
- - receive buffer GPU handle
- recv_length
- - Number of bytes to receive
- recv_offset
- - Number of bytes offset where to receive the packet
- flags_bitmask
- - reserved for future use. Must be 0.
- position
- - Position (index) of the recv in the RDMA queue.
- hdl
- - RDMA Recv operation handler
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Multiple CUDA threads can invoke this function on the same RDMA Recv queue to enqueue operations simultaneously in different positions. It's developer responsibility to enqueue the recv operation in sequential position index with respect to other RDMA Recv operations enqueued by other CUDA threads in the queue.
- __device__ doca_error_t doca_gpu_dev_rdma_send_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* send_buf, uint64_t send_offset, size_t src_length, uint32_t imm, const doca_gpu_dev_rdma_send_flags flags )
-
Enqueue an RDMA Send operation in the RDMA GPU queue - Strong mode.
Parameters
- rdma
- - RDMA GPU queue handle
- send_buf
- - source buffer GPU handle
- send_offset
- - Bytes offset from source buffer initial address
- src_length
- - Number of bytes to send
- imm
- - Immediate 32bit value, big endian format
- flags
- - send mode from enum doca_gpu_dev_rdma_send_flags
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
RDMA operation position is derived internally by the function.
- __device__ doca_error_t doca_gpu_dev_rdma_send_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* send_buf, uint64_t send_offset, size_t src_length, uint32_t imm, const doca_gpu_dev_rdma_send_flags flags, uint32_t position )
-
Enqueue an RDMA Send operation in the RDMA GPU queue - Weak mode.
Parameters
- rdma
- - RDMA GPU queue handle
- send_buf
- - source buffer GPU handle
- send_offset
- - Bytes offset from source buffer initial address
- src_length
- imm
- flags
- position
- - Position (index) of the send in the RDMA queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Multiple CUDA threads can invoke this function on the same RDMA queue to enqueue operations simultaneously in different positions. It's developer responsibility to enqueue the send operation in sequential position index with respect to other RDMA operations enqueued by other CUDA threads in the queue.
- __device__ doca_error_t doca_gpu_dev_rdma_write_strong ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, uint32_t imm, const doca_gpu_dev_rdma_write_flags flags )
-
Enqueue an RDMA Write operation in the RDMA GPU queue - Strong mode.
Parameters
- rdma
- - RDMA GPU queue handle
- remote_buf
- - remote buffer GPU handle
- remote_offset
- - Bytes offset from remote buffer initial address
- local_buf
- - local buffer GPU handle
- local_offset
- - Bytes offset from local buffer initial address
- length
- - Number of bytes to write
- imm
- - Immediate 32bit value, big endian format
- flags
- - write mode from enum doca_gpu_dev_rdma_write_flags
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
RDMA operation position is derived internally by the function.
- __device__ doca_error_t doca_gpu_dev_rdma_write_weak ( doca_gpu_dev_rdma* rdma, doca_gpu_buf* remote_buf, uint64_t remote_offset, doca_gpu_buf* local_buf, uint64_t local_offset, size_t length, uint32_t imm, const doca_gpu_dev_rdma_write_flags flags, uint32_t position )
-
Enqueue an RDMA Write operation in the RDMA GPU queue - Weak mode.
Parameters
- rdma
- - RDMA GPU queue handle
- remote_buf
- - remote buffer GPU handle
- remote_offset
- - Bytes offset from remote buffer initial address
- local_buf
- - local buffer GPU handle
- local_offset
- - Bytes offset from local buffer initial address
- length
- - Number of bytes to write
- imm
- - Immediate 32bit value, big endian format
- flags
- - write mode from enum doca_gpu_dev_rdma_write_flags
- position
- - Position (index) of the write in the RDMA queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
Multiple CUDA threads can invoke this function on the same RDMA queue to enqueue operations simultaneously in different positions. It's developer responsibility to enqueue the write operation in sequential position index with respect to other RDMA operations enqueued by other CUDA threads in the queue.
1.16.6. DOCA GPUNetIO Device - Semaphore
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Functions
- __device__ doca_error_t doca_gpu_dev_semaphore_get_custom_info_addr ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, void** custom_info )
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status ** status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_get_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status ** status )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t num_packets, uint64_t doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status_cas ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status_compare, doca_gpu_semaphore_status status_val )
Functions
- __device__ doca_error_t doca_gpu_dev_semaphore_get_custom_info_addr ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, void** custom_info )
-
Parameters
- semaphore_gpu
- idx
- DOCA GPUNetIO semaphore item index.
- custom_info
- DOCA GPUNetIO semaphore custom info pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get pointer to DOCA GPUNetIO semaphore item associated custom info.
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status ** status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get DOCA GPUNetIO semaphore packet info.
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status to check.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - if semaphore status doesn't match input status
Description
Get DOCA GPUNetIO semaphore packet info if the semaphore status matches the status provided as input parameter.
- __device__ doca_error_t doca_gpu_dev_semaphore_get_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status ** status )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Get DOCA GPUNetIO semaphore status from CPU.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t num_packets, uint64_t doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status, number of packets and first doca gpu buf idx from GPU.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status )
-
Parameters
- semaphore_gpu
- idx
- DOCA GPUNetIO semaphore item index.
- status
- DOCA GPUNetIO semaphore status.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status from GPU.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status_cas ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status_compare, doca_gpu_semaphore_status status_val )
-
Parameters
- semaphore_gpu
- idx
- DOCA GPUNetIO semaphore item index.
- status_compare
- DOCA GPUNetIO semaphore status to compare before changing to the new value.
- status_val
- DOCA GPUNetIO semaphore status new value if status comparison return true.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_PERMITTED - if status_compare doesn't match with actual semaphore status
Description
Set DOCA GPUNetIO semaphore status from GPU using an atomic CAS operation.
1.16.7. DOCA GPUNetIO Device - Source
[ DOCA GPUNetIO Engine ]
DOCA GPUNetio device library header to be included in CUDA .cu files. All functions listed here must be called from a GPU CUDA kernel, they won't work from CPU. All functions listed here should be considered as experimental. For more details please refer to the user guide on DOCA devzone.
Functions
- __device__ doca_error_t doca_gpu_dev_buf_get_addr ( const doca_gpu_buf* buf, uintptr_t* addr )
- Retrieve memory address of the packet stored in the doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_buf_get_buf ( const doca_gpu_buf_arr* buf_arr_gpu, const uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
- Retrieve a specific doca_gpu_buf pointer from doca_gpu_buf_arr object.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf ( doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
- Retrieve a specific doca_gpu_buf pointer from Ethernet receive object.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_timestamp ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint64_t* timestamp_ns )
- Return packet timestamp associated to a received doca_gpu_buf.
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_thread ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
- Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-thread. It's developer responsibility to ensure each thread invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_weak ( doca_gpu_eth_txq* eth_txq, const uint32_t elements )
- Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_weak() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_weak() and then another doca_gpu_dev_eth_txq_commit_weak() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_weak() invoked by multiple threads.
- __device__ doca_error_t doca_gpu_dev_eth_txq_get_info ( doca_gpu_eth_txq* eth_txq, uint32_t* curr_position, uint32_t* mask_max_position )
- Get latest occupied position in the send queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern. Please ensure to query this function before starting to enqueue packets in weak mode. The library updated the curr_position value after every doca_gpu_dev_eth_txq_commit_*() The position index should be always masked with mask_max_position value.
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_weak ( const doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t position, const uint32_t flags_bitmask )
- Enqueue a new packets on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the doca_gpu_buf should be placed in the send queue. It's developer responsibility to enqueue the doca_gpu_buf in sequential position with respect to other doca_gpu_buf or barriers enqueued by other CUDA threads in the queue. Multiple CUDA threads can invoke this function on the same queue to enqueue doca_gpu_buf simultaneously in different positions.
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_weak ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t position, const uint32_t flags_bitmask )
- Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the barrier should be placed in the send queue. It's developer responsibility to enqueue barrier in sequential position wrt other doca_gpu_buf or barriers avoiding empty elements in the queue. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously in different positions.
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t num_packets, uint64_t doca_buf_idx_start )
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status )
Functions
- __device__ doca_error_t doca_gpu_dev_buf_get_addr ( const doca_gpu_buf* buf, uintptr_t* addr )
-
Retrieve memory address of the packet stored in the doca_gpu_buf.
Parameters
- buf
- doca_gpu_buf
- addr
- Memory address of the packet in the doca_gpu_buf object
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_buf_get_buf ( const doca_gpu_buf_arr* buf_arr_gpu, const uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
-
Retrieve a specific doca_gpu_buf pointer from doca_gpu_buf_arr object.
Parameters
- buf_arr_gpu
- doca_gpu_buf_arr object.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- buf
- doca_gpu_buf pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf ( doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, doca_gpu_buf** buf )
-
Retrieve a specific doca_gpu_buf pointer from Ethernet receive object.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- buf
- doca_gpu_buf pointer.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_get_buf_timestamp ( const doca_gpu_eth_rxq* eth_rxq, uint64_t doca_gpu_buf_idx, uint64_t* timestamp_ns )
-
Return packet timestamp associated to a received doca_gpu_buf.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf to retrieve from the receive queue.
- timestamp_ns
- Received timestamp of the packet in doca_gpu_buf
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_rxq_receive_thread ( doca_gpu_eth_rxq* eth_rxq, uint32_t max_rx_pkts, uint64_t timeout_ns, uint32_t* num_rx_pkts, uint64_t* doca_gpu_buf_idx )
-
Receive packets through the GPU handler of an Ethernet rxq object. This function must be invoked per-thread. It's developer responsibility to ensure each thread invoking this function operates on a different Ethernet receive object. Function will return upon receiving the indicated maximum number of packets or waiting the indicated number of nanoseconds. If timeout is 0, it's ignored and only the maximum number of packets indicates the exit condition.
Parameters
- eth_rxq
- GPU handler for Ethernet receive queue.
- max_rx_pkts
- Max number of packets to receive. Can't be 0.
- timeout_ns
- Max number of ns to wait before returning. If 0, timeout is not considered.
- num_rx_pkts
- Number of actually received packets.
- doca_gpu_buf_idx
- Index of the doca_gpu_buf used to receive the very first packet.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_commit_weak ( doca_gpu_eth_txq* eth_txq, const uint32_t elements )
-
Create a commit point in the send queue. Must be invoked after enqueing multiple items in the send queue with doca_gpu_dev_eth_txq_*_enqueue_weak() functions. After this function the doca_gpu_dev_eth_txq_push should be invoked. It's discouraged but not prohibited to invoke more doca_gpu_dev_eth_txq_send_enqueue_weak() and then another doca_gpu_dev_eth_txq_commit_weak() right after. Only one thread can invoke this function after a sequence of doca_gpu_dev_eth_txq_send_enqueue_weak() invoked by multiple threads.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- elements
- Number of elements pushed in the queue since last commit.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_get_info ( doca_gpu_eth_txq* eth_txq, uint32_t* curr_position, uint32_t* mask_max_position )
-
Get latest occupied position in the send queue and max position index that can be used in the queue. Highly recommended to use in case of weak send pattern. Please ensure to query this function before starting to enqueue packets in weak mode. The library updated the curr_position value after every doca_gpu_dev_eth_txq_commit_*() The position index should be always masked with mask_max_position value.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- curr_position
- Next available packet position in the queue.
- mask_max_position
- Mask of the max index position usable in this queue.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_send_enqueue_weak ( const doca_gpu_eth_txq* eth_txq, const doca_gpu_buf* buf_ptr, const uint32_t nbytes, const uint32_t position, const uint32_t flags_bitmask )
-
Enqueue a new packets on the send queue using the GPU handler of an Ethernet txq object. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the doca_gpu_buf should be placed in the send queue. It's developer responsibility to enqueue the doca_gpu_buf in sequential position with respect to other doca_gpu_buf or barriers enqueued by other CUDA threads in the queue. Multiple CUDA threads can invoke this function on the same queue to enqueue doca_gpu_buf simultaneously in different positions.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- buf_ptr
- doca_gpu_buf to send
- nbytes
- Number of bytes to send from the doca_gpu_buf
- position
- Position (index) of the doca_gpu_buf in the send queue.
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_eth_txq_wait_time_enqueue_weak ( doca_gpu_eth_txq* eth_txq, const uint64_t wait_on_time_value, const uint32_t position, const uint32_t flags_bitmask )
-
Enqueue a time barrier in the send queue: packets enqueue after this point will be sent by the network card in the future at the specified timestamp. This function must be invoked per-thread. Reserved for advanced developers as it allows to specify at which position the barrier should be placed in the send queue. It's developer responsibility to enqueue barrier in sequential position wrt other doca_gpu_buf or barriers avoiding empty elements in the queue. Multiple threads can invoke this function on the same queue to enqueue barriers simultaneously in different positions.
Parameters
- eth_txq
- GPU handler for Ethernet send queue.
- wait_on_time_value
- Wait on time value returned by doca_gpu_dev_eth_txq_calculate_timestamp or doca_eth_txq_calculate_timestamp
- position
- Position (index) of the barrier in the send queue.
- flags_bitmask
- Combination of flags from the enum doca_gpu_send_flags.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - arguments are invalid.
Description
- __device__ doca_error_t doca_gpu_dev_semaphore_get_packet_info_status ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t* num_packets, uint64_t* doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status to check.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - if semaphore status doesn't match input status
Description
Get DOCA GPUNetIO semaphore packet info if the semaphore status matches the status provided as input parameter.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_packet_info ( const doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status, uint32_t num_packets, uint64_t doca_buf_idx_start )
-
Parameters
- semaphore_gpu
- idx
- Semaphore item index.
- status
- Semaphore status.
- num_packets
- Number of packets.
- doca_buf_idx_start
- First doca buf index.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status, number of packets and first doca gpu buf idx from GPU.
- __device__ doca_error_t doca_gpu_dev_semaphore_set_status ( doca_gpu_semaphore_gpu* semaphore_gpu, uint32_t idx, doca_gpu_semaphore_status status )
-
Parameters
- semaphore_gpu
- idx
- DOCA GPUNetIO semaphore item index.
- status
- DOCA GPUNetIO semaphore status.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
Description
Set DOCA GPUNetIO semaphore status from GPU.
Define functions for internal and external logging management
To add DOCA trace level compile with "-D DOCA_LOGGING_ALLOW_TRACE"
Classes
-
class doca_log_registrator
- Registers log source on program start.
Defines
- #define DOCA_LOG ( level, format, ... )
- Generates an application log message.
- #define DOCA_LOG_CRIT ( format, ... )
- Generates a CRITICAL application log message.
- #define DOCA_LOG_DBG ( format, ... )
- Generates a DEBUG application log message.
- #define DOCA_LOG_ERR ( format, ... )
- Generates an ERROR application log message.
- #define DOCA_LOG_INFO ( format, ... )
- Generates an INFO application log message.
- #define DOCA_LOG_TRC ( format, ... ) do { \ } while (0)
- Generates a TRACE application log message.
- #define DOCA_LOG_WARN ( format, ... )
- Generates a WARNING application log message.
Typedefs
- typedef void ( *log_flush_callback )( char* buf )
- logging backend flush() handler
Enumerations
- enum doca_log_level
- log levels, sorted by verbosity level from high to low
Functions
- doca_error_t doca_log ( uint32_t level, int source, const char* fname, int line, const char* func, const char* format, ... )
- Generates an application log message.
- doca_error_t doca_log_backend_create_standard ( void )
- Create default, non configurable backend for application messages.
- doca_error_t doca_log_backend_create_with_buf ( char* buf, size_t capacity, log_flush_callback handler, doca_log_backend** backend )
- Create a logging backend for application messages with a char buffer stream.
- doca_error_t doca_log_backend_create_with_buf_sdk ( char* buf, size_t capacity, log_flush_callback handler, doca_log_backend** backend )
- Create a logging backend with a char buffer stream for SDK messages.
- doca_error_t doca_log_backend_create_with_fd ( int fd, doca_log_backend** backend )
- Create a logging backend for application messages with an fd stream.
- doca_error_t doca_log_backend_create_with_fd_sdk ( int fd, doca_log_backend** backend )
- Create a logging backend with an fd stream for SDK messages.
- doca_error_t doca_log_backend_create_with_file ( FILE* fptr, doca_log_backend** backend )
- Create a logging backend for application messages with a FILE* stream.
- doca_error_t doca_log_backend_create_with_file_sdk ( FILE* fptr, doca_log_backend** backend )
- Create a logging backend with a FILE* stream for SDK messages.
- doca_error_t doca_log_backend_create_with_syslog ( const char* name, doca_log_backend** backend )
- Create a logging backend for application messages with a syslog output.
- doca_error_t doca_log_backend_create_with_syslog_sdk ( const char* name, doca_log_backend** backend )
- Create a logging backend with a syslog output for SDK messages.
- doca_error_t doca_log_backend_set_level_lower_limit ( doca_log_backend* backend, uint32_t level )
- Set the lower log level of a specific logging backend for application messages.
- doca_error_t doca_log_backend_set_level_lower_limit_strict ( doca_log_backend* backend )
- Mark the lower log level limit of a specific logging backend for application messages as strict.
- doca_error_t doca_log_backend_set_level_upper_limit ( doca_log_backend* backend, uint32_t upper_limit )
- Set the upper log level limit of a specific logging backend for application messages.
- doca_error_t doca_log_backend_set_level_upper_limit_strict ( doca_log_backend* backend )
- Mark the upper log level limit of a specific application logging backend for application messages as strict.
- doca_error_t doca_log_backend_set_sdk_level ( doca_log_backend* backend, uint32_t level )
- Set the log level limit for SDK logging backends.
- DOCA_EXPERIMENTAL uint32_t doca_log_level_get_global_lower_limit ( void )
- Get the global log level for application messages.
- DOCA_EXPERIMENTAL uint32_t doca_log_level_get_global_sdk_limit ( void )
- Get the global log level for SDK messages.
- DOCA_EXPERIMENTAL uint32_t doca_log_level_get_global_upper_limit ( void )
- Get the global upper log level for application messages.
- doca_error_t doca_log_level_set_global_lower_limit ( uint32_t level )
- Set the log level of ALL logging backends for application messages.
- doca_error_t doca_log_level_set_global_sdk_limit ( uint32_t level )
- Set the log level of ALL logging backends for SDK messages.
- doca_error_t doca_log_level_set_global_upper_limit ( uint32_t upper_limit )
- Set the log upper level limit of ALL logging backends for application messages.
- doca_error_t doca_log_register_source ( const char* source_name, int* source )
- Register a log source.
- doca_error_t doca_log_unregister_source ( int source )
- Unregister a log source.
Defines
- #define DOCA_LOG ( level, format, ... )
The DOCA_LOG() is the main log function for logging. This call affects the performance. Consider using the specific level DOCA_LOG for better code readability (i.e. DOCA_LOG_ERR).
Value
doca_log(level, log_source, __FILE__, __LINE__, __func__, format, ##__VA_ARGS__)
Parameters
- level
- Log level enum DOCA_LOG_LEVEL (just ERROR, WARNING...).
- format
- printf(3) arguments, format and variables.
- ...
- #define DOCA_LOG_CRIT ( format, ... )
Will generate critical application log. This call affects the performance.
Value
DOCA_LOG(DOCA_LOG_LEVEL_CRIT, format, ##__VA_ARGS__)
Parameters
- format
- printf(3) arguments, format and variables.
- ...
- #define DOCA_LOG_DBG ( format, ... )
Will generate debug application log. This call affects the performance.
Value
DOCA_LOG(DOCA_LOG_LEVEL_DEBUG, format, ##__VA_ARGS__)
Parameters
- format
- printf(3) arguments, format and variables.
- ...
- #define DOCA_LOG_ERR ( format, ... )
Will generate error application log. This call affects the performance.
Value
DOCA_LOG(DOCA_LOG_LEVEL_ERROR, format, ##__VA_ARGS__)
Parameters
- format
- printf(3) arguments, format and variables.
- ...
- #define DOCA_LOG_INFO ( format, ... )
Will generate info application log. This call affects the performance.
Value
DOCA_LOG(DOCA_LOG_LEVEL_INFO, format, ##__VA_ARGS__)
Parameters
- format
- printf(3) arguments, format and variables.
- ...
- #define DOCA_LOG_TRC ( format, ... ) do { \ } while (0)
To show the logs define DOCA_LOGGING_ALLOW_TRACE in the compilation variables. This will not effect performance if compiled without DOCA_LOGGING_ALLOW_TRACE, as it will be removed by the compiler.
Will generate trace application log. This call affects the performance.
Parameters
- format
- printf(3) arguments, format and variables.
- ...
- #define DOCA_LOG_WARN ( format, ... )
Will generate warning application log. This call affects the performance.
Value
DOCA_LOG(DOCA_LOG_LEVEL_WARNING, format, ##__VA_ARGS__)
Parameters
- format
- printf(3) arguments, format and variables.
- ...
Typedefs
Enumerations
- enum doca_log_level
-
Values
- DOCA_LOG_LEVEL_DISABLE = 10
- Disable log messages
- DOCA_LOG_LEVEL_CRIT = 20
- Critical log level
- DOCA_LOG_LEVEL_ERROR = 30
- Error log level
- DOCA_LOG_LEVEL_WARNING = 40
- Warning log level
- DOCA_LOG_LEVEL_INFO = 50
- Info log level
- DOCA_LOG_LEVEL_DEBUG = 60
- Debug log level
- DOCA_LOG_LEVEL_TRACE = 70
- Trace log level
Functions
- doca_error_t doca_log ( uint32_t level, int source, const char* fname, int line, const char* func, const char* format, ... )
-
Generates an application log message.
Parameters
- level
- Log level enum DOCA_LOG_LEVEL.
- source
- The log source identifier defined by doca_log_register_source.
- fname
- The file name this log originated from.
- line
- The line number this log originated from.
- func
- The function name this log originated from.
- format
- printf(3) arguments, format and variables.
Returns
DOCA error code.
Description
This should not be used, please prefer using DOCA_LOG.
- doca_error_t doca_log_backend_create_standard ( void )
-
Create default, non configurable backend for application messages.
Returns
DOCA error code.
Description
Creates a set of 2 backends for application messages: stdout shall print the range from global lower level up to DOCA_LOG_LEVEL_INFO stderr shall print the range from DOCA_LOG_LEVEL_WARNING up to global upper level
- doca_error_t doca_log_backend_create_with_buf ( char* buf, size_t capacity, log_flush_callback handler, doca_log_backend** backend )
-
Create a logging backend for application messages with a char buffer stream.
Parameters
- buf
- The char buffer (char *) for the logging backend stream.
- capacity
- Maximal amount of chars that could be written to the stream.
- handler
- Handler to be called when the log record should be flushed from the stream.
- backend
- Logging backend that wraps the given buffer (only valid if no error occurred).
Returns
DOCA error code.
Description
Creates a new logging backend for application messages. The logging backend will write each log record at the beginning of this buffer and call the handler.
- doca_error_t doca_log_backend_create_with_buf_sdk ( char* buf, size_t capacity, log_flush_callback handler, doca_log_backend** backend )
-
Create a logging backend with a char buffer stream for SDK messages.
Parameters
- buf
- The char buffer (char *) for the logging backend stream.
- capacity
- Maximal amount of chars that could be written to the stream.
- handler
- Handler to be called when the log record should be flushed from the stream.
- backend
- Logging backend that wraps the given buffer (only valid if no error occurred).
Returns
DOCA error code.
Description
Creates a new logging backend. The logging backend will write each log record at the beginning of this buffer.
- doca_error_t doca_log_backend_create_with_fd ( int fd, doca_log_backend** backend )
-
Create a logging backend for application messages with an fd stream.
Parameters
- fd
- The file descriptor (int) for the logging backend.
- backend
- Logging backend that wraps the given fd (only valid if no error occurred).
Returns
DOCA error code.
Description
Creates a new logging backend for application messages.
- doca_error_t doca_log_backend_create_with_fd_sdk ( int fd, doca_log_backend** backend )
-
Create a logging backend with an fd stream for SDK messages.
Parameters
- fd
- The file descriptor (int) for the logging backend.
- backend
- Logging backend that wraps the given fd (only valid if no error occurred).
Returns
DOCA error code.
Description
Creates a new logging backend.
- doca_error_t doca_log_backend_create_with_file ( FILE* fptr, doca_log_backend** backend )
-
Create a logging backend for application messages with a FILE* stream.
Parameters
- fptr
- The FILE * for the logging backend stream.
- backend
- Logging backend that wraps the given fptr (only valid if no error occurred).
Returns
DOCA error code.
Description
Creates a new logging backend for application messages.
- doca_error_t doca_log_backend_create_with_file_sdk ( FILE* fptr, doca_log_backend** backend )
-
Create a logging backend with a FILE* stream for SDK messages.
Parameters
- fptr
- The FILE * for the logging backend stream.
- backend
- Logging backend that wraps the given fptr (only valid if no error occurred).
Returns
DOCA error code.
Description
Creates a new logging backend.
- doca_error_t doca_log_backend_create_with_syslog ( const char* name, doca_log_backend** backend )
-
Create a logging backend for application messages with a syslog output.
Parameters
- name
- The syslog name for the logging backend.
- backend
- Logging backend that exposes the desired syslog functionality (only valid if no error occurred).
Returns
DOCA error code.
Description
Creates a new logging backend for application messages.
- doca_error_t doca_log_backend_create_with_syslog_sdk ( const char* name, doca_log_backend** backend )
-
Create a logging backend with a syslog output for SDK messages.
Parameters
- name
- The syslog name for the logging backend.
- backend
- Logging backend that exposes the desired syslog functionality (only valid if no error occurred).
Returns
DOCA error code.
Description
Creates a new logging backend.
- doca_error_t doca_log_backend_set_level_lower_limit ( doca_log_backend* backend, uint32_t level )
-
Set the lower log level of a specific logging backend for application messages.
Parameters
- backend
- Logging backend to update.
- level
- Log level enum DOCA_LOG_LEVEL.
Returns
DOCA error code.
Description
Dynamically change the lower log level of the given logging backend, any application message with verbosity level equal or above this level will be shown.
- doca_error_t doca_log_backend_set_level_lower_limit_strict ( doca_log_backend* backend )
-
Mark the lower log level limit of a specific logging backend for application messages as strict.
Parameters
- backend
- Logging backend to update.
Returns
DOCA error code.
Description
Mark the lower log level limit of a specific logging backend for application messages as strict, preventing it from being lowered by any future log level changes, both global and direct.
- doca_error_t doca_log_backend_set_level_upper_limit ( doca_log_backend* backend, uint32_t upper_limit )
-
Set the upper log level limit of a specific logging backend for application messages.
Parameters
- backend
- Logging backend to update.
- upper_limit
- Log level enum DOCA_LOG_LEVEL.
Returns
DOCA error code.
Description
Dynamically change the upper log level limit of the given logging backend, any application message with verbosity level above this level will not be shown.
- doca_error_t doca_log_backend_set_level_upper_limit_strict ( doca_log_backend* backend )
-
Mark the upper log level limit of a specific application logging backend for application messages as strict.
Parameters
- backend
- Logging backend to update.
Returns
DOCA error code.
Description
Mark the upper log level limit of a specific logging backend for application messages as strict, preventing it from being raised by any future log level changes, both global and direct.
- doca_error_t doca_log_backend_set_sdk_level ( doca_log_backend* backend, uint32_t level )
-
Set the log level limit for SDK logging backends.
Parameters
- backend
- SDK logging backend to update.
- level
- Log level enum DOCA_LOG_LEVEL.
Returns
DOCA error code.
Description
Dynamically change the log level limit of the given SDK logging backend, any log under this level will not be shown.
- DOCA_EXPERIMENTAL uint32_t doca_log_level_get_global_lower_limit ( void )
-
Get the global log level for application messages.
Returns
Log level enum DOCA_LOG_LEVEL.
Description
Dynamically query for the global lower log level, any application message with verbosity level equal or above this level will be shown. The global lower level is used as the initial value when a new logging backend for application messages is created.
- DOCA_EXPERIMENTAL uint32_t doca_log_level_get_global_sdk_limit ( void )
-
Get the global log level for SDK messages.
Returns
Log level enum DOCA_LOG_LEVEL.
Description
Dynamically query for the global log level, any SDK message with verbosity level equal or above this level will be shown. The global lower level is used as the initial value when a new logging backend for SDK messages is created.
- DOCA_EXPERIMENTAL uint32_t doca_log_level_get_global_upper_limit ( void )
-
Get the global upper log level for application messages.
Returns
Log level enum DOCA_LOG_LEVEL.
Description
Dynamically query for the global upper log level, any application message with verbosity level above this level will not be shown. The global upper level is used as the initial value when a new logging backend for application messages is created.
- doca_error_t doca_log_level_set_global_lower_limit ( uint32_t level )
-
Set the log level of ALL logging backends for application messages.
Parameters
- level
- Log level enum DOCA_LOG_LEVEL.
Returns
DOCA error code.
Description
Dynamically change the log level of ALL the logging backends for application messages, any application message with verbosity level equal or above this level will be shown. Newly created logging backends for application messages will use this as their default lower log level limit.
Default value of the global lower level limit is DOCA_LOG_LEVEL_INFO.
- doca_error_t doca_log_level_set_global_sdk_limit ( uint32_t level )
-
Set the log level of ALL logging backends for SDK messages.
Parameters
- level
- Log level enum DOCA_LOG_LEVEL.
Returns
DOCA error code.
Description
Dynamically change the log level of ALL the logging backends for SDK messages, any SDK message with verbosity level equal or above this level will be shown. Newly created logging backends for SDK messages will use this as their default log level limit.
Default value of the level limit is DOCA_LOG_LEVEL_INFO.
- doca_error_t doca_log_level_set_global_upper_limit ( uint32_t upper_limit )
-
Set the log upper level limit of ALL logging backends for application messages.
Parameters
- upper_limit
- Log level enum DOCA_LOG_LEVEL.
Returns
DOCA error code.
Description
Dynamically change the log upper level limit of ALL the application logging backends, any application message with verbosity level above this level will not be shown. Newly created logging backends for application messages will use this as their default upper log level limit.
Default value of the global upper level limit is DOCA_LOG_LEVEL_CRIT.
- doca_error_t doca_log_register_source ( const char* source_name, int* source )
-
Register a log source.
Parameters
- source_name
- The string identifying the log source. Should be in an hierarchic form (i.e. DPI::Parser).
- source
- Source identifier that was allocated to this log source name (only valid if no error occurred).
Returns
DOCA error code.
Description
Will return the identifier associated with the log source. Log source is used to describe the logging module of the messages in that source file.
Note:Recommended to only be used via DOCA_LOG_REGISTER.
- doca_error_t doca_log_unregister_source ( int source )
-
Unregister a log source.
Parameters
- source
- The source identifier of source to be unregistered, as allocated by doca_log_register_source.
Returns
DOCA error code.
Description
Unregisters a given log source as part of the teardown process of the running program.
Note:Used automatically via DOCA_LOG_REGISTER, not recommended to call it directly.
Modules
DOCA PCC Device
DOCA PCC Host
1.18.1. DOCA PCC Device
[ DOCA PCC ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Modules
-
DOCA PCC Device Algorithm Access
-
DOCA PCC Device Common
-
DOCA PCC Device Event
-
DOCA PCC Device Notification Point
-
DOCA PCC Device Services
-
DOCA PCC Device Utilities
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
- #define DOCA_PCC_DEV_ALGO_INDEX_INTERNAL (0xF)
- Reserved algo index for internal algo provided by the lib.
- #define DOCA_PCC_DEV_ALGO_SLOT_INTERNAL (0xF)
- Reserved algo slot for internal algo provided by the lib.
- #define DOCA_PCC_DEV_DEFAULT_RATE
- Default rate. The user overrides the default in the user algo function.
- #define DOCA_PCC_DEV_LOG_MAX_RATE (20)
- defines the fixed point fraction size of the rate limiter
- #define DOCA_PCC_DEV_MAX_NUM_ALGOS (8)
- Max number of algos supported by the lib.
- #define DOCA_PCC_DEV_MAX_NUM_COUNTERS_PER_ALGO (0xF)
- Max number of counters per algo supported by the lib.
- #define DOCA_PCC_DEV_MAX_NUM_PARAMS_PER_ALGO (0x1E)
- Max number of parameters per algo supported by the lib.
- #define DOCA_PCC_DEV_MAX_NUM_PORTS (4)
- Max number of NIC ports supported by the lib.
- #define DOCA_PCC_DEV_MAX_NUM_USER_SLOTS (8)
- Max number of algo slots supported by the lib.
- #define DOCA_PCC_DEV_MAX_RATE
- Max rate in rate limiter fixed point.
- #define DOCA_PCC_DEV_TX_FLAG_ACK_EXPECTED (1 << 0)
- TX Flag: Ack expected.
- #define DOCA_PCC_DEV_TX_FLAG_OVERLOADED (1 << 1)
- TX Flag: Overloaded:.
- #define DOCA_PCC_DEV_TX_FLAG_RTT_REQ_SENT (1 << 2)
- TX Flag: RTT packet sent.
Enumerations
- enum doca_pcc_dev_event_type_enum
- CC event type.
- enum doca_pcc_dev_nack_event_sub_type_enum
- CC Nack event subtypes.
Functions
- DOCA_STABLE void doca_pcc_dev_default_internal_algo ( doca_pcc_dev_algo_ctxt_t* algo_ctxt, doca_pcc_dev_event_t* event, const doca_pcc_dev_attr_t* attr, doca_pcc_dev_results_t* results )
- Implements the internal CC algorithm provided by the lib.
- DOCA_STABLE void doca_pcc_dev_user_algo ( doca_pcc_dev_algo_ctxt_t* algo_ctxt, doca_pcc_dev_event_t* event, const doca_pcc_dev_attr_t* attr, doca_pcc_dev_results_t* results )
- Entry point to the user algorithm handling code.
- DOCA_STABLE void doca_pcc_dev_user_init ( uint32_t* disable_event_bitmask )
- Entry point to the user one time initialization code.
- doca_pcc_dev_error_t doca_pcc_dev_user_set_algo_params ( uint32_t port_num, uint32_t algo_slot, uint32_t param_id_base, uint32_t param_num, const uint32_t* new_param_values, uint32_t* params )
- User callback executed then parameters are set.
Defines
- #define DOCA_DPA_DEVICE
-
Note:
Must be defined before the first API use/include of DOCA
- #define DOCA_PCC_DEV_ALGO_INDEX_INTERNAL (0xF)
-
- #define DOCA_PCC_DEV_ALGO_SLOT_INTERNAL (0xF)
-
- #define DOCA_PCC_DEV_DEFAULT_RATE
-
Value
((DOCA_PCC_DEV_MAX_RATE >> 8) > (1) ? (DOCA_PCC_DEV_MAX_RATE >> 8) : (1))
- #define DOCA_PCC_DEV_LOG_MAX_RATE (20)
-
- #define DOCA_PCC_DEV_MAX_NUM_ALGOS (8)
-
- #define DOCA_PCC_DEV_MAX_NUM_COUNTERS_PER_ALGO (0xF)
-
- #define DOCA_PCC_DEV_MAX_NUM_PARAMS_PER_ALGO (0x1E)
-
- #define DOCA_PCC_DEV_MAX_NUM_PORTS (4)
-
- #define DOCA_PCC_DEV_MAX_NUM_USER_SLOTS (8)
-
- #define DOCA_PCC_DEV_MAX_RATE
-
Value
(1U << DOCA_PCC_DEV_LOG_MAX_RATE)
- #define DOCA_PCC_DEV_TX_FLAG_ACK_EXPECTED (1 << 0)
-
- #define DOCA_PCC_DEV_TX_FLAG_OVERLOADED (1 << 1)
-
- #define DOCA_PCC_DEV_TX_FLAG_RTT_REQ_SENT (1 << 2)
-
Enumerations
- enum doca_pcc_dev_event_type_enum
-
Values
- DOCA_PCC_DEV_EVNT_NULL = 0
- Unspecified event type
- DOCA_PCC_DEV_EVNT_FW = 1
- Deprecated - not used
- DOCA_PCC_DEV_EVNT_ROCE_CNP = 2
- RoCE CNP (Congestion Notification Packet) received
- DOCA_PCC_DEV_EVNT_ROCE_TX = 3
- TX packet burst transition ended
- DOCA_PCC_DEV_EVNT_ROCE_ACK = 4
- RoCE ACK Packet received
- DOCA_PCC_DEV_EVNT_ROCE_NACK = 5
- RoCE NACK Packet received
- DOCA_PCC_DEV_EVNT_RTT = 6
- RTT probe response packet event
- enum doca_pcc_dev_nack_event_sub_type_enum
-
Values
- DOCA_PCC_DEV_NACK_EVNT_NULL = 0
- Unspecified NACK type
- DOCA_PCC_DEV_NACK_EVNT_RNR = 1
- RNR (Receiver Not Ready) NACK received
- DOCA_PCC_DEV_NACK_EVNT_OOS = 2
- OOS (Out of Sequence) NACK received
- DOCA_PCC_DEV_NACK_EVNT_DUP_READ = 3
- Duplicated Read (with same PSN) NACK received
Functions
- DOCA_STABLE void doca_pcc_dev_default_internal_algo ( doca_pcc_dev_algo_ctxt_t* algo_ctxt, doca_pcc_dev_event_t* event, const doca_pcc_dev_attr_t* attr, doca_pcc_dev_results_t* results )
-
Implements the internal CC algorithm provided by the lib.
Parameters
- algo_ctxt
- -
- event
- -
- attr
- -
- results
- -
Returns
void.
Description
The lib provides an internal built-in CC algorithm implementation. The user may call this function for flows with algo_slot that is not set by the user (An unknown algo_slot can be the result of running without algo negotiation)
See also:
See also:
See also:
See also:
- DOCA_STABLE void doca_pcc_dev_user_algo ( doca_pcc_dev_algo_ctxt_t* algo_ctxt, doca_pcc_dev_event_t* event, const doca_pcc_dev_attr_t* attr, doca_pcc_dev_results_t* results )
-
Entry point to the user algorithm handling code.
Parameters
- algo_ctxt
- - pointer to user context for this flow (restored from previous iteration)
- event
- - pointer to event data struct to be used with getter functions
- attr
- - information about event like algo type
- results
- - new rate information to be written to HW. The rate is expressed as a 20b fixed point number in range (0 , 1]
Returns
void.
Description
This code handles a single event. it receives the algorithm context, the event information (opaque struct), and some attributes (algo id), and returns the PCC rate The event info should not be used directly through the struct. It is recommended to use the supplied "getter" functions (doca_pcc_dev_event.h) to help generate more future compatible code if event information placement changes
- DOCA_STABLE void doca_pcc_dev_user_init ( uint32_t* disable_event_bitmask )
-
Entry point to the user one time initialization code.
Parameters
- disable_event_bitmask
- - a bitmaks of events that should be discarded and not passed to the event processing code
Returns
void.
Description
This is called on PCC process load and should initialize the data of all user algorithms.
- doca_pcc_dev_error_t doca_pcc_dev_user_set_algo_params ( uint32_t port_num, uint32_t algo_slot, uint32_t param_id_base, uint32_t param_num, const uint32_t* new_param_values, uint32_t* params )
-
User callback executed then parameters are set.
Parameters
- port_num
- - index of the port
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot" if possible it should be equal to the algo_idx
- param_id_base
- - id of the first parameter that was changed.
- param_num
- - number of all parameters that were changed
- new_param_values
- - pointer to an array which holds param_num number of new values for parameters
- params
- - pointer to an array which holds beginning of the current parameters to be changed
Returns
- DOCA_PCC_DEV_STATUS_OK: Parameters were set DOCA_PCC_DEV_STATUS_FAIL: the values (one or more) are not legal. No parameters were changed
Description
Called when the parameter change was set externally. The implementation should: Check the given new_parameters values. If those are correct from the algorithm perspective, assign them to the given parameter array.
DOCA PCC Device Algorithm Access
DOCA PCC Device Common
DOCA PCC Device Event
DOCA PCC Device Services
DOCA PCC Device Utilities
DOCA PCC Device Notification Point
1.18.1.1. DOCA PCC Device Algorithm Access
[ DOCA PCC Device ]
Classes
-
struct doca_pcc_dev_algo_meta_data
- This struct provides meta data for a pcc user algo.
Functions
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_counter ( uint32_t algo_idx, uint32_t counter_id, uint32_t max_value, uint32_t permissions, uint32_t counter_desc_size, uint64_t counter_desc_addr )
- Initialize a single counter for an algo.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_metadata ( uint32_t algo_idx, const doca_pcc_dev_algo_meta_data* user_def, uint32_t param_num, uint32_t counter_num )
- Initialize the algo database.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_param ( uint32_t algo_idx, uint32_t param_id, uint32_t default_value, uint32_t max_value, uint32_t min_value, uint32_t permissions, uint32_t param_desc_size, uint64_t param_desc_addr )
- Initialize a single parameter for an algo.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_index ( uint32_t port_num, uint32_t algo_slot )
- Get identifier of a specific algo and specific port.
- DOCA_STABLE uint32_t* doca_pcc_dev_get_algo_params ( uint32_t port_num, uint32_t algo_slot )
- Get pointer to param array of a specific algo and specific port.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_params_num ( uint32_t port_num, uint32_t algo_slot )
- Get number of params supported per algo on the port.
- DOCA_STABLE uint32_t* doca_pcc_dev_get_counters ( uint32_t port_num, uint32_t algo_slot )
- Get pointer to counter array of a specific algo and specific port.
- DOCA_STABLE uint32_t doca_pcc_dev_get_counters_num ( uint32_t port_num, uint32_t algo_slot )
- Get number of counters supported per algo on the port.
- doca_pcc_dev_error_t doca_pcc_dev_init_algo_slot ( uint32_t portid, uint32_t algo_slot, uint32_t algo_idx, uint32_t algo_en )
- Initialize the algo per port database.
Functions
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_counter ( uint32_t algo_idx, uint32_t counter_id, uint32_t max_value, uint32_t permissions, uint32_t counter_desc_size, uint64_t counter_desc_addr )
-
Initialize a single counter for an algo.
Parameters
- algo_idx
- - Algo identifier.
- counter_id
- - counter id (from 0 to doca_pcc_dev_algo_init_metadata(...).counter_num)
- max_value
- - max value that allowed for the counter.
- permissions
- - If 1 allows value update, if 0 update is disabled.
- counter_desc_size
- - The size in bytes for the counter descriptor string field
- counter_desc_addr
- - A pointer to the counter descriptor string field.
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes a single counter (counterid) for a specific algo (algo_idx) The counter_id should be in the bounds declared by doca_pcc_dev_algo_init_metadata(...) The counter info (e.g. description) is "global" to the algo on all ports.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_metadata ( uint32_t algo_idx, const doca_pcc_dev_algo_meta_data* user_def, uint32_t param_num, uint32_t counter_num )
-
Initialize the algo database.
Parameters
- algo_idx
- - algo index.
- user_def
- - basic version info + pointer and size of algo description string
- param_num
- - max number of params (will be used to reserve param space)
- counter_num
- - max number of counters (will be used to reserve counter space)
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes an algo data-structure. Each algorithm has in index (not to be confused with the doca_pcc_dev_algo_meta_data::algo_id) Algo database includes a metadata area containing basic algo information, and a params and counters metadata area. The number of parameters and counters is configurable at init time. The space allocated for the algo data-structure using this function is visible to the PCC infrastructure. This is required to allow the infrastructure to read/update param / counter information directly when handling PPCC MADs or commands. The user can use additional memory by allocating global variables
This function should be called once per algo during init.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_param ( uint32_t algo_idx, uint32_t param_id, uint32_t default_value, uint32_t max_value, uint32_t min_value, uint32_t permissions, uint32_t param_desc_size, uint64_t param_desc_addr )
-
Initialize a single parameter for an algo.
Parameters
- algo_idx
- - Algo index.
- param_id
- - parameter id (from 0 to doca_pcc_dev_algo_init_metadata(...).param_num)
- default_value
- - base value.
- max_value
- - max value that is enforced by set function.
- min_value
- - min value that is enforced by set function..
- permissions
- - If 1 allows value update, if 0 update is disabled.
- param_desc_size
- - The size in bytes for the parameter descriptor string field
- param_desc_addr
- - A pointer to the parameter descriptor string field.
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes a single parameter (param_id) for a specific algo (algo_idx) The param_id should be in the bounds declared by doca_pcc_dev_algo_init_metadata(...) The param info is "global" to the algo on all ports. The current value of the param that is initialized to the "default" value can be modified at the port level.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_index ( uint32_t port_num, uint32_t algo_slot )
-
Get identifier of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
Algo identifier.
Description
- DOCA_STABLE uint32_t* doca_pcc_dev_get_algo_params ( uint32_t port_num, uint32_t algo_slot )
-
Get pointer to param array of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
array of 32b parameters
Description
This retrieves the pointer to an array of param (current value) of up to doca_pcc_dev_get_algo_params_num() params used by algo_slot on the port
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_params_num ( uint32_t port_num, uint32_t algo_slot )
-
Get number of params supported per algo on the port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
number of supported params
Description
- DOCA_STABLE uint32_t* doca_pcc_dev_get_counters ( uint32_t port_num, uint32_t algo_slot )
-
Get pointer to counter array of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
array of 32b counters
Description
This retrieves the pointer to an array of counters (up to doca_pcc_dev_get_counters_num(...) counters) used by algo_slot on the port
- DOCA_STABLE uint32_t doca_pcc_dev_get_counters_num ( uint32_t port_num, uint32_t algo_slot )
-
Get number of counters supported per algo on the port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
number of supported counters
Description
- doca_pcc_dev_error_t doca_pcc_dev_init_algo_slot ( uint32_t portid, uint32_t algo_slot, uint32_t algo_idx, uint32_t algo_en )
-
Initialize the algo per port database.
Parameters
- portid
- - port to be initialized
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot" if possible it should be equal to the algo_idx
- algo_idx
- - Algo identifier.
- algo_en
- - 1 mark algo as enabled, if 0 algo will not be reported if queried
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes the algo per port parameter database, and maps an algo_idx (global algo index) to a specific slot per port. This function allocates parameters and counters per port. The default parameters values are taken from the algo metadata set by doca_pcc_dev_algo_init_param() . The counters and parameters can be get/set by the infrastructure based on MAD and access register PPCC command Function MUST be called after calls to doca_pcc_dev_algo_init_param for this algo type
1.18.1.2. DOCA PCC Device Common
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
- #define FORCE_INLINE
- static inline wrapper
Enumerations
- enum doca_pcc_dev_error_t
- API functions return status.
- enum doca_pcc_dev_nic_counter_ids_t
- NIC counter IDs.
Functions
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_config ( uint32_t* counter_ids, uint32_t num_counters, uint32_t* values )
- Prepare a list of counters to read.
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_sample ( void )
- Sample counters according to the prior configuration call.
Defines
- #define DOCA_DPA_DEVICE
-
Note:
Must be defined before the first API use/include of DOCA
- #define FORCE_INLINE
-
Value
static inline __attribute__((always_inline))
Enumerations
- enum doca_pcc_dev_error_t
-
Values
- DOCA_PCC_DEV_STATUS_OK = 0
- completed successfully
- DOCA_PCC_DEV_STATUS_FAIL = 1
- Failed
- enum doca_pcc_dev_nic_counter_ids_t
-
Values
- DOCA_PCC_DEV_NIC_COUNTER_PORT0_RX_BYTES = 0x10
- port 0 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT1_RX_BYTES = 0x11
- port 1 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT2_RX_BYTES = 0x12
- port 2 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT3_RX_BYTES = 0x13
- port 3 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT0_TX_BYTES = 0x20
- port 0 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT1_TX_BYTES = 0x21
- port 1 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT2_TX_BYTES = 0x22
- port 2 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT3_TX_BYTES = 0x23
- port 3 TX bytes NIC counter ID
Functions
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_config ( uint32_t* counter_ids, uint32_t num_counters, uint32_t* values )
-
Prepare a list of counters to read.
Parameters
- counter_ids
- - An array of counter ids.
- num_counters
- - number of counters in the counter_ids array
- values
- - buffer to store counters values (32b) read by doca_pcc_dev_nic_counters_sample()
Returns
- void process crashes in case of: counters_ids too large bad pointers of values, counter_ids unknown counter
Description
The list is stored in kernel memory. A single counters config per process is supported.
Note:arrays memory must be defined in global or heap memory only.
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_sample ( void )
-
Sample counters according to the prior configuration call.
Returns
void. process crashes in case of: doca_pcc_dev_nic_counters_config() never called
Description
Sample counter_ids, num_counters and values buffer provided in the last successful call to doca_pcc_dev_nic_counters_config(). This call ensures fastest sampling on a pre-checked counter ids and buffers.
1.18.1.3. DOCA PCC Device Event
[ DOCA PCC Device ]
Functions
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_ack_nack_cnp_extra_t doca_pcc_dev_get_ack_nack_cnp_extra ( doca_pcc_dev_event_t* event )
- For ACK/NACK/CNP events, extra information including number of coalesced events.
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_event_general_attr_t doca_pcc_dev_get_ev_attr ( doca_pcc_dev_event_t* event )
- For all events, return structure with general information such as event type, subtype, port and flags.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_flowtag ( doca_pcc_dev_event_t* event )
- For all events, flow tag to indicate different flows.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_fw_settings ( doca_pcc_dev_event_t* event, int n )
- For FW events only, three DWORDs of FW data.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_ack_first_sn ( doca_pcc_dev_event_t* event )
- For ACK/NACK/CNP events, first coalesced event serial number.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_first_timestamp ( doca_pcc_dev_event_t* event )
- For TX/ACK/NACK/CNP events, first coalesced event timestamp.
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_roce_tx_cntrs_t doca_pcc_dev_get_roce_tx_cntrs ( doca_pcc_dev_event_t* event )
- For TX events only, counters including byte count and packet count.
- DOCA_EXPERIMENTAL FORCE_INLINE unsigned char* doca_pcc_dev_get_rtt_raw_data ( doca_pcc_dev_event_t* event )
- Returns the user defined event data.
- DOCA_EXPERIMENTAL FORCE_INLINE size_t doca_pcc_dev_get_rtt_raw_data_size ( doca_pcc_dev_event_t* event )
- Returns the user defined event data size in bytes.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_recv_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT request is received.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_send_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT request is sent.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_resp_send_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT response is sent.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_sn ( doca_pcc_dev_event_t* event )
- For all events, serial number of this event.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timestamp ( doca_pcc_dev_event_t* event )
- For all events, timestamp of this event.
Functions
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_ack_nack_cnp_extra_t doca_pcc_dev_get_ack_nack_cnp_extra ( doca_pcc_dev_event_t* event )
-
For ACK/NACK/CNP events, extra information including number of coalesced events.
Parameters
- event
- - pointer to opaque event struct
Returns
pcc_ack_nack_cnp_extra_t
Description
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_event_general_attr_t doca_pcc_dev_get_ev_attr ( doca_pcc_dev_event_t* event )
-
For all events, return structure with general information such as event type, subtype, port and flags.
Parameters
- event
- - pointer to opaque event struct
Returns
doca_pcc_dev_event_general_attr_t
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_flowtag ( doca_pcc_dev_event_t* event )
-
For all events, flow tag to indicate different flows.
Parameters
- event
- - pointer to opaque event structs
Returns
32 bit flow_tag
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_fw_settings ( doca_pcc_dev_event_t* event, int n )
-
For FW events only, three DWORDs of FW data.
Parameters
- event
- - pointer to opaque event struct
- n
- - dword index 0..2
Returns
32 bit DWORD information from FW
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_ack_first_sn ( doca_pcc_dev_event_t* event )
-
For ACK/NACK/CNP events, first coalesced event serial number.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit first serial number
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_first_timestamp ( doca_pcc_dev_event_t* event )
-
For TX/ACK/NACK/CNP events, first coalesced event timestamp.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit first time stamp (1 nSec granularity)
Description
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_roce_tx_cntrs_t doca_pcc_dev_get_roce_tx_cntrs ( doca_pcc_dev_event_t* event )
-
For TX events only, counters including byte count and packet count.
Parameters
- event
- - pointer to opaque event struct
Returns
pcc_roce_tx_cntrs_t
Description
- DOCA_EXPERIMENTAL FORCE_INLINE unsigned char* doca_pcc_dev_get_rtt_raw_data ( doca_pcc_dev_event_t* event )
-
Returns the user defined event data.
Parameters
- event
- - pointer to opaque event struct
Returns
A pointer to the user defined event data
Description
This function is to be used together with a custom user NP implementation. The user can define a custom data format in the probe response packet.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL FORCE_INLINE size_t doca_pcc_dev_get_rtt_raw_data_size ( doca_pcc_dev_event_t* event )
-
Returns the user defined event data size in bytes.
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_recv_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT request is received.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_send_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT request is sent.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_resp_send_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT response is sent.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_sn ( doca_pcc_dev_event_t* event )
-
For all events, serial number of this event.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit sn
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timestamp ( doca_pcc_dev_event_t* event )
-
For all events, timestamp of this event.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit time stamp (1 nSec granularity)
Description
1.18.1.4. DOCA PCC Device Services
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
Functions
- DOCA_STABLE void doca_pcc_dev_printf ( const char* format, ... )
- Print to Host.
- DOCA_EXPERIMENTAL unsigned int doca_pcc_dev_thread_rank ( void )
- Obtains the thread rank.
- DOCA_STABLE void DOCA_STABLE void doca_pcc_dev_trace_5 ( int format_id, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5 )
- Creates trace message entry with 3 arguments.
- DOCA_STABLE void doca_pcc_dev_trace_flush ( void )
- Flush the trace message buffer to Host.
- doca_pcc_dev_error_t doca_pcc_dev_user_mailbox_handle ( void* request, uint32_t request_size, uint32_t max_response_size, void* response, uint32_t* response_size )
- User callback to process a request from host to device.
Defines
Functions
- DOCA_STABLE void doca_pcc_dev_printf ( const char* format, ... )
-
Print to Host.
Parameters
- format
- - Format string that contains the text to be written to stdout (same as from regular printf)
Description
This function prints from device to host's standard output stream. Multiple threads may call this routine simultaneously. Printing is a convenience service, and due to limited buffering on the host, not all print statements may appear on the host
- DOCA_EXPERIMENTAL unsigned int doca_pcc_dev_thread_rank ( void )
-
Obtains the thread rank.
Returns
Returns the thread rank.
Description
Retrieves the thread rank from the group of threads that run PCC. The function returns a number in {0..N-1}, where N is the number of threads requested to run PCC
- DOCA_STABLE void DOCA_STABLE void doca_pcc_dev_trace_5 ( int format_id, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5 )
-
Creates trace message entry with 3 arguments.
Parameters
- format_id
- -the template format id to print message accordingly
- arg1
- - argument #1 to format into the template
- arg2
- - argument #2 to format into the template
- arg3
- - argument #3 to format into the template
- arg4
- - argument #4 to format into the template
- arg5
- - argument #5 to format into the template
Returns
void.
Description
- DOCA_STABLE void doca_pcc_dev_trace_flush ( void )
-
Flush the trace message buffer to Host.
Returns
void.
Description
As soon as a buffer is fully occupied it is internally sent to host, however user can ask partially occupied buffer to be sent to host. Its intended use is at end of run to flush whatever messages left.
Note:: Frequent call to this API might cause performance issues.
- doca_pcc_dev_error_t doca_pcc_dev_user_mailbox_handle ( void* request, uint32_t request_size, uint32_t max_response_size, void* response, uint32_t* response_size )
-
User callback to process a request from host to device.
Parameters
- request
- - a buffer storing the request. This buffer is filled by the host side
- request_size
- - request buffer size
- max_response_size
- - max response buffer size set on host side
- response
- - a buffer storing the response. This buffer is filled by the device side
- response_size
- - response size
Returns
-
Description
This function is called when the host calls doca_pcc_mailbox_send(). The mailbox format is defined by the user.
Note:: Implementation of this function is optional.
See also:
1.18.1.5. DOCA PCC Device Utilities
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
- #define doca_pcc_dev_fence_all ( )
- fence all
- #define doca_pcc_dev_fence_io ( )
- fence io operations
- #define doca_pcc_dev_fence_memory ( )
- fence memory operations
- #define doca_pcc_dev_fence_w_r ( )
- fence w/r
- #define doca_pcc_dev_fls ( a ) (32 - __builtin_clz(a))
- 32b find last set
- #define doca_pcc_dev_fxp_log2 ( a_fp ) __dpa_fxp_log2(a_fp)
- fixed point 16b log 2
- #define doca_pcc_dev_fxp_mult ( a, b )
- fixed point 16b mult
- #define doca_pcc_dev_fxp_power2 ( a_fp ) __dpa_fxp_pow2(a_fp)
- fixed point 16b power of 2
- #define doca_pcc_dev_fxp_recip ( a_fp ) __dpa_fxp_rcp(a_fp)
- fixed point 16b reciprocal
- #define doca_pcc_dev_get_thread_time ( ) __dpa_thread_time()
- return 1usec tick count
- #define doca_pcc_dev_mult ( a, b )
- mult wrapper
Functions
- DOCA_STABLE FORCE_INLINE uint64_t doca_pcc_dev_get_timer ( void )
- Core timer access (elapsed time in uSec) function 64 bits.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timer_lo ( void )
- Core timer access (elapsed time in uSec) function 32 bits.
Defines
- #define DOCA_DPA_DEVICE
-
Note:
Must be defined before the first API use/include of DOCA
- #define doca_pcc_dev_fence_all ( )
-
Value
__dpa_thread_fence(__DPA_SYSTEM, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_io ( )
-
Value
__dpa_thread_fence(__DPA_MMIO, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_memory ( )
-
Value
__dpa_thread_fence(__DPA_MEMORY, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_w_r ( )
-
Value
__dpa_thread_fence(__DPA_MEMORY, __DPA_W, __DPA_R)
- #define doca_pcc_dev_fls ( a ) (32 - __builtin_clz(a))
-
- #define doca_pcc_dev_fxp_log2 ( a_fp ) __dpa_fxp_log2(a_fp)
-
- #define doca_pcc_dev_fxp_mult ( a, b )
-
Value
((uint32_t)((doca_pcc_dev_mult((a), (b)) >> 16) & 0xffffffff))
- #define doca_pcc_dev_fxp_power2 ( a_fp ) __dpa_fxp_pow2(a_fp)
-
- #define doca_pcc_dev_fxp_recip ( a_fp ) __dpa_fxp_rcp(a_fp)
-
- #define doca_pcc_dev_get_thread_time ( ) __dpa_thread_time()
-
- #define doca_pcc_dev_mult ( a, b )
-
Value
((uint64_t)(a) * (uint64_t)(b))
Functions
- DOCA_STABLE FORCE_INLINE uint64_t doca_pcc_dev_get_timer ( void )
-
Core timer access (elapsed time in uSec) function 64 bits.
Returns
time in uSec.
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timer_lo ( void )
-
Core timer access (elapsed time in uSec) function 32 bits.
Returns
time in uSec.
Description
1.18.1.6. DOCA PCC Device Notification Point
[ DOCA PCC Device ]
DOCA PCC NP Device library. For more details please refer to the user guide on DOCA devzone.
Classes
-
struct doca_pcc_np_dev_response_packet
- structure for response packet
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
Functions
- doca_pcc_dev_error_t doca_pcc_dev_np_user_packet_handler ( doca_pcc_np_dev_request_packet* in, doca_pcc_np_dev_response_packet* out )
- Main user function (implemented by the user) Called by the lib upon receiving a packet. The user:Retrieves the relevant fields using doca_pcc_np_dev_get_raw_packet().Prepares the response (currently up to 12 bytes) and sets the response struct. The lib:Sends the response packet out.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_l4_header ( const doca_pcc_np_dev_request_packet* input )
- Returns a pointer to the L4/udp header of the packet.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_l4_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from L4/udp header.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_max_response_size ( doca_pcc_np_dev_response_packet* out )
- Return data buffer size of out.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_payload ( const doca_pcc_np_dev_request_packet* input )
- Returns a pointer to the payload of the packet.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_payload_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from payload after mad header.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_raw_packet ( const doca_pcc_np_dev_request_packet* input )
- Return packet from ethernet header.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_raw_packet_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from ethernet header.
Defines
Functions
- doca_pcc_dev_error_t doca_pcc_dev_np_user_packet_handler ( doca_pcc_np_dev_request_packet* in, doca_pcc_np_dev_response_packet* out )
-
Main user function (implemented by the user) Called by the lib upon receiving a packet. The user:Retrieves the relevant fields using doca_pcc_np_dev_get_raw_packet().Prepares the response (currently up to 12 bytes) and sets the response struct. The lib:Sends the response packet out.
Parameters
- in
- - opaque structure that has request packet buffer, size etc.
- out
- - buffer preallocated for response packet that will be returned
Returns
DOCA_PCC_NP_DEV_STATUS_OK on success, DOCA_PCC_NP_DEV_STATUS_FAIL on failure.
Description
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_l4_header ( const doca_pcc_np_dev_request_packet* input )
-
Returns a pointer to the L4/udp header of the packet.
Parameters
- input
- - probe packet context
Returns
A pointer to the L4/udp header of the request packet
Description
The returned buffer starting with the L4/udp header followed by the packet payload.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_l4_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from L4/udp header.
Parameters
- input
- - probe packet context
Returns
packet size in bytes from the L4/udp header
Description
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_max_response_size ( doca_pcc_np_dev_response_packet* out )
-
Return data buffer size of out.
Parameters
- out
- - a buffer storing the part user filled in response packet
Returns
data buffer size of out
Description
This function is to get data buffer size of out
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_payload ( const doca_pcc_np_dev_request_packet* input )
-
Returns a pointer to the payload of the packet.
Parameters
- input
- - probe packet context
Returns
A pointer to the payload of the request packet
Description
The returned buffer starting at payload after mad header.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_payload_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from payload after mad header.
Parameters
- input
- - probe packet context
Returns
packet size in bytes from payload
Description
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_raw_packet ( const doca_pcc_np_dev_request_packet* input )
-
Return packet from ethernet header.
Parameters
- input
- - a buffer storing the request packet and size of the packet
Returns
pointer pointed to ethernet header of the request packet
Description
This function is to get packet from ethernet header of input
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_raw_packet_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from ethernet header.
Parameters
- input
- - a buffer storing the request packet and size of the packet
Returns
packet size from ethernet header
Description
This function is to get packet size of input
1.18.2. DOCA PCC Host
[ DOCA PCC ]
DOCA PCC Host library. For more details please refer to the user guide on DOCA devzone.
Enumerations
- enum doca_pcc_process_state_t
- Process states.
Functions
- doca_error_t doca_devinfo_get_is_pcc_supported ( const doca_devinfo* devinfo )
- Get whether the DOCA device supports PCC reaction point.
- doca_error_t doca_pcc_cap_get_num_probe_format_slots ( doca_pcc* pcc, uint32_t* num_probe_format_slots )
- Get number of available probe format slots.
- doca_error_t doca_pcc_create ( doca_dev* doca_dev, doca_pcc** pcc )
- Create programmable CC Reaction Point context.
- doca_error_t doca_pcc_destroy ( doca_pcc* pcc )
- Destroy a DOCA PCC context.
- doca_error_t doca_pcc_get_max_num_threads ( doca_pcc* pcc, uint32_t* max_num_threads )
- Get a maximal allowed number of threads handling CC events.
- doca_error_t doca_pcc_get_min_num_threads ( doca_pcc* pcc, uint32_t* min_num_threads )
- Get a minimal required number of threads handling CC events.
- doca_error_t doca_pcc_get_process_state ( const doca_pcc* pcc, doca_pcc_process_state_t* process_state )
- Return the state of the process.
- doca_error_t doca_pcc_mailbox_get_request_buffer ( doca_pcc* pcc, void** request_buffer )
- Get mailbox request data buffer address to fill and transfer to device.
- doca_error_t doca_pcc_mailbox_get_response_buffer ( doca_pcc* pcc, void** response_buffer )
- Get mailbox response data buffer address that contains data transferred from device.
- doca_error_t doca_pcc_mailbox_send ( doca_pcc* pcc, uint32_t request_size, uint32_t* response_size, uint32_t* cb_ret_val )
- Send mailbox request data to device.
- doca_error_t doca_pcc_np_cap_is_supported ( const doca_devinfo* devinfo )
- Get whether the DOCA device supports PCC notification point.
- doca_error_t doca_pcc_np_create ( doca_dev* doca_dev, doca_pcc** pcc )
- Create programmable CC Notification Point context.
- doca_error_t doca_pcc_np_set_ifa2_gns_ignore ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t ignore_mask, uint8_t ignore_value )
- Set GNS ignore for IFA2 packets.
- doca_error_t doca_pcc_rp_set_ccmad_remote_sw_handler ( doca_pcc* pcc, uint32_t probe_format_slot, bool sw_handler )
- Set sw remote handler for CCMAD probe type.
- doca_error_t doca_pcc_rp_set_ifa2_gns ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t gns )
- Set GNS value for IFA2 packets.
- doca_error_t doca_pcc_rp_set_ifa2_hop_limit ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t hop_limit )
- Set hop_limit field in the metadata header for IFA2 packets.
- doca_error_t doca_pcc_set_app ( doca_pcc* pcc, doca_pcc_app* app )
- Set program app for PCC context.
- doca_error_t doca_pcc_set_ccmad_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
- Set CCMAD probe packet format for the pcc process.
- doca_error_t doca_pcc_set_dev_coredump_file ( doca_pcc* pcc, const char* file_name )
- Set output file to write crash data and coredump in case of unrecoverable error on the device.
- doca_error_t doca_pcc_set_ifa1_probe_marker ( doca_pcc* pcc, uint32_t probe_format_slot, uint64_t probe_marker )
- Set probe marker value for IFA1 probe.
- doca_error_t doca_pcc_set_ifa1_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
- Set ifa1 probe packet format for the pcc process.
- doca_error_t doca_pcc_set_ifa2_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
- Set ifa2 probe packet format for the pcc process.
- doca_error_t doca_pcc_set_mailbox ( doca_pcc* pcc, uint32_t max_request_size, uint32_t max_response_size )
- Set mailbox attributes to obtain and pass data from and to the device.
- doca_error_t doca_pcc_set_print_buffer_size ( doca_pcc* pcc, size_t buffer_size )
- Set buffer size of DPA print message.
- doca_error_t doca_pcc_set_thread_affinity ( doca_pcc* pcc, uint32_t num_threads, uint32_t* affinity_configs )
- Configure affinity of threads handling CC events.
- doca_error_t doca_pcc_set_trace_message ( doca_pcc* pcc, char** trace_message )
- Set message for trace printing.
- doca_error_t doca_pcc_start ( doca_pcc* pcc )
- Start a PCC context Register the pcc process in the NIC hw.
- doca_error_t doca_pcc_stop ( doca_pcc* pcc )
- Stop a PCC context.
- doca_error_t doca_pcc_wait ( doca_pcc* pcc, int wait_time )
- Wait on events or timeout from device for given time in seconds.
Enumerations
- enum doca_pcc_process_state_t
-
Values
- DOCA_PCC_PS_ACTIVE = 0
- The process handles CC events (only one process is active at a given time)
- DOCA_PCC_PS_STANDBY = 1
- The process is in standby mode (another process is already ACTIVE)
- DOCA_PCC_PS_DEACTIVATED = 2
- The process was deactivated by NIC FW and should be destroyed
- DOCA_PCC_PS_ERROR = 3
- The process is in error state and should be destroyed
Functions
- doca_error_t doca_devinfo_get_is_pcc_supported ( const doca_devinfo* devinfo )
-
Get whether the DOCA device supports PCC reaction point.
Parameters
- devinfo
- - The device to query
Returns
DOCA_SUCCESS - in case of the DOCA device queried has PCC reaction point support Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device queried does not support PCC reaction point
Description
- doca_error_t doca_pcc_cap_get_num_probe_format_slots ( doca_pcc* pcc, uint32_t* num_probe_format_slots )
-
Get number of available probe format slots.
Parameters
- pcc
- - PCC context
- num_probe_format_slots
- - number of available probe format slots
Description
The NIC may support multiple probe formats in parallel. This function returns the number of probe formats supported by the device used to open the pcc context.
The caller may set probe_format_slot values of 0 to num_probe_format_slots - 1 in the functions referring to this value.
- doca_error_t doca_pcc_create ( doca_dev* doca_dev, doca_pcc** pcc )
-
Create programmable CC Reaction Point context.
Parameters
- doca_dev
- - DOCA device
- pcc
- - Created PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NOT_SUPPORTED - the device does not support PCC
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
This function creates a DOCA PCC Reaction Point context to capture and route PCC events to the DPA.
- doca_error_t doca_pcc_destroy ( doca_pcc* pcc )
-
Destroy a DOCA PCC context.
Parameters
- pcc
- - Previously created PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
Description
This function destroys PCC context created by doca_pcc_create() When the termination is started the process will stop handling PCC events. Issuing a ^c during doca_pcc_wait(...) will also result in the application's termination.
- doca_error_t doca_pcc_get_max_num_threads ( doca_pcc* pcc, uint32_t* max_num_threads )
-
Get a maximal allowed number of threads handling CC events.
Parameters
- pcc
- - PCC context
- max_num_threads
- - maximal number of threads used by pcc
Returns
DOCA_SUCCESS - in case of success Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_pcc_get_min_num_threads ( doca_pcc* pcc, uint32_t* min_num_threads )
-
Get a minimal required number of threads handling CC events.
Parameters
- pcc
- - PCC context
- min_num_threads
- - minimal number of threads used by pcc
Returns
DOCA_SUCCESS - in case of success Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_pcc_get_process_state ( const doca_pcc* pcc, doca_pcc_process_state_t* process_state )
-
Return the state of the process.
Parameters
- pcc
- - PCC context
- process_state
- - state of the PCC process. In case positive wait_time is specified and expired, DEACTIVATED state will be returned.
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - in case pcc is not started
Description
- doca_error_t doca_pcc_mailbox_get_request_buffer ( doca_pcc* pcc, void** request_buffer )
-
Get mailbox request data buffer address to fill and transfer to device.
Parameters
- pcc
- - PCC context
- request_buffer
- - pointer to request data buffer
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - in case pcc is not started
- DOCA_ERROR_INITIALIZATION - mailbox was not set for PCC context
Description
- doca_error_t doca_pcc_mailbox_get_response_buffer ( doca_pcc* pcc, void** response_buffer )
-
Get mailbox response data buffer address that contains data transferred from device.
Parameters
- pcc
- - PCC context
- response_buffer
- - pointer to response data buffer
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - in case pcc is not started
- DOCA_ERROR_INITIALIZATION - mailbox was not set for PCC context
Description
- doca_error_t doca_pcc_mailbox_send ( doca_pcc* pcc, uint32_t request_size, uint32_t* response_size, uint32_t* cb_ret_val )
-
Send mailbox request data to device.
Parameters
- pcc
- - PCC context
- request_size
- - size of request data to send to device
- response_size
- - size of response data received from device
- cb_ret_val
- - return value of device user callback doca_pcc_dev_user_mailbox_handle()
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - in case pcc is not started
- DOCA_ERROR_INITIALIZATION - mailbox was not set for PCC context
Description
- doca_error_t doca_pcc_np_cap_is_supported ( const doca_devinfo* devinfo )
-
Get whether the DOCA device supports PCC notification point.
Parameters
- devinfo
- - The device to query
Returns
DOCA_SUCCESS - in case of the DOCA device queried has PCC notification point support Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device queried does not support PCC notification point
Description
- doca_error_t doca_pcc_np_create ( doca_dev* doca_dev, doca_pcc** pcc )
-
Create programmable CC Notification Point context.
Parameters
- doca_dev
- - DOCA device
- pcc
- - Created PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NOT_SUPPORTED - the device does not support PCC
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
This function creates a DOCA PCC Notification Point context given a DOCA device
- doca_error_t doca_pcc_np_set_ifa2_gns_ignore ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t ignore_mask, uint8_t ignore_value )
-
Set GNS ignore for IFA2 packets.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- ignore_mask
- - GNS ignore mask - limited to 4 bits
- ignore_value
- - GNS ignore value - limited to 4 bits
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Applicable to: NP role when probe packet format is set to IFA2
When (ignore_mask != 0), if: (packet.GNS & ignore_mask) == (ignore_value & ignore_mask) the packet will not be sent to the NP process, and will be delivered to SW as a standard eth packet.
By default all IFA2 packets are sent to the NP process (ignore_mask = 0)
See also:
- doca_error_t doca_pcc_rp_set_ccmad_remote_sw_handler ( doca_pcc* pcc, uint32_t probe_format_slot, bool sw_handler )
-
Set sw remote handler for CCMAD probe type.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- sw_handler
- - When set, packets generated by the RP are handled by the NP PCC process. When cleared, packets generated by the RP are handled by the NP HW handler
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
When a CCMAD probe packet is received by the remote RX NP port, it can be sent either to the HW CC handler (for rtt probes) or to NP process for any probe format.
See also:
- doca_error_t doca_pcc_rp_set_ifa2_gns ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t gns )
-
Set GNS value for IFA2 packets.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- gns
- - global namespace - limited to 4 bits
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Applicable to: RP role when probe packet format is set to IFA2
By default IFA2 gns value is set to 0xF
See also:
doca_pcc_get_num_probe_format_slots
- doca_error_t doca_pcc_rp_set_ifa2_hop_limit ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t hop_limit )
-
Set hop_limit field in the metadata header for IFA2 packets.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- hop_limit
- - hop limit value to set
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Applicable to: RP role when probe packet format is set to IFA2
By default IFA2 hop_limit value is set to 0xFE
See also:
doca_pcc_get_num_probe_format_slots
- doca_error_t doca_pcc_set_app ( doca_pcc* pcc, doca_pcc_app* app )
-
Set program app for PCC context.
Parameters
- pcc
- - PCC context
- app
- - PCC application generated by DPACC
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
The context represents a program on the DPA that is referenced by the host process that called the context creation API. Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_set_ccmad_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
-
Set CCMAD probe packet format for the pcc process.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
For RP: Sets the packet type to send to CCMAD when an rtt probe is requested. For NP: defines CCMAD packet type to identify and send to the NP device side code
Note:CCMAD is default value for PCC context probe packet format
See also:
- doca_error_t doca_pcc_set_dev_coredump_file ( doca_pcc* pcc, const char* file_name )
-
Set output file to write crash data and coredump in case of unrecoverable error on the device.
Parameters
- pcc
- - PCC context
- file_name
- - pathname to the output file to write coredump data into
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
- DOCA_ERROR_NO_MEMORY - memory allocation error
Description
Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_set_ifa1_probe_marker ( doca_pcc* pcc, uint32_t probe_format_slot, uint64_t probe_marker )
-
Set probe marker value for IFA1 probe.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- probe_marker
- - probe marker value
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Applicable to: RP/NP role when probe packet format is set to IFA1
Set the probe marker field value in the generated IFA1 packets. Note: the the most significant bit of the probe parameter must be set.
By default the probe marker is set to 0xAAAAAAAABBBBBBBB
See also:
- doca_error_t doca_pcc_set_ifa1_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
-
Set ifa1 probe packet format for the pcc process.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
For RP: Sets the packet type to send to ifa1 when an rtt probe is requested. For NP: defines ifa1 packet type to identify and send to the NP device side code
See also:
- doca_error_t doca_pcc_set_ifa2_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
-
Set ifa2 probe packet format for the pcc process.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
For RP: Sets the packet type to send to ifa2 when an rtt probe is requested. For NP: defines ifa2 packet type to identify and send to the NP device side code
See also:
- doca_error_t doca_pcc_set_mailbox ( doca_pcc* pcc, uint32_t max_request_size, uint32_t max_response_size )
-
Set mailbox attributes to obtain and pass data from and to the device.
Parameters
- pcc
- - PCC context
- max_request_size
- - max size of request data passed to device
- max_response_size
- - max size of response data passed from device
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_set_print_buffer_size ( doca_pcc* pcc, size_t buffer_size )
-
Set buffer size of DPA print message.
Parameters
- pcc
- - PCC context
- buffer_size
- - size of print buffer from the DPA
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_set_thread_affinity ( doca_pcc* pcc, uint32_t num_threads, uint32_t* affinity_configs )
-
Configure affinity of threads handling CC events.
Parameters
- pcc
- - PCC context
- num_threads
- - number of threads used by pcc. Should be constrained by minimum and maximum allowed number
- affinity_configs
- - array of indexes to assign to threads
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input or invalid number of threads
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Must be set before calling doca_pcc_start()
See also:
doca_pcc_get_min_num_threads() and doca_pcc_get_max_num_threads()
- doca_error_t doca_pcc_set_trace_message ( doca_pcc* pcc, char** trace_message )
-
Set message for trace printing.
Parameters
- pcc
- - PCC context
- trace_message
- - message to be printed from trace
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_start ( doca_pcc* pcc )
-
Start a PCC context Register the pcc process in the NIC hw.
Parameters
- pcc
- - PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
- DOCA_ERROR_NOT_SUPPORTED - the device does not support the PCC role
Description
- doca_error_t doca_pcc_stop ( doca_pcc* pcc )
-
Stop a PCC context.
Parameters
- pcc
- - PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - in case pcc is not started
Description
- doca_error_t doca_pcc_wait ( doca_pcc* pcc, int wait_time )
-
Wait on events or timeout from device for given time in seconds.
Parameters
- pcc
- - PCC context
- wait_time
- - time in seconds to wait
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - in case pcc is not started
Description
Providing a negative value for wait time will cause the context to wait on events until the user terminates it.
1.18.1. DOCA PCC Device
[ DOCA PCC ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Modules
-
DOCA PCC Device Algorithm Access
-
DOCA PCC Device Common
-
DOCA PCC Device Event
-
DOCA PCC Device Notification Point
-
DOCA PCC Device Services
-
DOCA PCC Device Utilities
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
- #define DOCA_PCC_DEV_ALGO_INDEX_INTERNAL (0xF)
- Reserved algo index for internal algo provided by the lib.
- #define DOCA_PCC_DEV_ALGO_SLOT_INTERNAL (0xF)
- Reserved algo slot for internal algo provided by the lib.
- #define DOCA_PCC_DEV_DEFAULT_RATE
- Default rate. The user overrides the default in the user algo function.
- #define DOCA_PCC_DEV_LOG_MAX_RATE (20)
- defines the fixed point fraction size of the rate limiter
- #define DOCA_PCC_DEV_MAX_NUM_ALGOS (8)
- Max number of algos supported by the lib.
- #define DOCA_PCC_DEV_MAX_NUM_COUNTERS_PER_ALGO (0xF)
- Max number of counters per algo supported by the lib.
- #define DOCA_PCC_DEV_MAX_NUM_PARAMS_PER_ALGO (0x1E)
- Max number of parameters per algo supported by the lib.
- #define DOCA_PCC_DEV_MAX_NUM_PORTS (4)
- Max number of NIC ports supported by the lib.
- #define DOCA_PCC_DEV_MAX_NUM_USER_SLOTS (8)
- Max number of algo slots supported by the lib.
- #define DOCA_PCC_DEV_MAX_RATE
- Max rate in rate limiter fixed point.
- #define DOCA_PCC_DEV_TX_FLAG_ACK_EXPECTED (1 << 0)
- TX Flag: Ack expected.
- #define DOCA_PCC_DEV_TX_FLAG_OVERLOADED (1 << 1)
- TX Flag: Overloaded:.
- #define DOCA_PCC_DEV_TX_FLAG_RTT_REQ_SENT (1 << 2)
- TX Flag: RTT packet sent.
Enumerations
- enum doca_pcc_dev_event_type_enum
- CC event type.
- enum doca_pcc_dev_nack_event_sub_type_enum
- CC Nack event subtypes.
Functions
- DOCA_STABLE void doca_pcc_dev_default_internal_algo ( doca_pcc_dev_algo_ctxt_t* algo_ctxt, doca_pcc_dev_event_t* event, const doca_pcc_dev_attr_t* attr, doca_pcc_dev_results_t* results )
- Implements the internal CC algorithm provided by the lib.
- DOCA_STABLE void doca_pcc_dev_user_algo ( doca_pcc_dev_algo_ctxt_t* algo_ctxt, doca_pcc_dev_event_t* event, const doca_pcc_dev_attr_t* attr, doca_pcc_dev_results_t* results )
- Entry point to the user algorithm handling code.
- DOCA_STABLE void doca_pcc_dev_user_init ( uint32_t* disable_event_bitmask )
- Entry point to the user one time initialization code.
- doca_pcc_dev_error_t doca_pcc_dev_user_set_algo_params ( uint32_t port_num, uint32_t algo_slot, uint32_t param_id_base, uint32_t param_num, const uint32_t* new_param_values, uint32_t* params )
- User callback executed then parameters are set.
Defines
- #define DOCA_DPA_DEVICE
-
Note:
Must be defined before the first API use/include of DOCA
- #define DOCA_PCC_DEV_ALGO_INDEX_INTERNAL (0xF)
-
- #define DOCA_PCC_DEV_ALGO_SLOT_INTERNAL (0xF)
-
- #define DOCA_PCC_DEV_DEFAULT_RATE
-
Value
((DOCA_PCC_DEV_MAX_RATE >> 8) > (1) ? (DOCA_PCC_DEV_MAX_RATE >> 8) : (1))
- #define DOCA_PCC_DEV_LOG_MAX_RATE (20)
-
- #define DOCA_PCC_DEV_MAX_NUM_ALGOS (8)
-
- #define DOCA_PCC_DEV_MAX_NUM_COUNTERS_PER_ALGO (0xF)
-
- #define DOCA_PCC_DEV_MAX_NUM_PARAMS_PER_ALGO (0x1E)
-
- #define DOCA_PCC_DEV_MAX_NUM_PORTS (4)
-
- #define DOCA_PCC_DEV_MAX_NUM_USER_SLOTS (8)
-
- #define DOCA_PCC_DEV_MAX_RATE
-
Value
(1U << DOCA_PCC_DEV_LOG_MAX_RATE)
- #define DOCA_PCC_DEV_TX_FLAG_ACK_EXPECTED (1 << 0)
-
- #define DOCA_PCC_DEV_TX_FLAG_OVERLOADED (1 << 1)
-
- #define DOCA_PCC_DEV_TX_FLAG_RTT_REQ_SENT (1 << 2)
-
Enumerations
- enum doca_pcc_dev_event_type_enum
-
Values
- DOCA_PCC_DEV_EVNT_NULL = 0
- Unspecified event type
- DOCA_PCC_DEV_EVNT_FW = 1
- Deprecated - not used
- DOCA_PCC_DEV_EVNT_ROCE_CNP = 2
- RoCE CNP (Congestion Notification Packet) received
- DOCA_PCC_DEV_EVNT_ROCE_TX = 3
- TX packet burst transition ended
- DOCA_PCC_DEV_EVNT_ROCE_ACK = 4
- RoCE ACK Packet received
- DOCA_PCC_DEV_EVNT_ROCE_NACK = 5
- RoCE NACK Packet received
- DOCA_PCC_DEV_EVNT_RTT = 6
- RTT probe response packet event
- enum doca_pcc_dev_nack_event_sub_type_enum
-
Values
- DOCA_PCC_DEV_NACK_EVNT_NULL = 0
- Unspecified NACK type
- DOCA_PCC_DEV_NACK_EVNT_RNR = 1
- RNR (Receiver Not Ready) NACK received
- DOCA_PCC_DEV_NACK_EVNT_OOS = 2
- OOS (Out of Sequence) NACK received
- DOCA_PCC_DEV_NACK_EVNT_DUP_READ = 3
- Duplicated Read (with same PSN) NACK received
Functions
- DOCA_STABLE void doca_pcc_dev_default_internal_algo ( doca_pcc_dev_algo_ctxt_t* algo_ctxt, doca_pcc_dev_event_t* event, const doca_pcc_dev_attr_t* attr, doca_pcc_dev_results_t* results )
-
Implements the internal CC algorithm provided by the lib.
Parameters
- algo_ctxt
- -
- event
- -
- attr
- -
- results
- -
Returns
void.
Description
The lib provides an internal built-in CC algorithm implementation. The user may call this function for flows with algo_slot that is not set by the user (An unknown algo_slot can be the result of running without algo negotiation)
See also:
See also:
See also:
See also:
- DOCA_STABLE void doca_pcc_dev_user_algo ( doca_pcc_dev_algo_ctxt_t* algo_ctxt, doca_pcc_dev_event_t* event, const doca_pcc_dev_attr_t* attr, doca_pcc_dev_results_t* results )
-
Entry point to the user algorithm handling code.
Parameters
- algo_ctxt
- - pointer to user context for this flow (restored from previous iteration)
- event
- - pointer to event data struct to be used with getter functions
- attr
- - information about event like algo type
- results
- - new rate information to be written to HW. The rate is expressed as a 20b fixed point number in range (0 , 1]
Returns
void.
Description
This code handles a single event. it receives the algorithm context, the event information (opaque struct), and some attributes (algo id), and returns the PCC rate The event info should not be used directly through the struct. It is recommended to use the supplied "getter" functions (doca_pcc_dev_event.h) to help generate more future compatible code if event information placement changes
- DOCA_STABLE void doca_pcc_dev_user_init ( uint32_t* disable_event_bitmask )
-
Entry point to the user one time initialization code.
Parameters
- disable_event_bitmask
- - a bitmaks of events that should be discarded and not passed to the event processing code
Returns
void.
Description
This is called on PCC process load and should initialize the data of all user algorithms.
- doca_pcc_dev_error_t doca_pcc_dev_user_set_algo_params ( uint32_t port_num, uint32_t algo_slot, uint32_t param_id_base, uint32_t param_num, const uint32_t* new_param_values, uint32_t* params )
-
User callback executed then parameters are set.
Parameters
- port_num
- - index of the port
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot" if possible it should be equal to the algo_idx
- param_id_base
- - id of the first parameter that was changed.
- param_num
- - number of all parameters that were changed
- new_param_values
- - pointer to an array which holds param_num number of new values for parameters
- params
- - pointer to an array which holds beginning of the current parameters to be changed
Returns
- DOCA_PCC_DEV_STATUS_OK: Parameters were set DOCA_PCC_DEV_STATUS_FAIL: the values (one or more) are not legal. No parameters were changed
Description
Called when the parameter change was set externally. The implementation should: Check the given new_parameters values. If those are correct from the algorithm perspective, assign them to the given parameter array.
DOCA PCC Device Algorithm Access
DOCA PCC Device Common
DOCA PCC Device Event
DOCA PCC Device Services
DOCA PCC Device Utilities
DOCA PCC Device Notification Point
1.18.1.1. DOCA PCC Device Algorithm Access
[ DOCA PCC Device ]
Classes
-
struct doca_pcc_dev_algo_meta_data
- This struct provides meta data for a pcc user algo.
Functions
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_counter ( uint32_t algo_idx, uint32_t counter_id, uint32_t max_value, uint32_t permissions, uint32_t counter_desc_size, uint64_t counter_desc_addr )
- Initialize a single counter for an algo.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_metadata ( uint32_t algo_idx, const doca_pcc_dev_algo_meta_data* user_def, uint32_t param_num, uint32_t counter_num )
- Initialize the algo database.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_param ( uint32_t algo_idx, uint32_t param_id, uint32_t default_value, uint32_t max_value, uint32_t min_value, uint32_t permissions, uint32_t param_desc_size, uint64_t param_desc_addr )
- Initialize a single parameter for an algo.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_index ( uint32_t port_num, uint32_t algo_slot )
- Get identifier of a specific algo and specific port.
- DOCA_STABLE uint32_t* doca_pcc_dev_get_algo_params ( uint32_t port_num, uint32_t algo_slot )
- Get pointer to param array of a specific algo and specific port.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_params_num ( uint32_t port_num, uint32_t algo_slot )
- Get number of params supported per algo on the port.
- DOCA_STABLE uint32_t* doca_pcc_dev_get_counters ( uint32_t port_num, uint32_t algo_slot )
- Get pointer to counter array of a specific algo and specific port.
- DOCA_STABLE uint32_t doca_pcc_dev_get_counters_num ( uint32_t port_num, uint32_t algo_slot )
- Get number of counters supported per algo on the port.
- doca_pcc_dev_error_t doca_pcc_dev_init_algo_slot ( uint32_t portid, uint32_t algo_slot, uint32_t algo_idx, uint32_t algo_en )
- Initialize the algo per port database.
Functions
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_counter ( uint32_t algo_idx, uint32_t counter_id, uint32_t max_value, uint32_t permissions, uint32_t counter_desc_size, uint64_t counter_desc_addr )
-
Initialize a single counter for an algo.
Parameters
- algo_idx
- - Algo identifier.
- counter_id
- - counter id (from 0 to doca_pcc_dev_algo_init_metadata(...).counter_num)
- max_value
- - max value that allowed for the counter.
- permissions
- - If 1 allows value update, if 0 update is disabled.
- counter_desc_size
- - The size in bytes for the counter descriptor string field
- counter_desc_addr
- - A pointer to the counter descriptor string field.
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes a single counter (counterid) for a specific algo (algo_idx) The counter_id should be in the bounds declared by doca_pcc_dev_algo_init_metadata(...) The counter info (e.g. description) is "global" to the algo on all ports.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_metadata ( uint32_t algo_idx, const doca_pcc_dev_algo_meta_data* user_def, uint32_t param_num, uint32_t counter_num )
-
Initialize the algo database.
Parameters
- algo_idx
- - algo index.
- user_def
- - basic version info + pointer and size of algo description string
- param_num
- - max number of params (will be used to reserve param space)
- counter_num
- - max number of counters (will be used to reserve counter space)
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes an algo data-structure. Each algorithm has in index (not to be confused with the doca_pcc_dev_algo_meta_data::algo_id) Algo database includes a metadata area containing basic algo information, and a params and counters metadata area. The number of parameters and counters is configurable at init time. The space allocated for the algo data-structure using this function is visible to the PCC infrastructure. This is required to allow the infrastructure to read/update param / counter information directly when handling PPCC MADs or commands. The user can use additional memory by allocating global variables
This function should be called once per algo during init.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_param ( uint32_t algo_idx, uint32_t param_id, uint32_t default_value, uint32_t max_value, uint32_t min_value, uint32_t permissions, uint32_t param_desc_size, uint64_t param_desc_addr )
-
Initialize a single parameter for an algo.
Parameters
- algo_idx
- - Algo index.
- param_id
- - parameter id (from 0 to doca_pcc_dev_algo_init_metadata(...).param_num)
- default_value
- - base value.
- max_value
- - max value that is enforced by set function.
- min_value
- - min value that is enforced by set function..
- permissions
- - If 1 allows value update, if 0 update is disabled.
- param_desc_size
- - The size in bytes for the parameter descriptor string field
- param_desc_addr
- - A pointer to the parameter descriptor string field.
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes a single parameter (param_id) for a specific algo (algo_idx) The param_id should be in the bounds declared by doca_pcc_dev_algo_init_metadata(...) The param info is "global" to the algo on all ports. The current value of the param that is initialized to the "default" value can be modified at the port level.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_index ( uint32_t port_num, uint32_t algo_slot )
-
Get identifier of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
Algo identifier.
Description
- DOCA_STABLE uint32_t* doca_pcc_dev_get_algo_params ( uint32_t port_num, uint32_t algo_slot )
-
Get pointer to param array of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
array of 32b parameters
Description
This retrieves the pointer to an array of param (current value) of up to doca_pcc_dev_get_algo_params_num() params used by algo_slot on the port
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_params_num ( uint32_t port_num, uint32_t algo_slot )
-
Get number of params supported per algo on the port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
number of supported params
Description
- DOCA_STABLE uint32_t* doca_pcc_dev_get_counters ( uint32_t port_num, uint32_t algo_slot )
-
Get pointer to counter array of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
array of 32b counters
Description
This retrieves the pointer to an array of counters (up to doca_pcc_dev_get_counters_num(...) counters) used by algo_slot on the port
- DOCA_STABLE uint32_t doca_pcc_dev_get_counters_num ( uint32_t port_num, uint32_t algo_slot )
-
Get number of counters supported per algo on the port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
number of supported counters
Description
- doca_pcc_dev_error_t doca_pcc_dev_init_algo_slot ( uint32_t portid, uint32_t algo_slot, uint32_t algo_idx, uint32_t algo_en )
-
Initialize the algo per port database.
Parameters
- portid
- - port to be initialized
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot" if possible it should be equal to the algo_idx
- algo_idx
- - Algo identifier.
- algo_en
- - 1 mark algo as enabled, if 0 algo will not be reported if queried
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes the algo per port parameter database, and maps an algo_idx (global algo index) to a specific slot per port. This function allocates parameters and counters per port. The default parameters values are taken from the algo metadata set by doca_pcc_dev_algo_init_param() . The counters and parameters can be get/set by the infrastructure based on MAD and access register PPCC command Function MUST be called after calls to doca_pcc_dev_algo_init_param for this algo type
1.18.1.2. DOCA PCC Device Common
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
- #define FORCE_INLINE
- static inline wrapper
Enumerations
- enum doca_pcc_dev_error_t
- API functions return status.
- enum doca_pcc_dev_nic_counter_ids_t
- NIC counter IDs.
Functions
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_config ( uint32_t* counter_ids, uint32_t num_counters, uint32_t* values )
- Prepare a list of counters to read.
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_sample ( void )
- Sample counters according to the prior configuration call.
Defines
- #define DOCA_DPA_DEVICE
-
Note:
Must be defined before the first API use/include of DOCA
- #define FORCE_INLINE
-
Value
static inline __attribute__((always_inline))
Enumerations
- enum doca_pcc_dev_error_t
-
Values
- DOCA_PCC_DEV_STATUS_OK = 0
- completed successfully
- DOCA_PCC_DEV_STATUS_FAIL = 1
- Failed
- enum doca_pcc_dev_nic_counter_ids_t
-
Values
- DOCA_PCC_DEV_NIC_COUNTER_PORT0_RX_BYTES = 0x10
- port 0 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT1_RX_BYTES = 0x11
- port 1 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT2_RX_BYTES = 0x12
- port 2 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT3_RX_BYTES = 0x13
- port 3 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT0_TX_BYTES = 0x20
- port 0 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT1_TX_BYTES = 0x21
- port 1 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT2_TX_BYTES = 0x22
- port 2 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT3_TX_BYTES = 0x23
- port 3 TX bytes NIC counter ID
Functions
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_config ( uint32_t* counter_ids, uint32_t num_counters, uint32_t* values )
-
Prepare a list of counters to read.
Parameters
- counter_ids
- - An array of counter ids.
- num_counters
- - number of counters in the counter_ids array
- values
- - buffer to store counters values (32b) read by doca_pcc_dev_nic_counters_sample()
Returns
- void process crashes in case of: counters_ids too large bad pointers of values, counter_ids unknown counter
Description
The list is stored in kernel memory. A single counters config per process is supported.
Note:arrays memory must be defined in global or heap memory only.
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_sample ( void )
-
Sample counters according to the prior configuration call.
Returns
void. process crashes in case of: doca_pcc_dev_nic_counters_config() never called
Description
Sample counter_ids, num_counters and values buffer provided in the last successful call to doca_pcc_dev_nic_counters_config(). This call ensures fastest sampling on a pre-checked counter ids and buffers.
1.18.1.3. DOCA PCC Device Event
[ DOCA PCC Device ]
Functions
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_ack_nack_cnp_extra_t doca_pcc_dev_get_ack_nack_cnp_extra ( doca_pcc_dev_event_t* event )
- For ACK/NACK/CNP events, extra information including number of coalesced events.
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_event_general_attr_t doca_pcc_dev_get_ev_attr ( doca_pcc_dev_event_t* event )
- For all events, return structure with general information such as event type, subtype, port and flags.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_flowtag ( doca_pcc_dev_event_t* event )
- For all events, flow tag to indicate different flows.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_fw_settings ( doca_pcc_dev_event_t* event, int n )
- For FW events only, three DWORDs of FW data.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_ack_first_sn ( doca_pcc_dev_event_t* event )
- For ACK/NACK/CNP events, first coalesced event serial number.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_first_timestamp ( doca_pcc_dev_event_t* event )
- For TX/ACK/NACK/CNP events, first coalesced event timestamp.
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_roce_tx_cntrs_t doca_pcc_dev_get_roce_tx_cntrs ( doca_pcc_dev_event_t* event )
- For TX events only, counters including byte count and packet count.
- DOCA_EXPERIMENTAL FORCE_INLINE unsigned char* doca_pcc_dev_get_rtt_raw_data ( doca_pcc_dev_event_t* event )
- Returns the user defined event data.
- DOCA_EXPERIMENTAL FORCE_INLINE size_t doca_pcc_dev_get_rtt_raw_data_size ( doca_pcc_dev_event_t* event )
- Returns the user defined event data size in bytes.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_recv_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT request is received.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_send_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT request is sent.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_resp_send_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT response is sent.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_sn ( doca_pcc_dev_event_t* event )
- For all events, serial number of this event.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timestamp ( doca_pcc_dev_event_t* event )
- For all events, timestamp of this event.
Functions
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_ack_nack_cnp_extra_t doca_pcc_dev_get_ack_nack_cnp_extra ( doca_pcc_dev_event_t* event )
-
For ACK/NACK/CNP events, extra information including number of coalesced events.
Parameters
- event
- - pointer to opaque event struct
Returns
pcc_ack_nack_cnp_extra_t
Description
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_event_general_attr_t doca_pcc_dev_get_ev_attr ( doca_pcc_dev_event_t* event )
-
For all events, return structure with general information such as event type, subtype, port and flags.
Parameters
- event
- - pointer to opaque event struct
Returns
doca_pcc_dev_event_general_attr_t
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_flowtag ( doca_pcc_dev_event_t* event )
-
For all events, flow tag to indicate different flows.
Parameters
- event
- - pointer to opaque event structs
Returns
32 bit flow_tag
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_fw_settings ( doca_pcc_dev_event_t* event, int n )
-
For FW events only, three DWORDs of FW data.
Parameters
- event
- - pointer to opaque event struct
- n
- - dword index 0..2
Returns
32 bit DWORD information from FW
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_ack_first_sn ( doca_pcc_dev_event_t* event )
-
For ACK/NACK/CNP events, first coalesced event serial number.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit first serial number
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_first_timestamp ( doca_pcc_dev_event_t* event )
-
For TX/ACK/NACK/CNP events, first coalesced event timestamp.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit first time stamp (1 nSec granularity)
Description
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_roce_tx_cntrs_t doca_pcc_dev_get_roce_tx_cntrs ( doca_pcc_dev_event_t* event )
-
For TX events only, counters including byte count and packet count.
Parameters
- event
- - pointer to opaque event struct
Returns
pcc_roce_tx_cntrs_t
Description
- DOCA_EXPERIMENTAL FORCE_INLINE unsigned char* doca_pcc_dev_get_rtt_raw_data ( doca_pcc_dev_event_t* event )
-
Returns the user defined event data.
Parameters
- event
- - pointer to opaque event struct
Returns
A pointer to the user defined event data
Description
This function is to be used together with a custom user NP implementation. The user can define a custom data format in the probe response packet.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL FORCE_INLINE size_t doca_pcc_dev_get_rtt_raw_data_size ( doca_pcc_dev_event_t* event )
-
Returns the user defined event data size in bytes.
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_recv_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT request is received.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_send_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT request is sent.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_resp_send_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT response is sent.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_sn ( doca_pcc_dev_event_t* event )
-
For all events, serial number of this event.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit sn
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timestamp ( doca_pcc_dev_event_t* event )
-
For all events, timestamp of this event.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit time stamp (1 nSec granularity)
Description
1.18.1.4. DOCA PCC Device Services
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
Functions
- DOCA_STABLE void doca_pcc_dev_printf ( const char* format, ... )
- Print to Host.
- DOCA_EXPERIMENTAL unsigned int doca_pcc_dev_thread_rank ( void )
- Obtains the thread rank.
- DOCA_STABLE void DOCA_STABLE void doca_pcc_dev_trace_5 ( int format_id, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5 )
- Creates trace message entry with 3 arguments.
- DOCA_STABLE void doca_pcc_dev_trace_flush ( void )
- Flush the trace message buffer to Host.
- doca_pcc_dev_error_t doca_pcc_dev_user_mailbox_handle ( void* request, uint32_t request_size, uint32_t max_response_size, void* response, uint32_t* response_size )
- User callback to process a request from host to device.
Defines
Functions
- DOCA_STABLE void doca_pcc_dev_printf ( const char* format, ... )
-
Print to Host.
Parameters
- format
- - Format string that contains the text to be written to stdout (same as from regular printf)
Description
This function prints from device to host's standard output stream. Multiple threads may call this routine simultaneously. Printing is a convenience service, and due to limited buffering on the host, not all print statements may appear on the host
- DOCA_EXPERIMENTAL unsigned int doca_pcc_dev_thread_rank ( void )
-
Obtains the thread rank.
Returns
Returns the thread rank.
Description
Retrieves the thread rank from the group of threads that run PCC. The function returns a number in {0..N-1}, where N is the number of threads requested to run PCC
- DOCA_STABLE void DOCA_STABLE void doca_pcc_dev_trace_5 ( int format_id, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5 )
-
Creates trace message entry with 3 arguments.
Parameters
- format_id
- -the template format id to print message accordingly
- arg1
- - argument #1 to format into the template
- arg2
- - argument #2 to format into the template
- arg3
- - argument #3 to format into the template
- arg4
- - argument #4 to format into the template
- arg5
- - argument #5 to format into the template
Returns
void.
Description
- DOCA_STABLE void doca_pcc_dev_trace_flush ( void )
-
Flush the trace message buffer to Host.
Returns
void.
Description
As soon as a buffer is fully occupied it is internally sent to host, however user can ask partially occupied buffer to be sent to host. Its intended use is at end of run to flush whatever messages left.
Note:: Frequent call to this API might cause performance issues.
- doca_pcc_dev_error_t doca_pcc_dev_user_mailbox_handle ( void* request, uint32_t request_size, uint32_t max_response_size, void* response, uint32_t* response_size )
-
User callback to process a request from host to device.
Parameters
- request
- - a buffer storing the request. This buffer is filled by the host side
- request_size
- - request buffer size
- max_response_size
- - max response buffer size set on host side
- response
- - a buffer storing the response. This buffer is filled by the device side
- response_size
- - response size
Returns
-
Description
This function is called when the host calls doca_pcc_mailbox_send(). The mailbox format is defined by the user.
Note:: Implementation of this function is optional.
See also:
1.18.1.5. DOCA PCC Device Utilities
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
- #define doca_pcc_dev_fence_all ( )
- fence all
- #define doca_pcc_dev_fence_io ( )
- fence io operations
- #define doca_pcc_dev_fence_memory ( )
- fence memory operations
- #define doca_pcc_dev_fence_w_r ( )
- fence w/r
- #define doca_pcc_dev_fls ( a ) (32 - __builtin_clz(a))
- 32b find last set
- #define doca_pcc_dev_fxp_log2 ( a_fp ) __dpa_fxp_log2(a_fp)
- fixed point 16b log 2
- #define doca_pcc_dev_fxp_mult ( a, b )
- fixed point 16b mult
- #define doca_pcc_dev_fxp_power2 ( a_fp ) __dpa_fxp_pow2(a_fp)
- fixed point 16b power of 2
- #define doca_pcc_dev_fxp_recip ( a_fp ) __dpa_fxp_rcp(a_fp)
- fixed point 16b reciprocal
- #define doca_pcc_dev_get_thread_time ( ) __dpa_thread_time()
- return 1usec tick count
- #define doca_pcc_dev_mult ( a, b )
- mult wrapper
Functions
- DOCA_STABLE FORCE_INLINE uint64_t doca_pcc_dev_get_timer ( void )
- Core timer access (elapsed time in uSec) function 64 bits.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timer_lo ( void )
- Core timer access (elapsed time in uSec) function 32 bits.
Defines
- #define DOCA_DPA_DEVICE
-
Note:
Must be defined before the first API use/include of DOCA
- #define doca_pcc_dev_fence_all ( )
-
Value
__dpa_thread_fence(__DPA_SYSTEM, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_io ( )
-
Value
__dpa_thread_fence(__DPA_MMIO, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_memory ( )
-
Value
__dpa_thread_fence(__DPA_MEMORY, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_w_r ( )
-
Value
__dpa_thread_fence(__DPA_MEMORY, __DPA_W, __DPA_R)
- #define doca_pcc_dev_fls ( a ) (32 - __builtin_clz(a))
-
- #define doca_pcc_dev_fxp_log2 ( a_fp ) __dpa_fxp_log2(a_fp)
-
- #define doca_pcc_dev_fxp_mult ( a, b )
-
Value
((uint32_t)((doca_pcc_dev_mult((a), (b)) >> 16) & 0xffffffff))
- #define doca_pcc_dev_fxp_power2 ( a_fp ) __dpa_fxp_pow2(a_fp)
-
- #define doca_pcc_dev_fxp_recip ( a_fp ) __dpa_fxp_rcp(a_fp)
-
- #define doca_pcc_dev_get_thread_time ( ) __dpa_thread_time()
-
- #define doca_pcc_dev_mult ( a, b )
-
Value
((uint64_t)(a) * (uint64_t)(b))
Functions
- DOCA_STABLE FORCE_INLINE uint64_t doca_pcc_dev_get_timer ( void )
-
Core timer access (elapsed time in uSec) function 64 bits.
Returns
time in uSec.
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timer_lo ( void )
-
Core timer access (elapsed time in uSec) function 32 bits.
Returns
time in uSec.
Description
1.18.1.6. DOCA PCC Device Notification Point
[ DOCA PCC Device ]
DOCA PCC NP Device library. For more details please refer to the user guide on DOCA devzone.
Classes
-
struct doca_pcc_np_dev_response_packet
- structure for response packet
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
Functions
- doca_pcc_dev_error_t doca_pcc_dev_np_user_packet_handler ( doca_pcc_np_dev_request_packet* in, doca_pcc_np_dev_response_packet* out )
- Main user function (implemented by the user) Called by the lib upon receiving a packet. The user:Retrieves the relevant fields using doca_pcc_np_dev_get_raw_packet().Prepares the response (currently up to 12 bytes) and sets the response struct. The lib:Sends the response packet out.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_l4_header ( const doca_pcc_np_dev_request_packet* input )
- Returns a pointer to the L4/udp header of the packet.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_l4_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from L4/udp header.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_max_response_size ( doca_pcc_np_dev_response_packet* out )
- Return data buffer size of out.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_payload ( const doca_pcc_np_dev_request_packet* input )
- Returns a pointer to the payload of the packet.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_payload_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from payload after mad header.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_raw_packet ( const doca_pcc_np_dev_request_packet* input )
- Return packet from ethernet header.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_raw_packet_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from ethernet header.
Defines
Functions
- doca_pcc_dev_error_t doca_pcc_dev_np_user_packet_handler ( doca_pcc_np_dev_request_packet* in, doca_pcc_np_dev_response_packet* out )
-
Main user function (implemented by the user) Called by the lib upon receiving a packet. The user:Retrieves the relevant fields using doca_pcc_np_dev_get_raw_packet().Prepares the response (currently up to 12 bytes) and sets the response struct. The lib:Sends the response packet out.
Parameters
- in
- - opaque structure that has request packet buffer, size etc.
- out
- - buffer preallocated for response packet that will be returned
Returns
DOCA_PCC_NP_DEV_STATUS_OK on success, DOCA_PCC_NP_DEV_STATUS_FAIL on failure.
Description
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_l4_header ( const doca_pcc_np_dev_request_packet* input )
-
Returns a pointer to the L4/udp header of the packet.
Parameters
- input
- - probe packet context
Returns
A pointer to the L4/udp header of the request packet
Description
The returned buffer starting with the L4/udp header followed by the packet payload.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_l4_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from L4/udp header.
Parameters
- input
- - probe packet context
Returns
packet size in bytes from the L4/udp header
Description
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_max_response_size ( doca_pcc_np_dev_response_packet* out )
-
Return data buffer size of out.
Parameters
- out
- - a buffer storing the part user filled in response packet
Returns
data buffer size of out
Description
This function is to get data buffer size of out
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_payload ( const doca_pcc_np_dev_request_packet* input )
-
Returns a pointer to the payload of the packet.
Parameters
- input
- - probe packet context
Returns
A pointer to the payload of the request packet
Description
The returned buffer starting at payload after mad header.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_payload_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from payload after mad header.
Parameters
- input
- - probe packet context
Returns
packet size in bytes from payload
Description
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_raw_packet ( const doca_pcc_np_dev_request_packet* input )
-
Return packet from ethernet header.
Parameters
- input
- - a buffer storing the request packet and size of the packet
Returns
pointer pointed to ethernet header of the request packet
Description
This function is to get packet from ethernet header of input
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_raw_packet_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from ethernet header.
Parameters
- input
- - a buffer storing the request packet and size of the packet
Returns
packet size from ethernet header
Description
This function is to get packet size of input
1.18.1.1. DOCA PCC Device Algorithm Access
[ DOCA PCC Device ]
Classes
-
struct doca_pcc_dev_algo_meta_data
- This struct provides meta data for a pcc user algo.
Functions
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_counter ( uint32_t algo_idx, uint32_t counter_id, uint32_t max_value, uint32_t permissions, uint32_t counter_desc_size, uint64_t counter_desc_addr )
- Initialize a single counter for an algo.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_metadata ( uint32_t algo_idx, const doca_pcc_dev_algo_meta_data* user_def, uint32_t param_num, uint32_t counter_num )
- Initialize the algo database.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_param ( uint32_t algo_idx, uint32_t param_id, uint32_t default_value, uint32_t max_value, uint32_t min_value, uint32_t permissions, uint32_t param_desc_size, uint64_t param_desc_addr )
- Initialize a single parameter for an algo.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_index ( uint32_t port_num, uint32_t algo_slot )
- Get identifier of a specific algo and specific port.
- DOCA_STABLE uint32_t* doca_pcc_dev_get_algo_params ( uint32_t port_num, uint32_t algo_slot )
- Get pointer to param array of a specific algo and specific port.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_params_num ( uint32_t port_num, uint32_t algo_slot )
- Get number of params supported per algo on the port.
- DOCA_STABLE uint32_t* doca_pcc_dev_get_counters ( uint32_t port_num, uint32_t algo_slot )
- Get pointer to counter array of a specific algo and specific port.
- DOCA_STABLE uint32_t doca_pcc_dev_get_counters_num ( uint32_t port_num, uint32_t algo_slot )
- Get number of counters supported per algo on the port.
- doca_pcc_dev_error_t doca_pcc_dev_init_algo_slot ( uint32_t portid, uint32_t algo_slot, uint32_t algo_idx, uint32_t algo_en )
- Initialize the algo per port database.
Functions
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_counter ( uint32_t algo_idx, uint32_t counter_id, uint32_t max_value, uint32_t permissions, uint32_t counter_desc_size, uint64_t counter_desc_addr )
-
Initialize a single counter for an algo.
Parameters
- algo_idx
- - Algo identifier.
- counter_id
- - counter id (from 0 to doca_pcc_dev_algo_init_metadata(...).counter_num)
- max_value
- - max value that allowed for the counter.
- permissions
- - If 1 allows value update, if 0 update is disabled.
- counter_desc_size
- - The size in bytes for the counter descriptor string field
- counter_desc_addr
- - A pointer to the counter descriptor string field.
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes a single counter (counterid) for a specific algo (algo_idx) The counter_id should be in the bounds declared by doca_pcc_dev_algo_init_metadata(...) The counter info (e.g. description) is "global" to the algo on all ports.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_metadata ( uint32_t algo_idx, const doca_pcc_dev_algo_meta_data* user_def, uint32_t param_num, uint32_t counter_num )
-
Initialize the algo database.
Parameters
- algo_idx
- - algo index.
- user_def
- - basic version info + pointer and size of algo description string
- param_num
- - max number of params (will be used to reserve param space)
- counter_num
- - max number of counters (will be used to reserve counter space)
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes an algo data-structure. Each algorithm has in index (not to be confused with the doca_pcc_dev_algo_meta_data::algo_id) Algo database includes a metadata area containing basic algo information, and a params and counters metadata area. The number of parameters and counters is configurable at init time. The space allocated for the algo data-structure using this function is visible to the PCC infrastructure. This is required to allow the infrastructure to read/update param / counter information directly when handling PPCC MADs or commands. The user can use additional memory by allocating global variables
This function should be called once per algo during init.
- doca_pcc_dev_error_t doca_pcc_dev_algo_init_param ( uint32_t algo_idx, uint32_t param_id, uint32_t default_value, uint32_t max_value, uint32_t min_value, uint32_t permissions, uint32_t param_desc_size, uint64_t param_desc_addr )
-
Initialize a single parameter for an algo.
Parameters
- algo_idx
- - Algo index.
- param_id
- - parameter id (from 0 to doca_pcc_dev_algo_init_metadata(...).param_num)
- default_value
- - base value.
- max_value
- - max value that is enforced by set function.
- min_value
- - min value that is enforced by set function..
- permissions
- - If 1 allows value update, if 0 update is disabled.
- param_desc_size
- - The size in bytes for the parameter descriptor string field
- param_desc_addr
- - A pointer to the parameter descriptor string field.
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes a single parameter (param_id) for a specific algo (algo_idx) The param_id should be in the bounds declared by doca_pcc_dev_algo_init_metadata(...) The param info is "global" to the algo on all ports. The current value of the param that is initialized to the "default" value can be modified at the port level.
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_index ( uint32_t port_num, uint32_t algo_slot )
-
Get identifier of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
Algo identifier.
Description
- DOCA_STABLE uint32_t* doca_pcc_dev_get_algo_params ( uint32_t port_num, uint32_t algo_slot )
-
Get pointer to param array of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
array of 32b parameters
Description
This retrieves the pointer to an array of param (current value) of up to doca_pcc_dev_get_algo_params_num() params used by algo_slot on the port
- DOCA_STABLE uint32_t doca_pcc_dev_get_algo_params_num ( uint32_t port_num, uint32_t algo_slot )
-
Get number of params supported per algo on the port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
number of supported params
Description
- DOCA_STABLE uint32_t* doca_pcc_dev_get_counters ( uint32_t port_num, uint32_t algo_slot )
-
Get pointer to counter array of a specific algo and specific port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
array of 32b counters
Description
This retrieves the pointer to an array of counters (up to doca_pcc_dev_get_counters_num(...) counters) used by algo_slot on the port
- DOCA_STABLE uint32_t doca_pcc_dev_get_counters_num ( uint32_t port_num, uint32_t algo_slot )
-
Get number of counters supported per algo on the port.
Parameters
- port_num
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot"
Returns
number of supported counters
Description
- doca_pcc_dev_error_t doca_pcc_dev_init_algo_slot ( uint32_t portid, uint32_t algo_slot, uint32_t algo_idx, uint32_t algo_en )
-
Initialize the algo per port database.
Parameters
- portid
- - port to be initialized
- algo_slot
- - Algo slot identifier as referred to in the PPCC command field "algo_slot" if possible it should be equal to the algo_idx
- algo_idx
- - Algo identifier.
- algo_en
- - 1 mark algo as enabled, if 0 algo will not be reported if queried
Returns
DOCA_PCC_DEV_STATUS_FAIL if input parameters are out of range.
Description
This function initializes the algo per port parameter database, and maps an algo_idx (global algo index) to a specific slot per port. This function allocates parameters and counters per port. The default parameters values are taken from the algo metadata set by doca_pcc_dev_algo_init_param() . The counters and parameters can be get/set by the infrastructure based on MAD and access register PPCC command Function MUST be called after calls to doca_pcc_dev_algo_init_param for this algo type
1.18.1.2. DOCA PCC Device Common
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
- #define FORCE_INLINE
- static inline wrapper
Enumerations
- enum doca_pcc_dev_error_t
- API functions return status.
- enum doca_pcc_dev_nic_counter_ids_t
- NIC counter IDs.
Functions
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_config ( uint32_t* counter_ids, uint32_t num_counters, uint32_t* values )
- Prepare a list of counters to read.
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_sample ( void )
- Sample counters according to the prior configuration call.
Defines
- #define DOCA_DPA_DEVICE
-
Note:
Must be defined before the first API use/include of DOCA
- #define FORCE_INLINE
-
Value
static inline __attribute__((always_inline))
Enumerations
- enum doca_pcc_dev_error_t
-
Values
- DOCA_PCC_DEV_STATUS_OK = 0
- completed successfully
- DOCA_PCC_DEV_STATUS_FAIL = 1
- Failed
- enum doca_pcc_dev_nic_counter_ids_t
-
Values
- DOCA_PCC_DEV_NIC_COUNTER_PORT0_RX_BYTES = 0x10
- port 0 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT1_RX_BYTES = 0x11
- port 1 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT2_RX_BYTES = 0x12
- port 2 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT3_RX_BYTES = 0x13
- port 3 RX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT0_TX_BYTES = 0x20
- port 0 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT1_TX_BYTES = 0x21
- port 1 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT2_TX_BYTES = 0x22
- port 2 TX bytes NIC counter ID
- DOCA_PCC_DEV_NIC_COUNTER_PORT3_TX_BYTES = 0x23
- port 3 TX bytes NIC counter ID
Functions
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_config ( uint32_t* counter_ids, uint32_t num_counters, uint32_t* values )
-
Prepare a list of counters to read.
Parameters
- counter_ids
- - An array of counter ids.
- num_counters
- - number of counters in the counter_ids array
- values
- - buffer to store counters values (32b) read by doca_pcc_dev_nic_counters_sample()
Returns
- void process crashes in case of: counters_ids too large bad pointers of values, counter_ids unknown counter
Description
The list is stored in kernel memory. A single counters config per process is supported.
Note:arrays memory must be defined in global or heap memory only.
- DOCA_EXPERIMENTAL void doca_pcc_dev_nic_counters_sample ( void )
-
Sample counters according to the prior configuration call.
Returns
void. process crashes in case of: doca_pcc_dev_nic_counters_config() never called
Description
Sample counter_ids, num_counters and values buffer provided in the last successful call to doca_pcc_dev_nic_counters_config(). This call ensures fastest sampling on a pre-checked counter ids and buffers.
1.18.1.3. DOCA PCC Device Event
[ DOCA PCC Device ]
Functions
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_ack_nack_cnp_extra_t doca_pcc_dev_get_ack_nack_cnp_extra ( doca_pcc_dev_event_t* event )
- For ACK/NACK/CNP events, extra information including number of coalesced events.
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_event_general_attr_t doca_pcc_dev_get_ev_attr ( doca_pcc_dev_event_t* event )
- For all events, return structure with general information such as event type, subtype, port and flags.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_flowtag ( doca_pcc_dev_event_t* event )
- For all events, flow tag to indicate different flows.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_fw_settings ( doca_pcc_dev_event_t* event, int n )
- For FW events only, three DWORDs of FW data.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_ack_first_sn ( doca_pcc_dev_event_t* event )
- For ACK/NACK/CNP events, first coalesced event serial number.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_first_timestamp ( doca_pcc_dev_event_t* event )
- For TX/ACK/NACK/CNP events, first coalesced event timestamp.
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_roce_tx_cntrs_t doca_pcc_dev_get_roce_tx_cntrs ( doca_pcc_dev_event_t* event )
- For TX events only, counters including byte count and packet count.
- DOCA_EXPERIMENTAL FORCE_INLINE unsigned char* doca_pcc_dev_get_rtt_raw_data ( doca_pcc_dev_event_t* event )
- Returns the user defined event data.
- DOCA_EXPERIMENTAL FORCE_INLINE size_t doca_pcc_dev_get_rtt_raw_data_size ( doca_pcc_dev_event_t* event )
- Returns the user defined event data size in bytes.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_recv_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT request is received.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_send_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT request is sent.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_resp_send_timestamp ( doca_pcc_dev_event_t* event )
- For RTT events only, the time when RTT response is sent.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_sn ( doca_pcc_dev_event_t* event )
- For all events, serial number of this event.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timestamp ( doca_pcc_dev_event_t* event )
- For all events, timestamp of this event.
Functions
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_ack_nack_cnp_extra_t doca_pcc_dev_get_ack_nack_cnp_extra ( doca_pcc_dev_event_t* event )
-
For ACK/NACK/CNP events, extra information including number of coalesced events.
Parameters
- event
- - pointer to opaque event struct
Returns
pcc_ack_nack_cnp_extra_t
Description
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_event_general_attr_t doca_pcc_dev_get_ev_attr ( doca_pcc_dev_event_t* event )
-
For all events, return structure with general information such as event type, subtype, port and flags.
Parameters
- event
- - pointer to opaque event struct
Returns
doca_pcc_dev_event_general_attr_t
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_flowtag ( doca_pcc_dev_event_t* event )
-
For all events, flow tag to indicate different flows.
Parameters
- event
- - pointer to opaque event structs
Returns
32 bit flow_tag
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_fw_settings ( doca_pcc_dev_event_t* event, int n )
-
For FW events only, three DWORDs of FW data.
Parameters
- event
- - pointer to opaque event struct
- n
- - dword index 0..2
Returns
32 bit DWORD information from FW
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_ack_first_sn ( doca_pcc_dev_event_t* event )
-
For ACK/NACK/CNP events, first coalesced event serial number.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit first serial number
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_roce_first_timestamp ( doca_pcc_dev_event_t* event )
-
For TX/ACK/NACK/CNP events, first coalesced event timestamp.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit first time stamp (1 nSec granularity)
Description
- DOCA_STABLE FORCE_INLINE doca_pcc_dev_roce_tx_cntrs_t doca_pcc_dev_get_roce_tx_cntrs ( doca_pcc_dev_event_t* event )
-
For TX events only, counters including byte count and packet count.
Parameters
- event
- - pointer to opaque event struct
Returns
pcc_roce_tx_cntrs_t
Description
- DOCA_EXPERIMENTAL FORCE_INLINE unsigned char* doca_pcc_dev_get_rtt_raw_data ( doca_pcc_dev_event_t* event )
-
Returns the user defined event data.
Parameters
- event
- - pointer to opaque event struct
Returns
A pointer to the user defined event data
Description
This function is to be used together with a custom user NP implementation. The user can define a custom data format in the probe response packet.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL FORCE_INLINE size_t doca_pcc_dev_get_rtt_raw_data_size ( doca_pcc_dev_event_t* event )
-
Returns the user defined event data size in bytes.
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_recv_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT request is received.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_req_send_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT request is sent.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_rtt_resp_send_timestamp ( doca_pcc_dev_event_t* event )
-
For RTT events only, the time when RTT response is sent.
Parameters
- event
- - pointer to opaque event struct
Returns
time stamp in 1 nSec
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_sn ( doca_pcc_dev_event_t* event )
-
For all events, serial number of this event.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit sn
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timestamp ( doca_pcc_dev_event_t* event )
-
For all events, timestamp of this event.
Parameters
- event
- - pointer to opaque event struct
Returns
32 bit time stamp (1 nSec granularity)
Description
1.18.1.4. DOCA PCC Device Services
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
Functions
- DOCA_STABLE void doca_pcc_dev_printf ( const char* format, ... )
- Print to Host.
- DOCA_EXPERIMENTAL unsigned int doca_pcc_dev_thread_rank ( void )
- Obtains the thread rank.
- DOCA_STABLE void DOCA_STABLE void doca_pcc_dev_trace_5 ( int format_id, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5 )
- Creates trace message entry with 3 arguments.
- DOCA_STABLE void doca_pcc_dev_trace_flush ( void )
- Flush the trace message buffer to Host.
- doca_pcc_dev_error_t doca_pcc_dev_user_mailbox_handle ( void* request, uint32_t request_size, uint32_t max_response_size, void* response, uint32_t* response_size )
- User callback to process a request from host to device.
Defines
Functions
- DOCA_STABLE void doca_pcc_dev_printf ( const char* format, ... )
-
Print to Host.
Parameters
- format
- - Format string that contains the text to be written to stdout (same as from regular printf)
Description
This function prints from device to host's standard output stream. Multiple threads may call this routine simultaneously. Printing is a convenience service, and due to limited buffering on the host, not all print statements may appear on the host
- DOCA_EXPERIMENTAL unsigned int doca_pcc_dev_thread_rank ( void )
-
Obtains the thread rank.
Returns
Returns the thread rank.
Description
Retrieves the thread rank from the group of threads that run PCC. The function returns a number in {0..N-1}, where N is the number of threads requested to run PCC
- DOCA_STABLE void DOCA_STABLE void doca_pcc_dev_trace_5 ( int format_id, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5 )
-
Creates trace message entry with 3 arguments.
Parameters
- format_id
- -the template format id to print message accordingly
- arg1
- - argument #1 to format into the template
- arg2
- - argument #2 to format into the template
- arg3
- - argument #3 to format into the template
- arg4
- - argument #4 to format into the template
- arg5
- - argument #5 to format into the template
Returns
void.
Description
- DOCA_STABLE void doca_pcc_dev_trace_flush ( void )
-
Flush the trace message buffer to Host.
Returns
void.
Description
As soon as a buffer is fully occupied it is internally sent to host, however user can ask partially occupied buffer to be sent to host. Its intended use is at end of run to flush whatever messages left.
Note:: Frequent call to this API might cause performance issues.
- doca_pcc_dev_error_t doca_pcc_dev_user_mailbox_handle ( void* request, uint32_t request_size, uint32_t max_response_size, void* response, uint32_t* response_size )
-
User callback to process a request from host to device.
Parameters
- request
- - a buffer storing the request. This buffer is filled by the host side
- request_size
- - request buffer size
- max_response_size
- - max response buffer size set on host side
- response
- - a buffer storing the response. This buffer is filled by the device side
- response_size
- - response size
Returns
-
Description
This function is called when the host calls doca_pcc_mailbox_send(). The mailbox format is defined by the user.
Note:: Implementation of this function is optional.
See also:
1.18.1.5. DOCA PCC Device Utilities
[ DOCA PCC Device ]
DOCA PCC Device library. For more details please refer to the user guide on DOCA devzone.
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
- #define doca_pcc_dev_fence_all ( )
- fence all
- #define doca_pcc_dev_fence_io ( )
- fence io operations
- #define doca_pcc_dev_fence_memory ( )
- fence memory operations
- #define doca_pcc_dev_fence_w_r ( )
- fence w/r
- #define doca_pcc_dev_fls ( a ) (32 - __builtin_clz(a))
- 32b find last set
- #define doca_pcc_dev_fxp_log2 ( a_fp ) __dpa_fxp_log2(a_fp)
- fixed point 16b log 2
- #define doca_pcc_dev_fxp_mult ( a, b )
- fixed point 16b mult
- #define doca_pcc_dev_fxp_power2 ( a_fp ) __dpa_fxp_pow2(a_fp)
- fixed point 16b power of 2
- #define doca_pcc_dev_fxp_recip ( a_fp ) __dpa_fxp_rcp(a_fp)
- fixed point 16b reciprocal
- #define doca_pcc_dev_get_thread_time ( ) __dpa_thread_time()
- return 1usec tick count
- #define doca_pcc_dev_mult ( a, b )
- mult wrapper
Functions
- DOCA_STABLE FORCE_INLINE uint64_t doca_pcc_dev_get_timer ( void )
- Core timer access (elapsed time in uSec) function 64 bits.
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timer_lo ( void )
- Core timer access (elapsed time in uSec) function 32 bits.
Defines
- #define DOCA_DPA_DEVICE
-
Note:
Must be defined before the first API use/include of DOCA
- #define doca_pcc_dev_fence_all ( )
-
Value
__dpa_thread_fence(__DPA_SYSTEM, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_io ( )
-
Value
__dpa_thread_fence(__DPA_MMIO, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_memory ( )
-
Value
__dpa_thread_fence(__DPA_MEMORY, __DPA_RW, __DPA_RW)
- #define doca_pcc_dev_fence_w_r ( )
-
Value
__dpa_thread_fence(__DPA_MEMORY, __DPA_W, __DPA_R)
- #define doca_pcc_dev_fls ( a ) (32 - __builtin_clz(a))
-
- #define doca_pcc_dev_fxp_log2 ( a_fp ) __dpa_fxp_log2(a_fp)
-
- #define doca_pcc_dev_fxp_mult ( a, b )
-
Value
((uint32_t)((doca_pcc_dev_mult((a), (b)) >> 16) & 0xffffffff))
- #define doca_pcc_dev_fxp_power2 ( a_fp ) __dpa_fxp_pow2(a_fp)
-
- #define doca_pcc_dev_fxp_recip ( a_fp ) __dpa_fxp_rcp(a_fp)
-
- #define doca_pcc_dev_get_thread_time ( ) __dpa_thread_time()
-
- #define doca_pcc_dev_mult ( a, b )
-
Value
((uint64_t)(a) * (uint64_t)(b))
Functions
- DOCA_STABLE FORCE_INLINE uint64_t doca_pcc_dev_get_timer ( void )
-
Core timer access (elapsed time in uSec) function 64 bits.
Returns
time in uSec.
Description
- DOCA_STABLE FORCE_INLINE uint32_t doca_pcc_dev_get_timer_lo ( void )
-
Core timer access (elapsed time in uSec) function 32 bits.
Returns
time in uSec.
Description
1.18.1.6. DOCA PCC Device Notification Point
[ DOCA PCC Device ]
DOCA PCC NP Device library. For more details please refer to the user guide on DOCA devzone.
Classes
-
struct doca_pcc_np_dev_response_packet
- structure for response packet
Defines
- #define DOCA_DPA_DEVICE
- declares that we are compiling for the DPA Device
Functions
- doca_pcc_dev_error_t doca_pcc_dev_np_user_packet_handler ( doca_pcc_np_dev_request_packet* in, doca_pcc_np_dev_response_packet* out )
- Main user function (implemented by the user) Called by the lib upon receiving a packet. The user:Retrieves the relevant fields using doca_pcc_np_dev_get_raw_packet().Prepares the response (currently up to 12 bytes) and sets the response struct. The lib:Sends the response packet out.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_l4_header ( const doca_pcc_np_dev_request_packet* input )
- Returns a pointer to the L4/udp header of the packet.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_l4_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from L4/udp header.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_max_response_size ( doca_pcc_np_dev_response_packet* out )
- Return data buffer size of out.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_payload ( const doca_pcc_np_dev_request_packet* input )
- Returns a pointer to the payload of the packet.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_payload_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from payload after mad header.
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_raw_packet ( const doca_pcc_np_dev_request_packet* input )
- Return packet from ethernet header.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_raw_packet_size ( const doca_pcc_np_dev_request_packet* input )
- Return packet size from ethernet header.
Defines
Functions
- doca_pcc_dev_error_t doca_pcc_dev_np_user_packet_handler ( doca_pcc_np_dev_request_packet* in, doca_pcc_np_dev_response_packet* out )
-
Main user function (implemented by the user) Called by the lib upon receiving a packet. The user:Retrieves the relevant fields using doca_pcc_np_dev_get_raw_packet().Prepares the response (currently up to 12 bytes) and sets the response struct. The lib:Sends the response packet out.
Parameters
- in
- - opaque structure that has request packet buffer, size etc.
- out
- - buffer preallocated for response packet that will be returned
Returns
DOCA_PCC_NP_DEV_STATUS_OK on success, DOCA_PCC_NP_DEV_STATUS_FAIL on failure.
Description
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_l4_header ( const doca_pcc_np_dev_request_packet* input )
-
Returns a pointer to the L4/udp header of the packet.
Parameters
- input
- - probe packet context
Returns
A pointer to the L4/udp header of the request packet
Description
The returned buffer starting with the L4/udp header followed by the packet payload.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_l4_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from L4/udp header.
Parameters
- input
- - probe packet context
Returns
packet size in bytes from the L4/udp header
Description
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_max_response_size ( doca_pcc_np_dev_response_packet* out )
-
Return data buffer size of out.
Parameters
- out
- - a buffer storing the part user filled in response packet
Returns
data buffer size of out
Description
This function is to get data buffer size of out
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_payload ( const doca_pcc_np_dev_request_packet* input )
-
Returns a pointer to the payload of the packet.
Parameters
- input
- - probe packet context
Returns
A pointer to the payload of the request packet
Description
The returned buffer starting at payload after mad header.
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_payload_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from payload after mad header.
Parameters
- input
- - probe packet context
Returns
packet size in bytes from payload
Description
- DOCA_EXPERIMENTAL uint8_t* doca_pcc_np_dev_get_raw_packet ( const doca_pcc_np_dev_request_packet* input )
-
Return packet from ethernet header.
Parameters
- input
- - a buffer storing the request packet and size of the packet
Returns
pointer pointed to ethernet header of the request packet
Description
This function is to get packet from ethernet header of input
Note:that no endianness swap is performed by the function.
- DOCA_EXPERIMENTAL size_t doca_pcc_np_dev_get_raw_packet_size ( const doca_pcc_np_dev_request_packet* input )
-
Return packet size from ethernet header.
Parameters
- input
- - a buffer storing the request packet and size of the packet
Returns
packet size from ethernet header
Description
This function is to get packet size of input
1.18.2. DOCA PCC Host
[ DOCA PCC ]
DOCA PCC Host library. For more details please refer to the user guide on DOCA devzone.
Enumerations
- enum doca_pcc_process_state_t
- Process states.
Functions
- doca_error_t doca_devinfo_get_is_pcc_supported ( const doca_devinfo* devinfo )
- Get whether the DOCA device supports PCC reaction point.
- doca_error_t doca_pcc_cap_get_num_probe_format_slots ( doca_pcc* pcc, uint32_t* num_probe_format_slots )
- Get number of available probe format slots.
- doca_error_t doca_pcc_create ( doca_dev* doca_dev, doca_pcc** pcc )
- Create programmable CC Reaction Point context.
- doca_error_t doca_pcc_destroy ( doca_pcc* pcc )
- Destroy a DOCA PCC context.
- doca_error_t doca_pcc_get_max_num_threads ( doca_pcc* pcc, uint32_t* max_num_threads )
- Get a maximal allowed number of threads handling CC events.
- doca_error_t doca_pcc_get_min_num_threads ( doca_pcc* pcc, uint32_t* min_num_threads )
- Get a minimal required number of threads handling CC events.
- doca_error_t doca_pcc_get_process_state ( const doca_pcc* pcc, doca_pcc_process_state_t* process_state )
- Return the state of the process.
- doca_error_t doca_pcc_mailbox_get_request_buffer ( doca_pcc* pcc, void** request_buffer )
- Get mailbox request data buffer address to fill and transfer to device.
- doca_error_t doca_pcc_mailbox_get_response_buffer ( doca_pcc* pcc, void** response_buffer )
- Get mailbox response data buffer address that contains data transferred from device.
- doca_error_t doca_pcc_mailbox_send ( doca_pcc* pcc, uint32_t request_size, uint32_t* response_size, uint32_t* cb_ret_val )
- Send mailbox request data to device.
- doca_error_t doca_pcc_np_cap_is_supported ( const doca_devinfo* devinfo )
- Get whether the DOCA device supports PCC notification point.
- doca_error_t doca_pcc_np_create ( doca_dev* doca_dev, doca_pcc** pcc )
- Create programmable CC Notification Point context.
- doca_error_t doca_pcc_np_set_ifa2_gns_ignore ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t ignore_mask, uint8_t ignore_value )
- Set GNS ignore for IFA2 packets.
- doca_error_t doca_pcc_rp_set_ccmad_remote_sw_handler ( doca_pcc* pcc, uint32_t probe_format_slot, bool sw_handler )
- Set sw remote handler for CCMAD probe type.
- doca_error_t doca_pcc_rp_set_ifa2_gns ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t gns )
- Set GNS value for IFA2 packets.
- doca_error_t doca_pcc_rp_set_ifa2_hop_limit ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t hop_limit )
- Set hop_limit field in the metadata header for IFA2 packets.
- doca_error_t doca_pcc_set_app ( doca_pcc* pcc, doca_pcc_app* app )
- Set program app for PCC context.
- doca_error_t doca_pcc_set_ccmad_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
- Set CCMAD probe packet format for the pcc process.
- doca_error_t doca_pcc_set_dev_coredump_file ( doca_pcc* pcc, const char* file_name )
- Set output file to write crash data and coredump in case of unrecoverable error on the device.
- doca_error_t doca_pcc_set_ifa1_probe_marker ( doca_pcc* pcc, uint32_t probe_format_slot, uint64_t probe_marker )
- Set probe marker value for IFA1 probe.
- doca_error_t doca_pcc_set_ifa1_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
- Set ifa1 probe packet format for the pcc process.
- doca_error_t doca_pcc_set_ifa2_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
- Set ifa2 probe packet format for the pcc process.
- doca_error_t doca_pcc_set_mailbox ( doca_pcc* pcc, uint32_t max_request_size, uint32_t max_response_size )
- Set mailbox attributes to obtain and pass data from and to the device.
- doca_error_t doca_pcc_set_print_buffer_size ( doca_pcc* pcc, size_t buffer_size )
- Set buffer size of DPA print message.
- doca_error_t doca_pcc_set_thread_affinity ( doca_pcc* pcc, uint32_t num_threads, uint32_t* affinity_configs )
- Configure affinity of threads handling CC events.
- doca_error_t doca_pcc_set_trace_message ( doca_pcc* pcc, char** trace_message )
- Set message for trace printing.
- doca_error_t doca_pcc_start ( doca_pcc* pcc )
- Start a PCC context Register the pcc process in the NIC hw.
- doca_error_t doca_pcc_stop ( doca_pcc* pcc )
- Stop a PCC context.
- doca_error_t doca_pcc_wait ( doca_pcc* pcc, int wait_time )
- Wait on events or timeout from device for given time in seconds.
Enumerations
- enum doca_pcc_process_state_t
-
Values
- DOCA_PCC_PS_ACTIVE = 0
- The process handles CC events (only one process is active at a given time)
- DOCA_PCC_PS_STANDBY = 1
- The process is in standby mode (another process is already ACTIVE)
- DOCA_PCC_PS_DEACTIVATED = 2
- The process was deactivated by NIC FW and should be destroyed
- DOCA_PCC_PS_ERROR = 3
- The process is in error state and should be destroyed
Functions
- doca_error_t doca_devinfo_get_is_pcc_supported ( const doca_devinfo* devinfo )
-
Get whether the DOCA device supports PCC reaction point.
Parameters
- devinfo
- - The device to query
Returns
DOCA_SUCCESS - in case of the DOCA device queried has PCC reaction point support Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device queried does not support PCC reaction point
Description
- doca_error_t doca_pcc_cap_get_num_probe_format_slots ( doca_pcc* pcc, uint32_t* num_probe_format_slots )
-
Get number of available probe format slots.
Parameters
- pcc
- - PCC context
- num_probe_format_slots
- - number of available probe format slots
Description
The NIC may support multiple probe formats in parallel. This function returns the number of probe formats supported by the device used to open the pcc context.
The caller may set probe_format_slot values of 0 to num_probe_format_slots - 1 in the functions referring to this value.
- doca_error_t doca_pcc_create ( doca_dev* doca_dev, doca_pcc** pcc )
-
Create programmable CC Reaction Point context.
Parameters
- doca_dev
- - DOCA device
- pcc
- - Created PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NOT_SUPPORTED - the device does not support PCC
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
This function creates a DOCA PCC Reaction Point context to capture and route PCC events to the DPA.
- doca_error_t doca_pcc_destroy ( doca_pcc* pcc )
-
Destroy a DOCA PCC context.
Parameters
- pcc
- - Previously created PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
Description
This function destroys PCC context created by doca_pcc_create() When the termination is started the process will stop handling PCC events. Issuing a ^c during doca_pcc_wait(...) will also result in the application's termination.
- doca_error_t doca_pcc_get_max_num_threads ( doca_pcc* pcc, uint32_t* max_num_threads )
-
Get a maximal allowed number of threads handling CC events.
Parameters
- pcc
- - PCC context
- max_num_threads
- - maximal number of threads used by pcc
Returns
DOCA_SUCCESS - in case of success Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_pcc_get_min_num_threads ( doca_pcc* pcc, uint32_t* min_num_threads )
-
Get a minimal required number of threads handling CC events.
Parameters
- pcc
- - PCC context
- min_num_threads
- - minimal number of threads used by pcc
Returns
DOCA_SUCCESS - in case of success Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
Description
- doca_error_t doca_pcc_get_process_state ( const doca_pcc* pcc, doca_pcc_process_state_t* process_state )
-
Return the state of the process.
Parameters
- pcc
- - PCC context
- process_state
- - state of the PCC process. In case positive wait_time is specified and expired, DEACTIVATED state will be returned.
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - in case pcc is not started
Description
- doca_error_t doca_pcc_mailbox_get_request_buffer ( doca_pcc* pcc, void** request_buffer )
-
Get mailbox request data buffer address to fill and transfer to device.
Parameters
- pcc
- - PCC context
- request_buffer
- - pointer to request data buffer
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - in case pcc is not started
- DOCA_ERROR_INITIALIZATION - mailbox was not set for PCC context
Description
- doca_error_t doca_pcc_mailbox_get_response_buffer ( doca_pcc* pcc, void** response_buffer )
-
Get mailbox response data buffer address that contains data transferred from device.
Parameters
- pcc
- - PCC context
- response_buffer
- - pointer to response data buffer
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - in case pcc is not started
- DOCA_ERROR_INITIALIZATION - mailbox was not set for PCC context
Description
- doca_error_t doca_pcc_mailbox_send ( doca_pcc* pcc, uint32_t request_size, uint32_t* response_size, uint32_t* cb_ret_val )
-
Send mailbox request data to device.
Parameters
- pcc
- - PCC context
- request_size
- - size of request data to send to device
- response_size
- - size of response data received from device
- cb_ret_val
- - return value of device user callback doca_pcc_dev_user_mailbox_handle()
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - in case pcc is not started
- DOCA_ERROR_INITIALIZATION - mailbox was not set for PCC context
Description
- doca_error_t doca_pcc_np_cap_is_supported ( const doca_devinfo* devinfo )
-
Get whether the DOCA device supports PCC notification point.
Parameters
- devinfo
- - The device to query
Returns
DOCA_SUCCESS - in case of the DOCA device queried has PCC notification point support Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device queried does not support PCC notification point
Description
- doca_error_t doca_pcc_np_create ( doca_dev* doca_dev, doca_pcc** pcc )
-
Create programmable CC Notification Point context.
Parameters
- doca_dev
- - DOCA device
- pcc
- - Created PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NOT_SUPPORTED - the device does not support PCC
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
This function creates a DOCA PCC Notification Point context given a DOCA device
- doca_error_t doca_pcc_np_set_ifa2_gns_ignore ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t ignore_mask, uint8_t ignore_value )
-
Set GNS ignore for IFA2 packets.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- ignore_mask
- - GNS ignore mask - limited to 4 bits
- ignore_value
- - GNS ignore value - limited to 4 bits
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Applicable to: NP role when probe packet format is set to IFA2
When (ignore_mask != 0), if: (packet.GNS & ignore_mask) == (ignore_value & ignore_mask) the packet will not be sent to the NP process, and will be delivered to SW as a standard eth packet.
By default all IFA2 packets are sent to the NP process (ignore_mask = 0)
See also:
- doca_error_t doca_pcc_rp_set_ccmad_remote_sw_handler ( doca_pcc* pcc, uint32_t probe_format_slot, bool sw_handler )
-
Set sw remote handler for CCMAD probe type.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- sw_handler
- - When set, packets generated by the RP are handled by the NP PCC process. When cleared, packets generated by the RP are handled by the NP HW handler
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
When a CCMAD probe packet is received by the remote RX NP port, it can be sent either to the HW CC handler (for rtt probes) or to NP process for any probe format.
See also:
- doca_error_t doca_pcc_rp_set_ifa2_gns ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t gns )
-
Set GNS value for IFA2 packets.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- gns
- - global namespace - limited to 4 bits
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Applicable to: RP role when probe packet format is set to IFA2
By default IFA2 gns value is set to 0xF
See also:
doca_pcc_get_num_probe_format_slots
- doca_error_t doca_pcc_rp_set_ifa2_hop_limit ( doca_pcc* pcc, uint32_t probe_format_slot, uint8_t hop_limit )
-
Set hop_limit field in the metadata header for IFA2 packets.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- hop_limit
- - hop limit value to set
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Applicable to: RP role when probe packet format is set to IFA2
By default IFA2 hop_limit value is set to 0xFE
See also:
doca_pcc_get_num_probe_format_slots
- doca_error_t doca_pcc_set_app ( doca_pcc* pcc, doca_pcc_app* app )
-
Set program app for PCC context.
Parameters
- pcc
- - PCC context
- app
- - PCC application generated by DPACC
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
The context represents a program on the DPA that is referenced by the host process that called the context creation API. Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_set_ccmad_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
-
Set CCMAD probe packet format for the pcc process.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
For RP: Sets the packet type to send to CCMAD when an rtt probe is requested. For NP: defines CCMAD packet type to identify and send to the NP device side code
Note:CCMAD is default value for PCC context probe packet format
See also:
- doca_error_t doca_pcc_set_dev_coredump_file ( doca_pcc* pcc, const char* file_name )
-
Set output file to write crash data and coredump in case of unrecoverable error on the device.
Parameters
- pcc
- - PCC context
- file_name
- - pathname to the output file to write coredump data into
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
- DOCA_ERROR_NO_MEMORY - memory allocation error
Description
Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_set_ifa1_probe_marker ( doca_pcc* pcc, uint32_t probe_format_slot, uint64_t probe_marker )
-
Set probe marker value for IFA1 probe.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
- probe_marker
- - probe marker value
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Applicable to: RP/NP role when probe packet format is set to IFA1
Set the probe marker field value in the generated IFA1 packets. Note: the the most significant bit of the probe parameter must be set.
By default the probe marker is set to 0xAAAAAAAABBBBBBBB
See also:
- doca_error_t doca_pcc_set_ifa1_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
-
Set ifa1 probe packet format for the pcc process.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
For RP: Sets the packet type to send to ifa1 when an rtt probe is requested. For NP: defines ifa1 packet type to identify and send to the NP device side code
See also:
- doca_error_t doca_pcc_set_ifa2_probe_packet_format ( doca_pcc* pcc, uint32_t probe_format_slot )
-
Set ifa2 probe packet format for the pcc process.
Parameters
- pcc
- - PCC context
- probe_format_slot
- - format slot to configure.
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_NOT_SUPPORTED - the device does not support setting probe packet format
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
For RP: Sets the packet type to send to ifa2 when an rtt probe is requested. For NP: defines ifa2 packet type to identify and send to the NP device side code
See also:
- doca_error_t doca_pcc_set_mailbox ( doca_pcc* pcc, uint32_t max_request_size, uint32_t max_response_size )
-
Set mailbox attributes to obtain and pass data from and to the device.
Parameters
- pcc
- - PCC context
- max_request_size
- - max size of request data passed to device
- max_response_size
- - max size of response data passed from device
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_set_print_buffer_size ( doca_pcc* pcc, size_t buffer_size )
-
Set buffer size of DPA print message.
Parameters
- pcc
- - PCC context
- buffer_size
- - size of print buffer from the DPA
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_set_thread_affinity ( doca_pcc* pcc, uint32_t num_threads, uint32_t* affinity_configs )
-
Configure affinity of threads handling CC events.
Parameters
- pcc
- - PCC context
- num_threads
- - number of threads used by pcc. Should be constrained by minimum and maximum allowed number
- affinity_configs
- - array of indexes to assign to threads
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input or invalid number of threads
- DOCA_ERROR_BAD_STATE - PCC context is already started
Description
Must be set before calling doca_pcc_start()
See also:
doca_pcc_get_min_num_threads() and doca_pcc_get_max_num_threads()
- doca_error_t doca_pcc_set_trace_message ( doca_pcc* pcc, char** trace_message )
-
Set message for trace printing.
Parameters
- pcc
- - PCC context
- trace_message
- - message to be printed from trace
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - PCC context is already started
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
Description
Must be set before calling doca_pcc_start()
- doca_error_t doca_pcc_start ( doca_pcc* pcc )
-
Start a PCC context Register the pcc process in the NIC hw.
Parameters
- pcc
- - PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_NO_MEMORY - in case of failure in internal memory allocation
- DOCA_ERROR_NOT_SUPPORTED - the device does not support the PCC role
Description
- doca_error_t doca_pcc_stop ( doca_pcc* pcc )
-
Stop a PCC context.
Parameters
- pcc
- - PCC context
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_DRIVER - in case of error in a DOCA driver call
- DOCA_ERROR_BAD_STATE - in case pcc is not started
Description
- doca_error_t doca_pcc_wait ( doca_pcc* pcc, int wait_time )
-
Wait on events or timeout from device for given time in seconds.
Parameters
- pcc
- - PCC context
- wait_time
- - time in seconds to wait
Returns
DOCA_SUCCESS - in case of success doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - received invalid input
- DOCA_ERROR_BAD_STATE - in case pcc is not started
Description
Providing a negative value for wait time will cause the context to wait on events until the user terminates it.
DOCA lib for exporting events to the telemetry service.
Modules
Defines
- #define DOCA_GUID_SIZE 16
- DOCA GUID size.
- #define DOCA_TELEMETRY_FIELD_TYPE_BOOL "bool"
- DOCA_TELEMETRY_FIELD_TYPE_{} are data types that are used to create doca_telemetry_field;.
- #define DOCA_TELEMETRY_FIELD_TYPE_CHAR "char"
- DOCA telemetry char type.
- #define DOCA_TELEMETRY_FIELD_TYPE_DOUBLE "double"
- DOCA telemetry double type.
- #define DOCA_TELEMETRY_FIELD_TYPE_FLOAT "float"
- DOCA telemetry float type.
- #define DOCA_TELEMETRY_FIELD_TYPE_INT "int"
- DOCA telemetry in type.
- #define DOCA_TELEMETRY_FIELD_TYPE_INT16 "int16_t"
- DOCA telemetry int16 type.
- #define DOCA_TELEMETRY_FIELD_TYPE_INT32 "int32_t"
- DOCA telemetry int32 type.
- #define DOCA_TELEMETRY_FIELD_TYPE_INT64 "int64_t"
- DOCA telemetry int64 type.
- #define DOCA_TELEMETRY_FIELD_TYPE_INT8 "int8_t"
- DOCA telemetry int8 type.
- #define DOCA_TELEMETRY_FIELD_TYPE_LONG "long"
- DOCA telemetry long type.
- #define DOCA_TELEMETRY_FIELD_TYPE_LONGLONG "long long"
- DOCA telemetry longlong type.
- #define DOCA_TELEMETRY_FIELD_TYPE_SHORT "short"
- DOCA telemetry short type.
- #define DOCA_TELEMETRY_FIELD_TYPE_TIMESTAMP
- DOCA telemetry timestamp type.
- #define DOCA_TELEMETRY_FIELD_TYPE_UCHAR "unsigned char"
- DOCA telemetry uchar type.
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT "unsigned int"
- DOCA telemetry uint type.
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT16 "uint16_t"
- DOCA telemetry uint16 type.
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT32 "uint32_t"
- DOCA telemetry uint32 type.
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT64 "uint64_t"
- DOCA telemetry uint64 type.
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT8 "uint8_t"
- DOCA telemetry uint8 type.
- #define DOCA_TELEMETRY_FIELD_TYPE_ULONG "unsigned long"
- DOCA telemetry ulong type.
- #define DOCA_TELEMETRY_FIELD_TYPE_ULONGLONG "unsigned long long"
- DOCA telemetry ulonglong type.
- #define DOCA_TELEMETRY_FIELD_TYPE_USHORT "unsigned short"
- DOCA telemetry ushort type.
Typedefs
- typedef uint8_t doca_guid_t
- DOCA GUID type.
- typedef uint64_t doca_telemetry_timestamp_t
- DOCA schema type index type.
- typedef uint8_t doca_telemetry_type_index_t
- DOCA schema field type index.
Enumerations
- enum doca_telemetry_ipc_status_t
- DOCA telemetry IPC status.
Functions
- doca_error_t doca_telemetry_check_ipc_status ( doca_telemetry_source* doca_source, doca_telemetry_ipc_status_t* status )
- Return status of IPC transport.
- doca_error_t doca_telemetry_field_create ( doca_telemetry_field** field )
- Create new telemetry field.
- doca_error_t doca_telemetry_field_destroy ( doca_telemetry_field* field )
- Destroy field previously created by doca_telemetry_field_create().
- DOCA_EXPERIMENTAL void doca_telemetry_field_set_array_len ( doca_telemetry_field* field_info, uint16_t len )
- Set doca telemetry field length.
- DOCA_EXPERIMENTAL void doca_telemetry_field_set_description ( doca_telemetry_field* field_info, const char* desc )
- Set doca telemetry field description.
- DOCA_EXPERIMENTAL void doca_telemetry_field_set_name ( doca_telemetry_field* field_info, const char* name )
- Set doca telemetry field name.
- DOCA_EXPERIMENTAL void doca_telemetry_field_set_type_name ( doca_telemetry_field* field_info, const char* type )
- Set doca telemetry field type.
- doca_error_t doca_telemetry_get_timestamp ( doca_telemetry_timestamp_t* timestamp )
- Get timestamp in the proper format.
- doca_error_t doca_telemetry_schema_add_type ( doca_telemetry_schema* doca_schema, const char* new_type_name, doca_telemetry_type* type, doca_telemetry_type_index_t* type_index )
- Add user-defined fields to create new type in DOCA schema. The users loses the ownership of the type after a successful invocation of the function.
- doca_error_t doca_telemetry_schema_destroy ( doca_telemetry_schema* doca_schema )
- Destructor for DOCA schema.
- doca_error_t doca_telemetry_schema_get_buf_data_root ( doca_telemetry_schema* doca_schema, const char** path )
- Get data root path.
- doca_error_t doca_telemetry_schema_get_buf_size ( doca_telemetry_schema* doca_schema, uint64_t* size )
- Get buffer size.
- doca_error_t doca_telemetry_schema_get_file_write_max_age ( doca_telemetry_schema* doca_schema, doca_telemetry_timestamp_t* max_age )
- Get file maximum age.
- doca_error_t doca_telemetry_schema_get_file_write_max_size ( doca_telemetry_schema* doca_schema, size_t* size )
- Get file maximum size.
- doca_error_t doca_telemetry_schema_get_ipc_reconnect_time ( doca_telemetry_schema* doca_schema, uint32_t* max_time )
- Get IPC reconnect time in milliseconds.
- doca_error_t doca_telemetry_schema_get_ipc_reconnect_tries ( doca_telemetry_schema* doca_schema, uint8_t* tries )
- Get maximum IPC reconnect tries.
- doca_error_t doca_telemetry_schema_get_ipc_socket_timeout ( doca_telemetry_schema* doca_schema, uint32_t* timeout )
- Get IPC socket timeout in milliseconds.
- doca_error_t doca_telemetry_schema_get_ipc_sockets_dir ( doca_telemetry_schema* doca_schema, const char** sockets_dir )
- Get IPC socket directory.
- doca_error_t doca_telemetry_schema_init ( const char* schema_name, doca_telemetry_schema** doca_schema )
- Initialize DOCA schema to prepare it for setting attributes and adding types. DOCA schema is used to initialize DOCA sources that will collect the data according to the same schema.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_buf_data_root ( doca_telemetry_schema* doca_schema, const char* path )
- Set buffer data root Default path is "/opt/mellanox/doca/services/telemetry/data/".
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_buf_size ( doca_telemetry_schema* doca_schema, uint64_t size )
- Set buffer size Default value is 60000 bytes.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_file_write_enabled ( doca_telemetry_schema* doca_schema )
- Enable file write file write is disabled by default.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_file_write_max_age ( doca_telemetry_schema* doca_schema, doca_telemetry_timestamp_t max_age )
- Set file maximum age Default value is 1 hour.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_file_write_max_size ( doca_telemetry_schema* doca_schema, size_t size )
- Set file maximum size Default value is 1MB.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_enabled ( doca_telemetry_schema* doca_schema )
- Enable IPC IPC is disabled by default.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_reconnect_time ( doca_telemetry_schema* doca_schema, uint32_t max_time )
- Set IPC reconnect time in milliseconds Time limit for reconnect attempts. If the limit is reached, the client is considered disconnected. Default value is 100 milliseconds.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_reconnect_tries ( doca_telemetry_schema* doca_schema, uint8_t tries )
- Set maximum IPC reconnect tries. Number of reconnect attempts during reconnection period. Default value is 3 tries.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_socket_timeout ( doca_telemetry_schema* doca_schema, uint32_t timeout )
- Set IPC socket timeout in milliseconds Timeout for IPC messaging socket. If timeout is reached during send_receive, the client is considered disconnected. Default value is 3000 milliseconds.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_sockets_dir ( doca_telemetry_schema* doca_schema, const char* sockets_dir )
- Set IPC socket directory. Default path is "/opt/mellanox/doca/services/telemetry/ipc_sockets".
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_opaque_events_enabled ( doca_telemetry_schema* doca_schema )
- Enable opaque events Opaque events are disabled by default.
- doca_error_t doca_telemetry_schema_start ( doca_telemetry_schema* doca_schema )
- Finalizes schema setup to start creating Doca Sources from the schema.
- doca_error_t doca_telemetry_source_create ( doca_telemetry_schema* doca_schema, doca_telemetry_source** doca_source )
- Creates a single DOCA source from schema.
- doca_error_t doca_telemetry_source_destroy ( doca_telemetry_source* doca_source )
- Destructor for DOCA source.
- doca_error_t doca_telemetry_source_flush ( doca_telemetry_source* doca_source )
- Immediately flush the data of the DOCA source. This function is not thread-safe and should not be called from different threads without proper access control.
- doca_error_t doca_telemetry_source_get_opaque_report_max_data_size ( doca_telemetry_source* doca_source, uint32_t* max_data_size )
- Get max data size for opaque report.
- doca_error_t doca_telemetry_source_opaque_report ( doca_telemetry_source* doca_source, const doca_guid_t app_id, uint64_t user_defined1, uint64_t user_defined2, const void* data, uint32_t data_size )
- Report opaque event data via DOCA source.
- doca_error_t doca_telemetry_source_report ( doca_telemetry_source* doca_source, doca_telemetry_type_index_t index, void* data, int count )
- Report events data of the same type via DOCA source.
- DOCA_EXPERIMENTAL void doca_telemetry_source_set_id ( doca_telemetry_source* doca_source, const char* source_id )
- Set source id.
- DOCA_EXPERIMENTAL void doca_telemetry_source_set_tag ( doca_telemetry_source* doca_source, const char* source_tag )
- Set source tag.
- doca_error_t doca_telemetry_source_start ( doca_telemetry_source* doca_source )
- Applies source attribute and starts DOCA source.
- doca_error_t doca_telemetry_type_add_field ( doca_telemetry_type* type, doca_telemetry_field* field )
- Add DOCA telemetry field to type. The users loses the ownership of the field after a successful invocation of the function.
- doca_error_t doca_telemetry_type_create ( doca_telemetry_type** type )
- Create new telemetry type.
- doca_error_t doca_telemetry_type_destroy ( doca_telemetry_type* type )
- Destroy doca telemetry type previously created by doca_telemetry_type_create().
Defines
- #define DOCA_GUID_SIZE 16
-
- #define DOCA_TELEMETRY_FIELD_TYPE_BOOL "bool"
DOCA telemetry bool type
- #define DOCA_TELEMETRY_FIELD_TYPE_CHAR "char"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_DOUBLE "double"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_FLOAT "float"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_INT "int"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_INT16 "int16_t"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_INT32 "int32_t"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_INT64 "int64_t"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_INT8 "int8_t"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_LONG "long"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_LONGLONG "long long"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_SHORT "short"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_TIMESTAMP
-
Value
DOCA_TELEMETRY_FIELD_TYPE_UINT64
- #define DOCA_TELEMETRY_FIELD_TYPE_UCHAR "unsigned char"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT "unsigned int"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT16 "uint16_t"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT32 "uint32_t"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT64 "uint64_t"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_UINT8 "uint8_t"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_ULONG "unsigned long"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_ULONGLONG "unsigned long long"
-
- #define DOCA_TELEMETRY_FIELD_TYPE_USHORT "unsigned short"
-
Typedefs
- typedef uint8_t doca_guid_t
DOCA GUID type.
- typedef uint64_t doca_telemetry_timestamp_t
DOCA schema type index type.
- typedef uint8_t doca_telemetry_type_index_t
DOCA schema field type index.
Enumerations
- enum doca_telemetry_ipc_status_t
-
Values
- DOCA_TELEMETRY_IPC_STATUS_FAILED = -1
- DOCA_TELEMETRY_IPC_STATUS_CONNECTED
- DOCA_TELEMETRY_IPC_STATUS_DISABLED
Functions
- doca_error_t doca_telemetry_check_ipc_status ( doca_telemetry_source* doca_source, doca_telemetry_ipc_status_t* status )
-
Return status of IPC transport.
Parameters
- doca_source
- Input doca source.
- status
-
if return is DOCA_SUCCESS then status can be one of the following
- DOCA_TELEMETRY_IPC_STATUS_FAILED - if IPC is not connected.
- DOCA_TELEMETRY_IPC_STATUS_CONNECTED - if IPC is connected.
- DOCA_TELEMETRY_IPC_STATUS_DISABLED - if IPC is disabled from config.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if doca_source is NULL.
Description
- doca_error_t doca_telemetry_field_create ( doca_telemetry_field** field )
-
Create new telemetry field.
Parameters
- field
- Pointer to the newly allocated field.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry field.
Description
- doca_error_t doca_telemetry_field_destroy ( doca_telemetry_field* field )
-
Destroy field previously created by doca_telemetry_field_create().
Parameters
- field
- Pointer to the field.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- DOCA_EXPERIMENTAL void doca_telemetry_field_set_array_len ( doca_telemetry_field* field_info, uint16_t len )
-
Set doca telemetry field length.
Parameters
- field_info
- Pointer to doca telemetry field.
- len
- Field length.
Description
Note:If using single-value type (i.e char) this should be 1.
- DOCA_EXPERIMENTAL void doca_telemetry_field_set_description ( doca_telemetry_field* field_info, const char* desc )
-
Set doca telemetry field description.
Parameters
- field_info
- Pointer to doca telemetry field.
- desc
- Field description.
Description
Note:Passing a field_info value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_field_set_name ( doca_telemetry_field* field_info, const char* name )
-
Set doca telemetry field name.
Parameters
- field_info
- Pointer to doca telemetry field.
- name
- Field name.
Description
Note:Passing a field_info value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_field_set_type_name ( doca_telemetry_field* field_info, const char* type )
-
Set doca telemetry field type.
Parameters
- field_info
- Pointer to doca telemetry field.
- type
- Field type.
Description
Note:Please see DOCA_TELEMETRY_FIELD_TYPE_* for possible field types
Note:Passing a field_info value of NULL will result in an undefined behavior.
- doca_error_t doca_telemetry_get_timestamp ( doca_telemetry_timestamp_t* timestamp )
-
Get timestamp in the proper format.
Parameters
- timestamp
- Timestamp value
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if doca_source is NULL.
Description
- doca_error_t doca_telemetry_schema_add_type ( doca_telemetry_schema* doca_schema, const char* new_type_name, doca_telemetry_type* type, doca_telemetry_type_index_t* type_index )
-
Add user-defined fields to create new type in DOCA schema. The users loses the ownership of the type after a successful invocation of the function.
Parameters
- doca_schema
- Schema to create type in.
- new_type_name
- Name for new type.
- type
- User-defined fields.
- type_index
- Type index for the created type is written to this variable.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - in case of memory allocation failure.
- DOCA_ERROR_INVALID_VALUE - If type name exists or any of the fields have invalid field type
Description
- doca_error_t doca_telemetry_schema_destroy ( doca_telemetry_schema* doca_schema )
-
Destructor for DOCA schema.
Parameters
- doca_schema
- Schema to destroy.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if doca_schema is NULL.
Description
- doca_error_t doca_telemetry_schema_get_buf_data_root ( doca_telemetry_schema* doca_schema, const char** path )
-
Get data root path.
Parameters
- doca_schema
- Pointer to DOCA schema.
- path
- Path to a folder where the data and schema will be stored.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
Note:Ownership of the returned string is transferred to the caller.
- doca_error_t doca_telemetry_schema_get_buf_size ( doca_telemetry_schema* doca_schema, uint64_t* size )
-
Get buffer size.
Parameters
- doca_schema
- Pointer to DOCA schema.
- size
- The buffer size
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_schema_get_file_write_max_age ( doca_telemetry_schema* doca_schema, doca_telemetry_timestamp_t* max_age )
-
Get file maximum age.
Parameters
- doca_schema
- Pointer to DOCA schema.
- max_age
- Maximum file age. Once current file is older than this threshold a new file will be created.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_schema_get_file_write_max_size ( doca_telemetry_schema* doca_schema, size_t* size )
-
Get file maximum size.
Parameters
- doca_schema
- Pointer to DOCA schema.
- size
- Maximum size of binary data file.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_schema_get_ipc_reconnect_time ( doca_telemetry_schema* doca_schema, uint32_t* max_time )
-
Get IPC reconnect time in milliseconds.
Parameters
- doca_schema
- Pointer to DOCA schema.
- max_time
- Maximum reconnect time in milliseconds
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_schema_get_ipc_reconnect_tries ( doca_telemetry_schema* doca_schema, uint8_t* tries )
-
Get maximum IPC reconnect tries.
Parameters
- doca_schema
- Pointer to DOCA schema.
- tries
- Maximum reconnect tries
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_schema_get_ipc_socket_timeout ( doca_telemetry_schema* doca_schema, uint32_t* timeout )
-
Get IPC socket timeout in milliseconds.
Parameters
- doca_schema
- Pointer to ipc timeout attribute.
- timeout
- Maximum socket timeout in milliseconds
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_schema_get_ipc_sockets_dir ( doca_telemetry_schema* doca_schema, const char** sockets_dir )
-
Get IPC socket directory.
Parameters
- doca_schema
- Pointer to DOCA schema.
- sockets_dir
- Path to a folder containing DOCA Telemetry Service (DTS) sockets.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
Note:Ownership of the returned string is transferred to the caller.
- doca_error_t doca_telemetry_schema_init ( const char* schema_name, doca_telemetry_schema** doca_schema )
-
Initialize DOCA schema to prepare it for setting attributes and adding types. DOCA schema is used to initialize DOCA sources that will collect the data according to the same schema.
Parameters
- schema_name
- Name of the schema.
- doca_schema
- Pointer to DOCA schema, NULL on error.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - failed to allocate doca_schema.
- DOCA_ERROR_INITIALIZATION - failed to initialise doca_schema.
- DOCA_ERROR_INVALID_VALUE - invalid input/output parameters.
Description
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_buf_data_root ( doca_telemetry_schema* doca_schema, const char* path )
-
Set buffer data root Default path is "/opt/mellanox/doca/services/telemetry/data/".
Parameters
- doca_schema
- Pointer to DOCA schema.
- path
- Path to a folder where the data and schema will be stored.
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_buf_size ( doca_telemetry_schema* doca_schema, uint64_t size )
-
Set buffer size Default value is 60000 bytes.
Parameters
- doca_schema
- Pointer to DOCA schema.
- size
- Buffer size
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_file_write_enabled ( doca_telemetry_schema* doca_schema )
-
Enable file write file write is disabled by default.
Parameters
- doca_schema
- Pointer to DOCA schema.
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_file_write_max_age ( doca_telemetry_schema* doca_schema, doca_telemetry_timestamp_t max_age )
-
Set file maximum age Default value is 1 hour.
Parameters
- doca_schema
- Pointer to DOCA schema.
- max_age
- Maximum file age. Once current file is older than this threshold a new file will be created.
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_file_write_max_size ( doca_telemetry_schema* doca_schema, size_t size )
-
Set file maximum size Default value is 1MB.
Parameters
- doca_schema
- Pointer to DOCA schema.
- size
- Maximum size of binary data file. Once this size is reached, a new binary file will be created.
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_enabled ( doca_telemetry_schema* doca_schema )
-
Enable IPC IPC is disabled by default.
Parameters
- doca_schema
- Pointer to DOCA schema.
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_reconnect_time ( doca_telemetry_schema* doca_schema, uint32_t max_time )
-
Set IPC reconnect time in milliseconds Time limit for reconnect attempts. If the limit is reached, the client is considered disconnected. Default value is 100 milliseconds.
Parameters
- doca_schema
- Pointer to DOCA schema.
- max_time
- Maximum reconnect time in milliseconds
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_reconnect_tries ( doca_telemetry_schema* doca_schema, uint8_t tries )
-
Set maximum IPC reconnect tries. Number of reconnect attempts during reconnection period. Default value is 3 tries.
Parameters
- doca_schema
- Pointer to DOCA schema.
- tries
- Maximum reconnect tries
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_socket_timeout ( doca_telemetry_schema* doca_schema, uint32_t timeout )
-
Set IPC socket timeout in milliseconds Timeout for IPC messaging socket. If timeout is reached during send_receive, the client is considered disconnected. Default value is 3000 milliseconds.
Parameters
- doca_schema
- Pointer to ipc timeout attribute.
- timeout
- Maximum socket timeout in milliseconds
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_ipc_sockets_dir ( doca_telemetry_schema* doca_schema, const char* sockets_dir )
-
Set IPC socket directory. Default path is "/opt/mellanox/doca/services/telemetry/ipc_sockets".
Parameters
- doca_schema
- Pointer to DOCA schema.
- sockets_dir
- Path to a folder containing DOCA Telemetry Service (DTS) sockets.
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_schema_set_opaque_events_enabled ( doca_telemetry_schema* doca_schema )
-
Enable opaque events Opaque events are disabled by default.
Parameters
- doca_schema
- Pointer to DOCA schema.
Description
Note:Passing a doca_schema value of NULL will result in an undefined behavior.
- doca_error_t doca_telemetry_schema_start ( doca_telemetry_schema* doca_schema )
-
Finalizes schema setup to start creating Doca Sources from the schema.
Parameters
- doca_schema
- Input schema to start.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INITIALIZATION - in case of failure.
Description
Do NOT add new types after this function was called.
- doca_error_t doca_telemetry_source_create ( doca_telemetry_schema* doca_schema, doca_telemetry_source** doca_source )
-
Creates a single DOCA source from schema.
Parameters
- doca_schema
- Schema from which source will be created.
- doca_source
- pointer to DOCA source, or NULL on error.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - in case of memory allocation failure.
Description
To create a DOCA source, first call doca_telemetry_schema_start() to prepare the DOCA schema.
- doca_error_t doca_telemetry_source_destroy ( doca_telemetry_source* doca_source )
-
Destructor for DOCA source.
Parameters
- doca_source
- Source to destroy.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if doca_source is NULL.
Description
- doca_error_t doca_telemetry_source_flush ( doca_telemetry_source* doca_source )
-
Immediately flush the data of the DOCA source. This function is not thread-safe and should not be called from different threads without proper access control.
Parameters
- doca_source
- DOCA source to flush.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if doca_source is NULL.
Description
- doca_error_t doca_telemetry_source_get_opaque_report_max_data_size ( doca_telemetry_source* doca_source, uint32_t* max_data_size )
-
Get max data size for opaque report.
Parameters
- doca_source
- Source to report.
- max_data_size
- Maximal data size
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter(s).
Description
- doca_error_t doca_telemetry_source_opaque_report ( doca_telemetry_source* doca_source, const doca_guid_t app_id, uint64_t user_defined1, uint64_t user_defined2, const void* data, uint32_t data_size )
-
Report opaque event data via DOCA source.
Parameters
- doca_source
- Source to report.
- app_id
- User defined application ID.
- user_defined1
- User defined parameter 1.
- user_defined2
- User defined parameter 2.
- data
- Data buffer.
- data_size
- Size of the data in the data buffer.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - in case of memory allocation failure.
Description
Data is flushed from internal buffer when the buffer is full. Flushing the data immediately can be done by invoking doca_telemetry_source_flush().
- doca_error_t doca_telemetry_source_report ( doca_telemetry_source* doca_source, doca_telemetry_type_index_t index, void* data, int count )
-
Report events data of the same type via DOCA source.
Parameters
- doca_source
- Source to report.
- index
- Type index in the DOCA schema.
- data
- Data buffer.
- count
- Number of events written to the data buffer.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - in case of memory allocation failure.
Description
Data is flushed from internal buffer when the buffer is full. Flushing the data immediately can be done by invoking doca_telemetry_source_flush(). This function is not thread-safe and should not be called from different threads without proper access control.
- DOCA_EXPERIMENTAL void doca_telemetry_source_set_id ( doca_telemetry_source* doca_source, const char* source_id )
-
Set source id.
Parameters
- doca_source
- Pointer to DOCA source.
- source_id
- Hostname or guid.
Description
Note:Passing a doca_source value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_source_set_tag ( doca_telemetry_source* doca_source, const char* source_tag )
-
Set source tag.
Parameters
- doca_source
- Pointer to DOCA source.
- source_tag
- User defined data-file name prefix.
Description
Note:Passing a doca_source value of NULL will result in an undefined behavior.
- doca_error_t doca_telemetry_source_start ( doca_telemetry_source* doca_source )
-
Applies source attribute and starts DOCA source.
Parameters
- doca_source
- DOCA source to start.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if source attributes are not set.
- DOCA_ERROR_NO_MEMORY - in case of memory allocation failure.
Description
Call this function to start reporting.
- doca_error_t doca_telemetry_type_add_field ( doca_telemetry_type* type, doca_telemetry_field* field )
-
Add DOCA telemetry field to type. The users loses the ownership of the field after a successful invocation of the function.
Parameters
- type
- Pointer to doca telemetry type.
- field
- DOCA Telemetry field to add.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry field.
Description
Note:field should NOT be passed to another type after calling this function.
- doca_error_t doca_telemetry_type_create ( doca_telemetry_type** type )
-
Create new telemetry type.
Parameters
- type
- Pointer to the newly allocated type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry field.
Description
- doca_error_t doca_telemetry_type_destroy ( doca_telemetry_type* type )
-
Destroy doca telemetry type previously created by doca_telemetry_type_create().
Parameters
- type
- Pointer to type.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
Note:fields added to this type should NOT be used after calling this function.
DOCA Telemetry NetFlow
1.22.1. DOCA Telemetry NetFlow
[ DOCA Telemetry ]
DOCA lib for exporting a netflow packet to a netflow collector through the telemetry service.
This lib simplifies and centralizes the formatting and exporting of netflow packets. Netflow is a protocol for exporting information about the device network flows to a netflow collector that will aggregate and analyze the data. After creating conf file and invoke init function, the lib send function can be called with netflow struct to send a netflow packet with the format to the collector of choice specified in the conf file. The lib uses the netflow protocol specified by cisco.
See also:
https://netflow.caligare.com/netflow_v9.htm
Limitations:
The lib supports the netflow V9 format. The lib is not thread safe.
Modules
Defines
- #define DOCA_NETFLOW_APP_ID
- NetFlow Application ID.
- #define DOCA_NETFLOW_DEFAULT_PORT 2055
- NetFlow collector default port.
Functions
- doca_error_t doca_telemetry_netflow_destroy ( void )
- Free the exporter memory and close the connection.
- doca_error_t doca_telemetry_netflow_field_create ( doca_telemetry_netflow_flowset_field** field )
- Create new telemetry netflow field.
- doca_error_t doca_telemetry_netflow_field_destroy ( doca_telemetry_netflow_flowset_field* field )
- Destructor for DOCA netflow field.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_field_set_len ( doca_telemetry_netflow_flowset_field* field, uint16_t length )
- Set doca telemetry netflow field length.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_field_set_type ( doca_telemetry_netflow_flowset_field* field, uint16_t type )
- Set doca telemetry netflow field type.
- doca_error_t doca_telemetry_netflow_flush ( void )
- Immediately flush the data of the DOCA internal Netflow source.
- doca_error_t doca_telemetry_netflow_get_buf_data_root ( const char** path )
- Get data root path.
- doca_error_t doca_telemetry_netflow_get_buf_size ( uint64_t* size )
- Get buffer size.
- doca_error_t doca_telemetry_netflow_get_file_write_max_age ( doca_telemetry_timestamp_t* max_age )
- Get file maximum age.
- doca_error_t doca_telemetry_netflow_get_file_write_max_size ( size_t* size )
- Get file maximum size.
- doca_error_t doca_telemetry_netflow_get_ipc_sockets_dir ( const char** path )
- Get IPC socket directory.
- doca_error_t doca_telemetry_netflow_init ( uint16_t source_id )
- Init exporter memory, set configs and open connection.
- doca_error_t doca_telemetry_netflow_send ( const doca_telemetry_netflow_template* netflow_template, const void** records, size_t nof_records, size_t* nof_records_sent )
- Sending netflow records. Need to init first.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_buf_data_root ( const char* path )
- Set buffer data root Default path is "/opt/mellanox/doca/services/telemetry/data/".
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_buf_size ( uint64_t size )
- Set buffer size Default value is 60000 bytes.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_collector_addr ( const char* collector_addr )
- Set collector address.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_collector_port ( uint16_t collector_port )
- Set collector port. See DOCA_NETFLOW_DEFAULT_PORT for default value.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_enabled ( void )
- Enable file write file write is disabled by default.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_max_age ( doca_telemetry_timestamp_t max_age )
- Set file maximum age Default value is 1 hour.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_max_size ( size_t size )
- Set file maximum size Default value is 1MB.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_ipc_enabled ( void )
- Enable IPC IPC is disabled by default.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_ipc_sockets_dir ( const char* path )
- Set IPC socket directory. Default path is "/opt/mellanox/doca/services/telemetry/ipc_sockets".
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_max_packet_size ( uint16_t max_packet_size )
- Set max packet size.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_source_set_id ( const char* source_id )
- Set source id.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_source_set_tag ( const char* source_tag )
- Set source tag.
- doca_error_t doca_telemetry_netflow_start ( void )
- Finalizes netflow setup.
- doca_error_t doca_telemetry_netflow_template_add_field ( doca_telemetry_netflow_template* netflow_template, doca_telemetry_netflow_flowset_field* field )
- Add DOCA telemetry netflow field to netflow_template. The user loses the ownership of the field after a successful invocation of the function.
- doca_error_t doca_telemetry_netflow_template_create ( doca_telemetry_netflow_template** netflow_template )
- Create new telemetry netflow template.
- doca_error_t doca_telemetry_netflow_template_destroy ( doca_telemetry_netflow_template* netflow_template )
- Destructor for DOCA netflow template.
Defines
- #define DOCA_NETFLOW_APP_ID
-
Note:
This GUID cannot change
Value
{ \ 0x99, 0x10, 0xc1, 0x28, 0x39, 0x61, 0x47, 0xe6, 0xbe, 0x6c, 0x71, 0x5a, 0x0f, 0x03, 0xad, 0xd6 \ }
- #define DOCA_NETFLOW_DEFAULT_PORT 2055
-
Functions
- doca_error_t doca_telemetry_netflow_destroy ( void )
-
Free the exporter memory and close the connection.
Returns
DOCA_SUCCESS - in case of success.
Description
- doca_error_t doca_telemetry_netflow_field_create ( doca_telemetry_netflow_flowset_field** field )
-
Create new telemetry netflow field.
Parameters
- field
- Pointer to the newly allocated telemetry field.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry netflow field.
Description
- doca_error_t doca_telemetry_netflow_field_destroy ( doca_telemetry_netflow_flowset_field* field )
-
Destructor for DOCA netflow field.
Parameters
- field
- field to destroy.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if netflow_template is NULL.
Description
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_field_set_len ( doca_telemetry_netflow_flowset_field* field, uint16_t length )
-
Set doca telemetry netflow field length.
Parameters
- field
- Pointer to doca telemetry netflow field.
- length
- Field type.
Description
Note:Passing a field value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_field_set_type ( doca_telemetry_netflow_flowset_field* field, uint16_t type )
-
Set doca telemetry netflow field type.
Parameters
- field
- Pointer to doca telemetry netflow field.
- type
- Field type.
Description
Note:Passing a field value of NULL will result in an undefined behavior.
- doca_error_t doca_telemetry_netflow_flush ( void )
-
Immediately flush the data of the DOCA internal Netflow source.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - if the netflow has not been started.
Description
- doca_error_t doca_telemetry_netflow_get_buf_data_root ( const char** path )
-
Get data root path.
Parameters
- path
- The buffer data root
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
- doca_error_t doca_telemetry_netflow_get_buf_size ( uint64_t* size )
-
Get buffer size.
Parameters
- size
- The buffer size
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_netflow_get_file_write_max_age ( doca_telemetry_timestamp_t* max_age )
-
Get file maximum age.
Parameters
- max_age
- Maximum file age. Once current file is older than this threshold a new file will be created.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_netflow_get_file_write_max_size ( size_t* size )
-
Get file maximum size.
Parameters
- size
- Maximum size of binary data file.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_netflow_get_ipc_sockets_dir ( const char** path )
-
Get IPC socket directory.
Parameters
- path
- Path to a folder containing DOCA Telemetry Service (DTS) sockets.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
Note:Ownership of the returned string is transferred to the caller.
- doca_error_t doca_telemetry_netflow_init ( uint16_t source_id )
-
Init exporter memory, set configs and open connection.
Parameters
- source_id
- Unique source ID.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - if the netflow has been initialized before this call.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
- DOCA_ERROR_INITIALIZATION - failed to initialise netflow.
Description
The Source ID field is a 32-bit value that is used to guarantee uniqueness for all flows exported from a particular device (see link).
This function can be called again only after doca_telemetry_netflow_destroy was called.
- doca_error_t doca_telemetry_netflow_send ( const doca_telemetry_netflow_template* netflow_template, const void** records, size_t nof_records, size_t* nof_records_sent )
-
Sending netflow records. Need to init first.
Parameters
- netflow_template
- Template pointer of how the records are structured. For more info refer to doca_telemetry_netflow_template.
- records
- Array of pointers to the flows structs to send, must be packed. Strings must be an array in the struct, not a pointer.
- nof_records
- Records array size.
- nof_records_sent
- If not NULL, it will be filled with amount of records sent.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - if the netflow has not been initialized or the netflow has started.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
Note:When sending more then 30 records the lib splits the records to multiple packets because each packet can only send up to 30 records (Netflow protocol limit)
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_buf_data_root ( const char* path )
-
Set buffer data root Default path is "/opt/mellanox/doca/services/telemetry/data/".
Parameters
- path
- Path to a folder where the data and schema will be stored.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_buf_size ( uint64_t size )
-
Set buffer size Default value is 60000 bytes.
Parameters
- size
- Buffer size
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_collector_addr ( const char* collector_addr )
-
Set collector address.
Parameters
- collector_addr
- User defined netflow collector's IP address.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_collector_port ( uint16_t collector_port )
-
Set collector port. See DOCA_NETFLOW_DEFAULT_PORT for default value.
Parameters
- collector_port
- User defined netflow collector's port.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_enabled ( void )
-
Enable file write file write is disabled by default.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_max_age ( doca_telemetry_timestamp_t max_age )
-
Set file maximum age Default value is 1 hour.
Parameters
- max_age
- Maximum file age. Once current file is older than this threshold a new file will be created.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_max_size ( size_t size )
-
Set file maximum size Default value is 1MB.
Parameters
- size
- Maximum size of binary data file. Once this size is reached, a new binary file will be created.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_ipc_enabled ( void )
-
Enable IPC IPC is disabled by default.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_ipc_sockets_dir ( const char* path )
-
Set IPC socket directory. Default path is "/opt/mellanox/doca/services/telemetry/ipc_sockets".
Parameters
- path
- Path to a folder containing DOCA Telemetry Service (DTS) sockets.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_max_packet_size ( uint16_t max_packet_size )
-
Set max packet size.
Parameters
- max_packet_size
- User defined netflow packet's max size.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_source_set_id ( const char* source_id )
-
Set source id.
Parameters
- source_id
- Hostname or guid.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_source_set_tag ( const char* source_tag )
-
Set source tag.
Parameters
- source_tag
- User defined data-file name prefix.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- doca_error_t doca_telemetry_netflow_start ( void )
-
Finalizes netflow setup.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - if the netflow has not been initialized or the netflow has started.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
- doca_error_t doca_telemetry_netflow_template_add_field ( doca_telemetry_netflow_template* netflow_template, doca_telemetry_netflow_flowset_field* field )
-
Add DOCA telemetry netflow field to netflow_template. The user loses the ownership of the field after a successful invocation of the function.
Parameters
- netflow_template
- Pointer to netflow_template.
- field
- DOCA Telemetry netflow field to add.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry netflow field.
Description
Note:field should NOT be passed to another group after calling this function.
- doca_error_t doca_telemetry_netflow_template_create ( doca_telemetry_netflow_template** netflow_template )
-
Create new telemetry netflow template.
Parameters
- netflow_template
- Pointer to the newly allocated telemetry netflow template.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry netflow template.
Description
- doca_error_t doca_telemetry_netflow_template_destroy ( doca_telemetry_netflow_template* netflow_template )
-
Destructor for DOCA netflow template.
Parameters
- netflow_template
- netflow template to destroy.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if netflow_template is NULL.
Description
DOCA Telemetry NetFlow Types
1.22.1.1. DOCA Telemetry NetFlow Types
[ DOCA Telemetry NetFlow ]
Defines
- #define DOCA_TELEMETRY_NETFLOW_ABSOLUTE_ERROR 320
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_HIGH_THRESHOLD 476
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_LOW_THRESHOLD 477
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_HIGH_THRESHOLD 478
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_LOW_THRESHOLD 479
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_PER_USER_HIGH_THRESHOLD 480
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_FLAGS 285
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_TECHNIQUE 286
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_CATEGORY_NAME 372
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_DESCRIPTION 94
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_GROUP_NAME 374
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_NAME 96
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_SUB_CATEGORY_NAME 373
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_TAG 95
- #define DOCA_TELEMETRY_NETFLOW_BASIC_LIST 291
- #define DOCA_TELEMETRY_NETFLOW_BGP_COMMUNITY 483
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_COMMUNITY_LIST 485
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_EXTENDED_COMMUNITY_LIST 488
- #define DOCA_TELEMETRY_NETFLOW_BGP_EXTENDED_COMMUNITY 486
- #define DOCA_TELEMETRY_NETFLOW_BGP_IPV4_NEXT_HOP 18
- #define DOCA_TELEMETRY_NETFLOW_BGP_LARGE_COMMUNITY 489
- #define DOCA_TELEMETRY_NETFLOW_BGP_NEXT_ADJACENT_AS_NUMBER 128
- #define DOCA_TELEMETRY_NETFLOW_BGP_PREV_ADJACENT_AS_NUMBER 129
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_COMMUNITY_LIST 484
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_EXTENDED_COMMUNITY_LIST 487
- #define DOCA_TELEMETRY_NETFLOW_BGP_VALIDITY_STATE 294
- #define DOCA_TELEMETRY_NETFLOW_BIFLOW_DIRECTION 239
- #define DOCA_TELEMETRY_NETFLOW_BPG_IPV6_NEXT_HOP 63
- #define DOCA_TELEMETRY_NETFLOW_COLLECTION_TIME_MILLISECONDS 258
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_CERTIFICATE 274
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV4_ADDRESS 211
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV6_ADDRESS 212
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_TRANSPORT_PORT 216
- #define DOCA_TELEMETRY_NETFLOW_COMMON_PROPERTIES_ID 137
- #define DOCA_TELEMETRY_NETFLOW_CONFIDENCE_LEVEL 338
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_SUM_DURATION_SECONDS 279
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_TRANSACTION_ID 280
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SECTION 315
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SIZE 312
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_TYPE 408
- #define DOCA_TELEMETRY_NETFLOW_DATA_RECORDS_RELIABILITY 276
- #define DOCA_TELEMETRY_NETFLOW_DESTINATION_IPV6_PREFIX 169
- #define DOCA_TELEMETRY_NETFLOW_DIGEST_HASH_VALUE 326
- #define DOCA_TELEMETRY_NETFLOW_DIRECTION 61
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV4_ADDRESS 381
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV6_ADDRESS 383
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IP_ADDRESS 379
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV4_ADDRESS 380
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV6_ADDRESS 382
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IP_ADDRESS 378
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DEI 389
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DESTINATION_MAC_ADDRESS 415
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_PRIORITY 246
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_SOURCE_MAC_ADDRESS 414
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_VLAN_ID 245
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_DEI 388
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_PRIORITY 244
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_ID 412
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_PRIORITY 413
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_TAG 411
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_VLAN_ID 243
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_DELTA_COUNT 424
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_TOTAL_COUNT 425
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_DELTA_COUNT 132
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_TOTAL_COUNT 134
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_DELTA_COUNT 133
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_TOTAL_COUNT 135
- #define DOCA_TELEMETRY_NETFLOW_DST_AS 17
- #define DOCA_TELEMETRY_NETFLOW_DST_MASK 13
- #define DOCA_TELEMETRY_NETFLOW_DST_TOS 55
- #define DOCA_TELEMETRY_NETFLOW_DST_TRAFFIC_INDEX 93
- #define DOCA_TELEMETRY_NETFLOW_DST_VLAN 59
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_BROADCAST_PACKET_TOTAL_COUNT 358
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_INTERFACE_TYPE 369
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_PHYSICAL_INTERFACE 253
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_UNICAST_PACKET_TOTAL_COUNT 357
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_VRFID 235
- #define DOCA_TELEMETRY_NETFLOW_ENCRYPTED_TECHNOLOGY 290
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_ID 39
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_TYPE 38
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_HEADER_LENGTH 240
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_PAYLOAD_LENGTH 241
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TOTAL_LENGTH 242
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TYPE 256
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_CERTIFICATE 275
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV4_ADDRESS 130
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV6_ADDRESS 131
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_TRANSPORT_PORT 217
- #define DOCA_TELEMETRY_NETFLOW_EXPORTING_PROCESS_ID 144
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_INTERFACE 213
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_PROTOCOL_VERSION 214
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_SCTP_STREAM_ID 259
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_TRANSPORT_PROTOCOL 215
- #define DOCA_TELEMETRY_NETFLOW_EXTERNAL_ADDRESS_REALM 465
- #define DOCA_TELEMETRY_NETFLOW_FIREWALL_EVENT 233
- #define DOCA_TELEMETRY_NETFLOW_FIRST_SWITCHED 22
- #define DOCA_TELEMETRY_NETFLOW_FLOWS 3
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ACTIVE_TIMEOUT 36
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MICROSECONDS 162
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MILLISECONDS 161
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_DELTA_MICROSECONDS 159
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MICROSECONDS 155
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MILLISECONDS 153
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_NANOSECONDS 157
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_REASON 136
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_SECONDS 151
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ID 148
- #define DOCA_TELEMETRY_NETFLOW_FLOW_INACTIVE_TIMEOUT 37
- #define DOCA_TELEMETRY_NETFLOW_FLOW_KEY_INDICATOR 173
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_ID 48
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_MODE 49
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_INTERVAL 398
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_SPACING 399
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_FLOW_DELTA_COUNT 393
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_OCTET_DELTA_COUNT 391
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_PACKET_DELTA_COUNT 392
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTOR_ALGORITHM 390
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_DELTA_MICROSECONDS 158
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MICROSECONDS 154
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MILLISECONDS 152
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_NANOSECONDS 156
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_SECONDS 150
- #define DOCA_TELEMETRY_NETFLOW_FORWARDING_STATUS 89
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_FLAGS 197
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_OFFSET 88
- #define DOCA_TELEMETRY_NETFLOW_GLOBAL_ADDRESS_MAPPING_HIGH_THRESHOLD 481
- #define DOCA_TELEMETRY_NETFLOW_GRE_KEY 296
- #define DOCA_TELEMETRY_NETFLOW_HASH_DIGEST_OUTPUT 333
- #define DOCA_TELEMETRY_NETFLOW_HASH_FLOW_DOMAIN 400
- #define DOCA_TELEMETRY_NETFLOW_HASH_INITIALIZER_VALUE 334
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_OFFSET 327
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_SIZE 328
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MAX 330
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MIN 329
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MAX 332
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MIN 331
- #define DOCA_TELEMETRY_NETFLOW_HTTP_CONTENT_TYPE 469
- #define DOCA_TELEMETRY_NETFLOW_HTTP_MESSAGE_VERSION 462
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REASON_PHRASE 470
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_HOST 460
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_METHOD 459
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_TARGET 461
- #define DOCA_TELEMETRY_NETFLOW_HTTP_STATUS_CODE 457
- #define DOCA_TELEMETRY_NETFLOW_HTTP_USER_AGENT 468
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV4 177
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV6 179
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE 32
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_CODE_IPV6 139
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV4 176
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV6 178
- #define DOCA_TELEMETRY_NETFLOW_IF_DESC 83
- #define DOCA_TELEMETRY_NETFLOW_IF_NAME 82
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_DATA_RECORD_TOTAL_COUNT 407
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_FRAME_TOTAL_COUNT 433
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_OCTET_TOTAL_COUNT 426
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_OCTET_TOTAL_COUNT 165
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_PACKET_TOTAL_COUNT 164
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DATA_TYPE 339
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DESCRIPTION 340
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_ID 303
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_INDEX 287
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_NAME 341
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_BEGIN 342
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_END 343
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_SEMANTICS 344
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_UNITS 345
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_BROADCAST_PACKET_TOTAL_COUNT 356
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_INTERFACE_TYPE 368
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_MULTICAST_PACKET_TOTAL_COUNT 355
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_PHYSICAL_INTERFACE 252
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_UNICAST_PACKET_TOTAL_COUNT 354
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_VRFID 234
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_OCTETS 231
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_PACKETS 298
- #define DOCA_TELEMETRY_NETFLOW_INPUT_SNMP 10
- #define DOCA_TELEMETRY_NETFLOW_INTERMEDIATE_PROCESS_ID 406
- #define DOCA_TELEMETRY_NETFLOW_INTERNAL_ADDRESS_REALM 464
- #define DOCA_TELEMETRY_NETFLOW_IN_BYTES 1
- #define DOCA_TELEMETRY_NETFLOW_IN_DST_MAC 80
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_BYTES 85
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_PKTS 86
- #define DOCA_TELEMETRY_NETFLOW_IN_PKTS 2
- #define DOCA_TELEMETRY_NETFLOW_IN_SRC_MAC 56
- #define DOCA_TELEMETRY_NETFLOW_IPSEC_SPI 295
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_ADDR 12
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_PREFIX 45
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IDENT 54
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IHL 207
- #define DOCA_TELEMETRY_NETFLOW_IPV4_NEXT_HOP 15
- #define DOCA_TELEMETRY_NETFLOW_IPV4_OPTIONS 208
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_ADDR 8
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_PREFIX 44
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_ADDR 28
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_MASK 30
- #define DOCA_TELEMETRY_NETFLOW_IPV6_FLOW_LABEL 31
- #define DOCA_TELEMETRY_NETFLOW_IPV6_NEXT_HOP 62
- #define DOCA_TELEMETRY_NETFLOW_IPV6_OPTION_HEADERS 64
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_ADDR 27
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_MASK 29
- #define DOCA_TELEMETRY_NETFLOW_IP_DIFF_SERV_CODE_POINT 195
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_LENGTH 189
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_PACKET_SECTION 313
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_LENGTH 204
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_PACKET_SECTION 314
- #define DOCA_TELEMETRY_NETFLOW_IP_PRECEDENCE 196
- #define DOCA_TELEMETRY_NETFLOW_IP_PROTOCOL_VERSION 60
- #define DOCA_TELEMETRY_NETFLOW_IP_TOTAL_LENGTH 224
- #define DOCA_TELEMETRY_NETFLOW_IP_TTL 192
- #define DOCA_TELEMETRY_NETFLOW_IS_MULTICAST 206
- #define DOCA_TELEMETRY_NETFLOW_L4_DST_PORT 11
- #define DOCA_TELEMETRY_NETFLOW_L4_SRC_PORT 7
- #define DOCA_TELEMETRY_NETFLOW_LAST_SWITCHED 21
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_DELTA_COUNT 430
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_TOTAL_COUNT 431
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_COUNT 352
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_SUM_OF_SQUARES 428
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_COUNT 353
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_SUM_OF_SQUARES 429
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_SEGMENT_ID 351
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_DATA 104
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_OFFSET 102
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_SIZE 103
- #define DOCA_TELEMETRY_NETFLOW_LINE_CARD_ID 141
- #define DOCA_TELEMETRY_NETFLOW_LOWER_CILIMIT 337
- #define DOCA_TELEMETRY_NETFLOW_MAX_BIBENTRIES 472
- #define DOCA_TELEMETRY_NETFLOW_MAX_ENTRIES_PER_USER 473
- #define DOCA_TELEMETRY_NETFLOW_MAX_EXPORT_SECONDS 260
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MICROSECONDS 268
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MILLISECONDS 269
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_NANOSECONDS 270
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_SECONDS 261
- #define DOCA_TELEMETRY_NETFLOW_MAX_FRAGMENTS_PENDING_REASSEMBLY 475
- #define DOCA_TELEMETRY_NETFLOW_MAX_LAYER2_TOTAL_LENGTH 423
- #define DOCA_TELEMETRY_NETFLOW_MAX_PKT_LENGTH 26
- #define DOCA_TELEMETRY_NETFLOW_MAX_SESSION_ENTRIES 471
- #define DOCA_TELEMETRY_NETFLOW_MAX_SUBSCRIBERS 474
- #define DOCA_TELEMETRY_NETFLOW_MAX_TTL 53
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_MD5_CHECKSUM 262
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_SCOPE 263
- #define DOCA_TELEMETRY_NETFLOW_METERING_PROCESS_ID 143
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_ID 247
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_TYPE 248
- #define DOCA_TELEMETRY_NETFLOW_MIB_CAPTURE_TIME_SEMANTICS 448
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_ENGINE_ID 449
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_NAME 450
- #define DOCA_TELEMETRY_NETFLOW_MIB_INDEX_INDICATOR 447
- #define DOCA_TELEMETRY_NETFLOW_MIB_MODULE_NAME 454
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_DESCRIPTION 452
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_IDENTIFIER 445
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_NAME 451
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_SYNTAX 453
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_BITS 437
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_COUNTER 439
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_GAUGE 440
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_INTEGER 434
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_IPADDRESS 438
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OCTET_STRING 435
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OID 436
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_ROW 444
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TABLE 443
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TIME_TICKS 441
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_UNSIGNED 442
- #define DOCA_TELEMETRY_NETFLOW_MIB_SUB_IDENTIFIER 446
- #define DOCA_TELEMETRY_NETFLOW_MIN_EXPORT_SECONDS 264
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MICROSECONDS 271
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MILLISECONDS 272
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_NANOSECONDS 273
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_SECONDS 265
- #define DOCA_TELEMETRY_NETFLOW_MIN_LAYER2_TOTAL_LENGTH 422
- #define DOCA_TELEMETRY_NETFLOW_MIN_PKT_LENGTH 25
- #define DOCA_TELEMETRY_NETFLOW_MIN_TTL 52
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_IMSI 455
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_MSISDN 456
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_END_MILLI_SECONDS 360
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_START_MILLI_SECONDS 359
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_1 70
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_10 79
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_2 71
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_3 72
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_4 73
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_5 74
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_6 75
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_7 76
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_8 77
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_9 78
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_DEPTH 202
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_LENGTH 201
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_SECTION 316
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAL_RD 90
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_LENGTH 194
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_PACKET_SECTION 317
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PREFIX_LEN 91
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_EXP 203
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IPV6_ADDRESS 140
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IP_ADDR 47
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TTL 200
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TYPE 46
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_BYTES 20
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_PKTS 19
- #define DOCA_TELEMETRY_NETFLOW_MUL_IGMP_TYPE 33
- #define DOCA_TELEMETRY_NETFLOW_NAT_EVENT 230
- #define DOCA_TELEMETRY_NETFLOW_NAT_INSTANCE_ID 463
- #define DOCA_TELEMETRY_NETFLOW_NAT_ORIGINATING_ADDRESS_REALM 229
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_ID 283
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_NAME 284
- #define DOCA_TELEMETRY_NETFLOW_NAT_QUOTA_EXCEEDED_EVENT 466
- #define DOCA_TELEMETRY_NETFLOW_NAT_THRESHOLD_EVENT 467
- #define DOCA_TELEMETRY_NETFLOW_NAT_TYPE 297
- #define DOCA_TELEMETRY_NETFLOW_NEW_CONNECTION_DELTA_COUNT 278
- #define DOCA_TELEMETRY_NETFLOW_NEXT_HEADER_IPV6 193
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_FLOW_TOTAL_COUNT 166
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_LAYER2_OCTET_TOTAL_COUNT 427
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_OCTET_TOTAL_COUNT 168
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_PACKET_TOTAL_COUNT 167
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_ID 149
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_NAME 300
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_ID 138
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_TYPE 277
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MICROSECONDS 324
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MILLISECONDS 323
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_NANOSECONDS 325
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_SECONDS 322
- #define DOCA_TELEMETRY_NETFLOW_OBSERVED_FLOW_TOTAL_COUNT 163
- #define DOCA_TELEMETRY_NETFLOW_OCTET_DELTA_SUM_OF_SQUARES 198
- #define DOCA_TELEMETRY_NETFLOW_OCTET_TOTAL_SUM_OF_SQUARES 199
- #define DOCA_TELEMETRY_NETFLOW_OPAQUE_OCTETS 266
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV4_ADDRESS 403
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV6_ADDRESS 404
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_COMPLETED 377
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_INITIATED 376
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_PRESENT 375
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_OBSERVATION_DOMAIN_ID 405
- #define DOCA_TELEMETRY_NETFLOW_OUTPUT_SNMP 14
- #define DOCA_TELEMETRY_NETFLOW_OUT_BYTES 23
- #define DOCA_TELEMETRY_NETFLOW_OUT_DST_MAC 57
- #define DOCA_TELEMETRY_NETFLOW_OUT_PKTS 24
- #define DOCA_TELEMETRY_NETFLOW_OUT_SRC_MAC 81
- #define DOCA_TELEMETRY_NETFLOW_P2P_TECHNOLOGY 288
- #define DOCA_TELEMETRY_NETFLOW_PADDING_OCTETS 210
- #define DOCA_TELEMETRY_NETFLOW_PAYLOAD_LENGTH_IPV6 191
- #define DOCA_TELEMETRY_NETFLOW_PORT_ID 142
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_END 362
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_NUM_PORTS 364
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_START 361
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_STEP_SIZE 363
- #define DOCA_TELEMETRY_NETFLOW_POSTIP_DIFF_SERV_CODE_POINT 98
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_CUSTOMER_VLAN_ID 255
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_VLAN_ID 254
- #define DOCA_TELEMETRY_NETFLOW_POST_IP_PRECEDENCE 257
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_DELTA_COUNT 417
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_TOTAL_COUNT 420
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_DELTA_COUNT 418
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_TOTAL_COUNT 421
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_OCTET_TOTAL_COUNT 175
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_PACKET_TOTAL_COUNT 174
- #define DOCA_TELEMETRY_NETFLOW_POST_MPLS_TOP_LABEL_EXP 237
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_DESTINATION_TRANSPORT_PORT 228
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_SOURCE_TRANSPORT_PORT 227
- #define DOCA_TELEMETRY_NETFLOW_POST_NATDESTINATION_IPV6_ADDRESS 282
- #define DOCA_TELEMETRY_NETFLOW_POST_NATSOURCE_IPV6_ADDRESS 281
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_DESTINATION_IPV4_ADDRESS 226
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_SOURCE_IPV4_ADDRESS 225
- #define DOCA_TELEMETRY_NETFLOW_POST_OCTET_TOTAL_COUNT 171
- #define DOCA_TELEMETRY_NETFLOW_POST_PACKET_TOTAL_COUNT 172
- #define DOCA_TELEMETRY_NETFLOW_PRIVATE_ENTERPRISE_NUMBER 346
- #define DOCA_TELEMETRY_NETFLOW_PROTOCOL 4
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_CONTROL_WORD 251
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_DESTINATION_IPV4_ADDRESS 432
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_ID 249
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_TYPE 250
- #define DOCA_TELEMETRY_NETFLOW_RELATIVE_ERROR 321
- #define DOCA_TELEMETRY_NETFLOW_REPLICATION_FACTOR 99
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_OCTETS 232
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_PACKETS 299
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MICROSECONDS 386
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MILLISECONDS 385
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_NANOSECONDS 387
- #define DOCA_TELEMETRY_NETFLOW_RTP_SEQUENCE_NUMBER 370
- #define DOCA_TELEMETRY_NETFLOW_SAMPLER_NAME 84
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_ALGORITHM 35
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_INTERVAL 396
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_SPACING 397
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_INTERVAL 34
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_INTERVAL 305
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_SPACE 306
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_POPULATION 310
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PROBABILITY 311
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_SIZE 309
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_INTERVAL 307
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_SPACE 308
- #define DOCA_TELEMETRY_NETFLOW_SECTION_EXPORTED_OCTETS 410
- #define DOCA_TELEMETRY_NETFLOW_SECTION_OFFSET 409
- #define DOCA_TELEMETRY_NETFLOW_SELECTION_SEQUENCE_ID 301
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ALGORITHM 304
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID 302
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_OBSERVED 394
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_SELECTED 395
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_OBSERVED 318
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_SELECTED 319
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_NAME 335
- #define DOCA_TELEMETRY_NETFLOW_SESSION_SCOPE 267
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_IPV6_PREFIX 170
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_TRANSPORT_PORTS_LIMIT 458
- #define DOCA_TELEMETRY_NETFLOW_SRC_AS 16
- #define DOCA_TELEMETRY_NETFLOW_SRC_MASK 9
- #define DOCA_TELEMETRY_NETFLOW_SRC_TOS 5
- #define DOCA_TELEMETRY_NETFLOW_SRC_TRAFFIC_INDEX 92
- #define DOCA_TELEMETRY_NETFLOW_SRC_VLAN 58
- #define DOCA_TELEMETRY_NETFLOW_STA_IPV4_ADDRESS 366
- #define DOCA_TELEMETRY_NETFLOW_STA_MAC_ADDRESS 365
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_LIST 292
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_MULTI_LIST 293
- #define DOCA_TELEMETRY_NETFLOW_SYSTEM_INIT_TIME_MILLISECONDS 160
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACKNOWLEDGMENT_NUMBER 185
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACK_TOTAL_COUNT 222
- #define DOCA_TELEMETRY_NETFLOW_TCP_DESTINATION_PORT 183
- #define DOCA_TELEMETRY_NETFLOW_TCP_FIN_TOTAL_COUNT 219
- #define DOCA_TELEMETRY_NETFLOW_TCP_FLAGS 6
- #define DOCA_TELEMETRY_NETFLOW_TCP_HEADER_LENGTH 188
- #define DOCA_TELEMETRY_NETFLOW_TCP_OPTIONS 209
- #define DOCA_TELEMETRY_NETFLOW_TCP_PSH_TOTAL_COUNT 221
- #define DOCA_TELEMETRY_NETFLOW_TCP_RST_TOTAL_COUNT 220
- #define DOCA_TELEMETRY_NETFLOW_TCP_SEQUENCE_NUMBER 184
- #define DOCA_TELEMETRY_NETFLOW_TCP_SOURCE_PORT 182
- #define DOCA_TELEMETRY_NETFLOW_TCP_SYN_TOTAL_COUNT 218
- #define DOCA_TELEMETRY_NETFLOW_TCP_URGENT_POINTER 187
- #define DOCA_TELEMETRY_NETFLOW_TCP_URG_TOTAL_COUNT 223
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SCALE 238
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SIZE 186
- #define DOCA_TELEMETRY_NETFLOW_TEMPLATE_ID 145
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_BYTES_EXP 40
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_FLOWS_EXP 42
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_LENGTH_IPV4 190
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_PKTS_EXP 41
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_OCTET_DELTA_COUNT 401
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_PACKET_DELTA_COUNT 402
- #define DOCA_TELEMETRY_NETFLOW_TUNNEL_TECHNOLOGY 289
- #define DOCA_TELEMETRY_NETFLOW_UDP_DESTINATION_PORT 181
- #define DOCA_TELEMETRY_NETFLOW_UDP_MESSAGE_LENGTH 205
- #define DOCA_TELEMETRY_NETFLOW_UDP_SOURCE_PORT 180
- #define DOCA_TELEMETRY_NETFLOW_UPPER_CILIMIT 336
- #define DOCA_TELEMETRY_NETFLOW_USER_NAME 371
- #define DOCA_TELEMETRY_NETFLOW_VALUE_DISTRIBUTION_METHOD 384
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_ID 347
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_NAME 348
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_NAME 350
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_UUID 349
- #define DOCA_TELEMETRY_NETFLOW_VPN_IDENTIFIER 482
- #define DOCA_TELEMETRY_NETFLOW_VRF_NAME 236
- #define DOCA_TELEMETRY_NETFLOW_WLAN_CHANNEL_ID 146
- #define DOCA_TELEMETRY_NETFLOW_WLAN_SSID 147
- #define DOCA_TELEMETRY_NETFLOW_WTP_MAC_ADDRESS 367
Defines
- #define DOCA_TELEMETRY_NETFLOW_ABSOLUTE_ERROR 320
This Information Element specifies the maximum possible measurement error of the reported value for a given Information Element. The absoluteError has the same unit as the Information Element with which it is associated. The real value of the metric can differ by absoluteError (positive or negative) from the measured value.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_HIGH_THRESHOLD 476
This element represents the high threshold value of the number of public IP addresses in the address pool.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_LOW_THRESHOLD 477
This element represents the low threshold value of the number of public IP addresses in the address pool.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_HIGH_THRESHOLD 478
This element represents the high threshold value of the number of address and port mappings.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_LOW_THRESHOLD 479
This element represents the low threshold value of the number of address and port mappings.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_PER_USER_HIGH_THRESHOLD 480
This element represents the high threshold value of the number of address and port mappings that a single user is allowed to create on a NAT device.
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_FLAGS 285
A flag word describing specialized modifications to the anonymization policy in effect for the anonymization technique applied to a referenced Information Element within a referenced Template. When flags are clear (0), the normal policy (as described by anonymizationTechnique) applies without modification.
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_TECHNIQUE 286
A description of the anonymization technique applied to a referenced Information Element within a referenced Template. Each technique may be applicable only to certain Information Elements and recommended only for certain Information Elements. Values are listed in the anonymizationTechnique registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-anonymization-technique].
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_CATEGORY_NAME 372
An attribute that provides a first level categorization for each Application ID.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_DESCRIPTION 94
Application description.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_GROUP_NAME 374
An attribute that groups multiple Application IDs that belong to the same networking application.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_NAME 96
Name associated with a classification.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_SUB_CATEGORY_NAME 373
An attribute that provides a second level categorization for each Application ID.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_TAG 95
8 bits of engine ID, followed by n bits of classification.
- #define DOCA_TELEMETRY_NETFLOW_BASIC_LIST 291
Specifies a generic Information Element with a basicList abstract data type. For example, a list of port numbers, a list of interface indexes, etc.
- #define DOCA_TELEMETRY_NETFLOW_BGP_COMMUNITY 483
BGP community as defined in [RFC1997]
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_COMMUNITY_LIST 485
basicList of zero or more bgpCommunity IEs, containing the BGP communities corresponding with destination IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_EXTENDED_COMMUNITY_LIST 488
basicList of zero or more bgpExtendedCommunity IEs, containing the BGP Extended Communities corresponding with destination IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_EXTENDED_COMMUNITY 486
BGP Extended Community as defined in [RFC4360]; the size of this IE MUST be 8 octets
- #define DOCA_TELEMETRY_NETFLOW_BGP_IPV4_NEXT_HOP 18
Next-hop router's IP in the BGP domain
- #define DOCA_TELEMETRY_NETFLOW_BGP_LARGE_COMMUNITY 489
BGP Large Community as defined in [RFC8092]; the size of this IE MUST be 12 octets.
- #define DOCA_TELEMETRY_NETFLOW_BGP_NEXT_ADJACENT_AS_NUMBER 128
The autonomous system (AS) number of the first AS in the AS path to the destination IP address. The path is deduced by looking up the destination IP address of the Flow in the BGP routing information base. If AS path information for this Flow is only available as an unordered AS set (and not as an ordered AS sequence), then the value of this Information Element is 0.
- #define DOCA_TELEMETRY_NETFLOW_BGP_PREV_ADJACENT_AS_NUMBER 129
The autonomous system (AS) number of the last AS in the AS path from the source IP address. The path is deduced by looking up the source IP address of the Flow in the BGP routing information base. If AS path information for this Flow is only available as an unordered AS set (and not as an ordered AS sequence), then the value of this Information Element is 0. In case of BGP asymmetry, the bgpPrevAdjacentAsNumber might not be able to report the correct value.
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_COMMUNITY_LIST 484
basicList of zero or more bgpCommunity IEs, containing the BGP communities corresponding with source IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_EXTENDED_COMMUNITY_LIST 487
basicList of zero or more bgpExtendedCommunity IEs, containing the BGP Extended Communities corresponding with source IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_VALIDITY_STATE 294
This element describes the "validity state" of the BGP route correspondent source or destination IP address. If the "validity state" for this Flow is only available, then the value of this Information Element is 255.
- #define DOCA_TELEMETRY_NETFLOW_BIFLOW_DIRECTION 239
A description of the direction assignment method used to assign the Biflow Source and Destination. This Information Element MAY be present in a Flow Data Record, or applied to all flows exported from an Exporting Process or Observation Domain using IPFIX Options. If this Information Element is not present in a Flow Record or associated with a Biflow via scope, it is assumed that the configuration of the direction assignment method is done out-of-band. Note that when using IPFIX Options to apply this Information Element to all flows within an Observation Domain or from an Exporting Process, the Option SHOULD be sent reliably. If reliable transport is not available (i.e., when using UDP), this Information Element SHOULD appear in each Flow Record. Values are listed in the biflowDirection registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-biflow-direction].
- #define DOCA_TELEMETRY_NETFLOW_BPG_IPV6_NEXT_HOP 63
Next-hop router in the BGP domain
- #define DOCA_TELEMETRY_NETFLOW_COLLECTION_TIME_MILLISECONDS 258
The absolute timestamp at which the data within the scope containing this Information Element was received by a Collecting Process. This Information Element SHOULD be bound to its containing IPFIX Message via IPFIX Options and the messageScope Information Element, as defined below.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_CERTIFICATE 274
The full X.509 certificate, encoded in ASN.1 DER format, used by the Collector when IPFIX Messages were transmitted using TLS or DTLS. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element, or to its containing IPFIX Message via an options record and the messageScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV4_ADDRESS 211
An IPv4 address to which the Exporting Process sends Flow information.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV6_ADDRESS 212
An IPv6 address to which the Exporting Process sends Flow information.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_TRANSPORT_PORT 216
The destination port identifier to which the Exporting Process sends Flow information. For the transport protocols UDP, TCP, and SCTP, this is the destination port number. This field MAY also be used for future transport protocols that have 16-bit source port identifiers.
- #define DOCA_TELEMETRY_NETFLOW_COMMON_PROPERTIES_ID 137
An identifier of a set of common properties that is unique per Observation Domain and Transport Session. Typically, this Information Element is used to link to information reported in separate Data Records.
- #define DOCA_TELEMETRY_NETFLOW_CONFIDENCE_LEVEL 338
This Information Element specifies the confidence level. It is used to provide an accuracy statement for estimated values. The confidence level provides the probability p with which the real value lies within a given range. A confidence level always needs to be associated with confidence limits that define the range in which the real value is assumed to be.
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_SUM_DURATION_SECONDS 279
This information element aggregates the total time in seconds for all of the TCP or UDP connections which were in use during the observation period. For example if there are 5 concurrent connections each for 10 seconds, the value would be 50 s.
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_TRANSACTION_ID 280
This information element identifies a transaction within a connection. A transaction is a meaningful exchange of application data between two network devices or a client and server. A transactionId is assigned the first time a flow is reported, so that later reports for the same flow will have the same transactionId. A different transactionId is used for each transaction within a TCP or UDP connection. The identifiers need not be sequential.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SECTION 315
This Information Element carries n octets from the data link frame of a selected frame, starting sectionOffset octets into the frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SIZE 312
This Information Element specifies the length of the selected data link frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_TYPE 408
This Information Element specifies the type of the selected data link frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_RECORDS_RELIABILITY 276
The export reliability of Data Records, within this SCTP stream, for the element(s) in the Options Template scope. A typical example of an element for which the export reliability will be reported is the templateID, as specified in the Data Records Reliability Options Template. A value of 'True' means that the Exporting Process MUST send any Data Records associated with the element(s) reliably within this SCTP stream. A value of 'False' means that the Exporting Process MAY send any Data Records associated with the element(s) unreliably within this SCTP stream.
- #define DOCA_TELEMETRY_NETFLOW_DESTINATION_IPV6_PREFIX 169
IPv6 destination address prefix.
- #define DOCA_TELEMETRY_NETFLOW_DIGEST_HASH_VALUE 326
This Information Element specifies the value from the digest hash function. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_DIRECTION 61
Flow direction: 0 - ingress flow, 1 - egress flow
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV4_ADDRESS 381
The count of distinct destination IPv4 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV6_ADDRESS 383
The count of distinct destination IPv6 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IP_ADDRESS 379
The count of distinct destination IP address values for Original Flows contributing to this Aggregated Flow, without regard to IP version. This Information Element is preferred to the version-specific counters below, unless it is important to separate the counts by version.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV4_ADDRESS 380
The count of distinct source IPv4 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV6_ADDRESS 382
The count of distinct source IPv6 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IP_ADDRESS 378
The count of distinct source IP address values for Original Flows contributing to this Aggregated Flow, without regard to IP version. This Information Element is preferred to the IP-version-specific counters, unless it is important to separate the counts by version.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DEI 389
In case of a QinQ frame, it represents the inner tag's Drop Eligible Indicator (DEI) field and in case of an IEEE 802.1ad frame it represents the DEI field of the C-TAG.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DESTINATION_MAC_ADDRESS 415
The value of the Encapsulated Customer Destination Address (C-DA) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_PRIORITY 246
The value represents the 3-bit Priority Code Point (PCP) portion of the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_SOURCE_MAC_ADDRESS 414
The value of the Encapsulated Customer Source Address (C-SA) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_VLAN_ID 245
The value represents the Customer VLAN identifier in the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_DEI 388
The value of the 1-bit Drop Eligible Indicator (DEI) field of the VLAN tag as described in 802.1Q-2011 subclause 9.6. In case of a QinQ frame, it represents the outer tag's DEI field and in case of an IEEE 802.1ad frame it represents the DEI field of the S-TAG. Note: in earlier versions of 802.1Q the same bit field in the incoming packet is occupied by the Canonical Format Indicator (CFI) field, except for S-TAGs.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_PRIORITY 244
The value of the 3-bit User Priority portion of the Tag Control Information field of an Ethernet frame. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q]. In the case of multi-tagged frame, it represents the 3-bit Priority Code Point (PCP) portion of the outer tag's Tag Control Information (TCI) field as described in [IEEE802.1Q], except for I-TAG.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_ID 412
The value of the 24-bit Backbone Service Instance Identifier (I-SID) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_PRIORITY 413
The value of the 3-bit Backbone Service Instance Priority Code Point (I-PCP) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_TAG 411
This Information Element, which is 16 octets long, represents the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q]. It encodes the Backbone Service Instance Priority Code Point (I-PCP), Backbone Service Instance Drop Eligible Indicator (I-DEI), Use Customer Addresses (UCAs), Backbone Service Instance Identifier (I-SID), Encapsulated Customer Destination Address (C-DA), Encapsulated Customer Source Address (C-SA), and reserved fields. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_VLAN_ID 243
The value of the 12-bit VLAN Identifier portion of the Tag Control Information field of an Ethernet frame. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q]. In Provider Bridged Networks, it represents the Service VLAN identifier in the Service VLAN Tag (S-TAG) Tag Control Information (TCI) field or the Customer VLAN identifier in the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q]. In Provider Backbone Bridged Networks, it represents the Backbone VLAN identifier in the Backbone VLAN Tag (B-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q]. In a virtual link between a host system and EVB bridge, it represents the Service VLAN identifier indicating S-channel as described in [IEEE802.1Qbg].
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_DELTA_COUNT 424
The number of layer 2 octets since the previous report (if any) in packets of this Flow dropped by packet treatment. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_TOTAL_COUNT 425
The total number of octets in observed layer 2 packets (including the layer 2 header) that were dropped by packet treatment since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_DELTA_COUNT 132
The number of octets since the previous report (if any) in packets of this Flow dropped by packet treatment. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_TOTAL_COUNT 134
The total number of octets in packets of this Flow dropped by packet treatment since the Metering Process (re-)initialization for this Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_DELTA_COUNT 133
The number of packets since the previous report (if any) of this Flow dropped by packet treatment.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_TOTAL_COUNT 135
The number of packets of this Flow dropped by packet treatment since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_DST_AS 17
Destination BGP autonomous system number where N could be 2 or 4
- #define DOCA_TELEMETRY_NETFLOW_DST_MASK 13
The number of contiguous bits in the destination address subnet mask i.e.: the submask in slash notation
- #define DOCA_TELEMETRY_NETFLOW_DST_TOS 55
Type of Service byte setting when exiting outgoing interface
- #define DOCA_TELEMETRY_NETFLOW_DST_TRAFFIC_INDEX 93
BGP Policy Accounting Destination Traffic Index
- #define DOCA_TELEMETRY_NETFLOW_DST_VLAN 59
Virtual LAN identifier associated with egress interface
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_BROADCAST_PACKET_TOTAL_COUNT 358
The total number of incoming broadcast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_INTERFACE_TYPE 369
The type of interface where packets of this Flow are being sent. The value matches the value of managed object 'ifType' as defined in [https://www.iana.org/assignments/ianaiftype-mib].
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_PHYSICAL_INTERFACE 253
The index of a networking device's physical interface (example, a switch port) where packets of this flow are being sent.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_UNICAST_PACKET_TOTAL_COUNT 357
The total number of incoming unicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_VRFID 235
An unique identifier of the VRFname where the packets of this flow are being sent. This identifier is unique per Metering Process
- #define DOCA_TELEMETRY_NETFLOW_ENCRYPTED_TECHNOLOGY 290
Specifies if the Application ID is an encrypted networking protocol.
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_ID 39
ID number of the flow switching engine
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_TYPE 38
Type of flow switching engine: RP = 0, VIP/Linecard = 1
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_HEADER_LENGTH 240
The difference between the length of an Ethernet frame (minus the FCS) and the length of its MAC Client Data section (including any padding) as defined in section 3.1 of [IEEE.802-3.2005]. It does not include the Preamble, SFD and Extension field lengths.
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_PAYLOAD_LENGTH 241
The length of the MAC Client Data section (including any padding) of a frame as defined in section 3.1 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TOTAL_LENGTH 242
The total length of the Ethernet frame (excluding the Preamble, SFD, Extension and FCS fields) as described in section 3.1 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TYPE 256
The Ethernet type field of an Ethernet frame that identifies the MAC client protocol carried in the payload as defined in paragraph 1.4.349 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_CERTIFICATE 275
The full X.509 certificate, encoded in ASN.1 DER format, used by the Collector when IPFIX Messages were transmitted using TLS or DTLS. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element, or to its containing IPFIX Message via an options record and the messageScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV4_ADDRESS 130
The IPv4 address used by the Exporting Process. This is used by the Collector to identify the Exporter in cases where the identity of the Exporter may have been obscured by the use of a proxy.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV6_ADDRESS 131
The IPv6 address used by the Exporting Process. This is used by the Collector to identify the Exporter in cases where the identity of the Exporter may have been obscured by the use of a proxy.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_TRANSPORT_PORT 217
The source port identifier from which the Exporting Process sends Flow information. For the transport protocols UDP, TCP, and SCTP, this is the source port number. This field MAY also be used for future transport protocols that have 16-bit source port identifiers. This field may be useful for distinguishing multiple Exporting Processes that use the same IP address.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTING_PROCESS_ID 144
An identifier of an Exporting Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers are typically assigned dynamically. The Exporting Process may be re-started with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_INTERFACE 213
The index of the interface from which IPFIX Messages sent by the Exporting Process to a Collector leave the IPFIX Device. The value matches the value of managed object 'ifIndex' as defined in [RFC2863]. Note that ifIndex values are not assigned statically to an interface and that the interfaces may be renumbered every time the device's management system is re-initialized, as specified in [RFC2863].
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_PROTOCOL_VERSION 214
The protocol version used by the Exporting Process for sending Flow information. The protocol version is given by the value of the Version Number field in the Message Header.
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_SCTP_STREAM_ID 259
The value of the SCTP Stream Identifier used by the Exporting Process for exporting IPFIX Message data. This is carried in the Stream Identifier field of the header of the SCTP DATA chunk containing the IPFIX Message(s).
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_TRANSPORT_PROTOCOL 215
The value of the protocol number used by the Exporting Process for sending Flow information. The protocol number identifies the IP packet payload type. Protocol numbers are defined in the IANA Protocol Numbers registry.
- #define DOCA_TELEMETRY_NETFLOW_EXTERNAL_ADDRESS_REALM 465
This Information Element represents the external address realm where the packet is originated from or destined to. The detailed definition is in the internal address realm as specified above.
- #define DOCA_TELEMETRY_NETFLOW_FIREWALL_EVENT 233
Indicates a firewall event. Allowed values are listed in the firewallEvent registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-firewall-event].
- #define DOCA_TELEMETRY_NETFLOW_FIRST_SWITCHED 22
System uptime at which the first packet of this flow was switched
- #define DOCA_TELEMETRY_NETFLOW_FLOWS 3
Number of flows that were aggregated; default for N is 4
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ACTIVE_TIMEOUT 36
Timeout value (in seconds) for active flow entries in the NetFlow cache
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MICROSECONDS 162
The difference in time between the first observed packet of this Flow and the last observed packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MILLISECONDS 161
The difference in time between the first observed packet of this Flow and the last observed packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_DELTA_MICROSECONDS 159
This is a relative timestamp only valid within the scope of a single IPFIX Message. It contains the negative time offset of the last observed packet of this Flow relative to the export time specified in the IPFIX Message Header.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MICROSECONDS 155
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MILLISECONDS 153
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_NANOSECONDS 157
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_REASON 136
The reason for Flow termination. Values are listed in the flowEndReason registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-flow-end-reason].
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_SECONDS 151
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ID 148
An identifier of a Flow that is unique within an Observation Domain. This Information Element can be used to distinguish between different Flows if Flow Keys such as IP addresses and port numbers are not reported or are reported in separate records.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_INACTIVE_TIMEOUT 37
Timeout value (in seconds) for inactive flow entries in the NetFlow cache
- #define DOCA_TELEMETRY_NETFLOW_FLOW_KEY_INDICATOR 173
This set of bit fields is used for marking the Information Elements of a Data Record that serve as Flow Key. Each bit represents an Information Element in the Data Record, with the n-th least significant bit representing the n-th Information Element. A bit set to value 1 indicates that the corresponding Information Element is a Flow Key of the reported Flow. A bit set to value 0 indicates that this is not the case.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_ID 48
Identifier shown in "show flow-sampler"
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_MODE 49
The type of algorithm used for sampling data: 0x02 random sampling. Use in connection with FLOW_SAMPLER_MODE
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50
Packet interval at which to sample. Use in connection with FLOW_SAMPLER_MODE
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_INTERVAL 398
This Information Element specifies the time interval in microseconds during which all arriving Flows are sampled. For example, this Information Element may be used to describe the configuration of a systematic time-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_SPACING 399
This Information Element specifies the time interval in microseconds between two "flowSamplingTimeInterval"s. A value of 100 means that the next interval starts 100 microseconds (during which no Flows are sampled) after the current "flowsamplingTimeInterval" is over. For example, this Information Element may used to describe the configuration of a systematic time-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_FLOW_DELTA_COUNT 393
This Information Element specifies the number of Flows that were selected in the Intermediate Flow Selection Process since the last report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_OCTET_DELTA_COUNT 391
This Information Element specifies the volume in octets of all Flows that are selected in the Intermediate Flow Selection Process since the previous report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_PACKET_DELTA_COUNT 392
This Information Element specifies the volume in packets of all Flows that were selected in the Intermediate Flow Selection Process since the previous report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTOR_ALGORITHM 390
This Information Element identifies the Intermediate Flow Selection Process technique (e.g., Filtering, Sampling) that is applied by the Intermediate Flow Selection Process. Most of these techniques have parameters. Its configuration parameter(s) MUST be clearly specified. Further Information Elements are needed to fully specify packet selection with these methods and all their parameters. Further method identifiers may be added to the flowSelectorAlgorithm registry. It might be necessary to define new Information Elements to specify their parameters. Please note that the purpose of the flow selection techniques described in this document is the improvement of measurement functions as defined in the Scope (Section 1). The Intermediate Flow Selection Process Techniques identifiers are defined at [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-flowselectoralgorithm].
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_DELTA_MICROSECONDS 158
This is a relative timestamp only valid within the scope of a single IPFIX Message. It contains the negative time offset of the first observed packet of this Flow relative to the export time specified in the IPFIX Message Header.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MICROSECONDS 154
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MILLISECONDS 152
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_NANOSECONDS 156
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_SECONDS 150
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FORWARDING_STATUS 89
Forwarding status is encoded on 1 byte with the 2 left bits giving the status and the 6 remaining bits giving the reason code.
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_FLAGS 197
Fragmentation properties indicated by flags in the IPv4 packet header or the IPv6 Fragment header, respectively.
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_OFFSET 88
The fragment-offset value from fragmented IP packets
- #define DOCA_TELEMETRY_NETFLOW_GLOBAL_ADDRESS_MAPPING_HIGH_THRESHOLD 481
This element represents the high threshold value of the number of address and port mappings that a single user is allowed to create on a NAT device in a paired address pooling behavior.
- #define DOCA_TELEMETRY_NETFLOW_GRE_KEY 296
GRE key, which is used for identifying an individual traffic flow within a tunnel.
- #define DOCA_TELEMETRY_NETFLOW_HASH_DIGEST_OUTPUT 333
This Information Element contains a boolean value that is TRUE if the output from this hash Selector has been configured to be included in the packet report as a packet digest, else FALSE.
- #define DOCA_TELEMETRY_NETFLOW_HASH_FLOW_DOMAIN 400
This Information Element specifies the Information Elements that are used by the Hash-based Flow Selector as the Hash Domain.
- #define DOCA_TELEMETRY_NETFLOW_HASH_INITIALIZER_VALUE 334
This Information Element specifies the initializer value to the hash function.
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_OFFSET 327
This Information Element specifies the IP payload offset used by a Hash-based Selection Selector. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_SIZE 328
This Information Element specifies the IP payload size used by a Hash-based Selection Selector. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MAX 330
This Information Element specifies the value for the end of a hash function's potential output range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MIN 329
This Information Element specifies the value for the beginning of a hash function's potential output range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MAX 332
This Information Element specifies the value for the end of a hash function's selected range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MIN 331
This Information Element specifies the value for the beginning of a hash function's selected range.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_CONTENT_TYPE 469
The HTTP Content-Type header field as defined in section 3.1.1.5 of [RFC7231]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_MESSAGE_VERSION 462
The version of an HTTP/1.1 message as indicated by the HTTP-version field, defined in section 2.6 of [RFC7230], or the version identification of an HTTP/2 frame as defined in [RFC7240] section 3.1. The length of this field is limited to 10 characters, UTF-8 encoded.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REASON_PHRASE 470
The HTTP reason phrase as defined in section 6.1 of [RFC7231].
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_HOST 460
The HTTP request host, as defined in section 5.4 of [RFC7230] or, in the case of HTTP/2, the content of the :authority pseudo-header field as defined in section 8.1.2.3 of [RFC7240]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_METHOD 459
The HTTP request method, as defined in section 4 of [RFC7231], associated with a flow. String with up to 8 UTF-8 characters.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_TARGET 461
The HTTP request target, as defined in section 2 of [RFC7231] and in section 5.3 of [RFC7230], associated with a flow. Or the HTTP/2 ":path" pseudo-header field as defined in section 8.1.2.3 of [RFC7240]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_STATUS_CODE 457
The HTTP Response Status Code, as defined in section 6 of [RFC7231], associated with a flow. Implies that the flow record represents a flow containing an HTTP Response.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_USER_AGENT 468
The HTTP User-Agent header field as defined in section 5.5.3 of [RFC7231]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV4 177
Code of the IPv4 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV6 179
Code of the IPv6 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE 32
Internet Control Message Protocol (ICMP) packet type; reported as ((ICMP Type*256) + ICMP code)
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_CODE_IPV6 139
Type and Code of the IPv6 ICMP message. The combination of both values is reported as (ICMP type * 256) + ICMP code.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV4 176
Type of the IPv4 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV6 178
Type of the IPv6 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_IF_DESC 83
Full interface name i.e.: "'FastEthernet 1/0"
- #define DOCA_TELEMETRY_NETFLOW_IF_NAME 82
Shortened interface name i.e.: "FE1/0"
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_DATA_RECORD_TOTAL_COUNT 407
Description: The total number of received Data Records that the Intermediate Process did not process since the (re-)initialization of the Intermediate Process; includes only Data Records not examined or otherwise handled by the Intermediate Process due to resource constraints, not Data Records that were examined or otherwise handled by the Intermediate Process but those that merely do not contribute to any exported Data Record due to the operations performed by the Intermediate Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_FRAME_TOTAL_COUNT 433
The total number of observed layer 2 frames that the Metering Process did not process since the (re-)initialization of the Metering Process. This Information Element is the layer 2 version of ignoredPacketTotalCount (ElementId #164).
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_OCTET_TOTAL_COUNT 426
The total number of octets in observed layer 2 packets (including the layer 2 header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_OCTET_TOTAL_COUNT 165
The total number of octets in observed IP packets (including the IP header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_PACKET_TOTAL_COUNT 164
The total number of observed IP packets that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DATA_TYPE 339
A description of the abstract data type of an IPFIX information element.These are taken from the abstract data types defined in section 3.1 of the IPFIX Information Model [RFC5102]; see that section for more information on the types described in the [informationElementDataType] subregistry.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DESCRIPTION 340
A UTF-8 [RFC3629] encoded Unicode string containing a human-readable description of an Information Element. The content of the informationElementDescription MAY be annotated with one or more language tags [RFC4646], encoded in-line [RFC2482] within the UTF-8 string, in order to specify the language in which the description is written. Description text in multiple languages MAY tag each section with its own language tag; in this case, the description information in each language SHOULD have equivalent meaning. In the absence of any language tag, the "i-default" [RFC2277] language SHOULD be assumed. See the Security Considerations section for notes on string handling for Information Element type records.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_ID 303
This Information Element contains the ID of another Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_INDEX 287
A zero-based index of an Information Element referenced by informationElementId within a Template referenced by templateId; used to disambiguate scope for templates containing multiple identical Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_NAME 341
A UTF-8 [RFC3629] encoded Unicode string containing the name of an Information Element, intended as a simple identifier. See the Security Considerations section for notes on string handling for Information Element type records
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_BEGIN 342
Contains the inclusive low end of the range of acceptable values for an Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_END 343
Contains the inclusive high end of the range of acceptable values for an Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_SEMANTICS 344
A description of the semantics of an IPFIX Information Element. These are taken from the data type semantics defined in section 3.2 of the IPFIX Information Model [RFC5102]; see that section for more information on the types defined in the [IPFIX Information Element Semantics] subregistry. This field may take the values in the semantics registry; the special value 0x00 (default) is used to note that no semantics apply to the field; it cannot be manipulated by a Collecting Process or File Reader that does not understand it a priori.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_UNITS 345
A description of the units of an IPFIX Information Element. These correspond to the units implicitly defined in the Information Element definitions in section 5 of the IPFIX Information Model [RFC5102]; see that section for more information on the types described in the informationElementsUnits subregistry. This field may take the values in Table 3 below; the special value 0x00 (none) is used to note that the field is unitless.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_BROADCAST_PACKET_TOTAL_COUNT 356
The total number of incoming broadcast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_INTERFACE_TYPE 368
The type of interface where packets of this Flow are being received. The value matches the value of managed object 'ifType' as defined in [https://www.iana.org/assignments/ianaiftype-mib].
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_MULTICAST_PACKET_TOTAL_COUNT 355
The total number of incoming multicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_PHYSICAL_INTERFACE 252
The index of a networking device's physical interface (example, a switch port) where packets of this flow are being received.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_UNICAST_PACKET_TOTAL_COUNT 354
The total number of incoming unicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_VRFID 234
An unique identifier of the VRFname where the packets of this flow are being received. This identifier is unique per Metering Process
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_OCTETS 231
The total number of layer 4 payload bytes in a flow from the initiator since the previous report. The initiator is the device which triggered the session creation, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_PACKETS 298
The total number of layer 4 packets in a flow from the initiator since the previous report. The initiator is the device which triggered the session creation, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_INPUT_SNMP 10
Input interface index; default for N is 2 but higher values could be used
- #define DOCA_TELEMETRY_NETFLOW_INTERMEDIATE_PROCESS_ID 406
Description: An identifier of an Intermediate Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers may be assigned dynamically; that is, an Intermediate Process may be restarted with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_INTERNAL_ADDRESS_REALM 464
This Information Element represents the internal address realm where the packet is originated from or destined to. By definition, a NAT mapping can be created from two address realms, one from internal and one from external. Realms are implementation dependent and can represent a Virtual Routing and Forwarding (VRF) ID, a VLAN ID, or some unique identifier. Realms are optional and, when left unspecified, would mean that the external and internal realms are the same.
- #define DOCA_TELEMETRY_NETFLOW_IN_BYTES 1
Incoming counter with length N x 8 bits for number of bytes associated with an IP Flow.
- #define DOCA_TELEMETRY_NETFLOW_IN_DST_MAC 80
Incoming destination MAC address
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_BYTES 85
Running byte counter for a permanent flow
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_PKTS 86
Running packet counter for a permanent flow
- #define DOCA_TELEMETRY_NETFLOW_IN_PKTS 2
Incoming counter with length N x 8 bits for the number of packets associated with an IP Flow
- #define DOCA_TELEMETRY_NETFLOW_IN_SRC_MAC 56
Incoming source MAC address
- #define DOCA_TELEMETRY_NETFLOW_IPSEC_SPI 295
IPSec Security Parameters Index (SPI).
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_ADDR 12
IPv4 destination address
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_PREFIX 45
IPv4 destination address prefix (specific for Catalyst architecture)
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IDENT 54
The IP v4 identification field
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IHL 207
The value of the Internet Header Length (IHL) field in the IPv4 header. It specifies the length of the header in units of 4 octets. Please note that its unit is different from most of the other Information Elements reporting length values.
- #define DOCA_TELEMETRY_NETFLOW_IPV4_NEXT_HOP 15
IPv4 address of next-hop router
- #define DOCA_TELEMETRY_NETFLOW_IPV4_OPTIONS 208
IPv4 options in packets of this Flow. The information is encoded in a set of bit fields. For each valid IPv4 option type, there is a bit in this set. The bit is set to 1 if any observed packet of this Flow contains the corresponding IPv4 option type. Otherwise, if no observed packet of this Flow contained the respective IPv4 option type, the value of the corresponding bit is 0.
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_ADDR 8
IPv4 source address
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_PREFIX 44
IPv4 source address prefix (specific for Catalyst architecture)
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_ADDR 28
IPv6 Destination Address
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_MASK 30
Length of the IPv6 destination mask in contiguous bits
- #define DOCA_TELEMETRY_NETFLOW_IPV6_FLOW_LABEL 31
IPv6 flow label as per RFC 2460 definition
- #define DOCA_TELEMETRY_NETFLOW_IPV6_NEXT_HOP 62
IPv6 address of the next-hop router
- #define DOCA_TELEMETRY_NETFLOW_IPV6_OPTION_HEADERS 64
Bit-encoded field identifying IPv6 option headers found in the flow
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_ADDR 27
IPv6 Source Address
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_MASK 29
Length of the IPv6 source mask in contiguous bits
- #define DOCA_TELEMETRY_NETFLOW_IP_DIFF_SERV_CODE_POINT 195
The value of a Differentiated Services Code Point (DSCP) encoded in the Differentiated Services field. The Differentiated Services field spans the most significant 6 bits of the IPv4 TOS field or the IPv6 Traffic Class field, respectively.
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_LENGTH 189
The length of the IP header. For IPv6, the value of this Information Element is 40.
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_PACKET_SECTION 313
This Information Element carries a series of n octets from the IP header of a sampled packet, starting sectionOffset octets into the IP header.
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_LENGTH 204
The effective length of the IP payload.
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_PACKET_SECTION 314
This Information Element carries a series of n octets from the IP payload of a sampled packet, starting sectionOffset octets into the IP payload.
- #define DOCA_TELEMETRY_NETFLOW_IP_PRECEDENCE 196
The value of the IP Precedence. The IP Precedence value is encoded in the first 3 bits of the IPv4 TOS field or the IPv6 Traffic Class field, respectively.
- #define DOCA_TELEMETRY_NETFLOW_IP_PROTOCOL_VERSION 60
Internet Protocol Version Set to 4 for IPv4, set to 6 for IPv6. If not present in the template, then version 4 is assumed.
- #define DOCA_TELEMETRY_NETFLOW_IP_TOTAL_LENGTH 224
The total length of the IP packet.
- #define DOCA_TELEMETRY_NETFLOW_IP_TTL 192
For IPv4, the value of the Information Element matches the value of the Time to Live (TTL) field in the IPv4 packet header. For IPv6, the value of the Information Element matches the value of the Hop Limit field in the IPv6 packet header.
- #define DOCA_TELEMETRY_NETFLOW_IS_MULTICAST 206
If the IP destination address is not a reserved multicast address, then the value of all bits of the octet (including the reserved ones) is zero.
- #define DOCA_TELEMETRY_NETFLOW_L4_DST_PORT 11
TCP/UDP destination port number i.e.: FTP, Telnet, or equivalent
- #define DOCA_TELEMETRY_NETFLOW_L4_SRC_PORT 7
TCP/UDP source port number i.e.: FTP, Telnet, or equivalent
- #define DOCA_TELEMETRY_NETFLOW_LAST_SWITCHED 21
System uptime at which the last packet of this flow was switched
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_DELTA_COUNT 430
The number of incoming layer 2 frames since the previous report (if any) for this Flow at the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_TOTAL_COUNT 431
The total number of incoming layer 2 frames for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_COUNT 352
The number of layer 2 octets since the previous report (if any) in incoming packets for this Flow at the Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload. # memo: layer 2 version of octetDeltaCount (field #1)
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_SUM_OF_SQUARES 428
The sum of the squared numbers of layer 2 octets per incoming packet since the previous report (if any) for this Flow at the Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_COUNT 353
The total number of layer 2 octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload. # memo: layer 2 version of octetTotalCount (field #85)
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_SUM_OF_SQUARES 429
The total sum of the squared numbers of layer 2 octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_SEGMENT_ID 351
Identifier of a layer 2 network segment in an overlay network. The most significant byte identifies the layer 2 network overlay network encapsulation type:
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_DATA 104
Layer 2 packet section data.
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_OFFSET 102
Layer 2 packet section offset. Potentially a generic offset.
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_SIZE 103
Layer 2 packet section size. Potentially a generic size.
- #define DOCA_TELEMETRY_NETFLOW_LINE_CARD_ID 141
An identifier of a line card that is unique per IPFIX Device hosting an Observation Point. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_LOWER_CILIMIT 337
This Information Element specifies the lower limit of a confidence interval. For further information, see the description of upperCILimit.
- #define DOCA_TELEMETRY_NETFLOW_MAX_BIBENTRIES 472
This element represents the maximum BIB entries that can be created by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_ENTRIES_PER_USER 473
This element represents the maximum NAT entries that can be created per user by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_EXPORT_SECONDS 260
The absolute Export Time of the latest IPFIX Message within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MICROSECONDS 268
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the microsecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with microsecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MILLISECONDS 269
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the millisecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with millisecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_NANOSECONDS 270
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with nanosecond-precision timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_SECONDS 261
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the second if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FRAGMENTS_PENDING_REASSEMBLY 475
This element represents the maximum fragments that the NAT device can store for reassembling the packet.
- #define DOCA_TELEMETRY_NETFLOW_MAX_LAYER2_TOTAL_LENGTH 423
Layer 2 length of the largest packet observed for this Flow. The packet length includes the length of the layer 2 header(s) and the length of the layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_MAX_PKT_LENGTH 26
Maximum IP packet length on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MAX_SESSION_ENTRIES 471
This element represents the maximum session entries that can be created by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_SUBSCRIBERS 474
This element represents the maximum subscribers or maximum hosts that are allowed by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_TTL 53
Maximum TTL on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_MD5_CHECKSUM 262
The MD5 checksum of the IPFIX Message containing this record. This Information Element SHOULD be bound to its containing IPFIX Message via an options record and the messageScope Information Element, as defined below, and SHOULD appear only once in a given IPFIX Message. To calculate the value of this Information Element, first buffer the containing IPFIX Message, setting the value of this Information Element to all zeroes. Then calculate the MD5 checksum of the resulting buffer as defined in [RFC1321], place the resulting value in this Information Element, and export the buffered message. This Information Element is intended as a simple checksum only; therefore collision resistance and algorithm agility are not required, and MD5 is an appropriate message digest. This Information Element has a fixed length of 16 octets.
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_SCOPE 263
The presence of this Information Element as scope in an Options Template signifies that the options described by the Template apply to the IPFIX Message that contains them. It is defined for general purpose message scoping of options, and proposed specifically to allow the attachment a checksum to a message via IPFIX Options. The value of this Information Element MUST be written as 0 by the File Writer or Exporting Process. The value of this Information Element MUST be ignored by the File Reader or the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_METERING_PROCESS_ID 143
An identifier of a Metering Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers are typically assigned dynamically. The Metering Process may be re-started with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_ID 247
The EVC Service Attribute which uniquely identifies the Ethernet Virtual Connection (EVC) within a Metro Ethernet Network, as defined in section 6.2 of MEF 10.1. The MetroEVCID is encoded in a string of up to 100 characters.
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_TYPE 248
The 3-bit EVC Service Attribute which identifies the type of service provided by an EVC.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CAPTURE_TIME_SEMANTICS 448
Indicates when in the lifetime of the Flow the MIB value was retrieved from the MIB for a mibObjectIdentifier. This is used to indicate if the value exported was collected from the MIB closer to Flow creation or Flow export time and refers to the Timestamp fields included in the same Data Record. This field SHOULD be used when exporting a mibObjectValue that specifies counters or statistics.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_ENGINE_ID 449
A mibContextEngineID that specifies the SNMP engine ID for a MIB field being exported over IPFIX. Definition as per [RFC3411], Section 3.3.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_NAME 450
An Information Element that denotes that a MIB context name is specified for a MIB field being exported over IPFIX. Reference [RFC3411], Section 3.3.
- #define DOCA_TELEMETRY_NETFLOW_MIB_INDEX_INDICATOR 447
A set of bit fields that is used for marking the Information Elements of a Data Record that serve as INDEX MIB objects for an indexed columnar MIB object. Each bit represents an Information Element in the Data Record, with the n-th least significant bit representing the n-th Information Element. A bit set to 1 indicates that the corresponding Information Element is an index of the columnar object represented by the mibObjectValue. A bit set to 0 indicates that this is not the case.
- #define DOCA_TELEMETRY_NETFLOW_MIB_MODULE_NAME 454
The textual name of the MIB module that defines a MIB object.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_DESCRIPTION 452
The value of the DESCRIPTION clause of a MIB object type definition.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_IDENTIFIER 445
An IPFIX Information Element that denotes that a MIB Object Identifier (MIB OID) is exported in the (Options) Template Record. The mibObjectIdentifier Information Element contains the OID assigned to the MIB object type definition encoded as ASN.1/BER [X.690].
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_NAME 451
The name (called a descriptor in [RFC2578] of an object type definition.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_SYNTAX 453
The value of the SYNTAX clause of a MIB object type definition, which may include a textual convention or sub-typing. See [RFC2578].
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_BITS 437
An IPFIX Information Element that denotes that a set of Enumerated flags or bits from a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of BITS. The flags or bits are encoded as per the standard IPFIX Abstract Data Type of octetArray, with sufficient length to accommodate the required number of bits. If the number of bits is not an integer multiple of octets, then the most significant bits at the end of the octetArray MUST be set to 0.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_COUNTER 439
An IPFIX Information Element that denotes that the counter value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Counter32 or Counter64 with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned64.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_GAUGE 440
An IPFIX Information Element that denotes that the Gauge value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Gauge32. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32. This value represents a non-negative integer that may increase or decrease but that shall never exceed a maximum value or fall below a minimum value.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_INTEGER 434
An IPFIX Information Element that denotes that the integer value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Integer32 and INTEGER with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of signed32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_IPADDRESS 438
An IPFIX Information Element that denotes that the IPv4 address value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of IpAddress. The value is encoded as per the standard IPFIX Abstract Data Type of ipv4Address.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OCTET_STRING 435
An IPFIX Information Element that denotes that an Octet String or Opaque value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of OCTET STRING and Opaque. The value is encoded as per the standard IPFIX Abstract Data Type of octetArray.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OID 436
An IPFIX Information Element that denotes that an Object Identifier or OID value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of OBJECT IDENTIFIER. Note: In this case, the "mibObjectIdentifier" defines which MIB object is being exported, and the "mibObjectValueOID" field will contain the OID value of that MIB object. The mibObjectValueOID Information Element is encoded as ASN.1/BER [X.690] in an octetArray.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_ROW 444
An IPFIX Information Element that denotes that a single row of a conceptual table will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with a syntax of SEQUENCE. This is encoded as a subTemplateList of mibObjectValue Information Elements. The subTemplateList exported MUST contain exactly one row (i.e., one instance of the subTemplate). The Template specified in the subTemplateList MUST be an Options Template and MUST include all the objects listed in the INDEX clause as Scope Fields.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TABLE 443
An IPFIX Information Element that denotes that a complete or partial conceptual table will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with a syntax of SEQUENCE OF. This is encoded as a subTemplateList of mibObjectValue Information Elements. The Template specified in the subTemplateList MUST be an Options Template and MUST include all the objects listed in the INDEX clause as Scope Fields.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TIME_TICKS 441
An IPFIX Information Element that denotes that the TimeTicks value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of TimeTicks. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_UNSIGNED 442
An IPFIX Information Element that denotes that an unsigned integer value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of unsigned32 with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_SUB_IDENTIFIER 446
A non-negative sub-identifier of an Object Identifier (OID).
- #define DOCA_TELEMETRY_NETFLOW_MIN_EXPORT_SECONDS 264
The absolute Export Time of the earliest IPFIX Message within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MICROSECONDS 271
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the microsecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with microsecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MILLISECONDS 272
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the millisecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with millisecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_NANOSECONDS 273
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with nanosecond-precision timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_SECONDS 265
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the second if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MIN_LAYER2_TOTAL_LENGTH 422
Layer 2 length of the smallest packet observed for this Flow. The packet length includes the length of the layer 2 header(s) and the length of the layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_MIN_PKT_LENGTH 25
Minimum IP packet length on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MIN_TTL 52
Minimum TTL on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_IMSI 455
The International Mobile Subscription Identity (IMSI). The IMSI is a decimal digit string with up to a maximum of 15 ASCII/UTF-8 encoded digits (0x30 - 0x39).
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_MSISDN 456
The Mobile Station International Subscriber Directory Number (MSISDN). The MSISDN is a decimal digit string with up to a maximum of 15 ASCII/UTF-8 encoded digits (0x30 - 0x39).
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_END_MILLI_SECONDS 360
The absolute timestamp at which the monitoring interval ended. A Monitoring interval is the period of time during which the Metering Process is running.
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_START_MILLI_SECONDS 359
The absolute timestamp at which the monitoring interval started. A Monitoring interval is the period of time during which the Metering Process is running.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_1 70
MPLS label at position 1 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_10 79
MPLS label at position 10 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_2 71
MPLS label at position 2 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_3 72
MPLS label at position 3 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_4 73
MPLS label at position 4 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_5 74
MPLS label at position 5 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_6 75
MPLS label at position 6 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_7 76
MPLS label at position 7 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_8 77
MPLS label at position 8 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_9 78
MPLS label at position 9 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_DEPTH 202
The number of labels in the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_LENGTH 201
The length of the MPLS label stack in units of octets.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_SECTION 316
This Information Element carries a series of n octets from the MPLS label stack of a sampled packet, starting sectionOffset octets into the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAL_RD 90
MPLS PAL Route Distinguisher.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_LENGTH 194
The size of the MPLS packet without the label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_PACKET_SECTION 317
The mplsPayloadPacketSection carries a series of n octets from the MPLS payload of a sampled packet, starting sectionOffset octets into the MPLS payload, as it is data that follows immediately after the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PREFIX_LEN 91
Number of consecutive bits in the MPLS prefix length.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_EXP 203
The Exp field from the top MPLS label stack entry, i.e., the last label that was pushed.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IPV6_ADDRESS 140
The IPv6 address of the system that the MPLS top label will cause this Flow to be forwarded to.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IP_ADDR 47
Forwarding Equivalent Class corresponding to the MPLS Top Label
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TTL 200
The TTL field from the top MPLS label stack entry, i.e., the last label that was pushed.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TYPE 46
MPLS Top Label Type: 0x00 UNKNOWN 0x01 TE-MIDPT 0x02 ATOM 0x03 VPN 0x04 BGP 0x05 LDP
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_BYTES 20
IP multicast outgoing byte counter with length N x 8 bits for bytes associated with the IP Flow
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_PKTS 19
IP multicast outgoing packet counter with length N x 8 bits for packets associated with the IP Flow
- #define DOCA_TELEMETRY_NETFLOW_MUL_IGMP_TYPE 33
Internet Group Management Protocol (IGMP) packet type
- #define DOCA_TELEMETRY_NETFLOW_NAT_EVENT 230
This Information Element identifies a NAT event. This IE identifies the type of a NAT event. Examples of NAT events include, but are not limited to, NAT translation create, NAT translation delete, Threshold Reached, or Threshold Exceeded, etc. Values for this Information Element are listed in the "NAT Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-event-type].
- #define DOCA_TELEMETRY_NETFLOW_NAT_INSTANCE_ID 463
This Information Element uniquely identifies an Instance of the NAT that runs on a NAT middlebox function after the packet passes the Observation Point. natInstanceID is defined in [RFC7659].
- #define DOCA_TELEMETRY_NETFLOW_NAT_ORIGINATING_ADDRESS_REALM 229
Indicates whether the session was created because traffic originated in the private or public address realm. postNATSourceIPv4Address, postNATDestinationIPv4Address, postNAPTSourceTransportPort, and postNAPTDestinationTransportPort are qualified with the address realm in perspective.
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_ID 283
Locally unique identifier of a NAT pool.
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_NAME 284
The name of a NAT pool identified by a natPoolID.
- #define DOCA_TELEMETRY_NETFLOW_NAT_QUOTA_EXCEEDED_EVENT 466
This Information Element identifies the type of a NAT Quota Exceeded event. Values for this Information Element are listed in the "NAT Quota Exceeded Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-quota-exceeded-event].
- #define DOCA_TELEMETRY_NETFLOW_NAT_THRESHOLD_EVENT 467
This Information Element identifies a type of a NAT Threshold event. Values for this Information Element are listed in the "NAT Threshold Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-threshold-event].
- #define DOCA_TELEMETRY_NETFLOW_NAT_TYPE 297
Values are listed in the natType registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-type].
- #define DOCA_TELEMETRY_NETFLOW_NEW_CONNECTION_DELTA_COUNT 278
This information element counts the number of TCP or UDP connections which were opened during the observation period. The observation period may be specified by the flow start and end timestamps.
- #define DOCA_TELEMETRY_NETFLOW_NEXT_HEADER_IPV6 193
The value of the Next Header field of the IPv6 header. The value identifies the type of the following IPv6 extension header or of the following IP payload. Valid values are defined in the IANA Protocol Numbers registry.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_FLOW_TOTAL_COUNT 166
The total number of Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_LAYER2_OCTET_TOTAL_COUNT 427
The total number of octets in observed layer 2 packets (including the layer 2 header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_OCTET_TOTAL_COUNT 168
The total number of octets in packets in Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_PACKET_TOTAL_COUNT 167
The total number of packets in Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_ID 149
An identifier of an Observation Domain that is locally unique to an Exporting Process. The Exporting Process uses the Observation Domain ID to uniquely identify to the Collecting Process the Observation Domain where Flows were metered. It is RECOMMENDED that this identifier is also unique per IPFIX Device.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_NAME 300
The name of an observation domain identified by an observationDomainId.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_ID 138
An identifier of an Observation Point that is unique per Observation Domain. It is RECOMMENDED that this identifier is also unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_TYPE 277
Type of observation point. Values are listed in the observationPointType registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-observation-point-type].
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MICROSECONDS 324
This Information Element specifies the absolute time in microseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MILLISECONDS 323
This Information Element specifies the absolute time in milliseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_NANOSECONDS 325
This Information Element specifies the absolute time in nanoseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_SECONDS 322
This Information Element specifies the absolute time in seconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVED_FLOW_TOTAL_COUNT 163
The total number of Flows observed in the Observation Domain since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_OCTET_DELTA_SUM_OF_SQUARES 198
The sum of the squared numbers of octets per incoming packet since the previous report (if any) for this Flow at the Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_OCTET_TOTAL_SUM_OF_SQUARES 199
The total sum of the squared numbers of octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_OPAQUE_OCTETS 266
This Information Element is used to encapsulate non- IPFIX data into an IPFIX Message stream, for the purpose of allowing a non-IPFIX data processor to store a data stream inline within an IPFIX File. A Collecting Process or File Writer MUST NOT try to interpret this binary data. This Information Element differs from paddingOctets as its contents are meaningful in some non-IPFIX context, while the contents of paddingOctets MUST be 0x00 and are intended only for Information Element alignment.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV4_ADDRESS 403
The IPv4 address used by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Points to a downstream Collector.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV6_ADDRESS 404
The IPv6 address used by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Points to a downstream Collector.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_COMPLETED 377
The conservative count of Original Flows whose last packet is represented within this Aggregated Flow. Conservative counts must sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_INITIATED 376
The conservative count of Original Flows whose first packet is represented within this Aggregated Flow. Conservative counts must sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_PRESENT 375
The non-conservative count of Original Flows contributing to this Aggregated Flow. Non-conservative counts need not sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_OBSERVATION_DOMAIN_ID 405
The Observation Domain ID reported by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Domain to a downstream Collector. When cascading through multiple Mediators, this identifies the initial Observation Domain in the cascade.
- #define DOCA_TELEMETRY_NETFLOW_OUTPUT_SNMP 14
Output interface index; default for N is 2 but higher values could be used
- #define DOCA_TELEMETRY_NETFLOW_OUT_BYTES 23
Outgoing counter with length N x 8 bits for the number of bytes associated with an IP Flow
- #define DOCA_TELEMETRY_NETFLOW_OUT_DST_MAC 57
Outgoing destination MAC address
- #define DOCA_TELEMETRY_NETFLOW_OUT_PKTS 24
Outgoing counter with length N x 8 bits for the number of packets associated with an IP Flow.
- #define DOCA_TELEMETRY_NETFLOW_OUT_SRC_MAC 81
Outgoing source MAC address
- #define DOCA_TELEMETRY_NETFLOW_P2P_TECHNOLOGY 288
Specifies if the Application ID is based on peer-to-peer technology.
- #define DOCA_TELEMETRY_NETFLOW_PADDING_OCTETS 210
The value of this Information Element is always a sequence of 0x00 values.
- #define DOCA_TELEMETRY_NETFLOW_PAYLOAD_LENGTH_IPV6 191
This Information Element reports the value of the Payload Length field in the IPv6 header. Note that IPv6 extension headers belong to the payload. Also note that in case of a jumbo payload option the value of the Payload Length field in the IPv6 header is zero and so will be the value reported by this Information Element.
- #define DOCA_TELEMETRY_NETFLOW_PORT_ID 142
An identifier of a line port that is unique per IPFIX Device hosting an Observation Point. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_END 362
The port number identifying the end of a range of ports. A value of zero indicates that the range end is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_NUM_PORTS 364
The number of ports in a port range. A value of zero indicates that the number of ports is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_START 361
The port number identifying the start of a range of ports. A value of zero indicates that the range start is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_STEP_SIZE 363
The step size in a port range. The default step size is 1, which indicates contiguous ports. A value of zero indicates that the step size is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_POSTIP_DIFF_SERV_CODE_POINT 98
The value of a Differentiated Services Code Point (DSCP) encoded in the Differentiated Services Field, after modification.
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_CUSTOMER_VLAN_ID 255
The definition of this Information Element is identical to the definition of Information Element 'dot1qCustomerVlanId', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_VLAN_ID 254
The definition of this Information Element is identical to the definition of Information Element 'dot1qVlanId', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_IP_PRECEDENCE 257
The definition of this Information Element is identical to the definition of Information Element 'ipPrecedence', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_DELTA_COUNT 417
The definition of this Information Element is identical to the definition of the layer2OctetDeltaCount Information Element, except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_TOTAL_COUNT 420
The definition of this Information Element is identical to the definition of the layer2OctetTotalCount Information Element, except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_DELTA_COUNT 418
The number of layer 2 octets since the previous report (if any) in outgoing multicast packets sent for packets of this Flow by a multicast daemon within the Observation Domain. This property cannot necessarily be observed at the Observation Point but may be retrieved by other means. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_TOTAL_COUNT 421
The total number of layer 2 octets in outgoing multicast packets sent for packets of this Flow by a multicast daemon in the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point but may be retrieved by other means. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_OCTET_TOTAL_COUNT 175
The total number of octets in outgoing multicast packets sent for packets of this Flow by a multicast daemon in the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point, but may be retrieved by other means. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_PACKET_TOTAL_COUNT 174
The total number of outgoing multicast packets sent for packets of this Flow by a multicast daemon within the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point, but may be retrieved by other means.
- #define DOCA_TELEMETRY_NETFLOW_POST_MPLS_TOP_LABEL_EXP 237
The definition of this Information Element is identical to the definition of Information Element 'mplsTopLabelExp', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_DESTINATION_TRANSPORT_PORT 228
The definition of this Information Element is identical to the definition of Information Element 'destinationTransportPort', except that it reports a modified value caused by a Network Address Port Translation (NAPT) middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_SOURCE_TRANSPORT_PORT 227
The definition of this Information Element is identical to the definition of Information Element 'sourceTransportPort', except that it reports a modified value caused by a Network Address Port Translation (NAPT) middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NATDESTINATION_IPV6_ADDRESS 282
The definition of this Information Element is identical to the definition of Information Element 'destinationIPv6Address', except that it reports a modified value caused by a NAT64 middlebox function after the packet passed the Observation Point. See [RFC8200] for the definition of the Destination Address field in the IPv6 header. See [RFC3234] for the definition of middleboxes. See [RFC6146] for nat64 specification.
- #define DOCA_TELEMETRY_NETFLOW_POST_NATSOURCE_IPV6_ADDRESS 281
The definition of this Information Element is identical to the definition of Information Element 'sourceIPv6Address', except that it reports a modified value caused by a NAT64 middlebox function after the packet passed the Observation Point. See [RFC8200] for the definition of the Source Address field in the IPv6 header. See [RFC3234] for the definition of middleboxes. See [RFC6146] for nat64 specification.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_DESTINATION_IPV4_ADDRESS 226
The definition of this Information Element is identical to the definition of Information Element 'destinationIPv4Address', except that it reports a modified value caused by a NAT middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_SOURCE_IPV4_ADDRESS 225
The definition of this Information Element is identical to the definition of Information Element 'sourceIPv4Address', except that it reports a modified value caused by a NAT middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_OCTET_TOTAL_COUNT 171
The definition of this Information Element is identical to the definition of Information Element 'octetTotalCount', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_PACKET_TOTAL_COUNT 172
The definition of this Information Element is identical to the definition of Information Element 'packetTotalCount', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_PRIVATE_ENTERPRISE_NUMBER 346
A private enterprise number, as assigned by IANA. Within the context of an Information Element Type record, this element can be used along with the informationElementId element to scope properties to a specific Information Element. To export type information about an IANA-assigned Information Element, set the privateEnterpriseNumber to 0, or do not export the privateEnterpriseNumber in the type record. To export type information about an enterprise-specific Information Element, export the enterprise number in privateEnterpriseNumber, and export the Information Element number with the Enterprise bit cleared in informationElementId. The Enterprise bit in the associated informationElementId Information Element MUST be ignored by the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_PROTOCOL 4
IP protocol byte
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_CONTROL_WORD 251
The 32-bit Preferred Pseudo Wire (PW) MPLS Control Word as defined in Section 3 of [RFC4385].
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_DESTINATION_IPV4_ADDRESS 432
The destination IPv4 address of the PSN tunnel carrying the pseudowire.
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_ID 249
A 32-bit non-zero connection identifier, which together with the pseudoWireType, identifies the Pseudo Wire (PW) as defined in [RFC8077].
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_TYPE 250
The value of this information element identifies the type of MPLS Pseudo Wire (PW) as defined in [RFC4446].
- #define DOCA_TELEMETRY_NETFLOW_RELATIVE_ERROR 321
This Information Element specifies the maximum possible positive or negative error ratio for the reported value for a given Information Element as percentage of the measured value. The real value of the metric can differ by relativeError percent (positive or negative) from the measured value.
- #define DOCA_TELEMETRY_NETFLOW_REPLICATION_FACTOR 99
Multicast replication factor.
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_OCTETS 232
The total number of layer 4 payload bytes in a flow from the responder since the previous report. The responder is the device which replies to the initiator, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_PACKETS 299
The total number of layer 4 packets in a flow from the responder since the previous report. The responder is the device which replies to the initiator, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MICROSECONDS 386
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in microseconds.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MILLISECONDS 385
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in milliseconds.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_NANOSECONDS 387
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in nanoseconds.
- #define DOCA_TELEMETRY_NETFLOW_RTP_SEQUENCE_NUMBER 370
The RTP sequence number per [RFC3550].
- #define DOCA_TELEMETRY_NETFLOW_SAMPLER_NAME 84
Name of the flow sampler
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_ALGORITHM 35
The type of algorithm used for sampled NetFlow: 0x01 Deterministic Sampling ,0x02 Random Sampling
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_INTERVAL 396
This Information Element specifies the number of Flows that are consecutively sampled. A value of 100 means that 100 consecutive Flows are sampled. For example, this Information Element may be used to describe the configuration of a systematic count-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_SPACING 397
This Information Element specifies the number of Flows between two "samplingFlowInterval"s. A value of 100 means that the next interval starts 100 Flows (which are not sampled) after the current "samplingFlowInterval" is over. For example, this Information Element may be used to describe the configuration of a systematic count-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_INTERVAL 34
When using sampled NetFlow, the rate at which packets are sampled i.e.: a value of 100 indicates that one of every 100 packets is sampled
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_INTERVAL 305
This Information Element specifies the number of packets that are consecutively sampled. A value of 100 means that 100 consecutive packets are sampled.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_SPACE 306
This Information Element specifies the number of packets between two "samplingPacketInterval"s. A value of 100 means that the next interval starts 100 packets (which are not sampled) after the current "samplingPacketInterval" is over.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_POPULATION 310
This Information Element specifies the number of elements in the parent Population for random Sampling methods.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PROBABILITY 311
This Information Element specifies the probability that a packet is sampled, expressed as a value between 0 and 1. The probability is equal for every packet. A value of 0 means no packet was sampled since the probability is 0.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_SIZE 309
This Information Element specifies the number of elements taken from the parent Population for random Sampling methods.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_INTERVAL 307
This Information Element specifies the time interval in microseconds during which all arriving packets are sampled.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_SPACE 308
This Information Element specifies the time interval in microseconds between two "samplingTimeInterval"s. A value of 100 means that the next interval starts 100 microseconds (during which no packets are sampled) after the current "samplingTimeInterval" is over.
- #define DOCA_TELEMETRY_NETFLOW_SECTION_EXPORTED_OCTETS 410
This Information Element specifies the observed length of the packet section (e.g., dataLinkFrameSection, ipHeaderPacketSection, ipPayloadPacketSection, mplsLabelStackSection, and mplsPayloadPacketSection) when padding is used.
- #define DOCA_TELEMETRY_NETFLOW_SECTION_OFFSET 409
This Information Element specifies the offset of the packet section (e.g., dataLinkFrameSection, ipHeaderPacketSection, ipPayloadPacketSection, mplsLabelStackSection, and mplsPayloadPacketSection). If this Information Element is omitted, it defaults to zero (i.e., no offset).
- #define DOCA_TELEMETRY_NETFLOW_SELECTION_SEQUENCE_ID 301
From all the packets observed at an Observation Point, a subset of the packets is selected by a sequence of one or more Selectors. The selectionSequenceId is a unique value per Observation Domain, specifying the Observation Point and the sequence of Selectors through which the packets are selected.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ALGORITHM 304
This Information Element identifies the packet selection methods (e.g., Filtering, Sampling) that are applied by the Selection Process.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID 302
The Selector ID is the unique ID identifying a Primitive Selector. Each Primitive Selector must have a unique ID in the Observation Domain.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_OBSERVED 394
This Information Element specifies the total number of Flows observed by a Selector, for a specific value of SelectorId. This Information Element should be used in an Options Template scoped to the observation to which it refers. See Section 3.4.2.1 of the IPFIX protocol document [RFC7011].
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_SELECTED 395
This Information Element specifies the total number of Flows selected by a Selector, for a specific value of SelectorId. This Information Element should be used in an Options Template scoped to the observation to which it refers. See Section 3.4.2.1 of the IPFIX protocol document [RFC7011].
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_OBSERVED 318
This Information Element specifies the total number of packets observed by a Selector, for a specific value of SelectorId.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_SELECTED 319
This Information Element specifies the total number of packets selected by a Selector, for a specific value of SelectorId.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_NAME 335
The name of a selector identified by a selectorID. Globally unique per Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_SESSION_SCOPE 267
The presence of this Information Element as scope in an Options Template signifies that the options described by the Template apply to the IPFIX Transport Session that contains them. Note that as all options are implicitly scoped to Transport Session and Observation Domain, this Information Element is equivalent to a "null" scope. It is defined for general purpose session scoping of options, and proposed specifically to allow the attachment of time window to an IPFIX File via IPFIX Options. The value of this Information Element MUST be written as 0 by the File Writer or Exporting Process. The value of this Information Element MUST be ignored by the File Reader or the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_IPV6_PREFIX 170
IPv6 source address prefix.
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_TRANSPORT_PORTS_LIMIT 458
This Information Element contains the maximum number of IP source transport ports that can be used by an end user when sending IP packets; each user is associated with one or more (source) IPv4 or IPv6 addresses. This Information Element is particularly useful in address-sharing deployments that adhere to REQ-4 of [RFC6888]. Limiting the number of ports assigned to each user ensures fairness among users and mitigates the denial-of-service attack that a user could launch against other users through the address-sharing device in order to grab more ports.
- #define DOCA_TELEMETRY_NETFLOW_SRC_AS 16
Source BGP autonomous system number where N could be 2 or 4
- #define DOCA_TELEMETRY_NETFLOW_SRC_MASK 9
The number of contiguous bits in the source address subnet mask i.e.: the submask in slash notation
- #define DOCA_TELEMETRY_NETFLOW_SRC_TOS 5
Type of Service byte setting when entering incoming interface
- #define DOCA_TELEMETRY_NETFLOW_SRC_TRAFFIC_INDEX 92
BGP Policy Accounting Source Traffic Index
- #define DOCA_TELEMETRY_NETFLOW_SRC_VLAN 58
Virtual LAN identifier associated with ingress interface
- #define DOCA_TELEMETRY_NETFLOW_STA_IPV4_ADDRESS 366
The IPv4 address of a wireless station (STA).
- #define DOCA_TELEMETRY_NETFLOW_STA_MAC_ADDRESS 365
The IEEE 802 MAC address of a wireless station (STA).
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_LIST 292
Specifies a generic Information Element with a subTemplateList abstract data type.
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_MULTI_LIST 293
Specifies a generic Information Element with a subTemplateMultiList abstract data type.
- #define DOCA_TELEMETRY_NETFLOW_SYSTEM_INIT_TIME_MILLISECONDS 160
The absolute timestamp of the last (re-)initialization of the IPFIX Device.
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACKNOWLEDGMENT_NUMBER 185
The acknowledgment number in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACK_TOTAL_COUNT 222
The total number of packets of this Flow with TCP "Acknowledgment field significant" (ACK) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_DESTINATION_PORT 183
The destination port identifier in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_FIN_TOTAL_COUNT 219
The total number of packets of this Flow with TCP "No more data from sender" (FIN) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_FLAGS 6
Cumulative of all the TCP flags seen for this flow
- #define DOCA_TELEMETRY_NETFLOW_TCP_HEADER_LENGTH 188
The length of the TCP header. Note that the value of this Information Element is different from the value of the Data Offset field in the TCP header. The Data Offset field indicates the length of the TCP header in units of 4 octets. This Information Elements specifies the length of the TCP header in units of octets.
- #define DOCA_TELEMETRY_NETFLOW_TCP_OPTIONS 209
TCP options in packets of this Flow. The information is encoded in a set of bit fields. For each TCP option, there is a bit in this set. The bit is set to 1 if any observed packet of this Flow contains the corresponding TCP option. Otherwise, if no observed packet of this Flow contained the respective TCP option, the value of the corresponding bit is 0.
- #define DOCA_TELEMETRY_NETFLOW_TCP_PSH_TOTAL_COUNT 221
The total number of packets of this Flow with TCP "Push Function" (PSH) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_RST_TOTAL_COUNT 220
The total number of packets of this Flow with TCP "Reset the connection" (RST) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SEQUENCE_NUMBER 184
The sequence number in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SOURCE_PORT 182
The source port identifier in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SYN_TOTAL_COUNT 218
The total number of packets of this Flow with TCP "Synchronize sequence numbers" (SYN) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_URGENT_POINTER 187
The urgent pointer in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_URG_TOTAL_COUNT 223
The total number of packets of this Flow with TCP "Urgent Pointer field significant" (URG) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SCALE 238
The scale of the window field in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SIZE 186
The window field in the TCP header. If the TCP window scale is supported, then TCP window scale must be known to fully interpret the value of this information.
- #define DOCA_TELEMETRY_NETFLOW_TEMPLATE_ID 145
An identifier of a Template that is locally unique within a combination of a Transport session and an Observation Domain.
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_BYTES_EXP 40
Counter with length N x 8 bits for bytes for the number of bytes exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_FLOWS_EXP 42
Counter with length N x 8 bits for bytes for the number of flows exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_LENGTH_IPV4 190
The total length of the IPv4 packet.
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_PKTS_EXP 41
Counter with length N x 8 bits for bytes for the number of packets exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_OCTET_DELTA_COUNT 401
The number of octets, excluding IP header(s) and Layer 4 transport protocol header(s), observed for this Flow at the Observation Point since the previous report (if any).
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_PACKET_DELTA_COUNT 402
The number of packets containing at least one octet beyond the IP header(s) and Layer 4 transport protocol header(s), observed for this Flow at the Observation Point since the previous report (if any).
- #define DOCA_TELEMETRY_NETFLOW_TUNNEL_TECHNOLOGY 289
Specifies if the Application ID is used as a tunnel technology.
- #define DOCA_TELEMETRY_NETFLOW_UDP_DESTINATION_PORT 181
The destination port identifier in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UDP_MESSAGE_LENGTH 205
The value of the Length field in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UDP_SOURCE_PORT 180
The source port identifier in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UPPER_CILIMIT 336
This Information Element specifies the upper limit of a confidence interval. It is used to provide an accuracy statement for an estimated value. The confidence limits define the range in which the real value is assumed to be with a certain probability p. Confidence limits always need to be associated with a confidence level that defines this probability p. Please note that a confidence interval only provides a probability that the real value lies within the limits. That means the real value can lie outside the confidence limits.
- #define DOCA_TELEMETRY_NETFLOW_USER_NAME 371
User name associated with the flow.
- #define DOCA_TELEMETRY_NETFLOW_VALUE_DISTRIBUTION_METHOD 384
A description of the method used to distribute the counters from Contributing Flows into the Aggregated Flow records described by an associated scope, generally a Template. The method is deemed to apply to all the non-key Information Elements in the referenced scope for which value distribution is a valid operation; if the originalFlowsInitiated and/or originalFlowsCompleted Information Elements appear in the Template, they are not subject to this distribution method, as they each infer their own distribution method. The valueDistributionMethod registry is intended to list a complete set of possible value distribution methods. See [https://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-value-distribution-method].
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_ID 347
Instance Identifier of the interface to a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_NAME 348
Name of the interface to a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_NAME 350
Name of a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_UUID 349
Unique Identifier of a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VPN_IDENTIFIER 482
VPN ID in the format specified by [RFC2685]. The size of this Information Element is 7 octets.
- #define DOCA_TELEMETRY_NETFLOW_VRF_NAME 236
The name of a VPN Routing and Forwarding table (VRF).
- #define DOCA_TELEMETRY_NETFLOW_WLAN_CHANNEL_ID 146
The identifier of the 802.11 (Wi-Fi) channel used.
- #define DOCA_TELEMETRY_NETFLOW_WLAN_SSID 147
The Service Set IDentifier (SSID) identifying an 802.11 (Wi-Fi) network used. According to IEEE.802-11.1999, the SSID is encoded into a string of up to 32 characters.
- #define DOCA_TELEMETRY_NETFLOW_WTP_MAC_ADDRESS 367
The IEEE 802 MAC address of a wireless access point (WTP).
1.22.1. DOCA Telemetry NetFlow
[ DOCA Telemetry ]
DOCA lib for exporting a netflow packet to a netflow collector through the telemetry service.
This lib simplifies and centralizes the formatting and exporting of netflow packets. Netflow is a protocol for exporting information about the device network flows to a netflow collector that will aggregate and analyze the data. After creating conf file and invoke init function, the lib send function can be called with netflow struct to send a netflow packet with the format to the collector of choice specified in the conf file. The lib uses the netflow protocol specified by cisco.
See also:
https://netflow.caligare.com/netflow_v9.htm
Limitations:
The lib supports the netflow V9 format. The lib is not thread safe.
Modules
Defines
- #define DOCA_NETFLOW_APP_ID
- NetFlow Application ID.
- #define DOCA_NETFLOW_DEFAULT_PORT 2055
- NetFlow collector default port.
Functions
- doca_error_t doca_telemetry_netflow_destroy ( void )
- Free the exporter memory and close the connection.
- doca_error_t doca_telemetry_netflow_field_create ( doca_telemetry_netflow_flowset_field** field )
- Create new telemetry netflow field.
- doca_error_t doca_telemetry_netflow_field_destroy ( doca_telemetry_netflow_flowset_field* field )
- Destructor for DOCA netflow field.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_field_set_len ( doca_telemetry_netflow_flowset_field* field, uint16_t length )
- Set doca telemetry netflow field length.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_field_set_type ( doca_telemetry_netflow_flowset_field* field, uint16_t type )
- Set doca telemetry netflow field type.
- doca_error_t doca_telemetry_netflow_flush ( void )
- Immediately flush the data of the DOCA internal Netflow source.
- doca_error_t doca_telemetry_netflow_get_buf_data_root ( const char** path )
- Get data root path.
- doca_error_t doca_telemetry_netflow_get_buf_size ( uint64_t* size )
- Get buffer size.
- doca_error_t doca_telemetry_netflow_get_file_write_max_age ( doca_telemetry_timestamp_t* max_age )
- Get file maximum age.
- doca_error_t doca_telemetry_netflow_get_file_write_max_size ( size_t* size )
- Get file maximum size.
- doca_error_t doca_telemetry_netflow_get_ipc_sockets_dir ( const char** path )
- Get IPC socket directory.
- doca_error_t doca_telemetry_netflow_init ( uint16_t source_id )
- Init exporter memory, set configs and open connection.
- doca_error_t doca_telemetry_netflow_send ( const doca_telemetry_netflow_template* netflow_template, const void** records, size_t nof_records, size_t* nof_records_sent )
- Sending netflow records. Need to init first.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_buf_data_root ( const char* path )
- Set buffer data root Default path is "/opt/mellanox/doca/services/telemetry/data/".
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_buf_size ( uint64_t size )
- Set buffer size Default value is 60000 bytes.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_collector_addr ( const char* collector_addr )
- Set collector address.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_collector_port ( uint16_t collector_port )
- Set collector port. See DOCA_NETFLOW_DEFAULT_PORT for default value.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_enabled ( void )
- Enable file write file write is disabled by default.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_max_age ( doca_telemetry_timestamp_t max_age )
- Set file maximum age Default value is 1 hour.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_max_size ( size_t size )
- Set file maximum size Default value is 1MB.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_ipc_enabled ( void )
- Enable IPC IPC is disabled by default.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_ipc_sockets_dir ( const char* path )
- Set IPC socket directory. Default path is "/opt/mellanox/doca/services/telemetry/ipc_sockets".
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_max_packet_size ( uint16_t max_packet_size )
- Set max packet size.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_source_set_id ( const char* source_id )
- Set source id.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_source_set_tag ( const char* source_tag )
- Set source tag.
- doca_error_t doca_telemetry_netflow_start ( void )
- Finalizes netflow setup.
- doca_error_t doca_telemetry_netflow_template_add_field ( doca_telemetry_netflow_template* netflow_template, doca_telemetry_netflow_flowset_field* field )
- Add DOCA telemetry netflow field to netflow_template. The user loses the ownership of the field after a successful invocation of the function.
- doca_error_t doca_telemetry_netflow_template_create ( doca_telemetry_netflow_template** netflow_template )
- Create new telemetry netflow template.
- doca_error_t doca_telemetry_netflow_template_destroy ( doca_telemetry_netflow_template* netflow_template )
- Destructor for DOCA netflow template.
Defines
- #define DOCA_NETFLOW_APP_ID
-
Note:
This GUID cannot change
Value
{ \ 0x99, 0x10, 0xc1, 0x28, 0x39, 0x61, 0x47, 0xe6, 0xbe, 0x6c, 0x71, 0x5a, 0x0f, 0x03, 0xad, 0xd6 \ }
- #define DOCA_NETFLOW_DEFAULT_PORT 2055
-
Functions
- doca_error_t doca_telemetry_netflow_destroy ( void )
-
Free the exporter memory and close the connection.
Returns
DOCA_SUCCESS - in case of success.
Description
- doca_error_t doca_telemetry_netflow_field_create ( doca_telemetry_netflow_flowset_field** field )
-
Create new telemetry netflow field.
Parameters
- field
- Pointer to the newly allocated telemetry field.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry netflow field.
Description
- doca_error_t doca_telemetry_netflow_field_destroy ( doca_telemetry_netflow_flowset_field* field )
-
Destructor for DOCA netflow field.
Parameters
- field
- field to destroy.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if netflow_template is NULL.
Description
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_field_set_len ( doca_telemetry_netflow_flowset_field* field, uint16_t length )
-
Set doca telemetry netflow field length.
Parameters
- field
- Pointer to doca telemetry netflow field.
- length
- Field type.
Description
Note:Passing a field value of NULL will result in an undefined behavior.
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_field_set_type ( doca_telemetry_netflow_flowset_field* field, uint16_t type )
-
Set doca telemetry netflow field type.
Parameters
- field
- Pointer to doca telemetry netflow field.
- type
- Field type.
Description
Note:Passing a field value of NULL will result in an undefined behavior.
- doca_error_t doca_telemetry_netflow_flush ( void )
-
Immediately flush the data of the DOCA internal Netflow source.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - if the netflow has not been started.
Description
- doca_error_t doca_telemetry_netflow_get_buf_data_root ( const char** path )
-
Get data root path.
Parameters
- path
- The buffer data root
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
- doca_error_t doca_telemetry_netflow_get_buf_size ( uint64_t* size )
-
Get buffer size.
Parameters
- size
- The buffer size
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_netflow_get_file_write_max_age ( doca_telemetry_timestamp_t* max_age )
-
Get file maximum age.
Parameters
- max_age
- Maximum file age. Once current file is older than this threshold a new file will be created.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_netflow_get_file_write_max_size ( size_t* size )
-
Get file maximum size.
Parameters
- size
- Maximum size of binary data file.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
Description
- doca_error_t doca_telemetry_netflow_get_ipc_sockets_dir ( const char** path )
-
Get IPC socket directory.
Parameters
- path
- Path to a folder containing DOCA Telemetry Service (DTS) sockets.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
Note:Ownership of the returned string is transferred to the caller.
- doca_error_t doca_telemetry_netflow_init ( uint16_t source_id )
-
Init exporter memory, set configs and open connection.
Parameters
- source_id
- Unique source ID.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - if the netflow has been initialized before this call.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
- DOCA_ERROR_INITIALIZATION - failed to initialise netflow.
Description
The Source ID field is a 32-bit value that is used to guarantee uniqueness for all flows exported from a particular device (see link).
This function can be called again only after doca_telemetry_netflow_destroy was called.
- doca_error_t doca_telemetry_netflow_send ( const doca_telemetry_netflow_template* netflow_template, const void** records, size_t nof_records, size_t* nof_records_sent )
-
Sending netflow records. Need to init first.
Parameters
- netflow_template
- Template pointer of how the records are structured. For more info refer to doca_telemetry_netflow_template.
- records
- Array of pointers to the flows structs to send, must be packed. Strings must be an array in the struct, not a pointer.
- nof_records
- Records array size.
- nof_records_sent
- If not NULL, it will be filled with amount of records sent.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - if the netflow has not been initialized or the netflow has started.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
Note:When sending more then 30 records the lib splits the records to multiple packets because each packet can only send up to 30 records (Netflow protocol limit)
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_buf_data_root ( const char* path )
-
Set buffer data root Default path is "/opt/mellanox/doca/services/telemetry/data/".
Parameters
- path
- Path to a folder where the data and schema will be stored.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_buf_size ( uint64_t size )
-
Set buffer size Default value is 60000 bytes.
Parameters
- size
- Buffer size
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_collector_addr ( const char* collector_addr )
-
Set collector address.
Parameters
- collector_addr
- User defined netflow collector's IP address.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_collector_port ( uint16_t collector_port )
-
Set collector port. See DOCA_NETFLOW_DEFAULT_PORT for default value.
Parameters
- collector_port
- User defined netflow collector's port.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_enabled ( void )
-
Enable file write file write is disabled by default.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_max_age ( doca_telemetry_timestamp_t max_age )
-
Set file maximum age Default value is 1 hour.
Parameters
- max_age
- Maximum file age. Once current file is older than this threshold a new file will be created.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_file_write_max_size ( size_t size )
-
Set file maximum size Default value is 1MB.
Parameters
- size
- Maximum size of binary data file. Once this size is reached, a new binary file will be created.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_ipc_enabled ( void )
-
Enable IPC IPC is disabled by default.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_ipc_sockets_dir ( const char* path )
-
Set IPC socket directory. Default path is "/opt/mellanox/doca/services/telemetry/ipc_sockets".
Parameters
- path
- Path to a folder containing DOCA Telemetry Service (DTS) sockets.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_set_max_packet_size ( uint16_t max_packet_size )
-
Set max packet size.
Parameters
- max_packet_size
- User defined netflow packet's max size.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_source_set_id ( const char* source_id )
-
Set source id.
Parameters
- source_id
- Hostname or guid.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- DOCA_EXPERIMENTAL void doca_telemetry_netflow_source_set_tag ( const char* source_tag )
-
Set source tag.
Parameters
- source_tag
- User defined data-file name prefix.
Description
Note:This function should be called after doca_telemetry_netflow_init().
- doca_error_t doca_telemetry_netflow_start ( void )
-
Finalizes netflow setup.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_BAD_STATE - if the netflow has not been initialized or the netflow has started.
- DOCA_ERROR_NO_MEMORY - failed to allocate memory.
Description
- doca_error_t doca_telemetry_netflow_template_add_field ( doca_telemetry_netflow_template* netflow_template, doca_telemetry_netflow_flowset_field* field )
-
Add DOCA telemetry netflow field to netflow_template. The user loses the ownership of the field after a successful invocation of the function.
Parameters
- netflow_template
- Pointer to netflow_template.
- field
- DOCA Telemetry netflow field to add.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry netflow field.
Description
Note:field should NOT be passed to another group after calling this function.
- doca_error_t doca_telemetry_netflow_template_create ( doca_telemetry_netflow_template** netflow_template )
-
Create new telemetry netflow template.
Parameters
- netflow_template
- Pointer to the newly allocated telemetry netflow template.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - NULL parameter.
- DOCA_ERROR_NO_MEMORY - failed to allocate doca telemetry netflow template.
Description
- doca_error_t doca_telemetry_netflow_template_destroy ( doca_telemetry_netflow_template* netflow_template )
-
Destructor for DOCA netflow template.
Parameters
- netflow_template
- netflow template to destroy.
Returns
DOCA_SUCCESS - in case of success. Error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if netflow_template is NULL.
Description
DOCA Telemetry NetFlow Types
1.22.1.1. DOCA Telemetry NetFlow Types
[ DOCA Telemetry NetFlow ]
Defines
- #define DOCA_TELEMETRY_NETFLOW_ABSOLUTE_ERROR 320
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_HIGH_THRESHOLD 476
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_LOW_THRESHOLD 477
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_HIGH_THRESHOLD 478
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_LOW_THRESHOLD 479
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_PER_USER_HIGH_THRESHOLD 480
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_FLAGS 285
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_TECHNIQUE 286
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_CATEGORY_NAME 372
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_DESCRIPTION 94
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_GROUP_NAME 374
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_NAME 96
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_SUB_CATEGORY_NAME 373
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_TAG 95
- #define DOCA_TELEMETRY_NETFLOW_BASIC_LIST 291
- #define DOCA_TELEMETRY_NETFLOW_BGP_COMMUNITY 483
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_COMMUNITY_LIST 485
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_EXTENDED_COMMUNITY_LIST 488
- #define DOCA_TELEMETRY_NETFLOW_BGP_EXTENDED_COMMUNITY 486
- #define DOCA_TELEMETRY_NETFLOW_BGP_IPV4_NEXT_HOP 18
- #define DOCA_TELEMETRY_NETFLOW_BGP_LARGE_COMMUNITY 489
- #define DOCA_TELEMETRY_NETFLOW_BGP_NEXT_ADJACENT_AS_NUMBER 128
- #define DOCA_TELEMETRY_NETFLOW_BGP_PREV_ADJACENT_AS_NUMBER 129
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_COMMUNITY_LIST 484
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_EXTENDED_COMMUNITY_LIST 487
- #define DOCA_TELEMETRY_NETFLOW_BGP_VALIDITY_STATE 294
- #define DOCA_TELEMETRY_NETFLOW_BIFLOW_DIRECTION 239
- #define DOCA_TELEMETRY_NETFLOW_BPG_IPV6_NEXT_HOP 63
- #define DOCA_TELEMETRY_NETFLOW_COLLECTION_TIME_MILLISECONDS 258
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_CERTIFICATE 274
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV4_ADDRESS 211
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV6_ADDRESS 212
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_TRANSPORT_PORT 216
- #define DOCA_TELEMETRY_NETFLOW_COMMON_PROPERTIES_ID 137
- #define DOCA_TELEMETRY_NETFLOW_CONFIDENCE_LEVEL 338
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_SUM_DURATION_SECONDS 279
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_TRANSACTION_ID 280
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SECTION 315
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SIZE 312
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_TYPE 408
- #define DOCA_TELEMETRY_NETFLOW_DATA_RECORDS_RELIABILITY 276
- #define DOCA_TELEMETRY_NETFLOW_DESTINATION_IPV6_PREFIX 169
- #define DOCA_TELEMETRY_NETFLOW_DIGEST_HASH_VALUE 326
- #define DOCA_TELEMETRY_NETFLOW_DIRECTION 61
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV4_ADDRESS 381
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV6_ADDRESS 383
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IP_ADDRESS 379
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV4_ADDRESS 380
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV6_ADDRESS 382
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IP_ADDRESS 378
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DEI 389
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DESTINATION_MAC_ADDRESS 415
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_PRIORITY 246
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_SOURCE_MAC_ADDRESS 414
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_VLAN_ID 245
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_DEI 388
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_PRIORITY 244
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_ID 412
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_PRIORITY 413
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_TAG 411
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_VLAN_ID 243
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_DELTA_COUNT 424
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_TOTAL_COUNT 425
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_DELTA_COUNT 132
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_TOTAL_COUNT 134
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_DELTA_COUNT 133
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_TOTAL_COUNT 135
- #define DOCA_TELEMETRY_NETFLOW_DST_AS 17
- #define DOCA_TELEMETRY_NETFLOW_DST_MASK 13
- #define DOCA_TELEMETRY_NETFLOW_DST_TOS 55
- #define DOCA_TELEMETRY_NETFLOW_DST_TRAFFIC_INDEX 93
- #define DOCA_TELEMETRY_NETFLOW_DST_VLAN 59
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_BROADCAST_PACKET_TOTAL_COUNT 358
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_INTERFACE_TYPE 369
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_PHYSICAL_INTERFACE 253
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_UNICAST_PACKET_TOTAL_COUNT 357
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_VRFID 235
- #define DOCA_TELEMETRY_NETFLOW_ENCRYPTED_TECHNOLOGY 290
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_ID 39
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_TYPE 38
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_HEADER_LENGTH 240
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_PAYLOAD_LENGTH 241
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TOTAL_LENGTH 242
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TYPE 256
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_CERTIFICATE 275
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV4_ADDRESS 130
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV6_ADDRESS 131
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_TRANSPORT_PORT 217
- #define DOCA_TELEMETRY_NETFLOW_EXPORTING_PROCESS_ID 144
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_INTERFACE 213
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_PROTOCOL_VERSION 214
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_SCTP_STREAM_ID 259
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_TRANSPORT_PROTOCOL 215
- #define DOCA_TELEMETRY_NETFLOW_EXTERNAL_ADDRESS_REALM 465
- #define DOCA_TELEMETRY_NETFLOW_FIREWALL_EVENT 233
- #define DOCA_TELEMETRY_NETFLOW_FIRST_SWITCHED 22
- #define DOCA_TELEMETRY_NETFLOW_FLOWS 3
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ACTIVE_TIMEOUT 36
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MICROSECONDS 162
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MILLISECONDS 161
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_DELTA_MICROSECONDS 159
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MICROSECONDS 155
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MILLISECONDS 153
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_NANOSECONDS 157
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_REASON 136
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_SECONDS 151
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ID 148
- #define DOCA_TELEMETRY_NETFLOW_FLOW_INACTIVE_TIMEOUT 37
- #define DOCA_TELEMETRY_NETFLOW_FLOW_KEY_INDICATOR 173
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_ID 48
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_MODE 49
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_INTERVAL 398
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_SPACING 399
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_FLOW_DELTA_COUNT 393
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_OCTET_DELTA_COUNT 391
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_PACKET_DELTA_COUNT 392
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTOR_ALGORITHM 390
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_DELTA_MICROSECONDS 158
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MICROSECONDS 154
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MILLISECONDS 152
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_NANOSECONDS 156
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_SECONDS 150
- #define DOCA_TELEMETRY_NETFLOW_FORWARDING_STATUS 89
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_FLAGS 197
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_OFFSET 88
- #define DOCA_TELEMETRY_NETFLOW_GLOBAL_ADDRESS_MAPPING_HIGH_THRESHOLD 481
- #define DOCA_TELEMETRY_NETFLOW_GRE_KEY 296
- #define DOCA_TELEMETRY_NETFLOW_HASH_DIGEST_OUTPUT 333
- #define DOCA_TELEMETRY_NETFLOW_HASH_FLOW_DOMAIN 400
- #define DOCA_TELEMETRY_NETFLOW_HASH_INITIALIZER_VALUE 334
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_OFFSET 327
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_SIZE 328
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MAX 330
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MIN 329
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MAX 332
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MIN 331
- #define DOCA_TELEMETRY_NETFLOW_HTTP_CONTENT_TYPE 469
- #define DOCA_TELEMETRY_NETFLOW_HTTP_MESSAGE_VERSION 462
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REASON_PHRASE 470
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_HOST 460
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_METHOD 459
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_TARGET 461
- #define DOCA_TELEMETRY_NETFLOW_HTTP_STATUS_CODE 457
- #define DOCA_TELEMETRY_NETFLOW_HTTP_USER_AGENT 468
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV4 177
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV6 179
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE 32
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_CODE_IPV6 139
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV4 176
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV6 178
- #define DOCA_TELEMETRY_NETFLOW_IF_DESC 83
- #define DOCA_TELEMETRY_NETFLOW_IF_NAME 82
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_DATA_RECORD_TOTAL_COUNT 407
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_FRAME_TOTAL_COUNT 433
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_OCTET_TOTAL_COUNT 426
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_OCTET_TOTAL_COUNT 165
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_PACKET_TOTAL_COUNT 164
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DATA_TYPE 339
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DESCRIPTION 340
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_ID 303
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_INDEX 287
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_NAME 341
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_BEGIN 342
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_END 343
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_SEMANTICS 344
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_UNITS 345
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_BROADCAST_PACKET_TOTAL_COUNT 356
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_INTERFACE_TYPE 368
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_MULTICAST_PACKET_TOTAL_COUNT 355
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_PHYSICAL_INTERFACE 252
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_UNICAST_PACKET_TOTAL_COUNT 354
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_VRFID 234
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_OCTETS 231
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_PACKETS 298
- #define DOCA_TELEMETRY_NETFLOW_INPUT_SNMP 10
- #define DOCA_TELEMETRY_NETFLOW_INTERMEDIATE_PROCESS_ID 406
- #define DOCA_TELEMETRY_NETFLOW_INTERNAL_ADDRESS_REALM 464
- #define DOCA_TELEMETRY_NETFLOW_IN_BYTES 1
- #define DOCA_TELEMETRY_NETFLOW_IN_DST_MAC 80
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_BYTES 85
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_PKTS 86
- #define DOCA_TELEMETRY_NETFLOW_IN_PKTS 2
- #define DOCA_TELEMETRY_NETFLOW_IN_SRC_MAC 56
- #define DOCA_TELEMETRY_NETFLOW_IPSEC_SPI 295
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_ADDR 12
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_PREFIX 45
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IDENT 54
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IHL 207
- #define DOCA_TELEMETRY_NETFLOW_IPV4_NEXT_HOP 15
- #define DOCA_TELEMETRY_NETFLOW_IPV4_OPTIONS 208
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_ADDR 8
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_PREFIX 44
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_ADDR 28
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_MASK 30
- #define DOCA_TELEMETRY_NETFLOW_IPV6_FLOW_LABEL 31
- #define DOCA_TELEMETRY_NETFLOW_IPV6_NEXT_HOP 62
- #define DOCA_TELEMETRY_NETFLOW_IPV6_OPTION_HEADERS 64
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_ADDR 27
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_MASK 29
- #define DOCA_TELEMETRY_NETFLOW_IP_DIFF_SERV_CODE_POINT 195
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_LENGTH 189
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_PACKET_SECTION 313
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_LENGTH 204
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_PACKET_SECTION 314
- #define DOCA_TELEMETRY_NETFLOW_IP_PRECEDENCE 196
- #define DOCA_TELEMETRY_NETFLOW_IP_PROTOCOL_VERSION 60
- #define DOCA_TELEMETRY_NETFLOW_IP_TOTAL_LENGTH 224
- #define DOCA_TELEMETRY_NETFLOW_IP_TTL 192
- #define DOCA_TELEMETRY_NETFLOW_IS_MULTICAST 206
- #define DOCA_TELEMETRY_NETFLOW_L4_DST_PORT 11
- #define DOCA_TELEMETRY_NETFLOW_L4_SRC_PORT 7
- #define DOCA_TELEMETRY_NETFLOW_LAST_SWITCHED 21
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_DELTA_COUNT 430
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_TOTAL_COUNT 431
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_COUNT 352
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_SUM_OF_SQUARES 428
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_COUNT 353
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_SUM_OF_SQUARES 429
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_SEGMENT_ID 351
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_DATA 104
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_OFFSET 102
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_SIZE 103
- #define DOCA_TELEMETRY_NETFLOW_LINE_CARD_ID 141
- #define DOCA_TELEMETRY_NETFLOW_LOWER_CILIMIT 337
- #define DOCA_TELEMETRY_NETFLOW_MAX_BIBENTRIES 472
- #define DOCA_TELEMETRY_NETFLOW_MAX_ENTRIES_PER_USER 473
- #define DOCA_TELEMETRY_NETFLOW_MAX_EXPORT_SECONDS 260
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MICROSECONDS 268
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MILLISECONDS 269
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_NANOSECONDS 270
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_SECONDS 261
- #define DOCA_TELEMETRY_NETFLOW_MAX_FRAGMENTS_PENDING_REASSEMBLY 475
- #define DOCA_TELEMETRY_NETFLOW_MAX_LAYER2_TOTAL_LENGTH 423
- #define DOCA_TELEMETRY_NETFLOW_MAX_PKT_LENGTH 26
- #define DOCA_TELEMETRY_NETFLOW_MAX_SESSION_ENTRIES 471
- #define DOCA_TELEMETRY_NETFLOW_MAX_SUBSCRIBERS 474
- #define DOCA_TELEMETRY_NETFLOW_MAX_TTL 53
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_MD5_CHECKSUM 262
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_SCOPE 263
- #define DOCA_TELEMETRY_NETFLOW_METERING_PROCESS_ID 143
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_ID 247
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_TYPE 248
- #define DOCA_TELEMETRY_NETFLOW_MIB_CAPTURE_TIME_SEMANTICS 448
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_ENGINE_ID 449
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_NAME 450
- #define DOCA_TELEMETRY_NETFLOW_MIB_INDEX_INDICATOR 447
- #define DOCA_TELEMETRY_NETFLOW_MIB_MODULE_NAME 454
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_DESCRIPTION 452
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_IDENTIFIER 445
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_NAME 451
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_SYNTAX 453
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_BITS 437
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_COUNTER 439
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_GAUGE 440
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_INTEGER 434
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_IPADDRESS 438
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OCTET_STRING 435
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OID 436
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_ROW 444
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TABLE 443
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TIME_TICKS 441
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_UNSIGNED 442
- #define DOCA_TELEMETRY_NETFLOW_MIB_SUB_IDENTIFIER 446
- #define DOCA_TELEMETRY_NETFLOW_MIN_EXPORT_SECONDS 264
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MICROSECONDS 271
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MILLISECONDS 272
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_NANOSECONDS 273
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_SECONDS 265
- #define DOCA_TELEMETRY_NETFLOW_MIN_LAYER2_TOTAL_LENGTH 422
- #define DOCA_TELEMETRY_NETFLOW_MIN_PKT_LENGTH 25
- #define DOCA_TELEMETRY_NETFLOW_MIN_TTL 52
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_IMSI 455
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_MSISDN 456
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_END_MILLI_SECONDS 360
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_START_MILLI_SECONDS 359
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_1 70
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_10 79
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_2 71
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_3 72
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_4 73
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_5 74
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_6 75
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_7 76
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_8 77
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_9 78
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_DEPTH 202
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_LENGTH 201
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_SECTION 316
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAL_RD 90
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_LENGTH 194
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_PACKET_SECTION 317
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PREFIX_LEN 91
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_EXP 203
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IPV6_ADDRESS 140
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IP_ADDR 47
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TTL 200
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TYPE 46
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_BYTES 20
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_PKTS 19
- #define DOCA_TELEMETRY_NETFLOW_MUL_IGMP_TYPE 33
- #define DOCA_TELEMETRY_NETFLOW_NAT_EVENT 230
- #define DOCA_TELEMETRY_NETFLOW_NAT_INSTANCE_ID 463
- #define DOCA_TELEMETRY_NETFLOW_NAT_ORIGINATING_ADDRESS_REALM 229
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_ID 283
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_NAME 284
- #define DOCA_TELEMETRY_NETFLOW_NAT_QUOTA_EXCEEDED_EVENT 466
- #define DOCA_TELEMETRY_NETFLOW_NAT_THRESHOLD_EVENT 467
- #define DOCA_TELEMETRY_NETFLOW_NAT_TYPE 297
- #define DOCA_TELEMETRY_NETFLOW_NEW_CONNECTION_DELTA_COUNT 278
- #define DOCA_TELEMETRY_NETFLOW_NEXT_HEADER_IPV6 193
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_FLOW_TOTAL_COUNT 166
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_LAYER2_OCTET_TOTAL_COUNT 427
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_OCTET_TOTAL_COUNT 168
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_PACKET_TOTAL_COUNT 167
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_ID 149
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_NAME 300
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_ID 138
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_TYPE 277
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MICROSECONDS 324
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MILLISECONDS 323
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_NANOSECONDS 325
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_SECONDS 322
- #define DOCA_TELEMETRY_NETFLOW_OBSERVED_FLOW_TOTAL_COUNT 163
- #define DOCA_TELEMETRY_NETFLOW_OCTET_DELTA_SUM_OF_SQUARES 198
- #define DOCA_TELEMETRY_NETFLOW_OCTET_TOTAL_SUM_OF_SQUARES 199
- #define DOCA_TELEMETRY_NETFLOW_OPAQUE_OCTETS 266
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV4_ADDRESS 403
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV6_ADDRESS 404
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_COMPLETED 377
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_INITIATED 376
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_PRESENT 375
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_OBSERVATION_DOMAIN_ID 405
- #define DOCA_TELEMETRY_NETFLOW_OUTPUT_SNMP 14
- #define DOCA_TELEMETRY_NETFLOW_OUT_BYTES 23
- #define DOCA_TELEMETRY_NETFLOW_OUT_DST_MAC 57
- #define DOCA_TELEMETRY_NETFLOW_OUT_PKTS 24
- #define DOCA_TELEMETRY_NETFLOW_OUT_SRC_MAC 81
- #define DOCA_TELEMETRY_NETFLOW_P2P_TECHNOLOGY 288
- #define DOCA_TELEMETRY_NETFLOW_PADDING_OCTETS 210
- #define DOCA_TELEMETRY_NETFLOW_PAYLOAD_LENGTH_IPV6 191
- #define DOCA_TELEMETRY_NETFLOW_PORT_ID 142
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_END 362
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_NUM_PORTS 364
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_START 361
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_STEP_SIZE 363
- #define DOCA_TELEMETRY_NETFLOW_POSTIP_DIFF_SERV_CODE_POINT 98
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_CUSTOMER_VLAN_ID 255
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_VLAN_ID 254
- #define DOCA_TELEMETRY_NETFLOW_POST_IP_PRECEDENCE 257
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_DELTA_COUNT 417
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_TOTAL_COUNT 420
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_DELTA_COUNT 418
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_TOTAL_COUNT 421
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_OCTET_TOTAL_COUNT 175
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_PACKET_TOTAL_COUNT 174
- #define DOCA_TELEMETRY_NETFLOW_POST_MPLS_TOP_LABEL_EXP 237
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_DESTINATION_TRANSPORT_PORT 228
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_SOURCE_TRANSPORT_PORT 227
- #define DOCA_TELEMETRY_NETFLOW_POST_NATDESTINATION_IPV6_ADDRESS 282
- #define DOCA_TELEMETRY_NETFLOW_POST_NATSOURCE_IPV6_ADDRESS 281
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_DESTINATION_IPV4_ADDRESS 226
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_SOURCE_IPV4_ADDRESS 225
- #define DOCA_TELEMETRY_NETFLOW_POST_OCTET_TOTAL_COUNT 171
- #define DOCA_TELEMETRY_NETFLOW_POST_PACKET_TOTAL_COUNT 172
- #define DOCA_TELEMETRY_NETFLOW_PRIVATE_ENTERPRISE_NUMBER 346
- #define DOCA_TELEMETRY_NETFLOW_PROTOCOL 4
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_CONTROL_WORD 251
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_DESTINATION_IPV4_ADDRESS 432
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_ID 249
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_TYPE 250
- #define DOCA_TELEMETRY_NETFLOW_RELATIVE_ERROR 321
- #define DOCA_TELEMETRY_NETFLOW_REPLICATION_FACTOR 99
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_OCTETS 232
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_PACKETS 299
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MICROSECONDS 386
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MILLISECONDS 385
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_NANOSECONDS 387
- #define DOCA_TELEMETRY_NETFLOW_RTP_SEQUENCE_NUMBER 370
- #define DOCA_TELEMETRY_NETFLOW_SAMPLER_NAME 84
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_ALGORITHM 35
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_INTERVAL 396
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_SPACING 397
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_INTERVAL 34
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_INTERVAL 305
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_SPACE 306
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_POPULATION 310
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PROBABILITY 311
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_SIZE 309
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_INTERVAL 307
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_SPACE 308
- #define DOCA_TELEMETRY_NETFLOW_SECTION_EXPORTED_OCTETS 410
- #define DOCA_TELEMETRY_NETFLOW_SECTION_OFFSET 409
- #define DOCA_TELEMETRY_NETFLOW_SELECTION_SEQUENCE_ID 301
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ALGORITHM 304
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID 302
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_OBSERVED 394
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_SELECTED 395
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_OBSERVED 318
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_SELECTED 319
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_NAME 335
- #define DOCA_TELEMETRY_NETFLOW_SESSION_SCOPE 267
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_IPV6_PREFIX 170
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_TRANSPORT_PORTS_LIMIT 458
- #define DOCA_TELEMETRY_NETFLOW_SRC_AS 16
- #define DOCA_TELEMETRY_NETFLOW_SRC_MASK 9
- #define DOCA_TELEMETRY_NETFLOW_SRC_TOS 5
- #define DOCA_TELEMETRY_NETFLOW_SRC_TRAFFIC_INDEX 92
- #define DOCA_TELEMETRY_NETFLOW_SRC_VLAN 58
- #define DOCA_TELEMETRY_NETFLOW_STA_IPV4_ADDRESS 366
- #define DOCA_TELEMETRY_NETFLOW_STA_MAC_ADDRESS 365
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_LIST 292
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_MULTI_LIST 293
- #define DOCA_TELEMETRY_NETFLOW_SYSTEM_INIT_TIME_MILLISECONDS 160
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACKNOWLEDGMENT_NUMBER 185
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACK_TOTAL_COUNT 222
- #define DOCA_TELEMETRY_NETFLOW_TCP_DESTINATION_PORT 183
- #define DOCA_TELEMETRY_NETFLOW_TCP_FIN_TOTAL_COUNT 219
- #define DOCA_TELEMETRY_NETFLOW_TCP_FLAGS 6
- #define DOCA_TELEMETRY_NETFLOW_TCP_HEADER_LENGTH 188
- #define DOCA_TELEMETRY_NETFLOW_TCP_OPTIONS 209
- #define DOCA_TELEMETRY_NETFLOW_TCP_PSH_TOTAL_COUNT 221
- #define DOCA_TELEMETRY_NETFLOW_TCP_RST_TOTAL_COUNT 220
- #define DOCA_TELEMETRY_NETFLOW_TCP_SEQUENCE_NUMBER 184
- #define DOCA_TELEMETRY_NETFLOW_TCP_SOURCE_PORT 182
- #define DOCA_TELEMETRY_NETFLOW_TCP_SYN_TOTAL_COUNT 218
- #define DOCA_TELEMETRY_NETFLOW_TCP_URGENT_POINTER 187
- #define DOCA_TELEMETRY_NETFLOW_TCP_URG_TOTAL_COUNT 223
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SCALE 238
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SIZE 186
- #define DOCA_TELEMETRY_NETFLOW_TEMPLATE_ID 145
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_BYTES_EXP 40
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_FLOWS_EXP 42
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_LENGTH_IPV4 190
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_PKTS_EXP 41
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_OCTET_DELTA_COUNT 401
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_PACKET_DELTA_COUNT 402
- #define DOCA_TELEMETRY_NETFLOW_TUNNEL_TECHNOLOGY 289
- #define DOCA_TELEMETRY_NETFLOW_UDP_DESTINATION_PORT 181
- #define DOCA_TELEMETRY_NETFLOW_UDP_MESSAGE_LENGTH 205
- #define DOCA_TELEMETRY_NETFLOW_UDP_SOURCE_PORT 180
- #define DOCA_TELEMETRY_NETFLOW_UPPER_CILIMIT 336
- #define DOCA_TELEMETRY_NETFLOW_USER_NAME 371
- #define DOCA_TELEMETRY_NETFLOW_VALUE_DISTRIBUTION_METHOD 384
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_ID 347
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_NAME 348
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_NAME 350
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_UUID 349
- #define DOCA_TELEMETRY_NETFLOW_VPN_IDENTIFIER 482
- #define DOCA_TELEMETRY_NETFLOW_VRF_NAME 236
- #define DOCA_TELEMETRY_NETFLOW_WLAN_CHANNEL_ID 146
- #define DOCA_TELEMETRY_NETFLOW_WLAN_SSID 147
- #define DOCA_TELEMETRY_NETFLOW_WTP_MAC_ADDRESS 367
Defines
- #define DOCA_TELEMETRY_NETFLOW_ABSOLUTE_ERROR 320
This Information Element specifies the maximum possible measurement error of the reported value for a given Information Element. The absoluteError has the same unit as the Information Element with which it is associated. The real value of the metric can differ by absoluteError (positive or negative) from the measured value.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_HIGH_THRESHOLD 476
This element represents the high threshold value of the number of public IP addresses in the address pool.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_LOW_THRESHOLD 477
This element represents the low threshold value of the number of public IP addresses in the address pool.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_HIGH_THRESHOLD 478
This element represents the high threshold value of the number of address and port mappings.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_LOW_THRESHOLD 479
This element represents the low threshold value of the number of address and port mappings.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_PER_USER_HIGH_THRESHOLD 480
This element represents the high threshold value of the number of address and port mappings that a single user is allowed to create on a NAT device.
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_FLAGS 285
A flag word describing specialized modifications to the anonymization policy in effect for the anonymization technique applied to a referenced Information Element within a referenced Template. When flags are clear (0), the normal policy (as described by anonymizationTechnique) applies without modification.
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_TECHNIQUE 286
A description of the anonymization technique applied to a referenced Information Element within a referenced Template. Each technique may be applicable only to certain Information Elements and recommended only for certain Information Elements. Values are listed in the anonymizationTechnique registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-anonymization-technique].
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_CATEGORY_NAME 372
An attribute that provides a first level categorization for each Application ID.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_DESCRIPTION 94
Application description.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_GROUP_NAME 374
An attribute that groups multiple Application IDs that belong to the same networking application.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_NAME 96
Name associated with a classification.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_SUB_CATEGORY_NAME 373
An attribute that provides a second level categorization for each Application ID.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_TAG 95
8 bits of engine ID, followed by n bits of classification.
- #define DOCA_TELEMETRY_NETFLOW_BASIC_LIST 291
Specifies a generic Information Element with a basicList abstract data type. For example, a list of port numbers, a list of interface indexes, etc.
- #define DOCA_TELEMETRY_NETFLOW_BGP_COMMUNITY 483
BGP community as defined in [RFC1997]
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_COMMUNITY_LIST 485
basicList of zero or more bgpCommunity IEs, containing the BGP communities corresponding with destination IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_EXTENDED_COMMUNITY_LIST 488
basicList of zero or more bgpExtendedCommunity IEs, containing the BGP Extended Communities corresponding with destination IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_EXTENDED_COMMUNITY 486
BGP Extended Community as defined in [RFC4360]; the size of this IE MUST be 8 octets
- #define DOCA_TELEMETRY_NETFLOW_BGP_IPV4_NEXT_HOP 18
Next-hop router's IP in the BGP domain
- #define DOCA_TELEMETRY_NETFLOW_BGP_LARGE_COMMUNITY 489
BGP Large Community as defined in [RFC8092]; the size of this IE MUST be 12 octets.
- #define DOCA_TELEMETRY_NETFLOW_BGP_NEXT_ADJACENT_AS_NUMBER 128
The autonomous system (AS) number of the first AS in the AS path to the destination IP address. The path is deduced by looking up the destination IP address of the Flow in the BGP routing information base. If AS path information for this Flow is only available as an unordered AS set (and not as an ordered AS sequence), then the value of this Information Element is 0.
- #define DOCA_TELEMETRY_NETFLOW_BGP_PREV_ADJACENT_AS_NUMBER 129
The autonomous system (AS) number of the last AS in the AS path from the source IP address. The path is deduced by looking up the source IP address of the Flow in the BGP routing information base. If AS path information for this Flow is only available as an unordered AS set (and not as an ordered AS sequence), then the value of this Information Element is 0. In case of BGP asymmetry, the bgpPrevAdjacentAsNumber might not be able to report the correct value.
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_COMMUNITY_LIST 484
basicList of zero or more bgpCommunity IEs, containing the BGP communities corresponding with source IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_EXTENDED_COMMUNITY_LIST 487
basicList of zero or more bgpExtendedCommunity IEs, containing the BGP Extended Communities corresponding with source IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_VALIDITY_STATE 294
This element describes the "validity state" of the BGP route correspondent source or destination IP address. If the "validity state" for this Flow is only available, then the value of this Information Element is 255.
- #define DOCA_TELEMETRY_NETFLOW_BIFLOW_DIRECTION 239
A description of the direction assignment method used to assign the Biflow Source and Destination. This Information Element MAY be present in a Flow Data Record, or applied to all flows exported from an Exporting Process or Observation Domain using IPFIX Options. If this Information Element is not present in a Flow Record or associated with a Biflow via scope, it is assumed that the configuration of the direction assignment method is done out-of-band. Note that when using IPFIX Options to apply this Information Element to all flows within an Observation Domain or from an Exporting Process, the Option SHOULD be sent reliably. If reliable transport is not available (i.e., when using UDP), this Information Element SHOULD appear in each Flow Record. Values are listed in the biflowDirection registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-biflow-direction].
- #define DOCA_TELEMETRY_NETFLOW_BPG_IPV6_NEXT_HOP 63
Next-hop router in the BGP domain
- #define DOCA_TELEMETRY_NETFLOW_COLLECTION_TIME_MILLISECONDS 258
The absolute timestamp at which the data within the scope containing this Information Element was received by a Collecting Process. This Information Element SHOULD be bound to its containing IPFIX Message via IPFIX Options and the messageScope Information Element, as defined below.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_CERTIFICATE 274
The full X.509 certificate, encoded in ASN.1 DER format, used by the Collector when IPFIX Messages were transmitted using TLS or DTLS. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element, or to its containing IPFIX Message via an options record and the messageScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV4_ADDRESS 211
An IPv4 address to which the Exporting Process sends Flow information.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV6_ADDRESS 212
An IPv6 address to which the Exporting Process sends Flow information.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_TRANSPORT_PORT 216
The destination port identifier to which the Exporting Process sends Flow information. For the transport protocols UDP, TCP, and SCTP, this is the destination port number. This field MAY also be used for future transport protocols that have 16-bit source port identifiers.
- #define DOCA_TELEMETRY_NETFLOW_COMMON_PROPERTIES_ID 137
An identifier of a set of common properties that is unique per Observation Domain and Transport Session. Typically, this Information Element is used to link to information reported in separate Data Records.
- #define DOCA_TELEMETRY_NETFLOW_CONFIDENCE_LEVEL 338
This Information Element specifies the confidence level. It is used to provide an accuracy statement for estimated values. The confidence level provides the probability p with which the real value lies within a given range. A confidence level always needs to be associated with confidence limits that define the range in which the real value is assumed to be.
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_SUM_DURATION_SECONDS 279
This information element aggregates the total time in seconds for all of the TCP or UDP connections which were in use during the observation period. For example if there are 5 concurrent connections each for 10 seconds, the value would be 50 s.
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_TRANSACTION_ID 280
This information element identifies a transaction within a connection. A transaction is a meaningful exchange of application data between two network devices or a client and server. A transactionId is assigned the first time a flow is reported, so that later reports for the same flow will have the same transactionId. A different transactionId is used for each transaction within a TCP or UDP connection. The identifiers need not be sequential.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SECTION 315
This Information Element carries n octets from the data link frame of a selected frame, starting sectionOffset octets into the frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SIZE 312
This Information Element specifies the length of the selected data link frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_TYPE 408
This Information Element specifies the type of the selected data link frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_RECORDS_RELIABILITY 276
The export reliability of Data Records, within this SCTP stream, for the element(s) in the Options Template scope. A typical example of an element for which the export reliability will be reported is the templateID, as specified in the Data Records Reliability Options Template. A value of 'True' means that the Exporting Process MUST send any Data Records associated with the element(s) reliably within this SCTP stream. A value of 'False' means that the Exporting Process MAY send any Data Records associated with the element(s) unreliably within this SCTP stream.
- #define DOCA_TELEMETRY_NETFLOW_DESTINATION_IPV6_PREFIX 169
IPv6 destination address prefix.
- #define DOCA_TELEMETRY_NETFLOW_DIGEST_HASH_VALUE 326
This Information Element specifies the value from the digest hash function. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_DIRECTION 61
Flow direction: 0 - ingress flow, 1 - egress flow
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV4_ADDRESS 381
The count of distinct destination IPv4 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV6_ADDRESS 383
The count of distinct destination IPv6 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IP_ADDRESS 379
The count of distinct destination IP address values for Original Flows contributing to this Aggregated Flow, without regard to IP version. This Information Element is preferred to the version-specific counters below, unless it is important to separate the counts by version.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV4_ADDRESS 380
The count of distinct source IPv4 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV6_ADDRESS 382
The count of distinct source IPv6 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IP_ADDRESS 378
The count of distinct source IP address values for Original Flows contributing to this Aggregated Flow, without regard to IP version. This Information Element is preferred to the IP-version-specific counters, unless it is important to separate the counts by version.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DEI 389
In case of a QinQ frame, it represents the inner tag's Drop Eligible Indicator (DEI) field and in case of an IEEE 802.1ad frame it represents the DEI field of the C-TAG.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DESTINATION_MAC_ADDRESS 415
The value of the Encapsulated Customer Destination Address (C-DA) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_PRIORITY 246
The value represents the 3-bit Priority Code Point (PCP) portion of the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_SOURCE_MAC_ADDRESS 414
The value of the Encapsulated Customer Source Address (C-SA) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_VLAN_ID 245
The value represents the Customer VLAN identifier in the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_DEI 388
The value of the 1-bit Drop Eligible Indicator (DEI) field of the VLAN tag as described in 802.1Q-2011 subclause 9.6. In case of a QinQ frame, it represents the outer tag's DEI field and in case of an IEEE 802.1ad frame it represents the DEI field of the S-TAG. Note: in earlier versions of 802.1Q the same bit field in the incoming packet is occupied by the Canonical Format Indicator (CFI) field, except for S-TAGs.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_PRIORITY 244
The value of the 3-bit User Priority portion of the Tag Control Information field of an Ethernet frame. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q]. In the case of multi-tagged frame, it represents the 3-bit Priority Code Point (PCP) portion of the outer tag's Tag Control Information (TCI) field as described in [IEEE802.1Q], except for I-TAG.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_ID 412
The value of the 24-bit Backbone Service Instance Identifier (I-SID) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_PRIORITY 413
The value of the 3-bit Backbone Service Instance Priority Code Point (I-PCP) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_TAG 411
This Information Element, which is 16 octets long, represents the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q]. It encodes the Backbone Service Instance Priority Code Point (I-PCP), Backbone Service Instance Drop Eligible Indicator (I-DEI), Use Customer Addresses (UCAs), Backbone Service Instance Identifier (I-SID), Encapsulated Customer Destination Address (C-DA), Encapsulated Customer Source Address (C-SA), and reserved fields. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_VLAN_ID 243
The value of the 12-bit VLAN Identifier portion of the Tag Control Information field of an Ethernet frame. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q]. In Provider Bridged Networks, it represents the Service VLAN identifier in the Service VLAN Tag (S-TAG) Tag Control Information (TCI) field or the Customer VLAN identifier in the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q]. In Provider Backbone Bridged Networks, it represents the Backbone VLAN identifier in the Backbone VLAN Tag (B-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q]. In a virtual link between a host system and EVB bridge, it represents the Service VLAN identifier indicating S-channel as described in [IEEE802.1Qbg].
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_DELTA_COUNT 424
The number of layer 2 octets since the previous report (if any) in packets of this Flow dropped by packet treatment. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_TOTAL_COUNT 425
The total number of octets in observed layer 2 packets (including the layer 2 header) that were dropped by packet treatment since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_DELTA_COUNT 132
The number of octets since the previous report (if any) in packets of this Flow dropped by packet treatment. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_TOTAL_COUNT 134
The total number of octets in packets of this Flow dropped by packet treatment since the Metering Process (re-)initialization for this Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_DELTA_COUNT 133
The number of packets since the previous report (if any) of this Flow dropped by packet treatment.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_TOTAL_COUNT 135
The number of packets of this Flow dropped by packet treatment since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_DST_AS 17
Destination BGP autonomous system number where N could be 2 or 4
- #define DOCA_TELEMETRY_NETFLOW_DST_MASK 13
The number of contiguous bits in the destination address subnet mask i.e.: the submask in slash notation
- #define DOCA_TELEMETRY_NETFLOW_DST_TOS 55
Type of Service byte setting when exiting outgoing interface
- #define DOCA_TELEMETRY_NETFLOW_DST_TRAFFIC_INDEX 93
BGP Policy Accounting Destination Traffic Index
- #define DOCA_TELEMETRY_NETFLOW_DST_VLAN 59
Virtual LAN identifier associated with egress interface
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_BROADCAST_PACKET_TOTAL_COUNT 358
The total number of incoming broadcast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_INTERFACE_TYPE 369
The type of interface where packets of this Flow are being sent. The value matches the value of managed object 'ifType' as defined in [https://www.iana.org/assignments/ianaiftype-mib].
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_PHYSICAL_INTERFACE 253
The index of a networking device's physical interface (example, a switch port) where packets of this flow are being sent.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_UNICAST_PACKET_TOTAL_COUNT 357
The total number of incoming unicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_VRFID 235
An unique identifier of the VRFname where the packets of this flow are being sent. This identifier is unique per Metering Process
- #define DOCA_TELEMETRY_NETFLOW_ENCRYPTED_TECHNOLOGY 290
Specifies if the Application ID is an encrypted networking protocol.
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_ID 39
ID number of the flow switching engine
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_TYPE 38
Type of flow switching engine: RP = 0, VIP/Linecard = 1
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_HEADER_LENGTH 240
The difference between the length of an Ethernet frame (minus the FCS) and the length of its MAC Client Data section (including any padding) as defined in section 3.1 of [IEEE.802-3.2005]. It does not include the Preamble, SFD and Extension field lengths.
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_PAYLOAD_LENGTH 241
The length of the MAC Client Data section (including any padding) of a frame as defined in section 3.1 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TOTAL_LENGTH 242
The total length of the Ethernet frame (excluding the Preamble, SFD, Extension and FCS fields) as described in section 3.1 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TYPE 256
The Ethernet type field of an Ethernet frame that identifies the MAC client protocol carried in the payload as defined in paragraph 1.4.349 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_CERTIFICATE 275
The full X.509 certificate, encoded in ASN.1 DER format, used by the Collector when IPFIX Messages were transmitted using TLS or DTLS. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element, or to its containing IPFIX Message via an options record and the messageScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV4_ADDRESS 130
The IPv4 address used by the Exporting Process. This is used by the Collector to identify the Exporter in cases where the identity of the Exporter may have been obscured by the use of a proxy.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV6_ADDRESS 131
The IPv6 address used by the Exporting Process. This is used by the Collector to identify the Exporter in cases where the identity of the Exporter may have been obscured by the use of a proxy.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_TRANSPORT_PORT 217
The source port identifier from which the Exporting Process sends Flow information. For the transport protocols UDP, TCP, and SCTP, this is the source port number. This field MAY also be used for future transport protocols that have 16-bit source port identifiers. This field may be useful for distinguishing multiple Exporting Processes that use the same IP address.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTING_PROCESS_ID 144
An identifier of an Exporting Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers are typically assigned dynamically. The Exporting Process may be re-started with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_INTERFACE 213
The index of the interface from which IPFIX Messages sent by the Exporting Process to a Collector leave the IPFIX Device. The value matches the value of managed object 'ifIndex' as defined in [RFC2863]. Note that ifIndex values are not assigned statically to an interface and that the interfaces may be renumbered every time the device's management system is re-initialized, as specified in [RFC2863].
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_PROTOCOL_VERSION 214
The protocol version used by the Exporting Process for sending Flow information. The protocol version is given by the value of the Version Number field in the Message Header.
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_SCTP_STREAM_ID 259
The value of the SCTP Stream Identifier used by the Exporting Process for exporting IPFIX Message data. This is carried in the Stream Identifier field of the header of the SCTP DATA chunk containing the IPFIX Message(s).
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_TRANSPORT_PROTOCOL 215
The value of the protocol number used by the Exporting Process for sending Flow information. The protocol number identifies the IP packet payload type. Protocol numbers are defined in the IANA Protocol Numbers registry.
- #define DOCA_TELEMETRY_NETFLOW_EXTERNAL_ADDRESS_REALM 465
This Information Element represents the external address realm where the packet is originated from or destined to. The detailed definition is in the internal address realm as specified above.
- #define DOCA_TELEMETRY_NETFLOW_FIREWALL_EVENT 233
Indicates a firewall event. Allowed values are listed in the firewallEvent registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-firewall-event].
- #define DOCA_TELEMETRY_NETFLOW_FIRST_SWITCHED 22
System uptime at which the first packet of this flow was switched
- #define DOCA_TELEMETRY_NETFLOW_FLOWS 3
Number of flows that were aggregated; default for N is 4
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ACTIVE_TIMEOUT 36
Timeout value (in seconds) for active flow entries in the NetFlow cache
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MICROSECONDS 162
The difference in time between the first observed packet of this Flow and the last observed packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MILLISECONDS 161
The difference in time between the first observed packet of this Flow and the last observed packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_DELTA_MICROSECONDS 159
This is a relative timestamp only valid within the scope of a single IPFIX Message. It contains the negative time offset of the last observed packet of this Flow relative to the export time specified in the IPFIX Message Header.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MICROSECONDS 155
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MILLISECONDS 153
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_NANOSECONDS 157
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_REASON 136
The reason for Flow termination. Values are listed in the flowEndReason registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-flow-end-reason].
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_SECONDS 151
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ID 148
An identifier of a Flow that is unique within an Observation Domain. This Information Element can be used to distinguish between different Flows if Flow Keys such as IP addresses and port numbers are not reported or are reported in separate records.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_INACTIVE_TIMEOUT 37
Timeout value (in seconds) for inactive flow entries in the NetFlow cache
- #define DOCA_TELEMETRY_NETFLOW_FLOW_KEY_INDICATOR 173
This set of bit fields is used for marking the Information Elements of a Data Record that serve as Flow Key. Each bit represents an Information Element in the Data Record, with the n-th least significant bit representing the n-th Information Element. A bit set to value 1 indicates that the corresponding Information Element is a Flow Key of the reported Flow. A bit set to value 0 indicates that this is not the case.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_ID 48
Identifier shown in "show flow-sampler"
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_MODE 49
The type of algorithm used for sampling data: 0x02 random sampling. Use in connection with FLOW_SAMPLER_MODE
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50
Packet interval at which to sample. Use in connection with FLOW_SAMPLER_MODE
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_INTERVAL 398
This Information Element specifies the time interval in microseconds during which all arriving Flows are sampled. For example, this Information Element may be used to describe the configuration of a systematic time-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_SPACING 399
This Information Element specifies the time interval in microseconds between two "flowSamplingTimeInterval"s. A value of 100 means that the next interval starts 100 microseconds (during which no Flows are sampled) after the current "flowsamplingTimeInterval" is over. For example, this Information Element may used to describe the configuration of a systematic time-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_FLOW_DELTA_COUNT 393
This Information Element specifies the number of Flows that were selected in the Intermediate Flow Selection Process since the last report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_OCTET_DELTA_COUNT 391
This Information Element specifies the volume in octets of all Flows that are selected in the Intermediate Flow Selection Process since the previous report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_PACKET_DELTA_COUNT 392
This Information Element specifies the volume in packets of all Flows that were selected in the Intermediate Flow Selection Process since the previous report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTOR_ALGORITHM 390
This Information Element identifies the Intermediate Flow Selection Process technique (e.g., Filtering, Sampling) that is applied by the Intermediate Flow Selection Process. Most of these techniques have parameters. Its configuration parameter(s) MUST be clearly specified. Further Information Elements are needed to fully specify packet selection with these methods and all their parameters. Further method identifiers may be added to the flowSelectorAlgorithm registry. It might be necessary to define new Information Elements to specify their parameters. Please note that the purpose of the flow selection techniques described in this document is the improvement of measurement functions as defined in the Scope (Section 1). The Intermediate Flow Selection Process Techniques identifiers are defined at [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-flowselectoralgorithm].
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_DELTA_MICROSECONDS 158
This is a relative timestamp only valid within the scope of a single IPFIX Message. It contains the negative time offset of the first observed packet of this Flow relative to the export time specified in the IPFIX Message Header.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MICROSECONDS 154
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MILLISECONDS 152
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_NANOSECONDS 156
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_SECONDS 150
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FORWARDING_STATUS 89
Forwarding status is encoded on 1 byte with the 2 left bits giving the status and the 6 remaining bits giving the reason code.
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_FLAGS 197
Fragmentation properties indicated by flags in the IPv4 packet header or the IPv6 Fragment header, respectively.
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_OFFSET 88
The fragment-offset value from fragmented IP packets
- #define DOCA_TELEMETRY_NETFLOW_GLOBAL_ADDRESS_MAPPING_HIGH_THRESHOLD 481
This element represents the high threshold value of the number of address and port mappings that a single user is allowed to create on a NAT device in a paired address pooling behavior.
- #define DOCA_TELEMETRY_NETFLOW_GRE_KEY 296
GRE key, which is used for identifying an individual traffic flow within a tunnel.
- #define DOCA_TELEMETRY_NETFLOW_HASH_DIGEST_OUTPUT 333
This Information Element contains a boolean value that is TRUE if the output from this hash Selector has been configured to be included in the packet report as a packet digest, else FALSE.
- #define DOCA_TELEMETRY_NETFLOW_HASH_FLOW_DOMAIN 400
This Information Element specifies the Information Elements that are used by the Hash-based Flow Selector as the Hash Domain.
- #define DOCA_TELEMETRY_NETFLOW_HASH_INITIALIZER_VALUE 334
This Information Element specifies the initializer value to the hash function.
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_OFFSET 327
This Information Element specifies the IP payload offset used by a Hash-based Selection Selector. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_SIZE 328
This Information Element specifies the IP payload size used by a Hash-based Selection Selector. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MAX 330
This Information Element specifies the value for the end of a hash function's potential output range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MIN 329
This Information Element specifies the value for the beginning of a hash function's potential output range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MAX 332
This Information Element specifies the value for the end of a hash function's selected range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MIN 331
This Information Element specifies the value for the beginning of a hash function's selected range.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_CONTENT_TYPE 469
The HTTP Content-Type header field as defined in section 3.1.1.5 of [RFC7231]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_MESSAGE_VERSION 462
The version of an HTTP/1.1 message as indicated by the HTTP-version field, defined in section 2.6 of [RFC7230], or the version identification of an HTTP/2 frame as defined in [RFC7240] section 3.1. The length of this field is limited to 10 characters, UTF-8 encoded.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REASON_PHRASE 470
The HTTP reason phrase as defined in section 6.1 of [RFC7231].
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_HOST 460
The HTTP request host, as defined in section 5.4 of [RFC7230] or, in the case of HTTP/2, the content of the :authority pseudo-header field as defined in section 8.1.2.3 of [RFC7240]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_METHOD 459
The HTTP request method, as defined in section 4 of [RFC7231], associated with a flow. String with up to 8 UTF-8 characters.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_TARGET 461
The HTTP request target, as defined in section 2 of [RFC7231] and in section 5.3 of [RFC7230], associated with a flow. Or the HTTP/2 ":path" pseudo-header field as defined in section 8.1.2.3 of [RFC7240]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_STATUS_CODE 457
The HTTP Response Status Code, as defined in section 6 of [RFC7231], associated with a flow. Implies that the flow record represents a flow containing an HTTP Response.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_USER_AGENT 468
The HTTP User-Agent header field as defined in section 5.5.3 of [RFC7231]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV4 177
Code of the IPv4 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV6 179
Code of the IPv6 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE 32
Internet Control Message Protocol (ICMP) packet type; reported as ((ICMP Type*256) + ICMP code)
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_CODE_IPV6 139
Type and Code of the IPv6 ICMP message. The combination of both values is reported as (ICMP type * 256) + ICMP code.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV4 176
Type of the IPv4 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV6 178
Type of the IPv6 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_IF_DESC 83
Full interface name i.e.: "'FastEthernet 1/0"
- #define DOCA_TELEMETRY_NETFLOW_IF_NAME 82
Shortened interface name i.e.: "FE1/0"
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_DATA_RECORD_TOTAL_COUNT 407
Description: The total number of received Data Records that the Intermediate Process did not process since the (re-)initialization of the Intermediate Process; includes only Data Records not examined or otherwise handled by the Intermediate Process due to resource constraints, not Data Records that were examined or otherwise handled by the Intermediate Process but those that merely do not contribute to any exported Data Record due to the operations performed by the Intermediate Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_FRAME_TOTAL_COUNT 433
The total number of observed layer 2 frames that the Metering Process did not process since the (re-)initialization of the Metering Process. This Information Element is the layer 2 version of ignoredPacketTotalCount (ElementId #164).
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_OCTET_TOTAL_COUNT 426
The total number of octets in observed layer 2 packets (including the layer 2 header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_OCTET_TOTAL_COUNT 165
The total number of octets in observed IP packets (including the IP header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_PACKET_TOTAL_COUNT 164
The total number of observed IP packets that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DATA_TYPE 339
A description of the abstract data type of an IPFIX information element.These are taken from the abstract data types defined in section 3.1 of the IPFIX Information Model [RFC5102]; see that section for more information on the types described in the [informationElementDataType] subregistry.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DESCRIPTION 340
A UTF-8 [RFC3629] encoded Unicode string containing a human-readable description of an Information Element. The content of the informationElementDescription MAY be annotated with one or more language tags [RFC4646], encoded in-line [RFC2482] within the UTF-8 string, in order to specify the language in which the description is written. Description text in multiple languages MAY tag each section with its own language tag; in this case, the description information in each language SHOULD have equivalent meaning. In the absence of any language tag, the "i-default" [RFC2277] language SHOULD be assumed. See the Security Considerations section for notes on string handling for Information Element type records.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_ID 303
This Information Element contains the ID of another Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_INDEX 287
A zero-based index of an Information Element referenced by informationElementId within a Template referenced by templateId; used to disambiguate scope for templates containing multiple identical Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_NAME 341
A UTF-8 [RFC3629] encoded Unicode string containing the name of an Information Element, intended as a simple identifier. See the Security Considerations section for notes on string handling for Information Element type records
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_BEGIN 342
Contains the inclusive low end of the range of acceptable values for an Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_END 343
Contains the inclusive high end of the range of acceptable values for an Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_SEMANTICS 344
A description of the semantics of an IPFIX Information Element. These are taken from the data type semantics defined in section 3.2 of the IPFIX Information Model [RFC5102]; see that section for more information on the types defined in the [IPFIX Information Element Semantics] subregistry. This field may take the values in the semantics registry; the special value 0x00 (default) is used to note that no semantics apply to the field; it cannot be manipulated by a Collecting Process or File Reader that does not understand it a priori.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_UNITS 345
A description of the units of an IPFIX Information Element. These correspond to the units implicitly defined in the Information Element definitions in section 5 of the IPFIX Information Model [RFC5102]; see that section for more information on the types described in the informationElementsUnits subregistry. This field may take the values in Table 3 below; the special value 0x00 (none) is used to note that the field is unitless.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_BROADCAST_PACKET_TOTAL_COUNT 356
The total number of incoming broadcast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_INTERFACE_TYPE 368
The type of interface where packets of this Flow are being received. The value matches the value of managed object 'ifType' as defined in [https://www.iana.org/assignments/ianaiftype-mib].
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_MULTICAST_PACKET_TOTAL_COUNT 355
The total number of incoming multicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_PHYSICAL_INTERFACE 252
The index of a networking device's physical interface (example, a switch port) where packets of this flow are being received.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_UNICAST_PACKET_TOTAL_COUNT 354
The total number of incoming unicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_VRFID 234
An unique identifier of the VRFname where the packets of this flow are being received. This identifier is unique per Metering Process
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_OCTETS 231
The total number of layer 4 payload bytes in a flow from the initiator since the previous report. The initiator is the device which triggered the session creation, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_PACKETS 298
The total number of layer 4 packets in a flow from the initiator since the previous report. The initiator is the device which triggered the session creation, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_INPUT_SNMP 10
Input interface index; default for N is 2 but higher values could be used
- #define DOCA_TELEMETRY_NETFLOW_INTERMEDIATE_PROCESS_ID 406
Description: An identifier of an Intermediate Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers may be assigned dynamically; that is, an Intermediate Process may be restarted with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_INTERNAL_ADDRESS_REALM 464
This Information Element represents the internal address realm where the packet is originated from or destined to. By definition, a NAT mapping can be created from two address realms, one from internal and one from external. Realms are implementation dependent and can represent a Virtual Routing and Forwarding (VRF) ID, a VLAN ID, or some unique identifier. Realms are optional and, when left unspecified, would mean that the external and internal realms are the same.
- #define DOCA_TELEMETRY_NETFLOW_IN_BYTES 1
Incoming counter with length N x 8 bits for number of bytes associated with an IP Flow.
- #define DOCA_TELEMETRY_NETFLOW_IN_DST_MAC 80
Incoming destination MAC address
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_BYTES 85
Running byte counter for a permanent flow
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_PKTS 86
Running packet counter for a permanent flow
- #define DOCA_TELEMETRY_NETFLOW_IN_PKTS 2
Incoming counter with length N x 8 bits for the number of packets associated with an IP Flow
- #define DOCA_TELEMETRY_NETFLOW_IN_SRC_MAC 56
Incoming source MAC address
- #define DOCA_TELEMETRY_NETFLOW_IPSEC_SPI 295
IPSec Security Parameters Index (SPI).
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_ADDR 12
IPv4 destination address
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_PREFIX 45
IPv4 destination address prefix (specific for Catalyst architecture)
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IDENT 54
The IP v4 identification field
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IHL 207
The value of the Internet Header Length (IHL) field in the IPv4 header. It specifies the length of the header in units of 4 octets. Please note that its unit is different from most of the other Information Elements reporting length values.
- #define DOCA_TELEMETRY_NETFLOW_IPV4_NEXT_HOP 15
IPv4 address of next-hop router
- #define DOCA_TELEMETRY_NETFLOW_IPV4_OPTIONS 208
IPv4 options in packets of this Flow. The information is encoded in a set of bit fields. For each valid IPv4 option type, there is a bit in this set. The bit is set to 1 if any observed packet of this Flow contains the corresponding IPv4 option type. Otherwise, if no observed packet of this Flow contained the respective IPv4 option type, the value of the corresponding bit is 0.
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_ADDR 8
IPv4 source address
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_PREFIX 44
IPv4 source address prefix (specific for Catalyst architecture)
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_ADDR 28
IPv6 Destination Address
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_MASK 30
Length of the IPv6 destination mask in contiguous bits
- #define DOCA_TELEMETRY_NETFLOW_IPV6_FLOW_LABEL 31
IPv6 flow label as per RFC 2460 definition
- #define DOCA_TELEMETRY_NETFLOW_IPV6_NEXT_HOP 62
IPv6 address of the next-hop router
- #define DOCA_TELEMETRY_NETFLOW_IPV6_OPTION_HEADERS 64
Bit-encoded field identifying IPv6 option headers found in the flow
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_ADDR 27
IPv6 Source Address
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_MASK 29
Length of the IPv6 source mask in contiguous bits
- #define DOCA_TELEMETRY_NETFLOW_IP_DIFF_SERV_CODE_POINT 195
The value of a Differentiated Services Code Point (DSCP) encoded in the Differentiated Services field. The Differentiated Services field spans the most significant 6 bits of the IPv4 TOS field or the IPv6 Traffic Class field, respectively.
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_LENGTH 189
The length of the IP header. For IPv6, the value of this Information Element is 40.
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_PACKET_SECTION 313
This Information Element carries a series of n octets from the IP header of a sampled packet, starting sectionOffset octets into the IP header.
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_LENGTH 204
The effective length of the IP payload.
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_PACKET_SECTION 314
This Information Element carries a series of n octets from the IP payload of a sampled packet, starting sectionOffset octets into the IP payload.
- #define DOCA_TELEMETRY_NETFLOW_IP_PRECEDENCE 196
The value of the IP Precedence. The IP Precedence value is encoded in the first 3 bits of the IPv4 TOS field or the IPv6 Traffic Class field, respectively.
- #define DOCA_TELEMETRY_NETFLOW_IP_PROTOCOL_VERSION 60
Internet Protocol Version Set to 4 for IPv4, set to 6 for IPv6. If not present in the template, then version 4 is assumed.
- #define DOCA_TELEMETRY_NETFLOW_IP_TOTAL_LENGTH 224
The total length of the IP packet.
- #define DOCA_TELEMETRY_NETFLOW_IP_TTL 192
For IPv4, the value of the Information Element matches the value of the Time to Live (TTL) field in the IPv4 packet header. For IPv6, the value of the Information Element matches the value of the Hop Limit field in the IPv6 packet header.
- #define DOCA_TELEMETRY_NETFLOW_IS_MULTICAST 206
If the IP destination address is not a reserved multicast address, then the value of all bits of the octet (including the reserved ones) is zero.
- #define DOCA_TELEMETRY_NETFLOW_L4_DST_PORT 11
TCP/UDP destination port number i.e.: FTP, Telnet, or equivalent
- #define DOCA_TELEMETRY_NETFLOW_L4_SRC_PORT 7
TCP/UDP source port number i.e.: FTP, Telnet, or equivalent
- #define DOCA_TELEMETRY_NETFLOW_LAST_SWITCHED 21
System uptime at which the last packet of this flow was switched
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_DELTA_COUNT 430
The number of incoming layer 2 frames since the previous report (if any) for this Flow at the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_TOTAL_COUNT 431
The total number of incoming layer 2 frames for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_COUNT 352
The number of layer 2 octets since the previous report (if any) in incoming packets for this Flow at the Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload. # memo: layer 2 version of octetDeltaCount (field #1)
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_SUM_OF_SQUARES 428
The sum of the squared numbers of layer 2 octets per incoming packet since the previous report (if any) for this Flow at the Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_COUNT 353
The total number of layer 2 octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload. # memo: layer 2 version of octetTotalCount (field #85)
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_SUM_OF_SQUARES 429
The total sum of the squared numbers of layer 2 octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_SEGMENT_ID 351
Identifier of a layer 2 network segment in an overlay network. The most significant byte identifies the layer 2 network overlay network encapsulation type:
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_DATA 104
Layer 2 packet section data.
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_OFFSET 102
Layer 2 packet section offset. Potentially a generic offset.
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_SIZE 103
Layer 2 packet section size. Potentially a generic size.
- #define DOCA_TELEMETRY_NETFLOW_LINE_CARD_ID 141
An identifier of a line card that is unique per IPFIX Device hosting an Observation Point. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_LOWER_CILIMIT 337
This Information Element specifies the lower limit of a confidence interval. For further information, see the description of upperCILimit.
- #define DOCA_TELEMETRY_NETFLOW_MAX_BIBENTRIES 472
This element represents the maximum BIB entries that can be created by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_ENTRIES_PER_USER 473
This element represents the maximum NAT entries that can be created per user by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_EXPORT_SECONDS 260
The absolute Export Time of the latest IPFIX Message within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MICROSECONDS 268
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the microsecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with microsecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MILLISECONDS 269
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the millisecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with millisecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_NANOSECONDS 270
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with nanosecond-precision timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_SECONDS 261
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the second if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FRAGMENTS_PENDING_REASSEMBLY 475
This element represents the maximum fragments that the NAT device can store for reassembling the packet.
- #define DOCA_TELEMETRY_NETFLOW_MAX_LAYER2_TOTAL_LENGTH 423
Layer 2 length of the largest packet observed for this Flow. The packet length includes the length of the layer 2 header(s) and the length of the layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_MAX_PKT_LENGTH 26
Maximum IP packet length on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MAX_SESSION_ENTRIES 471
This element represents the maximum session entries that can be created by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_SUBSCRIBERS 474
This element represents the maximum subscribers or maximum hosts that are allowed by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_TTL 53
Maximum TTL on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_MD5_CHECKSUM 262
The MD5 checksum of the IPFIX Message containing this record. This Information Element SHOULD be bound to its containing IPFIX Message via an options record and the messageScope Information Element, as defined below, and SHOULD appear only once in a given IPFIX Message. To calculate the value of this Information Element, first buffer the containing IPFIX Message, setting the value of this Information Element to all zeroes. Then calculate the MD5 checksum of the resulting buffer as defined in [RFC1321], place the resulting value in this Information Element, and export the buffered message. This Information Element is intended as a simple checksum only; therefore collision resistance and algorithm agility are not required, and MD5 is an appropriate message digest. This Information Element has a fixed length of 16 octets.
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_SCOPE 263
The presence of this Information Element as scope in an Options Template signifies that the options described by the Template apply to the IPFIX Message that contains them. It is defined for general purpose message scoping of options, and proposed specifically to allow the attachment a checksum to a message via IPFIX Options. The value of this Information Element MUST be written as 0 by the File Writer or Exporting Process. The value of this Information Element MUST be ignored by the File Reader or the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_METERING_PROCESS_ID 143
An identifier of a Metering Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers are typically assigned dynamically. The Metering Process may be re-started with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_ID 247
The EVC Service Attribute which uniquely identifies the Ethernet Virtual Connection (EVC) within a Metro Ethernet Network, as defined in section 6.2 of MEF 10.1. The MetroEVCID is encoded in a string of up to 100 characters.
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_TYPE 248
The 3-bit EVC Service Attribute which identifies the type of service provided by an EVC.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CAPTURE_TIME_SEMANTICS 448
Indicates when in the lifetime of the Flow the MIB value was retrieved from the MIB for a mibObjectIdentifier. This is used to indicate if the value exported was collected from the MIB closer to Flow creation or Flow export time and refers to the Timestamp fields included in the same Data Record. This field SHOULD be used when exporting a mibObjectValue that specifies counters or statistics.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_ENGINE_ID 449
A mibContextEngineID that specifies the SNMP engine ID for a MIB field being exported over IPFIX. Definition as per [RFC3411], Section 3.3.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_NAME 450
An Information Element that denotes that a MIB context name is specified for a MIB field being exported over IPFIX. Reference [RFC3411], Section 3.3.
- #define DOCA_TELEMETRY_NETFLOW_MIB_INDEX_INDICATOR 447
A set of bit fields that is used for marking the Information Elements of a Data Record that serve as INDEX MIB objects for an indexed columnar MIB object. Each bit represents an Information Element in the Data Record, with the n-th least significant bit representing the n-th Information Element. A bit set to 1 indicates that the corresponding Information Element is an index of the columnar object represented by the mibObjectValue. A bit set to 0 indicates that this is not the case.
- #define DOCA_TELEMETRY_NETFLOW_MIB_MODULE_NAME 454
The textual name of the MIB module that defines a MIB object.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_DESCRIPTION 452
The value of the DESCRIPTION clause of a MIB object type definition.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_IDENTIFIER 445
An IPFIX Information Element that denotes that a MIB Object Identifier (MIB OID) is exported in the (Options) Template Record. The mibObjectIdentifier Information Element contains the OID assigned to the MIB object type definition encoded as ASN.1/BER [X.690].
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_NAME 451
The name (called a descriptor in [RFC2578] of an object type definition.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_SYNTAX 453
The value of the SYNTAX clause of a MIB object type definition, which may include a textual convention or sub-typing. See [RFC2578].
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_BITS 437
An IPFIX Information Element that denotes that a set of Enumerated flags or bits from a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of BITS. The flags or bits are encoded as per the standard IPFIX Abstract Data Type of octetArray, with sufficient length to accommodate the required number of bits. If the number of bits is not an integer multiple of octets, then the most significant bits at the end of the octetArray MUST be set to 0.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_COUNTER 439
An IPFIX Information Element that denotes that the counter value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Counter32 or Counter64 with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned64.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_GAUGE 440
An IPFIX Information Element that denotes that the Gauge value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Gauge32. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32. This value represents a non-negative integer that may increase or decrease but that shall never exceed a maximum value or fall below a minimum value.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_INTEGER 434
An IPFIX Information Element that denotes that the integer value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Integer32 and INTEGER with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of signed32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_IPADDRESS 438
An IPFIX Information Element that denotes that the IPv4 address value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of IpAddress. The value is encoded as per the standard IPFIX Abstract Data Type of ipv4Address.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OCTET_STRING 435
An IPFIX Information Element that denotes that an Octet String or Opaque value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of OCTET STRING and Opaque. The value is encoded as per the standard IPFIX Abstract Data Type of octetArray.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OID 436
An IPFIX Information Element that denotes that an Object Identifier or OID value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of OBJECT IDENTIFIER. Note: In this case, the "mibObjectIdentifier" defines which MIB object is being exported, and the "mibObjectValueOID" field will contain the OID value of that MIB object. The mibObjectValueOID Information Element is encoded as ASN.1/BER [X.690] in an octetArray.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_ROW 444
An IPFIX Information Element that denotes that a single row of a conceptual table will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with a syntax of SEQUENCE. This is encoded as a subTemplateList of mibObjectValue Information Elements. The subTemplateList exported MUST contain exactly one row (i.e., one instance of the subTemplate). The Template specified in the subTemplateList MUST be an Options Template and MUST include all the objects listed in the INDEX clause as Scope Fields.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TABLE 443
An IPFIX Information Element that denotes that a complete or partial conceptual table will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with a syntax of SEQUENCE OF. This is encoded as a subTemplateList of mibObjectValue Information Elements. The Template specified in the subTemplateList MUST be an Options Template and MUST include all the objects listed in the INDEX clause as Scope Fields.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TIME_TICKS 441
An IPFIX Information Element that denotes that the TimeTicks value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of TimeTicks. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_UNSIGNED 442
An IPFIX Information Element that denotes that an unsigned integer value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of unsigned32 with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_SUB_IDENTIFIER 446
A non-negative sub-identifier of an Object Identifier (OID).
- #define DOCA_TELEMETRY_NETFLOW_MIN_EXPORT_SECONDS 264
The absolute Export Time of the earliest IPFIX Message within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MICROSECONDS 271
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the microsecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with microsecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MILLISECONDS 272
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the millisecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with millisecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_NANOSECONDS 273
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with nanosecond-precision timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_SECONDS 265
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the second if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MIN_LAYER2_TOTAL_LENGTH 422
Layer 2 length of the smallest packet observed for this Flow. The packet length includes the length of the layer 2 header(s) and the length of the layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_MIN_PKT_LENGTH 25
Minimum IP packet length on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MIN_TTL 52
Minimum TTL on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_IMSI 455
The International Mobile Subscription Identity (IMSI). The IMSI is a decimal digit string with up to a maximum of 15 ASCII/UTF-8 encoded digits (0x30 - 0x39).
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_MSISDN 456
The Mobile Station International Subscriber Directory Number (MSISDN). The MSISDN is a decimal digit string with up to a maximum of 15 ASCII/UTF-8 encoded digits (0x30 - 0x39).
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_END_MILLI_SECONDS 360
The absolute timestamp at which the monitoring interval ended. A Monitoring interval is the period of time during which the Metering Process is running.
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_START_MILLI_SECONDS 359
The absolute timestamp at which the monitoring interval started. A Monitoring interval is the period of time during which the Metering Process is running.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_1 70
MPLS label at position 1 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_10 79
MPLS label at position 10 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_2 71
MPLS label at position 2 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_3 72
MPLS label at position 3 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_4 73
MPLS label at position 4 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_5 74
MPLS label at position 5 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_6 75
MPLS label at position 6 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_7 76
MPLS label at position 7 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_8 77
MPLS label at position 8 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_9 78
MPLS label at position 9 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_DEPTH 202
The number of labels in the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_LENGTH 201
The length of the MPLS label stack in units of octets.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_SECTION 316
This Information Element carries a series of n octets from the MPLS label stack of a sampled packet, starting sectionOffset octets into the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAL_RD 90
MPLS PAL Route Distinguisher.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_LENGTH 194
The size of the MPLS packet without the label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_PACKET_SECTION 317
The mplsPayloadPacketSection carries a series of n octets from the MPLS payload of a sampled packet, starting sectionOffset octets into the MPLS payload, as it is data that follows immediately after the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PREFIX_LEN 91
Number of consecutive bits in the MPLS prefix length.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_EXP 203
The Exp field from the top MPLS label stack entry, i.e., the last label that was pushed.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IPV6_ADDRESS 140
The IPv6 address of the system that the MPLS top label will cause this Flow to be forwarded to.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IP_ADDR 47
Forwarding Equivalent Class corresponding to the MPLS Top Label
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TTL 200
The TTL field from the top MPLS label stack entry, i.e., the last label that was pushed.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TYPE 46
MPLS Top Label Type: 0x00 UNKNOWN 0x01 TE-MIDPT 0x02 ATOM 0x03 VPN 0x04 BGP 0x05 LDP
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_BYTES 20
IP multicast outgoing byte counter with length N x 8 bits for bytes associated with the IP Flow
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_PKTS 19
IP multicast outgoing packet counter with length N x 8 bits for packets associated with the IP Flow
- #define DOCA_TELEMETRY_NETFLOW_MUL_IGMP_TYPE 33
Internet Group Management Protocol (IGMP) packet type
- #define DOCA_TELEMETRY_NETFLOW_NAT_EVENT 230
This Information Element identifies a NAT event. This IE identifies the type of a NAT event. Examples of NAT events include, but are not limited to, NAT translation create, NAT translation delete, Threshold Reached, or Threshold Exceeded, etc. Values for this Information Element are listed in the "NAT Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-event-type].
- #define DOCA_TELEMETRY_NETFLOW_NAT_INSTANCE_ID 463
This Information Element uniquely identifies an Instance of the NAT that runs on a NAT middlebox function after the packet passes the Observation Point. natInstanceID is defined in [RFC7659].
- #define DOCA_TELEMETRY_NETFLOW_NAT_ORIGINATING_ADDRESS_REALM 229
Indicates whether the session was created because traffic originated in the private or public address realm. postNATSourceIPv4Address, postNATDestinationIPv4Address, postNAPTSourceTransportPort, and postNAPTDestinationTransportPort are qualified with the address realm in perspective.
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_ID 283
Locally unique identifier of a NAT pool.
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_NAME 284
The name of a NAT pool identified by a natPoolID.
- #define DOCA_TELEMETRY_NETFLOW_NAT_QUOTA_EXCEEDED_EVENT 466
This Information Element identifies the type of a NAT Quota Exceeded event. Values for this Information Element are listed in the "NAT Quota Exceeded Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-quota-exceeded-event].
- #define DOCA_TELEMETRY_NETFLOW_NAT_THRESHOLD_EVENT 467
This Information Element identifies a type of a NAT Threshold event. Values for this Information Element are listed in the "NAT Threshold Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-threshold-event].
- #define DOCA_TELEMETRY_NETFLOW_NAT_TYPE 297
Values are listed in the natType registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-type].
- #define DOCA_TELEMETRY_NETFLOW_NEW_CONNECTION_DELTA_COUNT 278
This information element counts the number of TCP or UDP connections which were opened during the observation period. The observation period may be specified by the flow start and end timestamps.
- #define DOCA_TELEMETRY_NETFLOW_NEXT_HEADER_IPV6 193
The value of the Next Header field of the IPv6 header. The value identifies the type of the following IPv6 extension header or of the following IP payload. Valid values are defined in the IANA Protocol Numbers registry.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_FLOW_TOTAL_COUNT 166
The total number of Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_LAYER2_OCTET_TOTAL_COUNT 427
The total number of octets in observed layer 2 packets (including the layer 2 header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_OCTET_TOTAL_COUNT 168
The total number of octets in packets in Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_PACKET_TOTAL_COUNT 167
The total number of packets in Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_ID 149
An identifier of an Observation Domain that is locally unique to an Exporting Process. The Exporting Process uses the Observation Domain ID to uniquely identify to the Collecting Process the Observation Domain where Flows were metered. It is RECOMMENDED that this identifier is also unique per IPFIX Device.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_NAME 300
The name of an observation domain identified by an observationDomainId.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_ID 138
An identifier of an Observation Point that is unique per Observation Domain. It is RECOMMENDED that this identifier is also unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_TYPE 277
Type of observation point. Values are listed in the observationPointType registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-observation-point-type].
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MICROSECONDS 324
This Information Element specifies the absolute time in microseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MILLISECONDS 323
This Information Element specifies the absolute time in milliseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_NANOSECONDS 325
This Information Element specifies the absolute time in nanoseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_SECONDS 322
This Information Element specifies the absolute time in seconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVED_FLOW_TOTAL_COUNT 163
The total number of Flows observed in the Observation Domain since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_OCTET_DELTA_SUM_OF_SQUARES 198
The sum of the squared numbers of octets per incoming packet since the previous report (if any) for this Flow at the Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_OCTET_TOTAL_SUM_OF_SQUARES 199
The total sum of the squared numbers of octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_OPAQUE_OCTETS 266
This Information Element is used to encapsulate non- IPFIX data into an IPFIX Message stream, for the purpose of allowing a non-IPFIX data processor to store a data stream inline within an IPFIX File. A Collecting Process or File Writer MUST NOT try to interpret this binary data. This Information Element differs from paddingOctets as its contents are meaningful in some non-IPFIX context, while the contents of paddingOctets MUST be 0x00 and are intended only for Information Element alignment.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV4_ADDRESS 403
The IPv4 address used by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Points to a downstream Collector.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV6_ADDRESS 404
The IPv6 address used by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Points to a downstream Collector.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_COMPLETED 377
The conservative count of Original Flows whose last packet is represented within this Aggregated Flow. Conservative counts must sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_INITIATED 376
The conservative count of Original Flows whose first packet is represented within this Aggregated Flow. Conservative counts must sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_PRESENT 375
The non-conservative count of Original Flows contributing to this Aggregated Flow. Non-conservative counts need not sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_OBSERVATION_DOMAIN_ID 405
The Observation Domain ID reported by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Domain to a downstream Collector. When cascading through multiple Mediators, this identifies the initial Observation Domain in the cascade.
- #define DOCA_TELEMETRY_NETFLOW_OUTPUT_SNMP 14
Output interface index; default for N is 2 but higher values could be used
- #define DOCA_TELEMETRY_NETFLOW_OUT_BYTES 23
Outgoing counter with length N x 8 bits for the number of bytes associated with an IP Flow
- #define DOCA_TELEMETRY_NETFLOW_OUT_DST_MAC 57
Outgoing destination MAC address
- #define DOCA_TELEMETRY_NETFLOW_OUT_PKTS 24
Outgoing counter with length N x 8 bits for the number of packets associated with an IP Flow.
- #define DOCA_TELEMETRY_NETFLOW_OUT_SRC_MAC 81
Outgoing source MAC address
- #define DOCA_TELEMETRY_NETFLOW_P2P_TECHNOLOGY 288
Specifies if the Application ID is based on peer-to-peer technology.
- #define DOCA_TELEMETRY_NETFLOW_PADDING_OCTETS 210
The value of this Information Element is always a sequence of 0x00 values.
- #define DOCA_TELEMETRY_NETFLOW_PAYLOAD_LENGTH_IPV6 191
This Information Element reports the value of the Payload Length field in the IPv6 header. Note that IPv6 extension headers belong to the payload. Also note that in case of a jumbo payload option the value of the Payload Length field in the IPv6 header is zero and so will be the value reported by this Information Element.
- #define DOCA_TELEMETRY_NETFLOW_PORT_ID 142
An identifier of a line port that is unique per IPFIX Device hosting an Observation Point. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_END 362
The port number identifying the end of a range of ports. A value of zero indicates that the range end is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_NUM_PORTS 364
The number of ports in a port range. A value of zero indicates that the number of ports is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_START 361
The port number identifying the start of a range of ports. A value of zero indicates that the range start is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_STEP_SIZE 363
The step size in a port range. The default step size is 1, which indicates contiguous ports. A value of zero indicates that the step size is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_POSTIP_DIFF_SERV_CODE_POINT 98
The value of a Differentiated Services Code Point (DSCP) encoded in the Differentiated Services Field, after modification.
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_CUSTOMER_VLAN_ID 255
The definition of this Information Element is identical to the definition of Information Element 'dot1qCustomerVlanId', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_VLAN_ID 254
The definition of this Information Element is identical to the definition of Information Element 'dot1qVlanId', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_IP_PRECEDENCE 257
The definition of this Information Element is identical to the definition of Information Element 'ipPrecedence', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_DELTA_COUNT 417
The definition of this Information Element is identical to the definition of the layer2OctetDeltaCount Information Element, except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_TOTAL_COUNT 420
The definition of this Information Element is identical to the definition of the layer2OctetTotalCount Information Element, except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_DELTA_COUNT 418
The number of layer 2 octets since the previous report (if any) in outgoing multicast packets sent for packets of this Flow by a multicast daemon within the Observation Domain. This property cannot necessarily be observed at the Observation Point but may be retrieved by other means. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_TOTAL_COUNT 421
The total number of layer 2 octets in outgoing multicast packets sent for packets of this Flow by a multicast daemon in the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point but may be retrieved by other means. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_OCTET_TOTAL_COUNT 175
The total number of octets in outgoing multicast packets sent for packets of this Flow by a multicast daemon in the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point, but may be retrieved by other means. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_PACKET_TOTAL_COUNT 174
The total number of outgoing multicast packets sent for packets of this Flow by a multicast daemon within the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point, but may be retrieved by other means.
- #define DOCA_TELEMETRY_NETFLOW_POST_MPLS_TOP_LABEL_EXP 237
The definition of this Information Element is identical to the definition of Information Element 'mplsTopLabelExp', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_DESTINATION_TRANSPORT_PORT 228
The definition of this Information Element is identical to the definition of Information Element 'destinationTransportPort', except that it reports a modified value caused by a Network Address Port Translation (NAPT) middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_SOURCE_TRANSPORT_PORT 227
The definition of this Information Element is identical to the definition of Information Element 'sourceTransportPort', except that it reports a modified value caused by a Network Address Port Translation (NAPT) middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NATDESTINATION_IPV6_ADDRESS 282
The definition of this Information Element is identical to the definition of Information Element 'destinationIPv6Address', except that it reports a modified value caused by a NAT64 middlebox function after the packet passed the Observation Point. See [RFC8200] for the definition of the Destination Address field in the IPv6 header. See [RFC3234] for the definition of middleboxes. See [RFC6146] for nat64 specification.
- #define DOCA_TELEMETRY_NETFLOW_POST_NATSOURCE_IPV6_ADDRESS 281
The definition of this Information Element is identical to the definition of Information Element 'sourceIPv6Address', except that it reports a modified value caused by a NAT64 middlebox function after the packet passed the Observation Point. See [RFC8200] for the definition of the Source Address field in the IPv6 header. See [RFC3234] for the definition of middleboxes. See [RFC6146] for nat64 specification.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_DESTINATION_IPV4_ADDRESS 226
The definition of this Information Element is identical to the definition of Information Element 'destinationIPv4Address', except that it reports a modified value caused by a NAT middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_SOURCE_IPV4_ADDRESS 225
The definition of this Information Element is identical to the definition of Information Element 'sourceIPv4Address', except that it reports a modified value caused by a NAT middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_OCTET_TOTAL_COUNT 171
The definition of this Information Element is identical to the definition of Information Element 'octetTotalCount', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_PACKET_TOTAL_COUNT 172
The definition of this Information Element is identical to the definition of Information Element 'packetTotalCount', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_PRIVATE_ENTERPRISE_NUMBER 346
A private enterprise number, as assigned by IANA. Within the context of an Information Element Type record, this element can be used along with the informationElementId element to scope properties to a specific Information Element. To export type information about an IANA-assigned Information Element, set the privateEnterpriseNumber to 0, or do not export the privateEnterpriseNumber in the type record. To export type information about an enterprise-specific Information Element, export the enterprise number in privateEnterpriseNumber, and export the Information Element number with the Enterprise bit cleared in informationElementId. The Enterprise bit in the associated informationElementId Information Element MUST be ignored by the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_PROTOCOL 4
IP protocol byte
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_CONTROL_WORD 251
The 32-bit Preferred Pseudo Wire (PW) MPLS Control Word as defined in Section 3 of [RFC4385].
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_DESTINATION_IPV4_ADDRESS 432
The destination IPv4 address of the PSN tunnel carrying the pseudowire.
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_ID 249
A 32-bit non-zero connection identifier, which together with the pseudoWireType, identifies the Pseudo Wire (PW) as defined in [RFC8077].
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_TYPE 250
The value of this information element identifies the type of MPLS Pseudo Wire (PW) as defined in [RFC4446].
- #define DOCA_TELEMETRY_NETFLOW_RELATIVE_ERROR 321
This Information Element specifies the maximum possible positive or negative error ratio for the reported value for a given Information Element as percentage of the measured value. The real value of the metric can differ by relativeError percent (positive or negative) from the measured value.
- #define DOCA_TELEMETRY_NETFLOW_REPLICATION_FACTOR 99
Multicast replication factor.
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_OCTETS 232
The total number of layer 4 payload bytes in a flow from the responder since the previous report. The responder is the device which replies to the initiator, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_PACKETS 299
The total number of layer 4 packets in a flow from the responder since the previous report. The responder is the device which replies to the initiator, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MICROSECONDS 386
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in microseconds.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MILLISECONDS 385
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in milliseconds.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_NANOSECONDS 387
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in nanoseconds.
- #define DOCA_TELEMETRY_NETFLOW_RTP_SEQUENCE_NUMBER 370
The RTP sequence number per [RFC3550].
- #define DOCA_TELEMETRY_NETFLOW_SAMPLER_NAME 84
Name of the flow sampler
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_ALGORITHM 35
The type of algorithm used for sampled NetFlow: 0x01 Deterministic Sampling ,0x02 Random Sampling
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_INTERVAL 396
This Information Element specifies the number of Flows that are consecutively sampled. A value of 100 means that 100 consecutive Flows are sampled. For example, this Information Element may be used to describe the configuration of a systematic count-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_SPACING 397
This Information Element specifies the number of Flows between two "samplingFlowInterval"s. A value of 100 means that the next interval starts 100 Flows (which are not sampled) after the current "samplingFlowInterval" is over. For example, this Information Element may be used to describe the configuration of a systematic count-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_INTERVAL 34
When using sampled NetFlow, the rate at which packets are sampled i.e.: a value of 100 indicates that one of every 100 packets is sampled
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_INTERVAL 305
This Information Element specifies the number of packets that are consecutively sampled. A value of 100 means that 100 consecutive packets are sampled.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_SPACE 306
This Information Element specifies the number of packets between two "samplingPacketInterval"s. A value of 100 means that the next interval starts 100 packets (which are not sampled) after the current "samplingPacketInterval" is over.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_POPULATION 310
This Information Element specifies the number of elements in the parent Population for random Sampling methods.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PROBABILITY 311
This Information Element specifies the probability that a packet is sampled, expressed as a value between 0 and 1. The probability is equal for every packet. A value of 0 means no packet was sampled since the probability is 0.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_SIZE 309
This Information Element specifies the number of elements taken from the parent Population for random Sampling methods.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_INTERVAL 307
This Information Element specifies the time interval in microseconds during which all arriving packets are sampled.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_SPACE 308
This Information Element specifies the time interval in microseconds between two "samplingTimeInterval"s. A value of 100 means that the next interval starts 100 microseconds (during which no packets are sampled) after the current "samplingTimeInterval" is over.
- #define DOCA_TELEMETRY_NETFLOW_SECTION_EXPORTED_OCTETS 410
This Information Element specifies the observed length of the packet section (e.g., dataLinkFrameSection, ipHeaderPacketSection, ipPayloadPacketSection, mplsLabelStackSection, and mplsPayloadPacketSection) when padding is used.
- #define DOCA_TELEMETRY_NETFLOW_SECTION_OFFSET 409
This Information Element specifies the offset of the packet section (e.g., dataLinkFrameSection, ipHeaderPacketSection, ipPayloadPacketSection, mplsLabelStackSection, and mplsPayloadPacketSection). If this Information Element is omitted, it defaults to zero (i.e., no offset).
- #define DOCA_TELEMETRY_NETFLOW_SELECTION_SEQUENCE_ID 301
From all the packets observed at an Observation Point, a subset of the packets is selected by a sequence of one or more Selectors. The selectionSequenceId is a unique value per Observation Domain, specifying the Observation Point and the sequence of Selectors through which the packets are selected.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ALGORITHM 304
This Information Element identifies the packet selection methods (e.g., Filtering, Sampling) that are applied by the Selection Process.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID 302
The Selector ID is the unique ID identifying a Primitive Selector. Each Primitive Selector must have a unique ID in the Observation Domain.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_OBSERVED 394
This Information Element specifies the total number of Flows observed by a Selector, for a specific value of SelectorId. This Information Element should be used in an Options Template scoped to the observation to which it refers. See Section 3.4.2.1 of the IPFIX protocol document [RFC7011].
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_SELECTED 395
This Information Element specifies the total number of Flows selected by a Selector, for a specific value of SelectorId. This Information Element should be used in an Options Template scoped to the observation to which it refers. See Section 3.4.2.1 of the IPFIX protocol document [RFC7011].
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_OBSERVED 318
This Information Element specifies the total number of packets observed by a Selector, for a specific value of SelectorId.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_SELECTED 319
This Information Element specifies the total number of packets selected by a Selector, for a specific value of SelectorId.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_NAME 335
The name of a selector identified by a selectorID. Globally unique per Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_SESSION_SCOPE 267
The presence of this Information Element as scope in an Options Template signifies that the options described by the Template apply to the IPFIX Transport Session that contains them. Note that as all options are implicitly scoped to Transport Session and Observation Domain, this Information Element is equivalent to a "null" scope. It is defined for general purpose session scoping of options, and proposed specifically to allow the attachment of time window to an IPFIX File via IPFIX Options. The value of this Information Element MUST be written as 0 by the File Writer or Exporting Process. The value of this Information Element MUST be ignored by the File Reader or the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_IPV6_PREFIX 170
IPv6 source address prefix.
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_TRANSPORT_PORTS_LIMIT 458
This Information Element contains the maximum number of IP source transport ports that can be used by an end user when sending IP packets; each user is associated with one or more (source) IPv4 or IPv6 addresses. This Information Element is particularly useful in address-sharing deployments that adhere to REQ-4 of [RFC6888]. Limiting the number of ports assigned to each user ensures fairness among users and mitigates the denial-of-service attack that a user could launch against other users through the address-sharing device in order to grab more ports.
- #define DOCA_TELEMETRY_NETFLOW_SRC_AS 16
Source BGP autonomous system number where N could be 2 or 4
- #define DOCA_TELEMETRY_NETFLOW_SRC_MASK 9
The number of contiguous bits in the source address subnet mask i.e.: the submask in slash notation
- #define DOCA_TELEMETRY_NETFLOW_SRC_TOS 5
Type of Service byte setting when entering incoming interface
- #define DOCA_TELEMETRY_NETFLOW_SRC_TRAFFIC_INDEX 92
BGP Policy Accounting Source Traffic Index
- #define DOCA_TELEMETRY_NETFLOW_SRC_VLAN 58
Virtual LAN identifier associated with ingress interface
- #define DOCA_TELEMETRY_NETFLOW_STA_IPV4_ADDRESS 366
The IPv4 address of a wireless station (STA).
- #define DOCA_TELEMETRY_NETFLOW_STA_MAC_ADDRESS 365
The IEEE 802 MAC address of a wireless station (STA).
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_LIST 292
Specifies a generic Information Element with a subTemplateList abstract data type.
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_MULTI_LIST 293
Specifies a generic Information Element with a subTemplateMultiList abstract data type.
- #define DOCA_TELEMETRY_NETFLOW_SYSTEM_INIT_TIME_MILLISECONDS 160
The absolute timestamp of the last (re-)initialization of the IPFIX Device.
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACKNOWLEDGMENT_NUMBER 185
The acknowledgment number in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACK_TOTAL_COUNT 222
The total number of packets of this Flow with TCP "Acknowledgment field significant" (ACK) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_DESTINATION_PORT 183
The destination port identifier in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_FIN_TOTAL_COUNT 219
The total number of packets of this Flow with TCP "No more data from sender" (FIN) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_FLAGS 6
Cumulative of all the TCP flags seen for this flow
- #define DOCA_TELEMETRY_NETFLOW_TCP_HEADER_LENGTH 188
The length of the TCP header. Note that the value of this Information Element is different from the value of the Data Offset field in the TCP header. The Data Offset field indicates the length of the TCP header in units of 4 octets. This Information Elements specifies the length of the TCP header in units of octets.
- #define DOCA_TELEMETRY_NETFLOW_TCP_OPTIONS 209
TCP options in packets of this Flow. The information is encoded in a set of bit fields. For each TCP option, there is a bit in this set. The bit is set to 1 if any observed packet of this Flow contains the corresponding TCP option. Otherwise, if no observed packet of this Flow contained the respective TCP option, the value of the corresponding bit is 0.
- #define DOCA_TELEMETRY_NETFLOW_TCP_PSH_TOTAL_COUNT 221
The total number of packets of this Flow with TCP "Push Function" (PSH) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_RST_TOTAL_COUNT 220
The total number of packets of this Flow with TCP "Reset the connection" (RST) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SEQUENCE_NUMBER 184
The sequence number in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SOURCE_PORT 182
The source port identifier in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SYN_TOTAL_COUNT 218
The total number of packets of this Flow with TCP "Synchronize sequence numbers" (SYN) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_URGENT_POINTER 187
The urgent pointer in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_URG_TOTAL_COUNT 223
The total number of packets of this Flow with TCP "Urgent Pointer field significant" (URG) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SCALE 238
The scale of the window field in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SIZE 186
The window field in the TCP header. If the TCP window scale is supported, then TCP window scale must be known to fully interpret the value of this information.
- #define DOCA_TELEMETRY_NETFLOW_TEMPLATE_ID 145
An identifier of a Template that is locally unique within a combination of a Transport session and an Observation Domain.
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_BYTES_EXP 40
Counter with length N x 8 bits for bytes for the number of bytes exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_FLOWS_EXP 42
Counter with length N x 8 bits for bytes for the number of flows exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_LENGTH_IPV4 190
The total length of the IPv4 packet.
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_PKTS_EXP 41
Counter with length N x 8 bits for bytes for the number of packets exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_OCTET_DELTA_COUNT 401
The number of octets, excluding IP header(s) and Layer 4 transport protocol header(s), observed for this Flow at the Observation Point since the previous report (if any).
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_PACKET_DELTA_COUNT 402
The number of packets containing at least one octet beyond the IP header(s) and Layer 4 transport protocol header(s), observed for this Flow at the Observation Point since the previous report (if any).
- #define DOCA_TELEMETRY_NETFLOW_TUNNEL_TECHNOLOGY 289
Specifies if the Application ID is used as a tunnel technology.
- #define DOCA_TELEMETRY_NETFLOW_UDP_DESTINATION_PORT 181
The destination port identifier in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UDP_MESSAGE_LENGTH 205
The value of the Length field in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UDP_SOURCE_PORT 180
The source port identifier in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UPPER_CILIMIT 336
This Information Element specifies the upper limit of a confidence interval. It is used to provide an accuracy statement for an estimated value. The confidence limits define the range in which the real value is assumed to be with a certain probability p. Confidence limits always need to be associated with a confidence level that defines this probability p. Please note that a confidence interval only provides a probability that the real value lies within the limits. That means the real value can lie outside the confidence limits.
- #define DOCA_TELEMETRY_NETFLOW_USER_NAME 371
User name associated with the flow.
- #define DOCA_TELEMETRY_NETFLOW_VALUE_DISTRIBUTION_METHOD 384
A description of the method used to distribute the counters from Contributing Flows into the Aggregated Flow records described by an associated scope, generally a Template. The method is deemed to apply to all the non-key Information Elements in the referenced scope for which value distribution is a valid operation; if the originalFlowsInitiated and/or originalFlowsCompleted Information Elements appear in the Template, they are not subject to this distribution method, as they each infer their own distribution method. The valueDistributionMethod registry is intended to list a complete set of possible value distribution methods. See [https://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-value-distribution-method].
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_ID 347
Instance Identifier of the interface to a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_NAME 348
Name of the interface to a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_NAME 350
Name of a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_UUID 349
Unique Identifier of a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VPN_IDENTIFIER 482
VPN ID in the format specified by [RFC2685]. The size of this Information Element is 7 octets.
- #define DOCA_TELEMETRY_NETFLOW_VRF_NAME 236
The name of a VPN Routing and Forwarding table (VRF).
- #define DOCA_TELEMETRY_NETFLOW_WLAN_CHANNEL_ID 146
The identifier of the 802.11 (Wi-Fi) channel used.
- #define DOCA_TELEMETRY_NETFLOW_WLAN_SSID 147
The Service Set IDentifier (SSID) identifying an 802.11 (Wi-Fi) network used. According to IEEE.802-11.1999, the SSID is encoded into a string of up to 32 characters.
- #define DOCA_TELEMETRY_NETFLOW_WTP_MAC_ADDRESS 367
The IEEE 802 MAC address of a wireless access point (WTP).
1.22.1.1. DOCA Telemetry NetFlow Types
[ DOCA Telemetry NetFlow ]
Defines
- #define DOCA_TELEMETRY_NETFLOW_ABSOLUTE_ERROR 320
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_HIGH_THRESHOLD 476
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_LOW_THRESHOLD 477
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_HIGH_THRESHOLD 478
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_LOW_THRESHOLD 479
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_PER_USER_HIGH_THRESHOLD 480
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_FLAGS 285
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_TECHNIQUE 286
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_CATEGORY_NAME 372
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_DESCRIPTION 94
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_GROUP_NAME 374
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_NAME 96
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_SUB_CATEGORY_NAME 373
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_TAG 95
- #define DOCA_TELEMETRY_NETFLOW_BASIC_LIST 291
- #define DOCA_TELEMETRY_NETFLOW_BGP_COMMUNITY 483
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_COMMUNITY_LIST 485
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_EXTENDED_COMMUNITY_LIST 488
- #define DOCA_TELEMETRY_NETFLOW_BGP_EXTENDED_COMMUNITY 486
- #define DOCA_TELEMETRY_NETFLOW_BGP_IPV4_NEXT_HOP 18
- #define DOCA_TELEMETRY_NETFLOW_BGP_LARGE_COMMUNITY 489
- #define DOCA_TELEMETRY_NETFLOW_BGP_NEXT_ADJACENT_AS_NUMBER 128
- #define DOCA_TELEMETRY_NETFLOW_BGP_PREV_ADJACENT_AS_NUMBER 129
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_COMMUNITY_LIST 484
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_EXTENDED_COMMUNITY_LIST 487
- #define DOCA_TELEMETRY_NETFLOW_BGP_VALIDITY_STATE 294
- #define DOCA_TELEMETRY_NETFLOW_BIFLOW_DIRECTION 239
- #define DOCA_TELEMETRY_NETFLOW_BPG_IPV6_NEXT_HOP 63
- #define DOCA_TELEMETRY_NETFLOW_COLLECTION_TIME_MILLISECONDS 258
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_CERTIFICATE 274
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV4_ADDRESS 211
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV6_ADDRESS 212
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_TRANSPORT_PORT 216
- #define DOCA_TELEMETRY_NETFLOW_COMMON_PROPERTIES_ID 137
- #define DOCA_TELEMETRY_NETFLOW_CONFIDENCE_LEVEL 338
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_SUM_DURATION_SECONDS 279
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_TRANSACTION_ID 280
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SECTION 315
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SIZE 312
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_TYPE 408
- #define DOCA_TELEMETRY_NETFLOW_DATA_RECORDS_RELIABILITY 276
- #define DOCA_TELEMETRY_NETFLOW_DESTINATION_IPV6_PREFIX 169
- #define DOCA_TELEMETRY_NETFLOW_DIGEST_HASH_VALUE 326
- #define DOCA_TELEMETRY_NETFLOW_DIRECTION 61
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV4_ADDRESS 381
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV6_ADDRESS 383
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IP_ADDRESS 379
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV4_ADDRESS 380
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV6_ADDRESS 382
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IP_ADDRESS 378
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DEI 389
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DESTINATION_MAC_ADDRESS 415
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_PRIORITY 246
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_SOURCE_MAC_ADDRESS 414
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_VLAN_ID 245
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_DEI 388
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_PRIORITY 244
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_ID 412
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_PRIORITY 413
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_TAG 411
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_VLAN_ID 243
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_DELTA_COUNT 424
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_TOTAL_COUNT 425
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_DELTA_COUNT 132
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_TOTAL_COUNT 134
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_DELTA_COUNT 133
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_TOTAL_COUNT 135
- #define DOCA_TELEMETRY_NETFLOW_DST_AS 17
- #define DOCA_TELEMETRY_NETFLOW_DST_MASK 13
- #define DOCA_TELEMETRY_NETFLOW_DST_TOS 55
- #define DOCA_TELEMETRY_NETFLOW_DST_TRAFFIC_INDEX 93
- #define DOCA_TELEMETRY_NETFLOW_DST_VLAN 59
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_BROADCAST_PACKET_TOTAL_COUNT 358
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_INTERFACE_TYPE 369
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_PHYSICAL_INTERFACE 253
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_UNICAST_PACKET_TOTAL_COUNT 357
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_VRFID 235
- #define DOCA_TELEMETRY_NETFLOW_ENCRYPTED_TECHNOLOGY 290
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_ID 39
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_TYPE 38
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_HEADER_LENGTH 240
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_PAYLOAD_LENGTH 241
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TOTAL_LENGTH 242
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TYPE 256
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_CERTIFICATE 275
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV4_ADDRESS 130
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV6_ADDRESS 131
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_TRANSPORT_PORT 217
- #define DOCA_TELEMETRY_NETFLOW_EXPORTING_PROCESS_ID 144
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_INTERFACE 213
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_PROTOCOL_VERSION 214
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_SCTP_STREAM_ID 259
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_TRANSPORT_PROTOCOL 215
- #define DOCA_TELEMETRY_NETFLOW_EXTERNAL_ADDRESS_REALM 465
- #define DOCA_TELEMETRY_NETFLOW_FIREWALL_EVENT 233
- #define DOCA_TELEMETRY_NETFLOW_FIRST_SWITCHED 22
- #define DOCA_TELEMETRY_NETFLOW_FLOWS 3
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ACTIVE_TIMEOUT 36
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MICROSECONDS 162
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MILLISECONDS 161
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_DELTA_MICROSECONDS 159
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MICROSECONDS 155
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MILLISECONDS 153
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_NANOSECONDS 157
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_REASON 136
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_SECONDS 151
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ID 148
- #define DOCA_TELEMETRY_NETFLOW_FLOW_INACTIVE_TIMEOUT 37
- #define DOCA_TELEMETRY_NETFLOW_FLOW_KEY_INDICATOR 173
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_ID 48
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_MODE 49
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_INTERVAL 398
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_SPACING 399
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_FLOW_DELTA_COUNT 393
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_OCTET_DELTA_COUNT 391
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_PACKET_DELTA_COUNT 392
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTOR_ALGORITHM 390
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_DELTA_MICROSECONDS 158
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MICROSECONDS 154
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MILLISECONDS 152
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_NANOSECONDS 156
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_SECONDS 150
- #define DOCA_TELEMETRY_NETFLOW_FORWARDING_STATUS 89
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_FLAGS 197
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_OFFSET 88
- #define DOCA_TELEMETRY_NETFLOW_GLOBAL_ADDRESS_MAPPING_HIGH_THRESHOLD 481
- #define DOCA_TELEMETRY_NETFLOW_GRE_KEY 296
- #define DOCA_TELEMETRY_NETFLOW_HASH_DIGEST_OUTPUT 333
- #define DOCA_TELEMETRY_NETFLOW_HASH_FLOW_DOMAIN 400
- #define DOCA_TELEMETRY_NETFLOW_HASH_INITIALIZER_VALUE 334
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_OFFSET 327
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_SIZE 328
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MAX 330
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MIN 329
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MAX 332
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MIN 331
- #define DOCA_TELEMETRY_NETFLOW_HTTP_CONTENT_TYPE 469
- #define DOCA_TELEMETRY_NETFLOW_HTTP_MESSAGE_VERSION 462
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REASON_PHRASE 470
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_HOST 460
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_METHOD 459
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_TARGET 461
- #define DOCA_TELEMETRY_NETFLOW_HTTP_STATUS_CODE 457
- #define DOCA_TELEMETRY_NETFLOW_HTTP_USER_AGENT 468
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV4 177
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV6 179
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE 32
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_CODE_IPV6 139
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV4 176
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV6 178
- #define DOCA_TELEMETRY_NETFLOW_IF_DESC 83
- #define DOCA_TELEMETRY_NETFLOW_IF_NAME 82
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_DATA_RECORD_TOTAL_COUNT 407
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_FRAME_TOTAL_COUNT 433
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_OCTET_TOTAL_COUNT 426
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_OCTET_TOTAL_COUNT 165
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_PACKET_TOTAL_COUNT 164
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DATA_TYPE 339
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DESCRIPTION 340
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_ID 303
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_INDEX 287
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_NAME 341
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_BEGIN 342
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_END 343
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_SEMANTICS 344
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_UNITS 345
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_BROADCAST_PACKET_TOTAL_COUNT 356
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_INTERFACE_TYPE 368
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_MULTICAST_PACKET_TOTAL_COUNT 355
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_PHYSICAL_INTERFACE 252
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_UNICAST_PACKET_TOTAL_COUNT 354
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_VRFID 234
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_OCTETS 231
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_PACKETS 298
- #define DOCA_TELEMETRY_NETFLOW_INPUT_SNMP 10
- #define DOCA_TELEMETRY_NETFLOW_INTERMEDIATE_PROCESS_ID 406
- #define DOCA_TELEMETRY_NETFLOW_INTERNAL_ADDRESS_REALM 464
- #define DOCA_TELEMETRY_NETFLOW_IN_BYTES 1
- #define DOCA_TELEMETRY_NETFLOW_IN_DST_MAC 80
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_BYTES 85
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_PKTS 86
- #define DOCA_TELEMETRY_NETFLOW_IN_PKTS 2
- #define DOCA_TELEMETRY_NETFLOW_IN_SRC_MAC 56
- #define DOCA_TELEMETRY_NETFLOW_IPSEC_SPI 295
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_ADDR 12
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_PREFIX 45
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IDENT 54
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IHL 207
- #define DOCA_TELEMETRY_NETFLOW_IPV4_NEXT_HOP 15
- #define DOCA_TELEMETRY_NETFLOW_IPV4_OPTIONS 208
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_ADDR 8
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_PREFIX 44
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_ADDR 28
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_MASK 30
- #define DOCA_TELEMETRY_NETFLOW_IPV6_FLOW_LABEL 31
- #define DOCA_TELEMETRY_NETFLOW_IPV6_NEXT_HOP 62
- #define DOCA_TELEMETRY_NETFLOW_IPV6_OPTION_HEADERS 64
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_ADDR 27
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_MASK 29
- #define DOCA_TELEMETRY_NETFLOW_IP_DIFF_SERV_CODE_POINT 195
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_LENGTH 189
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_PACKET_SECTION 313
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_LENGTH 204
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_PACKET_SECTION 314
- #define DOCA_TELEMETRY_NETFLOW_IP_PRECEDENCE 196
- #define DOCA_TELEMETRY_NETFLOW_IP_PROTOCOL_VERSION 60
- #define DOCA_TELEMETRY_NETFLOW_IP_TOTAL_LENGTH 224
- #define DOCA_TELEMETRY_NETFLOW_IP_TTL 192
- #define DOCA_TELEMETRY_NETFLOW_IS_MULTICAST 206
- #define DOCA_TELEMETRY_NETFLOW_L4_DST_PORT 11
- #define DOCA_TELEMETRY_NETFLOW_L4_SRC_PORT 7
- #define DOCA_TELEMETRY_NETFLOW_LAST_SWITCHED 21
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_DELTA_COUNT 430
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_TOTAL_COUNT 431
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_COUNT 352
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_SUM_OF_SQUARES 428
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_COUNT 353
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_SUM_OF_SQUARES 429
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_SEGMENT_ID 351
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_DATA 104
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_OFFSET 102
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_SIZE 103
- #define DOCA_TELEMETRY_NETFLOW_LINE_CARD_ID 141
- #define DOCA_TELEMETRY_NETFLOW_LOWER_CILIMIT 337
- #define DOCA_TELEMETRY_NETFLOW_MAX_BIBENTRIES 472
- #define DOCA_TELEMETRY_NETFLOW_MAX_ENTRIES_PER_USER 473
- #define DOCA_TELEMETRY_NETFLOW_MAX_EXPORT_SECONDS 260
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MICROSECONDS 268
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MILLISECONDS 269
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_NANOSECONDS 270
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_SECONDS 261
- #define DOCA_TELEMETRY_NETFLOW_MAX_FRAGMENTS_PENDING_REASSEMBLY 475
- #define DOCA_TELEMETRY_NETFLOW_MAX_LAYER2_TOTAL_LENGTH 423
- #define DOCA_TELEMETRY_NETFLOW_MAX_PKT_LENGTH 26
- #define DOCA_TELEMETRY_NETFLOW_MAX_SESSION_ENTRIES 471
- #define DOCA_TELEMETRY_NETFLOW_MAX_SUBSCRIBERS 474
- #define DOCA_TELEMETRY_NETFLOW_MAX_TTL 53
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_MD5_CHECKSUM 262
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_SCOPE 263
- #define DOCA_TELEMETRY_NETFLOW_METERING_PROCESS_ID 143
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_ID 247
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_TYPE 248
- #define DOCA_TELEMETRY_NETFLOW_MIB_CAPTURE_TIME_SEMANTICS 448
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_ENGINE_ID 449
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_NAME 450
- #define DOCA_TELEMETRY_NETFLOW_MIB_INDEX_INDICATOR 447
- #define DOCA_TELEMETRY_NETFLOW_MIB_MODULE_NAME 454
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_DESCRIPTION 452
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_IDENTIFIER 445
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_NAME 451
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_SYNTAX 453
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_BITS 437
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_COUNTER 439
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_GAUGE 440
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_INTEGER 434
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_IPADDRESS 438
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OCTET_STRING 435
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OID 436
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_ROW 444
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TABLE 443
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TIME_TICKS 441
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_UNSIGNED 442
- #define DOCA_TELEMETRY_NETFLOW_MIB_SUB_IDENTIFIER 446
- #define DOCA_TELEMETRY_NETFLOW_MIN_EXPORT_SECONDS 264
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MICROSECONDS 271
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MILLISECONDS 272
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_NANOSECONDS 273
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_SECONDS 265
- #define DOCA_TELEMETRY_NETFLOW_MIN_LAYER2_TOTAL_LENGTH 422
- #define DOCA_TELEMETRY_NETFLOW_MIN_PKT_LENGTH 25
- #define DOCA_TELEMETRY_NETFLOW_MIN_TTL 52
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_IMSI 455
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_MSISDN 456
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_END_MILLI_SECONDS 360
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_START_MILLI_SECONDS 359
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_1 70
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_10 79
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_2 71
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_3 72
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_4 73
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_5 74
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_6 75
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_7 76
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_8 77
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_9 78
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_DEPTH 202
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_LENGTH 201
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_SECTION 316
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAL_RD 90
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_LENGTH 194
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_PACKET_SECTION 317
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PREFIX_LEN 91
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_EXP 203
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IPV6_ADDRESS 140
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IP_ADDR 47
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TTL 200
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TYPE 46
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_BYTES 20
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_PKTS 19
- #define DOCA_TELEMETRY_NETFLOW_MUL_IGMP_TYPE 33
- #define DOCA_TELEMETRY_NETFLOW_NAT_EVENT 230
- #define DOCA_TELEMETRY_NETFLOW_NAT_INSTANCE_ID 463
- #define DOCA_TELEMETRY_NETFLOW_NAT_ORIGINATING_ADDRESS_REALM 229
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_ID 283
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_NAME 284
- #define DOCA_TELEMETRY_NETFLOW_NAT_QUOTA_EXCEEDED_EVENT 466
- #define DOCA_TELEMETRY_NETFLOW_NAT_THRESHOLD_EVENT 467
- #define DOCA_TELEMETRY_NETFLOW_NAT_TYPE 297
- #define DOCA_TELEMETRY_NETFLOW_NEW_CONNECTION_DELTA_COUNT 278
- #define DOCA_TELEMETRY_NETFLOW_NEXT_HEADER_IPV6 193
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_FLOW_TOTAL_COUNT 166
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_LAYER2_OCTET_TOTAL_COUNT 427
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_OCTET_TOTAL_COUNT 168
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_PACKET_TOTAL_COUNT 167
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_ID 149
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_NAME 300
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_ID 138
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_TYPE 277
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MICROSECONDS 324
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MILLISECONDS 323
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_NANOSECONDS 325
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_SECONDS 322
- #define DOCA_TELEMETRY_NETFLOW_OBSERVED_FLOW_TOTAL_COUNT 163
- #define DOCA_TELEMETRY_NETFLOW_OCTET_DELTA_SUM_OF_SQUARES 198
- #define DOCA_TELEMETRY_NETFLOW_OCTET_TOTAL_SUM_OF_SQUARES 199
- #define DOCA_TELEMETRY_NETFLOW_OPAQUE_OCTETS 266
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV4_ADDRESS 403
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV6_ADDRESS 404
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_COMPLETED 377
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_INITIATED 376
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_PRESENT 375
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_OBSERVATION_DOMAIN_ID 405
- #define DOCA_TELEMETRY_NETFLOW_OUTPUT_SNMP 14
- #define DOCA_TELEMETRY_NETFLOW_OUT_BYTES 23
- #define DOCA_TELEMETRY_NETFLOW_OUT_DST_MAC 57
- #define DOCA_TELEMETRY_NETFLOW_OUT_PKTS 24
- #define DOCA_TELEMETRY_NETFLOW_OUT_SRC_MAC 81
- #define DOCA_TELEMETRY_NETFLOW_P2P_TECHNOLOGY 288
- #define DOCA_TELEMETRY_NETFLOW_PADDING_OCTETS 210
- #define DOCA_TELEMETRY_NETFLOW_PAYLOAD_LENGTH_IPV6 191
- #define DOCA_TELEMETRY_NETFLOW_PORT_ID 142
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_END 362
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_NUM_PORTS 364
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_START 361
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_STEP_SIZE 363
- #define DOCA_TELEMETRY_NETFLOW_POSTIP_DIFF_SERV_CODE_POINT 98
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_CUSTOMER_VLAN_ID 255
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_VLAN_ID 254
- #define DOCA_TELEMETRY_NETFLOW_POST_IP_PRECEDENCE 257
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_DELTA_COUNT 417
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_TOTAL_COUNT 420
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_DELTA_COUNT 418
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_TOTAL_COUNT 421
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_OCTET_TOTAL_COUNT 175
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_PACKET_TOTAL_COUNT 174
- #define DOCA_TELEMETRY_NETFLOW_POST_MPLS_TOP_LABEL_EXP 237
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_DESTINATION_TRANSPORT_PORT 228
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_SOURCE_TRANSPORT_PORT 227
- #define DOCA_TELEMETRY_NETFLOW_POST_NATDESTINATION_IPV6_ADDRESS 282
- #define DOCA_TELEMETRY_NETFLOW_POST_NATSOURCE_IPV6_ADDRESS 281
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_DESTINATION_IPV4_ADDRESS 226
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_SOURCE_IPV4_ADDRESS 225
- #define DOCA_TELEMETRY_NETFLOW_POST_OCTET_TOTAL_COUNT 171
- #define DOCA_TELEMETRY_NETFLOW_POST_PACKET_TOTAL_COUNT 172
- #define DOCA_TELEMETRY_NETFLOW_PRIVATE_ENTERPRISE_NUMBER 346
- #define DOCA_TELEMETRY_NETFLOW_PROTOCOL 4
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_CONTROL_WORD 251
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_DESTINATION_IPV4_ADDRESS 432
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_ID 249
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_TYPE 250
- #define DOCA_TELEMETRY_NETFLOW_RELATIVE_ERROR 321
- #define DOCA_TELEMETRY_NETFLOW_REPLICATION_FACTOR 99
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_OCTETS 232
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_PACKETS 299
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MICROSECONDS 386
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MILLISECONDS 385
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_NANOSECONDS 387
- #define DOCA_TELEMETRY_NETFLOW_RTP_SEQUENCE_NUMBER 370
- #define DOCA_TELEMETRY_NETFLOW_SAMPLER_NAME 84
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_ALGORITHM 35
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_INTERVAL 396
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_SPACING 397
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_INTERVAL 34
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_INTERVAL 305
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_SPACE 306
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_POPULATION 310
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PROBABILITY 311
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_SIZE 309
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_INTERVAL 307
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_SPACE 308
- #define DOCA_TELEMETRY_NETFLOW_SECTION_EXPORTED_OCTETS 410
- #define DOCA_TELEMETRY_NETFLOW_SECTION_OFFSET 409
- #define DOCA_TELEMETRY_NETFLOW_SELECTION_SEQUENCE_ID 301
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ALGORITHM 304
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID 302
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_OBSERVED 394
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_SELECTED 395
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_OBSERVED 318
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_SELECTED 319
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_NAME 335
- #define DOCA_TELEMETRY_NETFLOW_SESSION_SCOPE 267
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_IPV6_PREFIX 170
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_TRANSPORT_PORTS_LIMIT 458
- #define DOCA_TELEMETRY_NETFLOW_SRC_AS 16
- #define DOCA_TELEMETRY_NETFLOW_SRC_MASK 9
- #define DOCA_TELEMETRY_NETFLOW_SRC_TOS 5
- #define DOCA_TELEMETRY_NETFLOW_SRC_TRAFFIC_INDEX 92
- #define DOCA_TELEMETRY_NETFLOW_SRC_VLAN 58
- #define DOCA_TELEMETRY_NETFLOW_STA_IPV4_ADDRESS 366
- #define DOCA_TELEMETRY_NETFLOW_STA_MAC_ADDRESS 365
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_LIST 292
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_MULTI_LIST 293
- #define DOCA_TELEMETRY_NETFLOW_SYSTEM_INIT_TIME_MILLISECONDS 160
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACKNOWLEDGMENT_NUMBER 185
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACK_TOTAL_COUNT 222
- #define DOCA_TELEMETRY_NETFLOW_TCP_DESTINATION_PORT 183
- #define DOCA_TELEMETRY_NETFLOW_TCP_FIN_TOTAL_COUNT 219
- #define DOCA_TELEMETRY_NETFLOW_TCP_FLAGS 6
- #define DOCA_TELEMETRY_NETFLOW_TCP_HEADER_LENGTH 188
- #define DOCA_TELEMETRY_NETFLOW_TCP_OPTIONS 209
- #define DOCA_TELEMETRY_NETFLOW_TCP_PSH_TOTAL_COUNT 221
- #define DOCA_TELEMETRY_NETFLOW_TCP_RST_TOTAL_COUNT 220
- #define DOCA_TELEMETRY_NETFLOW_TCP_SEQUENCE_NUMBER 184
- #define DOCA_TELEMETRY_NETFLOW_TCP_SOURCE_PORT 182
- #define DOCA_TELEMETRY_NETFLOW_TCP_SYN_TOTAL_COUNT 218
- #define DOCA_TELEMETRY_NETFLOW_TCP_URGENT_POINTER 187
- #define DOCA_TELEMETRY_NETFLOW_TCP_URG_TOTAL_COUNT 223
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SCALE 238
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SIZE 186
- #define DOCA_TELEMETRY_NETFLOW_TEMPLATE_ID 145
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_BYTES_EXP 40
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_FLOWS_EXP 42
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_LENGTH_IPV4 190
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_PKTS_EXP 41
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_OCTET_DELTA_COUNT 401
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_PACKET_DELTA_COUNT 402
- #define DOCA_TELEMETRY_NETFLOW_TUNNEL_TECHNOLOGY 289
- #define DOCA_TELEMETRY_NETFLOW_UDP_DESTINATION_PORT 181
- #define DOCA_TELEMETRY_NETFLOW_UDP_MESSAGE_LENGTH 205
- #define DOCA_TELEMETRY_NETFLOW_UDP_SOURCE_PORT 180
- #define DOCA_TELEMETRY_NETFLOW_UPPER_CILIMIT 336
- #define DOCA_TELEMETRY_NETFLOW_USER_NAME 371
- #define DOCA_TELEMETRY_NETFLOW_VALUE_DISTRIBUTION_METHOD 384
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_ID 347
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_NAME 348
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_NAME 350
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_UUID 349
- #define DOCA_TELEMETRY_NETFLOW_VPN_IDENTIFIER 482
- #define DOCA_TELEMETRY_NETFLOW_VRF_NAME 236
- #define DOCA_TELEMETRY_NETFLOW_WLAN_CHANNEL_ID 146
- #define DOCA_TELEMETRY_NETFLOW_WLAN_SSID 147
- #define DOCA_TELEMETRY_NETFLOW_WTP_MAC_ADDRESS 367
Defines
- #define DOCA_TELEMETRY_NETFLOW_ABSOLUTE_ERROR 320
This Information Element specifies the maximum possible measurement error of the reported value for a given Information Element. The absoluteError has the same unit as the Information Element with which it is associated. The real value of the metric can differ by absoluteError (positive or negative) from the measured value.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_HIGH_THRESHOLD 476
This element represents the high threshold value of the number of public IP addresses in the address pool.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_POOL_LOW_THRESHOLD 477
This element represents the low threshold value of the number of public IP addresses in the address pool.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_HIGH_THRESHOLD 478
This element represents the high threshold value of the number of address and port mappings.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_LOW_THRESHOLD 479
This element represents the low threshold value of the number of address and port mappings.
- #define DOCA_TELEMETRY_NETFLOW_ADDRESS_PORT_MAPPING_PER_USER_HIGH_THRESHOLD 480
This element represents the high threshold value of the number of address and port mappings that a single user is allowed to create on a NAT device.
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_FLAGS 285
A flag word describing specialized modifications to the anonymization policy in effect for the anonymization technique applied to a referenced Information Element within a referenced Template. When flags are clear (0), the normal policy (as described by anonymizationTechnique) applies without modification.
- #define DOCA_TELEMETRY_NETFLOW_ANONYMIZATION_TECHNIQUE 286
A description of the anonymization technique applied to a referenced Information Element within a referenced Template. Each technique may be applicable only to certain Information Elements and recommended only for certain Information Elements. Values are listed in the anonymizationTechnique registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-anonymization-technique].
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_CATEGORY_NAME 372
An attribute that provides a first level categorization for each Application ID.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_DESCRIPTION 94
Application description.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_GROUP_NAME 374
An attribute that groups multiple Application IDs that belong to the same networking application.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_NAME 96
Name associated with a classification.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_SUB_CATEGORY_NAME 373
An attribute that provides a second level categorization for each Application ID.
- #define DOCA_TELEMETRY_NETFLOW_APPLICATION_TAG 95
8 bits of engine ID, followed by n bits of classification.
- #define DOCA_TELEMETRY_NETFLOW_BASIC_LIST 291
Specifies a generic Information Element with a basicList abstract data type. For example, a list of port numbers, a list of interface indexes, etc.
- #define DOCA_TELEMETRY_NETFLOW_BGP_COMMUNITY 483
BGP community as defined in [RFC1997]
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_COMMUNITY_LIST 485
basicList of zero or more bgpCommunity IEs, containing the BGP communities corresponding with destination IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_DESTINATION_EXTENDED_COMMUNITY_LIST 488
basicList of zero or more bgpExtendedCommunity IEs, containing the BGP Extended Communities corresponding with destination IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_EXTENDED_COMMUNITY 486
BGP Extended Community as defined in [RFC4360]; the size of this IE MUST be 8 octets
- #define DOCA_TELEMETRY_NETFLOW_BGP_IPV4_NEXT_HOP 18
Next-hop router's IP in the BGP domain
- #define DOCA_TELEMETRY_NETFLOW_BGP_LARGE_COMMUNITY 489
BGP Large Community as defined in [RFC8092]; the size of this IE MUST be 12 octets.
- #define DOCA_TELEMETRY_NETFLOW_BGP_NEXT_ADJACENT_AS_NUMBER 128
The autonomous system (AS) number of the first AS in the AS path to the destination IP address. The path is deduced by looking up the destination IP address of the Flow in the BGP routing information base. If AS path information for this Flow is only available as an unordered AS set (and not as an ordered AS sequence), then the value of this Information Element is 0.
- #define DOCA_TELEMETRY_NETFLOW_BGP_PREV_ADJACENT_AS_NUMBER 129
The autonomous system (AS) number of the last AS in the AS path from the source IP address. The path is deduced by looking up the source IP address of the Flow in the BGP routing information base. If AS path information for this Flow is only available as an unordered AS set (and not as an ordered AS sequence), then the value of this Information Element is 0. In case of BGP asymmetry, the bgpPrevAdjacentAsNumber might not be able to report the correct value.
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_COMMUNITY_LIST 484
basicList of zero or more bgpCommunity IEs, containing the BGP communities corresponding with source IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_SOURCE_EXTENDED_COMMUNITY_LIST 487
basicList of zero or more bgpExtendedCommunity IEs, containing the BGP Extended Communities corresponding with source IP address of a specific flow
- #define DOCA_TELEMETRY_NETFLOW_BGP_VALIDITY_STATE 294
This element describes the "validity state" of the BGP route correspondent source or destination IP address. If the "validity state" for this Flow is only available, then the value of this Information Element is 255.
- #define DOCA_TELEMETRY_NETFLOW_BIFLOW_DIRECTION 239
A description of the direction assignment method used to assign the Biflow Source and Destination. This Information Element MAY be present in a Flow Data Record, or applied to all flows exported from an Exporting Process or Observation Domain using IPFIX Options. If this Information Element is not present in a Flow Record or associated with a Biflow via scope, it is assumed that the configuration of the direction assignment method is done out-of-band. Note that when using IPFIX Options to apply this Information Element to all flows within an Observation Domain or from an Exporting Process, the Option SHOULD be sent reliably. If reliable transport is not available (i.e., when using UDP), this Information Element SHOULD appear in each Flow Record. Values are listed in the biflowDirection registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-biflow-direction].
- #define DOCA_TELEMETRY_NETFLOW_BPG_IPV6_NEXT_HOP 63
Next-hop router in the BGP domain
- #define DOCA_TELEMETRY_NETFLOW_COLLECTION_TIME_MILLISECONDS 258
The absolute timestamp at which the data within the scope containing this Information Element was received by a Collecting Process. This Information Element SHOULD be bound to its containing IPFIX Message via IPFIX Options and the messageScope Information Element, as defined below.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_CERTIFICATE 274
The full X.509 certificate, encoded in ASN.1 DER format, used by the Collector when IPFIX Messages were transmitted using TLS or DTLS. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element, or to its containing IPFIX Message via an options record and the messageScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV4_ADDRESS 211
An IPv4 address to which the Exporting Process sends Flow information.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_IPV6_ADDRESS 212
An IPv6 address to which the Exporting Process sends Flow information.
- #define DOCA_TELEMETRY_NETFLOW_COLLECTOR_TRANSPORT_PORT 216
The destination port identifier to which the Exporting Process sends Flow information. For the transport protocols UDP, TCP, and SCTP, this is the destination port number. This field MAY also be used for future transport protocols that have 16-bit source port identifiers.
- #define DOCA_TELEMETRY_NETFLOW_COMMON_PROPERTIES_ID 137
An identifier of a set of common properties that is unique per Observation Domain and Transport Session. Typically, this Information Element is used to link to information reported in separate Data Records.
- #define DOCA_TELEMETRY_NETFLOW_CONFIDENCE_LEVEL 338
This Information Element specifies the confidence level. It is used to provide an accuracy statement for estimated values. The confidence level provides the probability p with which the real value lies within a given range. A confidence level always needs to be associated with confidence limits that define the range in which the real value is assumed to be.
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_SUM_DURATION_SECONDS 279
This information element aggregates the total time in seconds for all of the TCP or UDP connections which were in use during the observation period. For example if there are 5 concurrent connections each for 10 seconds, the value would be 50 s.
- #define DOCA_TELEMETRY_NETFLOW_CONNECTION_TRANSACTION_ID 280
This information element identifies a transaction within a connection. A transaction is a meaningful exchange of application data between two network devices or a client and server. A transactionId is assigned the first time a flow is reported, so that later reports for the same flow will have the same transactionId. A different transactionId is used for each transaction within a TCP or UDP connection. The identifiers need not be sequential.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SECTION 315
This Information Element carries n octets from the data link frame of a selected frame, starting sectionOffset octets into the frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_SIZE 312
This Information Element specifies the length of the selected data link frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_LINK_FRAME_TYPE 408
This Information Element specifies the type of the selected data link frame.
- #define DOCA_TELEMETRY_NETFLOW_DATA_RECORDS_RELIABILITY 276
The export reliability of Data Records, within this SCTP stream, for the element(s) in the Options Template scope. A typical example of an element for which the export reliability will be reported is the templateID, as specified in the Data Records Reliability Options Template. A value of 'True' means that the Exporting Process MUST send any Data Records associated with the element(s) reliably within this SCTP stream. A value of 'False' means that the Exporting Process MAY send any Data Records associated with the element(s) unreliably within this SCTP stream.
- #define DOCA_TELEMETRY_NETFLOW_DESTINATION_IPV6_PREFIX 169
IPv6 destination address prefix.
- #define DOCA_TELEMETRY_NETFLOW_DIGEST_HASH_VALUE 326
This Information Element specifies the value from the digest hash function. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_DIRECTION 61
Flow direction: 0 - ingress flow, 1 - egress flow
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV4_ADDRESS 381
The count of distinct destination IPv4 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IPV6_ADDRESS 383
The count of distinct destination IPv6 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_DESTINATION_IP_ADDRESS 379
The count of distinct destination IP address values for Original Flows contributing to this Aggregated Flow, without regard to IP version. This Information Element is preferred to the version-specific counters below, unless it is important to separate the counts by version.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV4_ADDRESS 380
The count of distinct source IPv4 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IPV6_ADDRESS 382
The count of distinct source IPv6 address values for Original Flows contributing to this Aggregated Flow.
- #define DOCA_TELEMETRY_NETFLOW_DISTINCT_COUNT_OF_SOURCE_IP_ADDRESS 378
The count of distinct source IP address values for Original Flows contributing to this Aggregated Flow, without regard to IP version. This Information Element is preferred to the IP-version-specific counters, unless it is important to separate the counts by version.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DEI 389
In case of a QinQ frame, it represents the inner tag's Drop Eligible Indicator (DEI) field and in case of an IEEE 802.1ad frame it represents the DEI field of the C-TAG.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_DESTINATION_MAC_ADDRESS 415
The value of the Encapsulated Customer Destination Address (C-DA) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_PRIORITY 246
The value represents the 3-bit Priority Code Point (PCP) portion of the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_SOURCE_MAC_ADDRESS 414
The value of the Encapsulated Customer Source Address (C-SA) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_CUSTOMER_VLAN_ID 245
The value represents the Customer VLAN identifier in the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_DEI 388
The value of the 1-bit Drop Eligible Indicator (DEI) field of the VLAN tag as described in 802.1Q-2011 subclause 9.6. In case of a QinQ frame, it represents the outer tag's DEI field and in case of an IEEE 802.1ad frame it represents the DEI field of the S-TAG. Note: in earlier versions of 802.1Q the same bit field in the incoming packet is occupied by the Canonical Format Indicator (CFI) field, except for S-TAGs.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_PRIORITY 244
The value of the 3-bit User Priority portion of the Tag Control Information field of an Ethernet frame. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q]. In the case of multi-tagged frame, it represents the 3-bit Priority Code Point (PCP) portion of the outer tag's Tag Control Information (TCI) field as described in [IEEE802.1Q], except for I-TAG.
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_ID 412
The value of the 24-bit Backbone Service Instance Identifier (I-SID) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_PRIORITY 413
The value of the 3-bit Backbone Service Instance Priority Code Point (I-PCP) portion of the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_SERVICE_INSTANCE_TAG 411
This Information Element, which is 16 octets long, represents the Backbone Service Instance Tag (I-TAG) Tag Control Information (TCI) field of an Ethernet frame as described in [IEEE802.1Q]. It encodes the Backbone Service Instance Priority Code Point (I-PCP), Backbone Service Instance Drop Eligible Indicator (I-DEI), Use Customer Addresses (UCAs), Backbone Service Instance Identifier (I-SID), Encapsulated Customer Destination Address (C-DA), Encapsulated Customer Source Address (C-SA), and reserved fields. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q].
- #define DOCA_TELEMETRY_NETFLOW_DOT1Q_VLAN_ID 243
The value of the 12-bit VLAN Identifier portion of the Tag Control Information field of an Ethernet frame. The structure and semantics within the Tag Control Information field are defined in [IEEE802.1Q]. In Provider Bridged Networks, it represents the Service VLAN identifier in the Service VLAN Tag (S-TAG) Tag Control Information (TCI) field or the Customer VLAN identifier in the Customer VLAN Tag (C-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q]. In Provider Backbone Bridged Networks, it represents the Backbone VLAN identifier in the Backbone VLAN Tag (B-TAG) Tag Control Information (TCI) field as described in [IEEE802.1Q]. In a virtual link between a host system and EVB bridge, it represents the Service VLAN identifier indicating S-channel as described in [IEEE802.1Qbg].
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_DELTA_COUNT 424
The number of layer 2 octets since the previous report (if any) in packets of this Flow dropped by packet treatment. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_LAYER2_OCTET_TOTAL_COUNT 425
The total number of octets in observed layer 2 packets (including the layer 2 header) that were dropped by packet treatment since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_DELTA_COUNT 132
The number of octets since the previous report (if any) in packets of this Flow dropped by packet treatment. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_OCTET_TOTAL_COUNT 134
The total number of octets in packets of this Flow dropped by packet treatment since the Metering Process (re-)initialization for this Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_DELTA_COUNT 133
The number of packets since the previous report (if any) of this Flow dropped by packet treatment.
- #define DOCA_TELEMETRY_NETFLOW_DROPPED_PACKET_TOTAL_COUNT 135
The number of packets of this Flow dropped by packet treatment since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_DST_AS 17
Destination BGP autonomous system number where N could be 2 or 4
- #define DOCA_TELEMETRY_NETFLOW_DST_MASK 13
The number of contiguous bits in the destination address subnet mask i.e.: the submask in slash notation
- #define DOCA_TELEMETRY_NETFLOW_DST_TOS 55
Type of Service byte setting when exiting outgoing interface
- #define DOCA_TELEMETRY_NETFLOW_DST_TRAFFIC_INDEX 93
BGP Policy Accounting Destination Traffic Index
- #define DOCA_TELEMETRY_NETFLOW_DST_VLAN 59
Virtual LAN identifier associated with egress interface
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_BROADCAST_PACKET_TOTAL_COUNT 358
The total number of incoming broadcast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_INTERFACE_TYPE 369
The type of interface where packets of this Flow are being sent. The value matches the value of managed object 'ifType' as defined in [https://www.iana.org/assignments/ianaiftype-mib].
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_PHYSICAL_INTERFACE 253
The index of a networking device's physical interface (example, a switch port) where packets of this flow are being sent.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_UNICAST_PACKET_TOTAL_COUNT 357
The total number of incoming unicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_EGRESS_VRFID 235
An unique identifier of the VRFname where the packets of this flow are being sent. This identifier is unique per Metering Process
- #define DOCA_TELEMETRY_NETFLOW_ENCRYPTED_TECHNOLOGY 290
Specifies if the Application ID is an encrypted networking protocol.
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_ID 39
ID number of the flow switching engine
- #define DOCA_TELEMETRY_NETFLOW_ENGINE_TYPE 38
Type of flow switching engine: RP = 0, VIP/Linecard = 1
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_HEADER_LENGTH 240
The difference between the length of an Ethernet frame (minus the FCS) and the length of its MAC Client Data section (including any padding) as defined in section 3.1 of [IEEE.802-3.2005]. It does not include the Preamble, SFD and Extension field lengths.
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_PAYLOAD_LENGTH 241
The length of the MAC Client Data section (including any padding) of a frame as defined in section 3.1 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TOTAL_LENGTH 242
The total length of the Ethernet frame (excluding the Preamble, SFD, Extension and FCS fields) as described in section 3.1 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_ETHERNET_TYPE 256
The Ethernet type field of an Ethernet frame that identifies the MAC client protocol carried in the payload as defined in paragraph 1.4.349 of [IEEE.802-3.2005].
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_CERTIFICATE 275
The full X.509 certificate, encoded in ASN.1 DER format, used by the Collector when IPFIX Messages were transmitted using TLS or DTLS. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element, or to its containing IPFIX Message via an options record and the messageScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV4_ADDRESS 130
The IPv4 address used by the Exporting Process. This is used by the Collector to identify the Exporter in cases where the identity of the Exporter may have been obscured by the use of a proxy.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_IPV6_ADDRESS 131
The IPv6 address used by the Exporting Process. This is used by the Collector to identify the Exporter in cases where the identity of the Exporter may have been obscured by the use of a proxy.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTER_TRANSPORT_PORT 217
The source port identifier from which the Exporting Process sends Flow information. For the transport protocols UDP, TCP, and SCTP, this is the source port number. This field MAY also be used for future transport protocols that have 16-bit source port identifiers. This field may be useful for distinguishing multiple Exporting Processes that use the same IP address.
- #define DOCA_TELEMETRY_NETFLOW_EXPORTING_PROCESS_ID 144
An identifier of an Exporting Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers are typically assigned dynamically. The Exporting Process may be re-started with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_INTERFACE 213
The index of the interface from which IPFIX Messages sent by the Exporting Process to a Collector leave the IPFIX Device. The value matches the value of managed object 'ifIndex' as defined in [RFC2863]. Note that ifIndex values are not assigned statically to an interface and that the interfaces may be renumbered every time the device's management system is re-initialized, as specified in [RFC2863].
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_PROTOCOL_VERSION 214
The protocol version used by the Exporting Process for sending Flow information. The protocol version is given by the value of the Version Number field in the Message Header.
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_SCTP_STREAM_ID 259
The value of the SCTP Stream Identifier used by the Exporting Process for exporting IPFIX Message data. This is carried in the Stream Identifier field of the header of the SCTP DATA chunk containing the IPFIX Message(s).
- #define DOCA_TELEMETRY_NETFLOW_EXPORT_TRANSPORT_PROTOCOL 215
The value of the protocol number used by the Exporting Process for sending Flow information. The protocol number identifies the IP packet payload type. Protocol numbers are defined in the IANA Protocol Numbers registry.
- #define DOCA_TELEMETRY_NETFLOW_EXTERNAL_ADDRESS_REALM 465
This Information Element represents the external address realm where the packet is originated from or destined to. The detailed definition is in the internal address realm as specified above.
- #define DOCA_TELEMETRY_NETFLOW_FIREWALL_EVENT 233
Indicates a firewall event. Allowed values are listed in the firewallEvent registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-firewall-event].
- #define DOCA_TELEMETRY_NETFLOW_FIRST_SWITCHED 22
System uptime at which the first packet of this flow was switched
- #define DOCA_TELEMETRY_NETFLOW_FLOWS 3
Number of flows that were aggregated; default for N is 4
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ACTIVE_TIMEOUT 36
Timeout value (in seconds) for active flow entries in the NetFlow cache
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MICROSECONDS 162
The difference in time between the first observed packet of this Flow and the last observed packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_DURATION_MILLISECONDS 161
The difference in time between the first observed packet of this Flow and the last observed packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_DELTA_MICROSECONDS 159
This is a relative timestamp only valid within the scope of a single IPFIX Message. It contains the negative time offset of the last observed packet of this Flow relative to the export time specified in the IPFIX Message Header.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MICROSECONDS 155
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_MILLISECONDS 153
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_NANOSECONDS 157
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_REASON 136
The reason for Flow termination. Values are listed in the flowEndReason registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-flow-end-reason].
- #define DOCA_TELEMETRY_NETFLOW_FLOW_END_SECONDS 151
The absolute timestamp of the last packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_ID 148
An identifier of a Flow that is unique within an Observation Domain. This Information Element can be used to distinguish between different Flows if Flow Keys such as IP addresses and port numbers are not reported or are reported in separate records.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_INACTIVE_TIMEOUT 37
Timeout value (in seconds) for inactive flow entries in the NetFlow cache
- #define DOCA_TELEMETRY_NETFLOW_FLOW_KEY_INDICATOR 173
This set of bit fields is used for marking the Information Elements of a Data Record that serve as Flow Key. Each bit represents an Information Element in the Data Record, with the n-th least significant bit representing the n-th Information Element. A bit set to value 1 indicates that the corresponding Information Element is a Flow Key of the reported Flow. A bit set to value 0 indicates that this is not the case.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_ID 48
Identifier shown in "show flow-sampler"
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_MODE 49
The type of algorithm used for sampling data: 0x02 random sampling. Use in connection with FLOW_SAMPLER_MODE
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLER_RANDOM_INTERVAL 50
Packet interval at which to sample. Use in connection with FLOW_SAMPLER_MODE
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_INTERVAL 398
This Information Element specifies the time interval in microseconds during which all arriving Flows are sampled. For example, this Information Element may be used to describe the configuration of a systematic time-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SAMPLING_TIME_SPACING 399
This Information Element specifies the time interval in microseconds between two "flowSamplingTimeInterval"s. A value of 100 means that the next interval starts 100 microseconds (during which no Flows are sampled) after the current "flowsamplingTimeInterval" is over. For example, this Information Element may used to describe the configuration of a systematic time-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_FLOW_DELTA_COUNT 393
This Information Element specifies the number of Flows that were selected in the Intermediate Flow Selection Process since the last report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_OCTET_DELTA_COUNT 391
This Information Element specifies the volume in octets of all Flows that are selected in the Intermediate Flow Selection Process since the previous report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTED_PACKET_DELTA_COUNT 392
This Information Element specifies the volume in packets of all Flows that were selected in the Intermediate Flow Selection Process since the previous report.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_SELECTOR_ALGORITHM 390
This Information Element identifies the Intermediate Flow Selection Process technique (e.g., Filtering, Sampling) that is applied by the Intermediate Flow Selection Process. Most of these techniques have parameters. Its configuration parameter(s) MUST be clearly specified. Further Information Elements are needed to fully specify packet selection with these methods and all their parameters. Further method identifiers may be added to the flowSelectorAlgorithm registry. It might be necessary to define new Information Elements to specify their parameters. Please note that the purpose of the flow selection techniques described in this document is the improvement of measurement functions as defined in the Scope (Section 1). The Intermediate Flow Selection Process Techniques identifiers are defined at [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-flowselectoralgorithm].
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_DELTA_MICROSECONDS 158
This is a relative timestamp only valid within the scope of a single IPFIX Message. It contains the negative time offset of the first observed packet of this Flow relative to the export time specified in the IPFIX Message Header.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MICROSECONDS 154
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_MILLISECONDS 152
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_NANOSECONDS 156
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FLOW_START_SECONDS 150
The absolute timestamp of the first packet of this Flow.
- #define DOCA_TELEMETRY_NETFLOW_FORWARDING_STATUS 89
Forwarding status is encoded on 1 byte with the 2 left bits giving the status and the 6 remaining bits giving the reason code.
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_FLAGS 197
Fragmentation properties indicated by flags in the IPv4 packet header or the IPv6 Fragment header, respectively.
- #define DOCA_TELEMETRY_NETFLOW_FRAGMENT_OFFSET 88
The fragment-offset value from fragmented IP packets
- #define DOCA_TELEMETRY_NETFLOW_GLOBAL_ADDRESS_MAPPING_HIGH_THRESHOLD 481
This element represents the high threshold value of the number of address and port mappings that a single user is allowed to create on a NAT device in a paired address pooling behavior.
- #define DOCA_TELEMETRY_NETFLOW_GRE_KEY 296
GRE key, which is used for identifying an individual traffic flow within a tunnel.
- #define DOCA_TELEMETRY_NETFLOW_HASH_DIGEST_OUTPUT 333
This Information Element contains a boolean value that is TRUE if the output from this hash Selector has been configured to be included in the packet report as a packet digest, else FALSE.
- #define DOCA_TELEMETRY_NETFLOW_HASH_FLOW_DOMAIN 400
This Information Element specifies the Information Elements that are used by the Hash-based Flow Selector as the Hash Domain.
- #define DOCA_TELEMETRY_NETFLOW_HASH_INITIALIZER_VALUE 334
This Information Element specifies the initializer value to the hash function.
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_OFFSET 327
This Information Element specifies the IP payload offset used by a Hash-based Selection Selector. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_HASH_IPPAYLOAD_SIZE 328
This Information Element specifies the IP payload size used by a Hash-based Selection Selector. See also Sections 6.2, 3.8 and 7.1 of [RFC5475].
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MAX 330
This Information Element specifies the value for the end of a hash function's potential output range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_OUTPUT_RANGE_MIN 329
This Information Element specifies the value for the beginning of a hash function's potential output range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MAX 332
This Information Element specifies the value for the end of a hash function's selected range.
- #define DOCA_TELEMETRY_NETFLOW_HASH_SELECTED_RANGE_MIN 331
This Information Element specifies the value for the beginning of a hash function's selected range.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_CONTENT_TYPE 469
The HTTP Content-Type header field as defined in section 3.1.1.5 of [RFC7231]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_MESSAGE_VERSION 462
The version of an HTTP/1.1 message as indicated by the HTTP-version field, defined in section 2.6 of [RFC7230], or the version identification of an HTTP/2 frame as defined in [RFC7240] section 3.1. The length of this field is limited to 10 characters, UTF-8 encoded.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REASON_PHRASE 470
The HTTP reason phrase as defined in section 6.1 of [RFC7231].
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_HOST 460
The HTTP request host, as defined in section 5.4 of [RFC7230] or, in the case of HTTP/2, the content of the :authority pseudo-header field as defined in section 8.1.2.3 of [RFC7240]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_METHOD 459
The HTTP request method, as defined in section 4 of [RFC7231], associated with a flow. String with up to 8 UTF-8 characters.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_REQUEST_TARGET 461
The HTTP request target, as defined in section 2 of [RFC7231] and in section 5.3 of [RFC7230], associated with a flow. Or the HTTP/2 ":path" pseudo-header field as defined in section 8.1.2.3 of [RFC7240]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_STATUS_CODE 457
The HTTP Response Status Code, as defined in section 6 of [RFC7231], associated with a flow. Implies that the flow record represents a flow containing an HTTP Response.
- #define DOCA_TELEMETRY_NETFLOW_HTTP_USER_AGENT 468
The HTTP User-Agent header field as defined in section 5.5.3 of [RFC7231]. Encoded in UTF-8.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV4 177
Code of the IPv4 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_CODE_IPV6 179
Code of the IPv6 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE 32
Internet Control Message Protocol (ICMP) packet type; reported as ((ICMP Type*256) + ICMP code)
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_CODE_IPV6 139
Type and Code of the IPv6 ICMP message. The combination of both values is reported as (ICMP type * 256) + ICMP code.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV4 176
Type of the IPv4 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_ICMP_TYPE_IPV6 178
Type of the IPv6 ICMP message.
- #define DOCA_TELEMETRY_NETFLOW_IF_DESC 83
Full interface name i.e.: "'FastEthernet 1/0"
- #define DOCA_TELEMETRY_NETFLOW_IF_NAME 82
Shortened interface name i.e.: "FE1/0"
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_DATA_RECORD_TOTAL_COUNT 407
Description: The total number of received Data Records that the Intermediate Process did not process since the (re-)initialization of the Intermediate Process; includes only Data Records not examined or otherwise handled by the Intermediate Process due to resource constraints, not Data Records that were examined or otherwise handled by the Intermediate Process but those that merely do not contribute to any exported Data Record due to the operations performed by the Intermediate Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_FRAME_TOTAL_COUNT 433
The total number of observed layer 2 frames that the Metering Process did not process since the (re-)initialization of the Metering Process. This Information Element is the layer 2 version of ignoredPacketTotalCount (ElementId #164).
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_LAYER2_OCTET_TOTAL_COUNT 426
The total number of octets in observed layer 2 packets (including the layer 2 header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_OCTET_TOTAL_COUNT 165
The total number of octets in observed IP packets (including the IP header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_IGNORED_PACKET_TOTAL_COUNT 164
The total number of observed IP packets that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DATA_TYPE 339
A description of the abstract data type of an IPFIX information element.These are taken from the abstract data types defined in section 3.1 of the IPFIX Information Model [RFC5102]; see that section for more information on the types described in the [informationElementDataType] subregistry.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_DESCRIPTION 340
A UTF-8 [RFC3629] encoded Unicode string containing a human-readable description of an Information Element. The content of the informationElementDescription MAY be annotated with one or more language tags [RFC4646], encoded in-line [RFC2482] within the UTF-8 string, in order to specify the language in which the description is written. Description text in multiple languages MAY tag each section with its own language tag; in this case, the description information in each language SHOULD have equivalent meaning. In the absence of any language tag, the "i-default" [RFC2277] language SHOULD be assumed. See the Security Considerations section for notes on string handling for Information Element type records.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_ID 303
This Information Element contains the ID of another Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_INDEX 287
A zero-based index of an Information Element referenced by informationElementId within a Template referenced by templateId; used to disambiguate scope for templates containing multiple identical Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_NAME 341
A UTF-8 [RFC3629] encoded Unicode string containing the name of an Information Element, intended as a simple identifier. See the Security Considerations section for notes on string handling for Information Element type records
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_BEGIN 342
Contains the inclusive low end of the range of acceptable values for an Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_RANGE_END 343
Contains the inclusive high end of the range of acceptable values for an Information Element.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_SEMANTICS 344
A description of the semantics of an IPFIX Information Element. These are taken from the data type semantics defined in section 3.2 of the IPFIX Information Model [RFC5102]; see that section for more information on the types defined in the [IPFIX Information Element Semantics] subregistry. This field may take the values in the semantics registry; the special value 0x00 (default) is used to note that no semantics apply to the field; it cannot be manipulated by a Collecting Process or File Reader that does not understand it a priori.
- #define DOCA_TELEMETRY_NETFLOW_INFORMATION_ELEMENT_UNITS 345
A description of the units of an IPFIX Information Element. These correspond to the units implicitly defined in the Information Element definitions in section 5 of the IPFIX Information Model [RFC5102]; see that section for more information on the types described in the informationElementsUnits subregistry. This field may take the values in Table 3 below; the special value 0x00 (none) is used to note that the field is unitless.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_BROADCAST_PACKET_TOTAL_COUNT 356
The total number of incoming broadcast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_INTERFACE_TYPE 368
The type of interface where packets of this Flow are being received. The value matches the value of managed object 'ifType' as defined in [https://www.iana.org/assignments/ianaiftype-mib].
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_MULTICAST_PACKET_TOTAL_COUNT 355
The total number of incoming multicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_PHYSICAL_INTERFACE 252
The index of a networking device's physical interface (example, a switch port) where packets of this flow are being received.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_UNICAST_PACKET_TOTAL_COUNT 354
The total number of incoming unicast packets metered at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_INGRESS_VRFID 234
An unique identifier of the VRFname where the packets of this flow are being received. This identifier is unique per Metering Process
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_OCTETS 231
The total number of layer 4 payload bytes in a flow from the initiator since the previous report. The initiator is the device which triggered the session creation, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_INITIATOR_PACKETS 298
The total number of layer 4 packets in a flow from the initiator since the previous report. The initiator is the device which triggered the session creation, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_INPUT_SNMP 10
Input interface index; default for N is 2 but higher values could be used
- #define DOCA_TELEMETRY_NETFLOW_INTERMEDIATE_PROCESS_ID 406
Description: An identifier of an Intermediate Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers may be assigned dynamically; that is, an Intermediate Process may be restarted with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_INTERNAL_ADDRESS_REALM 464
This Information Element represents the internal address realm where the packet is originated from or destined to. By definition, a NAT mapping can be created from two address realms, one from internal and one from external. Realms are implementation dependent and can represent a Virtual Routing and Forwarding (VRF) ID, a VLAN ID, or some unique identifier. Realms are optional and, when left unspecified, would mean that the external and internal realms are the same.
- #define DOCA_TELEMETRY_NETFLOW_IN_BYTES 1
Incoming counter with length N x 8 bits for number of bytes associated with an IP Flow.
- #define DOCA_TELEMETRY_NETFLOW_IN_DST_MAC 80
Incoming destination MAC address
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_BYTES 85
Running byte counter for a permanent flow
- #define DOCA_TELEMETRY_NETFLOW_IN_PERMANENT_PKTS 86
Running packet counter for a permanent flow
- #define DOCA_TELEMETRY_NETFLOW_IN_PKTS 2
Incoming counter with length N x 8 bits for the number of packets associated with an IP Flow
- #define DOCA_TELEMETRY_NETFLOW_IN_SRC_MAC 56
Incoming source MAC address
- #define DOCA_TELEMETRY_NETFLOW_IPSEC_SPI 295
IPSec Security Parameters Index (SPI).
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_ADDR 12
IPv4 destination address
- #define DOCA_TELEMETRY_NETFLOW_IPV4_DST_PREFIX 45
IPv4 destination address prefix (specific for Catalyst architecture)
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IDENT 54
The IP v4 identification field
- #define DOCA_TELEMETRY_NETFLOW_IPV4_IHL 207
The value of the Internet Header Length (IHL) field in the IPv4 header. It specifies the length of the header in units of 4 octets. Please note that its unit is different from most of the other Information Elements reporting length values.
- #define DOCA_TELEMETRY_NETFLOW_IPV4_NEXT_HOP 15
IPv4 address of next-hop router
- #define DOCA_TELEMETRY_NETFLOW_IPV4_OPTIONS 208
IPv4 options in packets of this Flow. The information is encoded in a set of bit fields. For each valid IPv4 option type, there is a bit in this set. The bit is set to 1 if any observed packet of this Flow contains the corresponding IPv4 option type. Otherwise, if no observed packet of this Flow contained the respective IPv4 option type, the value of the corresponding bit is 0.
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_ADDR 8
IPv4 source address
- #define DOCA_TELEMETRY_NETFLOW_IPV4_SRC_PREFIX 44
IPv4 source address prefix (specific for Catalyst architecture)
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_ADDR 28
IPv6 Destination Address
- #define DOCA_TELEMETRY_NETFLOW_IPV6_DST_MASK 30
Length of the IPv6 destination mask in contiguous bits
- #define DOCA_TELEMETRY_NETFLOW_IPV6_FLOW_LABEL 31
IPv6 flow label as per RFC 2460 definition
- #define DOCA_TELEMETRY_NETFLOW_IPV6_NEXT_HOP 62
IPv6 address of the next-hop router
- #define DOCA_TELEMETRY_NETFLOW_IPV6_OPTION_HEADERS 64
Bit-encoded field identifying IPv6 option headers found in the flow
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_ADDR 27
IPv6 Source Address
- #define DOCA_TELEMETRY_NETFLOW_IPV6_SRC_MASK 29
Length of the IPv6 source mask in contiguous bits
- #define DOCA_TELEMETRY_NETFLOW_IP_DIFF_SERV_CODE_POINT 195
The value of a Differentiated Services Code Point (DSCP) encoded in the Differentiated Services field. The Differentiated Services field spans the most significant 6 bits of the IPv4 TOS field or the IPv6 Traffic Class field, respectively.
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_LENGTH 189
The length of the IP header. For IPv6, the value of this Information Element is 40.
- #define DOCA_TELEMETRY_NETFLOW_IP_HEADER_PACKET_SECTION 313
This Information Element carries a series of n octets from the IP header of a sampled packet, starting sectionOffset octets into the IP header.
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_LENGTH 204
The effective length of the IP payload.
- #define DOCA_TELEMETRY_NETFLOW_IP_PAYLOAD_PACKET_SECTION 314
This Information Element carries a series of n octets from the IP payload of a sampled packet, starting sectionOffset octets into the IP payload.
- #define DOCA_TELEMETRY_NETFLOW_IP_PRECEDENCE 196
The value of the IP Precedence. The IP Precedence value is encoded in the first 3 bits of the IPv4 TOS field or the IPv6 Traffic Class field, respectively.
- #define DOCA_TELEMETRY_NETFLOW_IP_PROTOCOL_VERSION 60
Internet Protocol Version Set to 4 for IPv4, set to 6 for IPv6. If not present in the template, then version 4 is assumed.
- #define DOCA_TELEMETRY_NETFLOW_IP_TOTAL_LENGTH 224
The total length of the IP packet.
- #define DOCA_TELEMETRY_NETFLOW_IP_TTL 192
For IPv4, the value of the Information Element matches the value of the Time to Live (TTL) field in the IPv4 packet header. For IPv6, the value of the Information Element matches the value of the Hop Limit field in the IPv6 packet header.
- #define DOCA_TELEMETRY_NETFLOW_IS_MULTICAST 206
If the IP destination address is not a reserved multicast address, then the value of all bits of the octet (including the reserved ones) is zero.
- #define DOCA_TELEMETRY_NETFLOW_L4_DST_PORT 11
TCP/UDP destination port number i.e.: FTP, Telnet, or equivalent
- #define DOCA_TELEMETRY_NETFLOW_L4_SRC_PORT 7
TCP/UDP source port number i.e.: FTP, Telnet, or equivalent
- #define DOCA_TELEMETRY_NETFLOW_LAST_SWITCHED 21
System uptime at which the last packet of this flow was switched
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_DELTA_COUNT 430
The number of incoming layer 2 frames since the previous report (if any) for this Flow at the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_FRAME_TOTAL_COUNT 431
The total number of incoming layer 2 frames for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_COUNT 352
The number of layer 2 octets since the previous report (if any) in incoming packets for this Flow at the Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload. # memo: layer 2 version of octetDeltaCount (field #1)
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_DELTA_SUM_OF_SQUARES 428
The sum of the squared numbers of layer 2 octets per incoming packet since the previous report (if any) for this Flow at the Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_COUNT 353
The total number of layer 2 octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload. # memo: layer 2 version of octetTotalCount (field #85)
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_OCTET_TOTAL_SUM_OF_SQUARES 429
The total sum of the squared numbers of layer 2 octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_LAYER2_SEGMENT_ID 351
Identifier of a layer 2 network segment in an overlay network. The most significant byte identifies the layer 2 network overlay network encapsulation type:
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_DATA 104
Layer 2 packet section data.
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_OFFSET 102
Layer 2 packet section offset. Potentially a generic offset.
- #define DOCA_TELEMETRY_NETFLOW_LAYER_2_PACKET_SECTION_SIZE 103
Layer 2 packet section size. Potentially a generic size.
- #define DOCA_TELEMETRY_NETFLOW_LINE_CARD_ID 141
An identifier of a line card that is unique per IPFIX Device hosting an Observation Point. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_LOWER_CILIMIT 337
This Information Element specifies the lower limit of a confidence interval. For further information, see the description of upperCILimit.
- #define DOCA_TELEMETRY_NETFLOW_MAX_BIBENTRIES 472
This element represents the maximum BIB entries that can be created by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_ENTRIES_PER_USER 473
This element represents the maximum NAT entries that can be created per user by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_EXPORT_SECONDS 260
The absolute Export Time of the latest IPFIX Message within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MICROSECONDS 268
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the microsecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with microsecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_MILLISECONDS 269
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the millisecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with millisecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_NANOSECONDS 270
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with nanosecond-precision timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FLOW_END_SECONDS 261
The latest absolute timestamp of the last packet within any Flow within the scope containing this Information Element, rounded up to the second if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via IPFIX Options and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MAX_FRAGMENTS_PENDING_REASSEMBLY 475
This element represents the maximum fragments that the NAT device can store for reassembling the packet.
- #define DOCA_TELEMETRY_NETFLOW_MAX_LAYER2_TOTAL_LENGTH 423
Layer 2 length of the largest packet observed for this Flow. The packet length includes the length of the layer 2 header(s) and the length of the layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_MAX_PKT_LENGTH 26
Maximum IP packet length on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MAX_SESSION_ENTRIES 471
This element represents the maximum session entries that can be created by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_SUBSCRIBERS 474
This element represents the maximum subscribers or maximum hosts that are allowed by the NAT device.
- #define DOCA_TELEMETRY_NETFLOW_MAX_TTL 53
Maximum TTL on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_MD5_CHECKSUM 262
The MD5 checksum of the IPFIX Message containing this record. This Information Element SHOULD be bound to its containing IPFIX Message via an options record and the messageScope Information Element, as defined below, and SHOULD appear only once in a given IPFIX Message. To calculate the value of this Information Element, first buffer the containing IPFIX Message, setting the value of this Information Element to all zeroes. Then calculate the MD5 checksum of the resulting buffer as defined in [RFC1321], place the resulting value in this Information Element, and export the buffered message. This Information Element is intended as a simple checksum only; therefore collision resistance and algorithm agility are not required, and MD5 is an appropriate message digest. This Information Element has a fixed length of 16 octets.
- #define DOCA_TELEMETRY_NETFLOW_MESSAGE_SCOPE 263
The presence of this Information Element as scope in an Options Template signifies that the options described by the Template apply to the IPFIX Message that contains them. It is defined for general purpose message scoping of options, and proposed specifically to allow the attachment a checksum to a message via IPFIX Options. The value of this Information Element MUST be written as 0 by the File Writer or Exporting Process. The value of this Information Element MUST be ignored by the File Reader or the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_METERING_PROCESS_ID 143
An identifier of a Metering Process that is unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements. Note that process identifiers are typically assigned dynamically. The Metering Process may be re-started with a different ID.
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_ID 247
The EVC Service Attribute which uniquely identifies the Ethernet Virtual Connection (EVC) within a Metro Ethernet Network, as defined in section 6.2 of MEF 10.1. The MetroEVCID is encoded in a string of up to 100 characters.
- #define DOCA_TELEMETRY_NETFLOW_METRO_EVC_TYPE 248
The 3-bit EVC Service Attribute which identifies the type of service provided by an EVC.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CAPTURE_TIME_SEMANTICS 448
Indicates when in the lifetime of the Flow the MIB value was retrieved from the MIB for a mibObjectIdentifier. This is used to indicate if the value exported was collected from the MIB closer to Flow creation or Flow export time and refers to the Timestamp fields included in the same Data Record. This field SHOULD be used when exporting a mibObjectValue that specifies counters or statistics.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_ENGINE_ID 449
A mibContextEngineID that specifies the SNMP engine ID for a MIB field being exported over IPFIX. Definition as per [RFC3411], Section 3.3.
- #define DOCA_TELEMETRY_NETFLOW_MIB_CONTEXT_NAME 450
An Information Element that denotes that a MIB context name is specified for a MIB field being exported over IPFIX. Reference [RFC3411], Section 3.3.
- #define DOCA_TELEMETRY_NETFLOW_MIB_INDEX_INDICATOR 447
A set of bit fields that is used for marking the Information Elements of a Data Record that serve as INDEX MIB objects for an indexed columnar MIB object. Each bit represents an Information Element in the Data Record, with the n-th least significant bit representing the n-th Information Element. A bit set to 1 indicates that the corresponding Information Element is an index of the columnar object represented by the mibObjectValue. A bit set to 0 indicates that this is not the case.
- #define DOCA_TELEMETRY_NETFLOW_MIB_MODULE_NAME 454
The textual name of the MIB module that defines a MIB object.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_DESCRIPTION 452
The value of the DESCRIPTION clause of a MIB object type definition.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_IDENTIFIER 445
An IPFIX Information Element that denotes that a MIB Object Identifier (MIB OID) is exported in the (Options) Template Record. The mibObjectIdentifier Information Element contains the OID assigned to the MIB object type definition encoded as ASN.1/BER [X.690].
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_NAME 451
The name (called a descriptor in [RFC2578] of an object type definition.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_SYNTAX 453
The value of the SYNTAX clause of a MIB object type definition, which may include a textual convention or sub-typing. See [RFC2578].
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_BITS 437
An IPFIX Information Element that denotes that a set of Enumerated flags or bits from a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of BITS. The flags or bits are encoded as per the standard IPFIX Abstract Data Type of octetArray, with sufficient length to accommodate the required number of bits. If the number of bits is not an integer multiple of octets, then the most significant bits at the end of the octetArray MUST be set to 0.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_COUNTER 439
An IPFIX Information Element that denotes that the counter value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Counter32 or Counter64 with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned64.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_GAUGE 440
An IPFIX Information Element that denotes that the Gauge value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Gauge32. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32. This value represents a non-negative integer that may increase or decrease but that shall never exceed a maximum value or fall below a minimum value.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_INTEGER 434
An IPFIX Information Element that denotes that the integer value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of Integer32 and INTEGER with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of signed32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_IPADDRESS 438
An IPFIX Information Element that denotes that the IPv4 address value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of IpAddress. The value is encoded as per the standard IPFIX Abstract Data Type of ipv4Address.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OCTET_STRING 435
An IPFIX Information Element that denotes that an Octet String or Opaque value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of OCTET STRING and Opaque. The value is encoded as per the standard IPFIX Abstract Data Type of octetArray.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_OID 436
An IPFIX Information Element that denotes that an Object Identifier or OID value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of OBJECT IDENTIFIER. Note: In this case, the "mibObjectIdentifier" defines which MIB object is being exported, and the "mibObjectValueOID" field will contain the OID value of that MIB object. The mibObjectValueOID Information Element is encoded as ASN.1/BER [X.690] in an octetArray.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_ROW 444
An IPFIX Information Element that denotes that a single row of a conceptual table will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with a syntax of SEQUENCE. This is encoded as a subTemplateList of mibObjectValue Information Elements. The subTemplateList exported MUST contain exactly one row (i.e., one instance of the subTemplate). The Template specified in the subTemplateList MUST be an Options Template and MUST include all the objects listed in the INDEX clause as Scope Fields.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TABLE 443
An IPFIX Information Element that denotes that a complete or partial conceptual table will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with a syntax of SEQUENCE OF. This is encoded as a subTemplateList of mibObjectValue Information Elements. The Template specified in the subTemplateList MUST be an Options Template and MUST include all the objects listed in the INDEX clause as Scope Fields.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_TIME_TICKS 441
An IPFIX Information Element that denotes that the TimeTicks value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of TimeTicks. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_OBJECT_VALUE_UNSIGNED 442
An IPFIX Information Element that denotes that an unsigned integer value of a MIB object will be exported. The MIB Object Identifier ("mibObjectIdentifier") for this field MUST be exported in a MIB Field Option or via another means. This Information Element is used for MIB objects with the Base syntax of unsigned32 with IPFIX reduced-size encoding used as required. The value is encoded as per the standard IPFIX Abstract Data Type of unsigned32.
- #define DOCA_TELEMETRY_NETFLOW_MIB_SUB_IDENTIFIER 446
A non-negative sub-identifier of an Object Identifier (OID).
- #define DOCA_TELEMETRY_NETFLOW_MIN_EXPORT_SECONDS 264
The absolute Export Time of the earliest IPFIX Message within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MICROSECONDS 271
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the microsecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with microsecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_MILLISECONDS 272
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the millisecond if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with millisecond- precision (or better) timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_NANOSECONDS 273
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element. This Information Element SHOULD be used only in Transport Sessions containing Flow Records with nanosecond-precision timestamp Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_MIN_FLOW_START_SECONDS 265
The earliest absolute timestamp of the first packet within any Flow within the scope containing this Information Element, rounded down to the second if necessary. This Information Element SHOULD be bound to its containing IPFIX Transport Session via an options record and the sessionScope Information Element.
- #define DOCA_TELEMETRY_NETFLOW_MIN_LAYER2_TOTAL_LENGTH 422
Layer 2 length of the smallest packet observed for this Flow. The packet length includes the length of the layer 2 header(s) and the length of the layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_MIN_PKT_LENGTH 25
Minimum IP packet length on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MIN_TTL 52
Minimum TTL on incoming packets of the flow
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_IMSI 455
The International Mobile Subscription Identity (IMSI). The IMSI is a decimal digit string with up to a maximum of 15 ASCII/UTF-8 encoded digits (0x30 - 0x39).
- #define DOCA_TELEMETRY_NETFLOW_MOBILE_MSISDN 456
The Mobile Station International Subscriber Directory Number (MSISDN). The MSISDN is a decimal digit string with up to a maximum of 15 ASCII/UTF-8 encoded digits (0x30 - 0x39).
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_END_MILLI_SECONDS 360
The absolute timestamp at which the monitoring interval ended. A Monitoring interval is the period of time during which the Metering Process is running.
- #define DOCA_TELEMETRY_NETFLOW_MONITORING_INTERVAL_START_MILLI_SECONDS 359
The absolute timestamp at which the monitoring interval started. A Monitoring interval is the period of time during which the Metering Process is running.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_1 70
MPLS label at position 1 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_10 79
MPLS label at position 10 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_2 71
MPLS label at position 2 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_3 72
MPLS label at position 3 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_4 73
MPLS label at position 4 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_5 74
MPLS label at position 5 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_6 75
MPLS label at position 6 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_7 76
MPLS label at position 7 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_8 77
MPLS label at position 8 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_9 78
MPLS label at position 9 in the stack. This comprises 20 bits of MPLS label, 3 EXP (experimental) bits and 1 S (end-of-stack) bit.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_DEPTH 202
The number of labels in the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_LENGTH 201
The length of the MPLS label stack in units of octets.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_LABEL_STACK_SECTION 316
This Information Element carries a series of n octets from the MPLS label stack of a sampled packet, starting sectionOffset octets into the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAL_RD 90
MPLS PAL Route Distinguisher.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_LENGTH 194
The size of the MPLS packet without the label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PAYLOAD_PACKET_SECTION 317
The mplsPayloadPacketSection carries a series of n octets from the MPLS payload of a sampled packet, starting sectionOffset octets into the MPLS payload, as it is data that follows immediately after the MPLS label stack.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_PREFIX_LEN 91
Number of consecutive bits in the MPLS prefix length.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_EXP 203
The Exp field from the top MPLS label stack entry, i.e., the last label that was pushed.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IPV6_ADDRESS 140
The IPv6 address of the system that the MPLS top label will cause this Flow to be forwarded to.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_IP_ADDR 47
Forwarding Equivalent Class corresponding to the MPLS Top Label
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TTL 200
The TTL field from the top MPLS label stack entry, i.e., the last label that was pushed.
- #define DOCA_TELEMETRY_NETFLOW_MPLS_TOP_LABEL_TYPE 46
MPLS Top Label Type: 0x00 UNKNOWN 0x01 TE-MIDPT 0x02 ATOM 0x03 VPN 0x04 BGP 0x05 LDP
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_BYTES 20
IP multicast outgoing byte counter with length N x 8 bits for bytes associated with the IP Flow
- #define DOCA_TELEMETRY_NETFLOW_MUL_DST_PKTS 19
IP multicast outgoing packet counter with length N x 8 bits for packets associated with the IP Flow
- #define DOCA_TELEMETRY_NETFLOW_MUL_IGMP_TYPE 33
Internet Group Management Protocol (IGMP) packet type
- #define DOCA_TELEMETRY_NETFLOW_NAT_EVENT 230
This Information Element identifies a NAT event. This IE identifies the type of a NAT event. Examples of NAT events include, but are not limited to, NAT translation create, NAT translation delete, Threshold Reached, or Threshold Exceeded, etc. Values for this Information Element are listed in the "NAT Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-event-type].
- #define DOCA_TELEMETRY_NETFLOW_NAT_INSTANCE_ID 463
This Information Element uniquely identifies an Instance of the NAT that runs on a NAT middlebox function after the packet passes the Observation Point. natInstanceID is defined in [RFC7659].
- #define DOCA_TELEMETRY_NETFLOW_NAT_ORIGINATING_ADDRESS_REALM 229
Indicates whether the session was created because traffic originated in the private or public address realm. postNATSourceIPv4Address, postNATDestinationIPv4Address, postNAPTSourceTransportPort, and postNAPTDestinationTransportPort are qualified with the address realm in perspective.
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_ID 283
Locally unique identifier of a NAT pool.
- #define DOCA_TELEMETRY_NETFLOW_NAT_POOL_NAME 284
The name of a NAT pool identified by a natPoolID.
- #define DOCA_TELEMETRY_NETFLOW_NAT_QUOTA_EXCEEDED_EVENT 466
This Information Element identifies the type of a NAT Quota Exceeded event. Values for this Information Element are listed in the "NAT Quota Exceeded Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-quota-exceeded-event].
- #define DOCA_TELEMETRY_NETFLOW_NAT_THRESHOLD_EVENT 467
This Information Element identifies a type of a NAT Threshold event. Values for this Information Element are listed in the "NAT Threshold Event Type" registry, see [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-threshold-event].
- #define DOCA_TELEMETRY_NETFLOW_NAT_TYPE 297
Values are listed in the natType registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-nat-type].
- #define DOCA_TELEMETRY_NETFLOW_NEW_CONNECTION_DELTA_COUNT 278
This information element counts the number of TCP or UDP connections which were opened during the observation period. The observation period may be specified by the flow start and end timestamps.
- #define DOCA_TELEMETRY_NETFLOW_NEXT_HEADER_IPV6 193
The value of the Next Header field of the IPv6 header. The value identifies the type of the following IPv6 extension header or of the following IP payload. Valid values are defined in the IANA Protocol Numbers registry.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_FLOW_TOTAL_COUNT 166
The total number of Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_LAYER2_OCTET_TOTAL_COUNT 427
The total number of octets in observed layer 2 packets (including the layer 2 header) that the Metering Process did not process since the (re-)initialization of the Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_OCTET_TOTAL_COUNT 168
The total number of octets in packets in Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_NOT_SENT_PACKET_TOTAL_COUNT 167
The total number of packets in Flow Records that were generated by the Metering Process and dropped by the Metering Process or by the Exporting Process instead of being sent to the Collecting Process. There are several potential reasons for this including resource shortage and special Flow export policies.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_ID 149
An identifier of an Observation Domain that is locally unique to an Exporting Process. The Exporting Process uses the Observation Domain ID to uniquely identify to the Collecting Process the Observation Domain where Flows were metered. It is RECOMMENDED that this identifier is also unique per IPFIX Device.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_DOMAIN_NAME 300
The name of an observation domain identified by an observationDomainId.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_ID 138
An identifier of an Observation Point that is unique per Observation Domain. It is RECOMMENDED that this identifier is also unique per IPFIX Device. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_POINT_TYPE 277
Type of observation point. Values are listed in the observationPointType registry. See [http://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-observation-point-type].
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MICROSECONDS 324
This Information Element specifies the absolute time in microseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_MILLISECONDS 323
This Information Element specifies the absolute time in milliseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_NANOSECONDS 325
This Information Element specifies the absolute time in nanoseconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVATION_TIME_SECONDS 322
This Information Element specifies the absolute time in seconds of an observation.
- #define DOCA_TELEMETRY_NETFLOW_OBSERVED_FLOW_TOTAL_COUNT 163
The total number of Flows observed in the Observation Domain since the Metering Process (re-)initialization for this Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_OCTET_DELTA_SUM_OF_SQUARES 198
The sum of the squared numbers of octets per incoming packet since the previous report (if any) for this Flow at the Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_OCTET_TOTAL_SUM_OF_SQUARES 199
The total sum of the squared numbers of octets in incoming packets for this Flow at the Observation Point since the Metering Process (re-)initialization for this Observation Point. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_OPAQUE_OCTETS 266
This Information Element is used to encapsulate non- IPFIX data into an IPFIX Message stream, for the purpose of allowing a non-IPFIX data processor to store a data stream inline within an IPFIX File. A Collecting Process or File Writer MUST NOT try to interpret this binary data. This Information Element differs from paddingOctets as its contents are meaningful in some non-IPFIX context, while the contents of paddingOctets MUST be 0x00 and are intended only for Information Element alignment.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV4_ADDRESS 403
The IPv4 address used by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Points to a downstream Collector.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_EXPORTER_IPV6_ADDRESS 404
The IPv6 address used by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Points to a downstream Collector.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_COMPLETED 377
The conservative count of Original Flows whose last packet is represented within this Aggregated Flow. Conservative counts must sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_INITIATED 376
The conservative count of Original Flows whose first packet is represented within this Aggregated Flow. Conservative counts must sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_FLOWS_PRESENT 375
The non-conservative count of Original Flows contributing to this Aggregated Flow. Non-conservative counts need not sum to the original count on re-aggregation.
- #define DOCA_TELEMETRY_NETFLOW_ORIGINAL_OBSERVATION_DOMAIN_ID 405
The Observation Domain ID reported by the Exporting Process on an Original Exporter, as seen by the Collecting Process on an IPFIX Mediator. Used to provide information about the Original Observation Domain to a downstream Collector. When cascading through multiple Mediators, this identifies the initial Observation Domain in the cascade.
- #define DOCA_TELEMETRY_NETFLOW_OUTPUT_SNMP 14
Output interface index; default for N is 2 but higher values could be used
- #define DOCA_TELEMETRY_NETFLOW_OUT_BYTES 23
Outgoing counter with length N x 8 bits for the number of bytes associated with an IP Flow
- #define DOCA_TELEMETRY_NETFLOW_OUT_DST_MAC 57
Outgoing destination MAC address
- #define DOCA_TELEMETRY_NETFLOW_OUT_PKTS 24
Outgoing counter with length N x 8 bits for the number of packets associated with an IP Flow.
- #define DOCA_TELEMETRY_NETFLOW_OUT_SRC_MAC 81
Outgoing source MAC address
- #define DOCA_TELEMETRY_NETFLOW_P2P_TECHNOLOGY 288
Specifies if the Application ID is based on peer-to-peer technology.
- #define DOCA_TELEMETRY_NETFLOW_PADDING_OCTETS 210
The value of this Information Element is always a sequence of 0x00 values.
- #define DOCA_TELEMETRY_NETFLOW_PAYLOAD_LENGTH_IPV6 191
This Information Element reports the value of the Payload Length field in the IPv6 header. Note that IPv6 extension headers belong to the payload. Also note that in case of a jumbo payload option the value of the Payload Length field in the IPv6 header is zero and so will be the value reported by this Information Element.
- #define DOCA_TELEMETRY_NETFLOW_PORT_ID 142
An identifier of a line port that is unique per IPFIX Device hosting an Observation Point. Typically, this Information Element is used for limiting the scope of other Information Elements.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_END 362
The port number identifying the end of a range of ports. A value of zero indicates that the range end is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_NUM_PORTS 364
The number of ports in a port range. A value of zero indicates that the number of ports is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_START 361
The port number identifying the start of a range of ports. A value of zero indicates that the range start is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_PORT_RANGE_STEP_SIZE 363
The step size in a port range. The default step size is 1, which indicates contiguous ports. A value of zero indicates that the step size is not specified, ie the range is defined in some other way.
- #define DOCA_TELEMETRY_NETFLOW_POSTIP_DIFF_SERV_CODE_POINT 98
The value of a Differentiated Services Code Point (DSCP) encoded in the Differentiated Services Field, after modification.
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_CUSTOMER_VLAN_ID 255
The definition of this Information Element is identical to the definition of Information Element 'dot1qCustomerVlanId', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_DOT1Q_VLAN_ID 254
The definition of this Information Element is identical to the definition of Information Element 'dot1qVlanId', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_IP_PRECEDENCE 257
The definition of this Information Element is identical to the definition of Information Element 'ipPrecedence', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_DELTA_COUNT 417
The definition of this Information Element is identical to the definition of the layer2OctetDeltaCount Information Element, except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_LAYER2_OCTET_TOTAL_COUNT 420
The definition of this Information Element is identical to the definition of the layer2OctetTotalCount Information Element, except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_DELTA_COUNT 418
The number of layer 2 octets since the previous report (if any) in outgoing multicast packets sent for packets of this Flow by a multicast daemon within the Observation Domain. This property cannot necessarily be observed at the Observation Point but may be retrieved by other means. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_LAYER2_OCTET_TOTAL_COUNT 421
The total number of layer 2 octets in outgoing multicast packets sent for packets of this Flow by a multicast daemon in the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point but may be retrieved by other means. The number of octets includes layer 2 header(s) and layer 2 payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_OCTET_TOTAL_COUNT 175
The total number of octets in outgoing multicast packets sent for packets of this Flow by a multicast daemon in the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point, but may be retrieved by other means. The number of octets includes IP header(s) and IP payload.
- #define DOCA_TELEMETRY_NETFLOW_POST_MCAST_PACKET_TOTAL_COUNT 174
The total number of outgoing multicast packets sent for packets of this Flow by a multicast daemon within the Observation Domain since the Metering Process (re-)initialization. This property cannot necessarily be observed at the Observation Point, but may be retrieved by other means.
- #define DOCA_TELEMETRY_NETFLOW_POST_MPLS_TOP_LABEL_EXP 237
The definition of this Information Element is identical to the definition of Information Element 'mplsTopLabelExp', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_DESTINATION_TRANSPORT_PORT 228
The definition of this Information Element is identical to the definition of Information Element 'destinationTransportPort', except that it reports a modified value caused by a Network Address Port Translation (NAPT) middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAPT_SOURCE_TRANSPORT_PORT 227
The definition of this Information Element is identical to the definition of Information Element 'sourceTransportPort', except that it reports a modified value caused by a Network Address Port Translation (NAPT) middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NATDESTINATION_IPV6_ADDRESS 282
The definition of this Information Element is identical to the definition of Information Element 'destinationIPv6Address', except that it reports a modified value caused by a NAT64 middlebox function after the packet passed the Observation Point. See [RFC8200] for the definition of the Destination Address field in the IPv6 header. See [RFC3234] for the definition of middleboxes. See [RFC6146] for nat64 specification.
- #define DOCA_TELEMETRY_NETFLOW_POST_NATSOURCE_IPV6_ADDRESS 281
The definition of this Information Element is identical to the definition of Information Element 'sourceIPv6Address', except that it reports a modified value caused by a NAT64 middlebox function after the packet passed the Observation Point. See [RFC8200] for the definition of the Source Address field in the IPv6 header. See [RFC3234] for the definition of middleboxes. See [RFC6146] for nat64 specification.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_DESTINATION_IPV4_ADDRESS 226
The definition of this Information Element is identical to the definition of Information Element 'destinationIPv4Address', except that it reports a modified value caused by a NAT middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_NAT_SOURCE_IPV4_ADDRESS 225
The definition of this Information Element is identical to the definition of Information Element 'sourceIPv4Address', except that it reports a modified value caused by a NAT middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_OCTET_TOTAL_COUNT 171
The definition of this Information Element is identical to the definition of Information Element 'octetTotalCount', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_POST_PACKET_TOTAL_COUNT 172
The definition of this Information Element is identical to the definition of Information Element 'packetTotalCount', except that it reports a potentially modified value caused by a middlebox function after the packet passed the Observation Point.
- #define DOCA_TELEMETRY_NETFLOW_PRIVATE_ENTERPRISE_NUMBER 346
A private enterprise number, as assigned by IANA. Within the context of an Information Element Type record, this element can be used along with the informationElementId element to scope properties to a specific Information Element. To export type information about an IANA-assigned Information Element, set the privateEnterpriseNumber to 0, or do not export the privateEnterpriseNumber in the type record. To export type information about an enterprise-specific Information Element, export the enterprise number in privateEnterpriseNumber, and export the Information Element number with the Enterprise bit cleared in informationElementId. The Enterprise bit in the associated informationElementId Information Element MUST be ignored by the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_PROTOCOL 4
IP protocol byte
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_CONTROL_WORD 251
The 32-bit Preferred Pseudo Wire (PW) MPLS Control Word as defined in Section 3 of [RFC4385].
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_DESTINATION_IPV4_ADDRESS 432
The destination IPv4 address of the PSN tunnel carrying the pseudowire.
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_ID 249
A 32-bit non-zero connection identifier, which together with the pseudoWireType, identifies the Pseudo Wire (PW) as defined in [RFC8077].
- #define DOCA_TELEMETRY_NETFLOW_PSEUDO_WIRE_TYPE 250
The value of this information element identifies the type of MPLS Pseudo Wire (PW) as defined in [RFC4446].
- #define DOCA_TELEMETRY_NETFLOW_RELATIVE_ERROR 321
This Information Element specifies the maximum possible positive or negative error ratio for the reported value for a given Information Element as percentage of the measured value. The real value of the metric can differ by relativeError percent (positive or negative) from the measured value.
- #define DOCA_TELEMETRY_NETFLOW_REPLICATION_FACTOR 99
Multicast replication factor.
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_OCTETS 232
The total number of layer 4 payload bytes in a flow from the responder since the previous report. The responder is the device which replies to the initiator, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_RESPONDER_PACKETS 299
The total number of layer 4 packets in a flow from the responder since the previous report. The responder is the device which replies to the initiator, and remains the same for the life of the session.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MICROSECONDS 386
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in microseconds.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_MILLISECONDS 385
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in milliseconds.
- #define DOCA_TELEMETRY_NETFLOW_RFC3550_JITTER_NANOSECONDS 387
Interarrival jitter as defined in section 6.4.1 of [RFC3550], measured in nanoseconds.
- #define DOCA_TELEMETRY_NETFLOW_RTP_SEQUENCE_NUMBER 370
The RTP sequence number per [RFC3550].
- #define DOCA_TELEMETRY_NETFLOW_SAMPLER_NAME 84
Name of the flow sampler
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_ALGORITHM 35
The type of algorithm used for sampled NetFlow: 0x01 Deterministic Sampling ,0x02 Random Sampling
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_INTERVAL 396
This Information Element specifies the number of Flows that are consecutively sampled. A value of 100 means that 100 consecutive Flows are sampled. For example, this Information Element may be used to describe the configuration of a systematic count-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_FLOW_SPACING 397
This Information Element specifies the number of Flows between two "samplingFlowInterval"s. A value of 100 means that the next interval starts 100 Flows (which are not sampled) after the current "samplingFlowInterval" is over. For example, this Information Element may be used to describe the configuration of a systematic count-based Sampling Selector.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_INTERVAL 34
When using sampled NetFlow, the rate at which packets are sampled i.e.: a value of 100 indicates that one of every 100 packets is sampled
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_INTERVAL 305
This Information Element specifies the number of packets that are consecutively sampled. A value of 100 means that 100 consecutive packets are sampled.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PACKET_SPACE 306
This Information Element specifies the number of packets between two "samplingPacketInterval"s. A value of 100 means that the next interval starts 100 packets (which are not sampled) after the current "samplingPacketInterval" is over.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_POPULATION 310
This Information Element specifies the number of elements in the parent Population for random Sampling methods.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_PROBABILITY 311
This Information Element specifies the probability that a packet is sampled, expressed as a value between 0 and 1. The probability is equal for every packet. A value of 0 means no packet was sampled since the probability is 0.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_SIZE 309
This Information Element specifies the number of elements taken from the parent Population for random Sampling methods.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_INTERVAL 307
This Information Element specifies the time interval in microseconds during which all arriving packets are sampled.
- #define DOCA_TELEMETRY_NETFLOW_SAMPLING_TIME_SPACE 308
This Information Element specifies the time interval in microseconds between two "samplingTimeInterval"s. A value of 100 means that the next interval starts 100 microseconds (during which no packets are sampled) after the current "samplingTimeInterval" is over.
- #define DOCA_TELEMETRY_NETFLOW_SECTION_EXPORTED_OCTETS 410
This Information Element specifies the observed length of the packet section (e.g., dataLinkFrameSection, ipHeaderPacketSection, ipPayloadPacketSection, mplsLabelStackSection, and mplsPayloadPacketSection) when padding is used.
- #define DOCA_TELEMETRY_NETFLOW_SECTION_OFFSET 409
This Information Element specifies the offset of the packet section (e.g., dataLinkFrameSection, ipHeaderPacketSection, ipPayloadPacketSection, mplsLabelStackSection, and mplsPayloadPacketSection). If this Information Element is omitted, it defaults to zero (i.e., no offset).
- #define DOCA_TELEMETRY_NETFLOW_SELECTION_SEQUENCE_ID 301
From all the packets observed at an Observation Point, a subset of the packets is selected by a sequence of one or more Selectors. The selectionSequenceId is a unique value per Observation Domain, specifying the Observation Point and the sequence of Selectors through which the packets are selected.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ALGORITHM 304
This Information Element identifies the packet selection methods (e.g., Filtering, Sampling) that are applied by the Selection Process.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID 302
The Selector ID is the unique ID identifying a Primitive Selector. Each Primitive Selector must have a unique ID in the Observation Domain.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_OBSERVED 394
This Information Element specifies the total number of Flows observed by a Selector, for a specific value of SelectorId. This Information Element should be used in an Options Template scoped to the observation to which it refers. See Section 3.4.2.1 of the IPFIX protocol document [RFC7011].
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_FLOWS_SELECTED 395
This Information Element specifies the total number of Flows selected by a Selector, for a specific value of SelectorId. This Information Element should be used in an Options Template scoped to the observation to which it refers. See Section 3.4.2.1 of the IPFIX protocol document [RFC7011].
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_OBSERVED 318
This Information Element specifies the total number of packets observed by a Selector, for a specific value of SelectorId.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_ID_TOTAL_PKTS_SELECTED 319
This Information Element specifies the total number of packets selected by a Selector, for a specific value of SelectorId.
- #define DOCA_TELEMETRY_NETFLOW_SELECTOR_NAME 335
The name of a selector identified by a selectorID. Globally unique per Metering Process.
- #define DOCA_TELEMETRY_NETFLOW_SESSION_SCOPE 267
The presence of this Information Element as scope in an Options Template signifies that the options described by the Template apply to the IPFIX Transport Session that contains them. Note that as all options are implicitly scoped to Transport Session and Observation Domain, this Information Element is equivalent to a "null" scope. It is defined for general purpose session scoping of options, and proposed specifically to allow the attachment of time window to an IPFIX File via IPFIX Options. The value of this Information Element MUST be written as 0 by the File Writer or Exporting Process. The value of this Information Element MUST be ignored by the File Reader or the Collecting Process.
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_IPV6_PREFIX 170
IPv6 source address prefix.
- #define DOCA_TELEMETRY_NETFLOW_SOURCE_TRANSPORT_PORTS_LIMIT 458
This Information Element contains the maximum number of IP source transport ports that can be used by an end user when sending IP packets; each user is associated with one or more (source) IPv4 or IPv6 addresses. This Information Element is particularly useful in address-sharing deployments that adhere to REQ-4 of [RFC6888]. Limiting the number of ports assigned to each user ensures fairness among users and mitigates the denial-of-service attack that a user could launch against other users through the address-sharing device in order to grab more ports.
- #define DOCA_TELEMETRY_NETFLOW_SRC_AS 16
Source BGP autonomous system number where N could be 2 or 4
- #define DOCA_TELEMETRY_NETFLOW_SRC_MASK 9
The number of contiguous bits in the source address subnet mask i.e.: the submask in slash notation
- #define DOCA_TELEMETRY_NETFLOW_SRC_TOS 5
Type of Service byte setting when entering incoming interface
- #define DOCA_TELEMETRY_NETFLOW_SRC_TRAFFIC_INDEX 92
BGP Policy Accounting Source Traffic Index
- #define DOCA_TELEMETRY_NETFLOW_SRC_VLAN 58
Virtual LAN identifier associated with ingress interface
- #define DOCA_TELEMETRY_NETFLOW_STA_IPV4_ADDRESS 366
The IPv4 address of a wireless station (STA).
- #define DOCA_TELEMETRY_NETFLOW_STA_MAC_ADDRESS 365
The IEEE 802 MAC address of a wireless station (STA).
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_LIST 292
Specifies a generic Information Element with a subTemplateList abstract data type.
- #define DOCA_TELEMETRY_NETFLOW_SUB_TEMPLATE_MULTI_LIST 293
Specifies a generic Information Element with a subTemplateMultiList abstract data type.
- #define DOCA_TELEMETRY_NETFLOW_SYSTEM_INIT_TIME_MILLISECONDS 160
The absolute timestamp of the last (re-)initialization of the IPFIX Device.
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACKNOWLEDGMENT_NUMBER 185
The acknowledgment number in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_ACK_TOTAL_COUNT 222
The total number of packets of this Flow with TCP "Acknowledgment field significant" (ACK) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_DESTINATION_PORT 183
The destination port identifier in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_FIN_TOTAL_COUNT 219
The total number of packets of this Flow with TCP "No more data from sender" (FIN) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_FLAGS 6
Cumulative of all the TCP flags seen for this flow
- #define DOCA_TELEMETRY_NETFLOW_TCP_HEADER_LENGTH 188
The length of the TCP header. Note that the value of this Information Element is different from the value of the Data Offset field in the TCP header. The Data Offset field indicates the length of the TCP header in units of 4 octets. This Information Elements specifies the length of the TCP header in units of octets.
- #define DOCA_TELEMETRY_NETFLOW_TCP_OPTIONS 209
TCP options in packets of this Flow. The information is encoded in a set of bit fields. For each TCP option, there is a bit in this set. The bit is set to 1 if any observed packet of this Flow contains the corresponding TCP option. Otherwise, if no observed packet of this Flow contained the respective TCP option, the value of the corresponding bit is 0.
- #define DOCA_TELEMETRY_NETFLOW_TCP_PSH_TOTAL_COUNT 221
The total number of packets of this Flow with TCP "Push Function" (PSH) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_RST_TOTAL_COUNT 220
The total number of packets of this Flow with TCP "Reset the connection" (RST) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SEQUENCE_NUMBER 184
The sequence number in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SOURCE_PORT 182
The source port identifier in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_SYN_TOTAL_COUNT 218
The total number of packets of this Flow with TCP "Synchronize sequence numbers" (SYN) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_URGENT_POINTER 187
The urgent pointer in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_URG_TOTAL_COUNT 223
The total number of packets of this Flow with TCP "Urgent Pointer field significant" (URG) flag set.
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SCALE 238
The scale of the window field in the TCP header.
- #define DOCA_TELEMETRY_NETFLOW_TCP_WINDOW_SIZE 186
The window field in the TCP header. If the TCP window scale is supported, then TCP window scale must be known to fully interpret the value of this information.
- #define DOCA_TELEMETRY_NETFLOW_TEMPLATE_ID 145
An identifier of a Template that is locally unique within a combination of a Transport session and an Observation Domain.
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_BYTES_EXP 40
Counter with length N x 8 bits for bytes for the number of bytes exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_FLOWS_EXP 42
Counter with length N x 8 bits for bytes for the number of flows exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_LENGTH_IPV4 190
The total length of the IPv4 packet.
- #define DOCA_TELEMETRY_NETFLOW_TOTAL_PKTS_EXP 41
Counter with length N x 8 bits for bytes for the number of packets exported by the Observation Domain
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_OCTET_DELTA_COUNT 401
The number of octets, excluding IP header(s) and Layer 4 transport protocol header(s), observed for this Flow at the Observation Point since the previous report (if any).
- #define DOCA_TELEMETRY_NETFLOW_TRANSPORT_PACKET_DELTA_COUNT 402
The number of packets containing at least one octet beyond the IP header(s) and Layer 4 transport protocol header(s), observed for this Flow at the Observation Point since the previous report (if any).
- #define DOCA_TELEMETRY_NETFLOW_TUNNEL_TECHNOLOGY 289
Specifies if the Application ID is used as a tunnel technology.
- #define DOCA_TELEMETRY_NETFLOW_UDP_DESTINATION_PORT 181
The destination port identifier in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UDP_MESSAGE_LENGTH 205
The value of the Length field in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UDP_SOURCE_PORT 180
The source port identifier in the UDP header.
- #define DOCA_TELEMETRY_NETFLOW_UPPER_CILIMIT 336
This Information Element specifies the upper limit of a confidence interval. It is used to provide an accuracy statement for an estimated value. The confidence limits define the range in which the real value is assumed to be with a certain probability p. Confidence limits always need to be associated with a confidence level that defines this probability p. Please note that a confidence interval only provides a probability that the real value lies within the limits. That means the real value can lie outside the confidence limits.
- #define DOCA_TELEMETRY_NETFLOW_USER_NAME 371
User name associated with the flow.
- #define DOCA_TELEMETRY_NETFLOW_VALUE_DISTRIBUTION_METHOD 384
A description of the method used to distribute the counters from Contributing Flows into the Aggregated Flow records described by an associated scope, generally a Template. The method is deemed to apply to all the non-key Information Elements in the referenced scope for which value distribution is a valid operation; if the originalFlowsInitiated and/or originalFlowsCompleted Information Elements appear in the Template, they are not subject to this distribution method, as they each infer their own distribution method. The valueDistributionMethod registry is intended to list a complete set of possible value distribution methods. See [https://www.iana.org/assignments/ipfix/ipfix.xhtml#ipfix-value-distribution-method].
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_ID 347
Instance Identifier of the interface to a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_INTERFACE_NAME 348
Name of the interface to a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_NAME 350
Name of a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VIRTUAL_STATION_UUID 349
Unique Identifier of a Virtual Station. A Virtual Station is an end station instance: it can be a virtual machine or a physical host.
- #define DOCA_TELEMETRY_NETFLOW_VPN_IDENTIFIER 482
VPN ID in the format specified by [RFC2685]. The size of this Information Element is 7 octets.
- #define DOCA_TELEMETRY_NETFLOW_VRF_NAME 236
The name of a VPN Routing and Forwarding table (VRF).
- #define DOCA_TELEMETRY_NETFLOW_WLAN_CHANNEL_ID 146
The identifier of the 802.11 (Wi-Fi) channel used.
- #define DOCA_TELEMETRY_NETFLOW_WLAN_SSID 147
The Service Set IDentifier (SSID) identifying an 802.11 (Wi-Fi) network used. According to IEEE.802-11.1999, the SSID is encoded into a string of up to 32 characters.
- #define DOCA_TELEMETRY_NETFLOW_WTP_MAC_ADDRESS 367
The IEEE 802 MAC address of a wireless access point (WTP).
DOCA Unified Resource and Offload Manager (UROM) offers a framework for offloading a portion of parallel computing tasks, such as those related to HPC or AI workloads and frameworks, from the host to the NVIDIA DPUs. Please follow the programmer guide for usage instructions.
Modules
-
DOCA UROM Domains
-
DOCA UROM Environment Variables
-
DOCA UROM Plugins
-
DOCA UROM Services
-
DOCA UROM Worker Tasks
-
DOCA UROM Workers
Classes
-
struct doca_urom_domain_oob_coll
- Out-of-band communication descriptor for Domain creation.
Functions
- doca_error_t doca_urom_service_get_workers_by_gid_task_allocate ( doca_urom_service* service_ctx, doca_urom_service_get_workers_by_gid_task** task )
- Allocate Service get workers by gid task.
- doca_error_t doca_urom_service_get_workers_by_gid_task_allocate_init ( doca_urom_service* service_ctx, uint32_t gid, doca_urom_service_get_workers_by_gid_task_completion_cb_t cb, doca_urom_service_get_workers_by_gid_task** task )
- Allocate Service get workers by gid task and set task attributes.
- DOCA_EXPERIMENTAL doca_task* doca_urom_service_get_workers_by_gid_task_as_task ( doca_urom_service_get_workers_by_gid_task* task )
- This method converts a service get workers task to doca_task.
- const DOCA_EXPERIMENTAL uint64_t* doca_urom_service_get_workers_by_gid_task_get_worker_ids ( doca_urom_service_get_workers_by_gid_task* task )
- Get Service get workers task ids array.
- DOCA_EXPERIMENTAL size_t doca_urom_service_get_workers_by_gid_task_get_workers_count ( doca_urom_service_get_workers_by_gid_task* task )
- Get the number of workers returned for the requested gid.
- doca_error_t doca_urom_service_get_workers_by_gid_task_release ( doca_urom_service_get_workers_by_gid_task* task )
- Release Service get workers by gid task.
- DOCA_EXPERIMENTAL void doca_urom_service_get_workers_by_gid_task_set_cb ( doca_urom_service_get_workers_by_gid_task* task, doca_urom_service_get_workers_by_gid_task_completion_cb_t cb )
- Set Service get workers task completion callback.
- DOCA_EXPERIMENTAL void doca_urom_service_get_workers_by_gid_task_set_gid ( doca_urom_service_get_workers_by_gid_task* task, uint32_t gid )
- Set Service get workers task group id.
- DOCA_EXPERIMENTAL doca_task* doca_urom_worker_cmd_task_as_task ( doca_urom_worker_cmd_task* task )
- This method converts a worker cmd task to doca_task.
Functions
- doca_error_t doca_urom_service_get_workers_by_gid_task_allocate ( doca_urom_service* service_ctx, doca_urom_service_get_workers_by_gid_task** task )
-
Allocate Service get workers by gid task.
Parameters
- service_ctx
- The service is used for the task.
- task
- The new task.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - Failed to allocate task.
Description
- doca_error_t doca_urom_service_get_workers_by_gid_task_allocate_init ( doca_urom_service* service_ctx, uint32_t gid, doca_urom_service_get_workers_by_gid_task_completion_cb_t cb, doca_urom_service_get_workers_by_gid_task** task )
-
Allocate Service get workers by gid task and set task attributes.
Parameters
- service_ctx
- The service is used for the task.
- gid
- Worker group id to set
- cb
- Task completion callback to set
- task
- The new task.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - Failed to allocate task.
Description
- DOCA_EXPERIMENTAL doca_task* doca_urom_service_get_workers_by_gid_task_as_task ( doca_urom_service_get_workers_by_gid_task* task )
-
This method converts a service get workers task to doca_task.
Parameters
- task
- doca_urom_service_get_workers_by_gid_task task
Returns
doca_task
Description
- const DOCA_EXPERIMENTAL uint64_t* doca_urom_service_get_workers_by_gid_task_get_worker_ids ( doca_urom_service_get_workers_by_gid_task* task )
-
Get Service get workers task ids array.
Parameters
- task
- The task to return a worker ids array.
Returns
The worker ids array
Description
- DOCA_EXPERIMENTAL size_t doca_urom_service_get_workers_by_gid_task_get_workers_count ( doca_urom_service_get_workers_by_gid_task* task )
-
Get the number of workers returned for the requested gid.
Parameters
- task
- The task to return a worker count.
Returns
The workers counts
Description
- doca_error_t doca_urom_service_get_workers_by_gid_task_release ( doca_urom_service_get_workers_by_gid_task* task )
-
Release Service get workers by gid task.
Parameters
- task
- The task to release
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - Task resources still in use.
Description
- DOCA_EXPERIMENTAL void doca_urom_service_get_workers_by_gid_task_set_cb ( doca_urom_service_get_workers_by_gid_task* task, doca_urom_service_get_workers_by_gid_task_completion_cb_t cb )
-
Set Service get workers task completion callback.
Parameters
- task
- The task used to set the plugin on.
- cb
- The task completion callback
Description
- DOCA_EXPERIMENTAL void doca_urom_service_get_workers_by_gid_task_set_gid ( doca_urom_service_get_workers_by_gid_task* task, uint32_t gid )
-
Set Service get workers task group id.
Parameters
- task
- The task used to set the gid on.
- gid
- The task group id to get workers by.
Description
- DOCA_EXPERIMENTAL doca_task* doca_urom_worker_cmd_task_as_task ( doca_urom_worker_cmd_task* task )
-
This method converts a worker cmd task to doca_task.
Parameters
- task
- doca_urom_worker_cmd_task task
Returns
doca_task
Description
DOCA UROM Services
DOCA UROM Environment Variables
DOCA UROM Workers
DOCA UROM Worker Tasks
DOCA UROM Domains
DOCA UROM Plugins
1.23.1. DOCA UROM Services
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Service interfaces and data structures.
The UROM Service manages Workers running on a DOCA device.
Defines
- #define DOCA_CPU_SET ( _cpu, _cpusetp )
- Set specific bit in DOCA CPU set.
- #define DOCA_CPU_ZERO ( _cpusetp ) UCS_CPU_ZERO(_cpusetp)
- Set DOCA CPU set to zero.
- #define doca_cpu_is_set ( _cpu, _cpusetp )
- Check if specific bit in DOCA CPU is set.
Typedefs
- typedef ucs_cpu_set_t doca_cpu_set_t
- DOCA CPU set structure.
- typedef void ( *doca_urom_service_get_workers_by_gid_task_completion_cb_t )( doca_urom_service_get_workers_by_gid_task* task, union doca_data task_user_data, union doca_data ctx_user_data )
- Service get workers task completion callback type.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_service_as_ctx ( doca_urom_service* service_ctx )
- Convert service_ctx instance into a generalized context for use with DOCA core objects.
- doca_error_t doca_urom_service_create ( doca_urom_service** service_ctx )
- This method creates a UROM Service context.
- doca_error_t doca_urom_service_destroy ( doca_urom_service* service_ctx )
- This method destroys a UROM Service context.
- doca_error_t doca_urom_service_get_cpuset ( doca_urom_service* service_ctx, doca_cpu_set_t* cpuset )
- Get the allowed CPU set for the service.
- doca_error_t doca_urom_service_get_plugins_list ( doca_urom_service* service_ctx, const doca_urom_service_plugin_info** plugins, size_t* plugins_count )
- This method gets the list of supported plugins on service's DPU side.
- doca_error_t doca_urom_service_set_dev ( doca_urom_service* service_ctx, doca_dev* dev )
- This method attaches a DOCA Device to the UROM Service context.
- doca_error_t doca_urom_service_set_max_comm_msg_size ( doca_urom_service* service_ctx, size_t msg_size )
- Set the maximum message size for the UROM communication channel.
- doca_error_t doca_urom_service_set_max_workers ( doca_urom_service* service_ctx, uint32_t max_workers )
- Set maximum number of UROM workers.
Defines
- #define DOCA_CPU_SET ( _cpu, _cpusetp )
-
Value
UCS_CPU_SET(_cpu, _cpusetp)
- #define DOCA_CPU_ZERO ( _cpusetp ) UCS_CPU_ZERO(_cpusetp)
-
- #define doca_cpu_is_set ( _cpu, _cpusetp )
-
Value
ucs_cpu_is_set(_cpu, _cpusetp)
Typedefs
- typedef ucs_cpu_set_t doca_cpu_set_t
DOCA CPU set structure.
- void ( *doca_urom_service_get_workers_by_gid_task_completion_cb_t )( doca_urom_service_get_workers_by_gid_task* task, union doca_data task_user_data, union doca_data ctx_user_data )
Service get workers task completion callback type.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_service_as_ctx ( doca_urom_service* service_ctx )
-
Convert service_ctx instance into a generalized context for use with DOCA core objects.
Parameters
- service_ctx
- Service context instance. This must remain valid until after the context is no longer required.
Returns
Non NULL upon success, NULL otherwise.
Description
- doca_error_t doca_urom_service_create ( doca_urom_service** service_ctx )
-
This method creates a UROM Service context.
Parameters
- service_ctx
- The DOCA UROM Service
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - service_ctx argument is a NULL pointer.
- DOCA_ERROR_NO_MEMORY - failed to alloc service_ctx.
Description
The UROM Service runs on a DOCA Device. A Service manages UROM Workers which run on the Device. A Worker runs UROM Plugins which implement application logic which runs on the Device.
A Service is created in state `DOCA_CTX_STATE_IDLE`. After creation, a user may configure the Service using setter methods (e.g. `doca_urom_service_set_dev()`). Before use, a Service must be transitioned to state `DOCA_CTX_STATE_RUNNING` using the `doca_ctx_start()` interface. A typical invocation looks like:
`doca_ctx_start(doca_urom_service_as_ctx(service_ctx))`
- doca_error_t doca_urom_service_destroy ( doca_urom_service* service_ctx )
-
This method destroys a UROM Service context.
Parameters
- service_ctx
- Pointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - Service isn't in IDLE state.
- DOCA_ERROR_IN_USE - One or more work queues are still attached. These must be detached first.
Description
- doca_error_t doca_urom_service_get_cpuset ( doca_urom_service* service_ctx, doca_cpu_set_t* cpuset )
-
Get the allowed CPU set for the service.
Parameters
- service_ctx
- Service context instance.
- cpuset
- Set of allowed CPUs.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - service_ctx is not started.
Description
- doca_error_t doca_urom_service_get_plugins_list ( doca_urom_service* service_ctx, const doca_urom_service_plugin_info** plugins, size_t* plugins_count )
-
This method gets the list of supported plugins on service's DPU side.
Parameters
- service_ctx
- Service context instance.
- plugins
- Set of supported plugins.
- plugins_count
- Set of plugins number.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - service_ctx is not running.
- DOCA_ERROR_NOT_FOUND - No plugins were discovered on DPU side.
Description
- doca_error_t doca_urom_service_set_dev ( doca_urom_service* service_ctx, doca_dev* dev )
-
This method attaches a DOCA Device to the UROM Service context.
Parameters
- service_ctx
- The UROM Service context to attach the device to.
- dev
- The device to attach.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer.
- DOCA_ERROR_NOT_SUPPORTED - UROM is not supported
- DOCA_ERROR_BAD_STATE - service_ctx is not idle.
Description
Attaching to a DOCA Device is mandatory, network address will be extracted from services mapping that is defined in the user environment DOCA_UROM_SERVICE_FILE
- doca_error_t doca_urom_service_set_max_comm_msg_size ( doca_urom_service* service_ctx, size_t msg_size )
-
Set the maximum message size for the UROM communication channel.
Parameters
- service_ctx
- The UROM Service context to set comm msg size
- msg_size
- The maximum message size.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - service_ctx argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - service_ctx is not idle.
Description
This method sets the maximum size for message in UROM communication channel, default message size is 4096B. The communication channel message is composed of the UROM urom_worker_notify/urom_worker_cmd structures and the plugin payload (command/notification). It's important to ensure that the combined size of plugins' commands and notifications, along with the UROM structures size, does not exceed this maximum size.
- doca_error_t doca_urom_service_set_max_workers ( doca_urom_service* service_ctx, uint32_t max_workers )
-
Set maximum number of UROM workers.
Parameters
- service_ctx
- The UROM Service context to set number of workers.
- max_workers
- The maximum number of workers, Must be a power of 2.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - service_ctx argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - service_ctx is not idle.
Description
This method sets the maximum number of spawned workers
1.23.2. DOCA UROM Environment Variables
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Environment Variables.
DOCA UROM environment variables are described in the following table.
Variable | Description ------------- | ------------- DOCA_UROM_SERVICE_FILE | Path to the UROM Service File.
DOCA_UROM_SERVICE_FILE
This variable sets the path to the UROM Service File. When creating a UROM Service, UROM performs a look up using this file, the hostname where an application is running, and the PCI address of the associated DOCA device to identify the network address, and network devices associated with the UROM Service.
This file contains one entry per line describing the location of each UROM Service that may be used by UROM. The format of each line must be as follows:
<app_hostname> <service_type> <dev_hostname> <dev_pci_addr> <net,devs>
Fields are described in the following table.
| Field | Description | | ------------- | ----------- | | app_hostname | Network host name (or IP address) for the node that this line applies to. | | service_type | The UROM service type. Valid type is `dpu`. Type `dpu` is used for all DOCA Devices. | | dev_hostname | Network host name (or IP address) for the associated DOCA device. | | dev_pci_addr | PCI address of the associated DOCA device. This must match the PCI address provided by DOCA. | | net,devs | Comma-separated list of network devices which are shared between the host and DOCA device. |
As an example, an application running on a single node (named app_host1) which has a UROM Service running on DPU (named dpu_host1) would have a Service Directory file with the following entries:
app_host1 dpu dpu_host1 03:00.0 dev1:1,dev2:1
1.23.3. DOCA UROM Workers
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Worker interfaces and data structures.
The UROM Worker represents a process running on a DOCA device. The process may be used to offload application logic to the device. Application logic is defined in Worker plugins. A Worker may be configured to support one or more plugins concurrently. Users submit DOCA tasks to a Worker in order to initiate an offloaded operation.
Defines
- #define DOCA_UROM_WORKER_ID_ANY -1ULL
- DOCA UROM WORKER ID any give the library the responsibility to generate a worker id.
Typedefs
- typedef void ( *doca_urom_worker_cmd_task_completion_cb_t )( doca_urom_worker_cmd_task* task, union doca_data task_user_data, union doca_data ctx_user_data )
- Worker Command task completion callback type.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_worker_as_ctx ( doca_urom_worker* worker_ctx )
- doca_error_t doca_urom_worker_create ( doca_urom_worker** worker_ctx )
- This method creates a UROM Worker context.
- doca_error_t doca_urom_worker_destroy ( doca_urom_worker* worker_ctx )
- This method destroys a UROM Worker context.
- doca_error_t doca_urom_worker_get_gid ( doca_urom_worker* worker_ctx, uint32_t* worker_gid )
- This method gets the Worker context group ID to be used to identify the Worker group that belongs to.
- doca_error_t doca_urom_worker_get_id ( doca_urom_worker* worker_ctx, uint64_t* worker_id )
- This method gets the Worker context ID to be used to identify the Worker. Worker IDs enable an application to establish multiple connections to the same Worker process running on a DOCA Device. If when creating the worker the user sets worker id equals to DOCA_UROM_WORKER_ID_ANY the library will generate new id for the worker.
- doca_error_t doca_urom_worker_set_cpuset ( doca_urom_worker* worker_ctx, doca_cpu_set_t cpuset )
- Set the allowed CPUs for the Worker. The cpuset must be a subset of the service's allowed CPUs.
- doca_error_t doca_urom_worker_set_env ( doca_urom_worker* worker_ctx, const char* env, size_t count )
- Set worker env variables when spawning worker on DPU side.
- doca_error_t doca_urom_worker_set_gid ( doca_urom_worker* worker_ctx, uint32_t gid )
- Set worker group ID, must be set before starting the worker context.
- doca_error_t doca_urom_worker_set_id ( doca_urom_worker* worker_ctx, uint64_t worker_id )
- This method sets the Worker context ID to be used to identify the Worker. Worker IDs enable an application to establish multiple connections to the same Worker process running on a DOCA Device.
- doca_error_t doca_urom_worker_set_max_inflight_tasks ( doca_urom_worker* worker_ctx, uint32_t max_tasks )
- Set Worker maximum in-flight tasks.
- doca_error_t doca_urom_worker_set_plugins ( doca_urom_worker* worker_ctx, uint64_t plugins )
- This method adds plugins mask for the supported plugins by the UROM Worker on the DPU.
- doca_error_t doca_urom_worker_set_service ( doca_urom_worker* worker_ctx, doca_urom_service* service_ctx )
- This method attaches a UROM Service to the Worker context.
Defines
Typedefs
- void ( *doca_urom_worker_cmd_task_completion_cb_t )( doca_urom_worker_cmd_task* task, union doca_data task_user_data, union doca_data ctx_user_data )
Worker Command task completion callback type.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_worker_as_ctx ( doca_urom_worker* worker_ctx )
-
Parameters
- worker_ctx
- Worker context instance. This must remain valid until after the context is no longer required.
Returns
Non NULL upon success, NULL otherwise.
Description
Convert worker_ctx instance into a generalized context for use with DOCA core objects.
- doca_error_t doca_urom_worker_create ( doca_urom_worker** worker_ctx )
-
This method creates a UROM Worker context.
Parameters
- worker_ctx
- The new Worker context.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer.
- DOCA_ERROR_NO_MEMORY - failed to alloc worker_ctx.
Description
`
A Worker is created in state `DOCA_CTX_STATE_IDLE`. After creation, a user may configure the Worker using setter methods (e.g. `doca_urom_worker_set_service()`). Before use, a Worker must be transitioned to state `DOCA_CTX_STATE_RUNNING` using the `doca_ctx_start()` interface. A typical invocation looks like:
`doca_ctx_start(doca_urom_worker_as_ctx(worker_ctx))`
- doca_error_t doca_urom_worker_destroy ( doca_urom_worker* worker_ctx )
-
This method destroys a UROM Worker context.
Parameters
- worker_ctx
- Pointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Unable to gain exclusive access to the worker_ctx instance.
- DOCA_ERROR_IN_USE - One or more work queues are still attached. These must be detached first.
Description
- doca_error_t doca_urom_worker_get_gid ( doca_urom_worker* worker_ctx, uint32_t* worker_gid )
-
This method gets the Worker context group ID to be used to identify the Worker group that belongs to.
Parameters
- worker_ctx
- The UROM Worker context.
- worker_gid
- The UROM Worker group ID.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer.
Description
- doca_error_t doca_urom_worker_get_id ( doca_urom_worker* worker_ctx, uint64_t* worker_id )
-
This method gets the Worker context ID to be used to identify the Worker. Worker IDs enable an application to establish multiple connections to the same Worker process running on a DOCA Device. If when creating the worker the user sets worker id equals to DOCA_UROM_WORKER_ID_ANY the library will generate new id for the worker.
Parameters
- worker_ctx
- The UROM Worker context.
- worker_id
- The UROM Worker ID.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer.
Description
- doca_error_t doca_urom_worker_set_cpuset ( doca_urom_worker* worker_ctx, doca_cpu_set_t cpuset )
-
Set the allowed CPUs for the Worker. The cpuset must be a subset of the service's allowed CPUs.
Parameters
- worker_ctx
- The UROM Worker context.
- cpuset
- The set of allowed CPUs.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure: DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer, or, the the cpuset is invalid. DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
- doca_error_t doca_urom_worker_set_env ( doca_urom_worker* worker_ctx, const char* env, size_t count )
-
Set worker env variables when spawning worker on DPU side.
Parameters
- worker_ctx
- The UROM Worker context.
- env
- A string array containing name=value tuples.
- count
- String array size.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer, or, count in invalid.
- DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
Must be set before starting the worker context, will fail spawn command if worker already spawned on the DPU. The env variable value shouldn't contain spaces.
- doca_error_t doca_urom_worker_set_gid ( doca_urom_worker* worker_ctx, uint32_t gid )
-
Set worker group ID, must be set before starting the worker context.
Parameters
- worker_ctx
- The UROM Worker context.
- gid
- group id
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure: DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer, or, the the cpuset is invalid. DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
- doca_error_t doca_urom_worker_set_id ( doca_urom_worker* worker_ctx, uint64_t worker_id )
-
This method sets the Worker context ID to be used to identify the Worker. Worker IDs enable an application to establish multiple connections to the same Worker process running on a DOCA Device.
Parameters
- worker_ctx
- The UROM Worker context.
- worker_id
- The UROM Worker ID.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
Worker ID must be unique to a UROM Service. If DOCA_UROM_WORKER_ID_ANY is specified, the Service will assign a unique ID for the newly created worker.
If a specific ID is used, the Service will look for an existing Worker with matching ID. If one exists, the Service will establish a new connection to the existing Worker. If a matching Worker does not exist, a new Worker will be created with the specified Worker ID.
Parallel tasks can coordinate by using a convention for worker_id which includes task ID and worker index. task ID should come from a launcher. Worker index can be derived using a local process rank (also from a launcher) and the desired number of workers. The number of workers should be based on the number of available cores for offload, which can be queried through DOCA UROM. The process for setting up workers is then:
1. Query DOCA UROM for available cores on the Service 2. Query launcher for task_id and local_rank 3. Derive ID: worker_id = task_id << 32 | (local_rank % cores) 4. Create a new Worker context with the derived worker_id
- doca_error_t doca_urom_worker_set_max_inflight_tasks ( doca_urom_worker* worker_ctx, uint32_t max_tasks )
-
Set Worker maximum in-flight tasks.
Parameters
- worker_ctx
- The UROM Worker context.
- max_tasks
- The maximum number of tasks to set, should be power of two.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx is a NULL pointer.
- DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
- doca_error_t doca_urom_worker_set_plugins ( doca_urom_worker* worker_ctx, uint64_t plugins )
-
This method adds plugins mask for the supported plugins by the UROM Worker on the DPU.
Parameters
- worker_ctx
- The UROM Worker context
- plugins
- The plugin types (Expected as a bit mask on the plugin index's).
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer or plugin is an unreasonable value.
- DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
- doca_error_t doca_urom_worker_set_service ( doca_urom_worker* worker_ctx, doca_urom_service* service_ctx )
-
This method attaches a UROM Service to the Worker context.
Parameters
- worker_ctx
- The UROM Worker context.
- service_ctx
- The UROM Service context that will serve this worker.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
The Worker will be launched on the DOCA Device managed by the provided Service.
1.23.4. DOCA UROM Worker Tasks
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Worker Task interfaces and data structures.
There is one main type of Worker task called a Command task. A Command task defines a plugin and a payload. The Command payload is passed to the plugin running on the associated UROM Worker. Individual plugins define the payload format and behavior of each Command. Optionally, a Command task may return some plugin-defined response data upon completion.
As an example, an RDMA plugin may define a Command to perform an offloaded RDMA Send. The plugin defines the arguments required to offload the Send to the Worker. In order to perform this operation, a Command task is created and formatted to describe the Send. The user then submits the Task to initiate the operation.
Functions
- doca_error_t doca_urom_worker_cmd_task_allocate ( doca_urom_worker* worker_ctx, doca_urom_worker_cmd_task** task )
- Allocate Worker Command task.
- doca_error_t doca_urom_worker_cmd_task_allocate_init ( doca_urom_worker* worker_ctx, uint64_t plugin, doca_urom_worker_cmd_task** task )
- Allocate and initialize Worker Command task.
- DOCA_EXPERIMENTAL doca_buf* doca_urom_worker_cmd_task_get_payload ( doca_urom_worker_cmd_task* task )
- Get Worker Command task payload.
- DOCA_EXPERIMENTAL doca_buf* doca_urom_worker_cmd_task_get_response ( doca_urom_worker_cmd_task* task )
- Get Worker Command task response.
- DOCA_EXPERIMENTAL void* doca_urom_worker_cmd_task_get_user_data ( doca_urom_worker_cmd_task* task )
- Get Worker Command user data to populate.
- doca_error_t doca_urom_worker_cmd_task_release ( doca_urom_worker_cmd_task* task )
- Release Worker Command task.
- DOCA_EXPERIMENTAL void doca_urom_worker_cmd_task_set_cb ( doca_urom_worker_cmd_task* task, doca_urom_worker_cmd_task_completion_cb_t cb )
- Set Worker Command task callback.
- DOCA_EXPERIMENTAL void doca_urom_worker_cmd_task_set_plugin ( doca_urom_worker_cmd_task* task, uint64_t plugin )
- Set Worker Command task plugin.
Functions
- doca_error_t doca_urom_worker_cmd_task_allocate ( doca_urom_worker* worker_ctx, doca_urom_worker_cmd_task** task )
-
Allocate Worker Command task.
Parameters
- worker_ctx
- The Worker used for the task.
- task
- The new task.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - Failed to allocate task.
Description
- doca_error_t doca_urom_worker_cmd_task_allocate_init ( doca_urom_worker* worker_ctx, uint64_t plugin, doca_urom_worker_cmd_task** task )
-
Allocate and initialize Worker Command task.
Parameters
- worker_ctx
- The Worker used for the task.
- plugin
- The plugin to use for the task.
- task
- The new task.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NO_MEMORY - Failed to allocate task.
Description
- DOCA_EXPERIMENTAL doca_buf* doca_urom_worker_cmd_task_get_payload ( doca_urom_worker_cmd_task* task )
-
Get Worker Command task payload.
Parameters
- task
- The task to return a payload from.
Returns
The payload buffer to return
Description
- DOCA_EXPERIMENTAL doca_buf* doca_urom_worker_cmd_task_get_response ( doca_urom_worker_cmd_task* task )
-
Get Worker Command task response.
Parameters
- task
- The task to return a response from.
Returns
The response buffer to return
Description
- DOCA_EXPERIMENTAL void* doca_urom_worker_cmd_task_get_user_data ( doca_urom_worker_cmd_task* task )
-
Get Worker Command user data to populate.
Parameters
- task
- The task to return a user data
Returns
The user data buffer (Maximum data size is 32 Bytes)
Description
- doca_error_t doca_urom_worker_cmd_task_release ( doca_urom_worker_cmd_task* task )
-
Release Worker Command task.
Parameters
- task
- The task to release
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - Task resources still in use.
Description
- DOCA_EXPERIMENTAL void doca_urom_worker_cmd_task_set_cb ( doca_urom_worker_cmd_task* task, doca_urom_worker_cmd_task_completion_cb_t cb )
-
Set Worker Command task callback.
Parameters
- task
- The task used to set the callback on.
- cb
- The task callback to set.
Description
- DOCA_EXPERIMENTAL void doca_urom_worker_cmd_task_set_plugin ( doca_urom_worker_cmd_task* task, uint64_t plugin )
-
Set Worker Command task plugin.
Parameters
- task
- The task used to set the plugin on.
- plugin
- The task plugin to set.
Description
1.23.5. DOCA UROM Domains
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Domain interfaces and data structures.
The UROM Domain represents a collection of UROM Workers working in coordination. Each Worker in the Domain provides a set of memory resources during creation. When the Domain is initialized, memory descriptors are exchanged between all Workers. Workers within a Domain may communicate directly using exchanged these memory descriptors.
Domain initialization is a collective operation. The user is responsible to provide a mechanism for non-blocking allgather communication among all processes which participate in the Domain.
A Domain is only required when using Worker plugins which implement a parallel communication model.
Classes
-
struct doca_urom_domain_oob_coll
- Out-of-band communication descriptor for Domain creation.
Typedefs
- typedef doca_error_t ( *doca_urom_domain_allgather_cb_t )( void* sbuf, void* rbuf, size_t msglen, void* coll_info, void* *req )
- Callback for a non-blocking allgather operation.
- typedef doca_error_t ( *doca_urom_domain_req_free_cb_t )( void* req )
- Callback to free a non-blocking allgather request.
- typedef doca_error_t ( *doca_urom_domain_req_test_cb_t )( void* req )
- Callback to test the status of a non-blocking allgather request.
Functions
- doca_error_t doca_urom_domain_add_buffer ( doca_urom_domain* domain_ctx, void* buffer, size_t buf_len, void* memh, size_t memh_len, void* mkey, size_t mkey_len )
- This method attaches local buffer attributes to the Domain. Should be called after calling doca_urom_domain_set_buffers_count().
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_domain_as_ctx ( doca_urom_domain* domain_ctx )
- doca_error_t doca_urom_domain_create ( doca_urom_domain** domain_ctx )
- This method creates a UROM Domain context.
- doca_error_t doca_urom_domain_destroy ( doca_urom_domain* domain_ctx )
- doca_error_t doca_urom_domain_set_buffers_count ( doca_urom_domain* domain_ctx, size_t buffers_cnt )
- This method attaches the number of local buffers that will be added to the Domain.
- doca_error_t doca_urom_domain_set_oob ( doca_urom_domain* domain_ctx, doca_urom_domain_oob_coll* oob )
- Set OOB communication info to be used for Domain initialization.
- doca_error_t doca_urom_domain_set_workers ( doca_urom_domain* domain_ctx, uint64_t* domain_worker_ids, doca_urom_worker** workers, size_t workers_cnt )
- Set the list of Workers in the domain.
Typedefs
- doca_error_t ( *doca_urom_domain_allgather_cb_t )( void* sbuf, void* rbuf, size_t msglen, void* coll_info, void* *req )
Callback for a non-blocking allgather operation.
- doca_error_t ( *doca_urom_domain_req_free_cb_t )( void* req )
Callback to free a non-blocking allgather request.
- doca_error_t ( *doca_urom_domain_req_test_cb_t )( void* req )
Callback to test the status of a non-blocking allgather request.
Functions
- doca_error_t doca_urom_domain_add_buffer ( doca_urom_domain* domain_ctx, void* buffer, size_t buf_len, void* memh, size_t memh_len, void* mkey, size_t mkey_len )
-
This method attaches local buffer attributes to the Domain. Should be called after calling doca_urom_domain_set_buffers_count().
Parameters
- domain_ctx
- The UROM Domain context to attach the buffers to.
- buffer
- buffer ready for remote access which are given to the Domain.
- buf_len
- The buffer length.
- memh
- The memory handle for the exported buffer. (should be packed)
- memh_len
- The memory handle size.
- mkey
- The memory key for the exported buffer. (should be packed)
- mkey_len
- The memory key size.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - domain_ctx argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - if buffers count wasn't set.
- DOCA_ERROR_FULL - if buffers array is full, reached the buffer count.
Description
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_domain_as_ctx ( doca_urom_domain* domain_ctx )
-
Parameters
- domain_ctx
- Domain context instance. This must remain valid until after the context is no longer required.
Returns
Non NULL upon success, NULL otherwise.
Description
Convert domain_ctx instance into a generalized context for use with DOCA core objects.
- doca_error_t doca_urom_domain_create ( doca_urom_domain** domain_ctx )
-
This method creates a UROM Domain context.
Parameters
- domain_ctx
- The UROM domain.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - domain_ctx argument is a NULL pointer.
- DOCA_ERROR_NO_MEMORY - failed to allocate domain_ctx.
Description
A Domain is created in state `DOCA_CTX_STATE_IDLE`. After creation, a user may configure the Domain using setter methods. Before use, a Domain must be transitioned to state `DOCA_CTX_STATE_RUNNING` using the `doca_ctx_start()` interface. A typical invocation looks like:
`doca_ctx_start(doca_urom_domain_as_ctx(domain_ctx))`
- doca_error_t doca_urom_domain_destroy ( doca_urom_domain* domain_ctx )
-
Parameters
- domain_ctx
- Pointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - Domain ctx state isn't IDLE.
- DOCA_ERROR_IN_USE - Unable to gain exclusive access to the domain_ctx instance.
Description
- doca_error_t doca_urom_domain_set_buffers_count ( doca_urom_domain* domain_ctx, size_t buffers_cnt )
-
This method attaches the number of local buffers that will be added to the Domain.
Parameters
- domain_ctx
- The UROM Domain context to attach the buffers to.
- buffers_cnt
- The number of buffers.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - domain_ctx argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - domain_ctx is not idle.
- DOCA_ERROR_NO_MEMORY - if buffers array allocation failed.
Description
- doca_error_t doca_urom_domain_set_oob ( doca_urom_domain* domain_ctx, doca_urom_domain_oob_coll* oob )
-
Set OOB communication info to be used for Domain initialization.
Parameters
- domain_ctx
- The UROM Domain context to set OOB info to.
- oob
- The OOB communication info to set.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - domain_ctx or oob argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - domain_ctx is not idle.
- DOCA_ERROR_NO_MEMORY - OOB memory allocation failed.
Description
- doca_error_t doca_urom_domain_set_workers ( doca_urom_domain* domain_ctx, uint64_t* domain_worker_ids, doca_urom_worker** workers, size_t workers_cnt )
-
Set the list of Workers in the domain.
Parameters
- domain_ctx
- The UROM Domain context to attach the resources to.
- domain_worker_ids
- List of Domain Worker IDs.
- workers
- An array of UROM Worker contexts which should be part of the domain.
- workers_cnt
- The number of workers in the given array.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - domain_ctx or workers argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - domain_ctx is not idle.
- DOCA_ERROR_NO_MEMORY - workers buffer allocation failed.
Description
1.23.6. DOCA UROM Plugins
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Worker Plugin interfaces and data structures.
Classes
-
struct doca_urom_service_plugin_info
-
struct urom_domain_lookups_iface
- UROM Worker domain lookups interface.
-
struct urom_plugin_iface
- UROM Worker plugin interface.
-
struct urom_worker_cmd
- UROM Worker command structure.
-
struct urom_worker_cmd_desc
- UROM Worker command descriptor structure.
-
struct urom_worker_ctx
- UROM worker context.
-
struct urom_worker_notif_desc
- UROM Worker notification descriptor structure.
-
struct urom_worker_notify
- UROM Worker notification structure.
Defines
- #define DOCA_UROM_PLUGIN_NAME_MAX_LEN 48
Functions
- doca_error_t doca_urom_worker_domain_addr_lookup ( urom_worker_ctx* ctx, uint64_t domain_id, void** addr )
- Worker domain address lookup.
- doca_error_t doca_urom_worker_domain_memh_lookup ( urom_worker_ctx* ctx, uint64_t domain_id, int seg, size_t* len, void** memh )
- Worker domain segment memory handle lookup according to the domain and segment ids.
- doca_error_t doca_urom_worker_domain_mkey_lookup ( urom_worker_ctx* ctx, uint64_t domain_id, int seg, size_t* len, void** rkey )
- Worker domain segment remote memory key lookup according to the segment and seg ids.
- doca_error_t doca_urom_worker_domain_seg_lookup ( urom_worker_ctx* ctx, uint64_t domain_id, uint64_t va, int* seg )
- Worker domain segment id lookup according to the domain id and segment virtual address.
Defines
Functions
- doca_error_t doca_urom_worker_domain_addr_lookup ( urom_worker_ctx* ctx, uint64_t domain_id, void** addr ) [inline]
-
Worker domain address lookup.
Parameters
- ctx
- UROM worker context
- domain_id
- UROM domain id
- addr
- Set domain address
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - if domain_id is invalid.
Description
- doca_error_t doca_urom_worker_domain_memh_lookup ( urom_worker_ctx* ctx, uint64_t domain_id, int seg, size_t* len, void** memh ) [inline]
-
Worker domain segment memory handle lookup according to the domain and segment ids.
Parameters
- ctx
- UROM worker context
- domain_id
- UROM domain id
- seg
- Segment id
- len
- Set memory handle size
- memh
- Set memory handle
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - in case memh doesn't exist
Description
- doca_error_t doca_urom_worker_domain_mkey_lookup ( urom_worker_ctx* ctx, uint64_t domain_id, int seg, size_t* len, void** rkey ) [inline]
-
Worker domain segment remote memory key lookup according to the segment and seg ids.
Parameters
- ctx
- UROM worker context
- domain_id
- UROM domain id
- seg
- Segment id
- len
- Set memory handle size
- rkey
- Set memory remote key
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - in case rkey doesn't exist
Description
- doca_error_t doca_urom_worker_domain_seg_lookup ( urom_worker_ctx* ctx, uint64_t domain_id, uint64_t va, int* seg ) [inline]
-
Worker domain segment id lookup according to the domain id and segment virtual address.
Parameters
- ctx
- UROM worker context
- domain_id
- UROM domain id
- va
- Segment virtual address
- seg
- Set segment id
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - if an invalid input had been received.
- DOCA_ERROR_NOT_FOUND - in case seg doesn't exist
Description
1.23.1. DOCA UROM Services
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Service interfaces and data structures.
The UROM Service manages Workers running on a DOCA device.
Defines
- #define DOCA_CPU_SET ( _cpu, _cpusetp )
- Set specific bit in DOCA CPU set.
- #define DOCA_CPU_ZERO ( _cpusetp ) UCS_CPU_ZERO(_cpusetp)
- Set DOCA CPU set to zero.
- #define doca_cpu_is_set ( _cpu, _cpusetp )
- Check if specific bit in DOCA CPU is set.
Typedefs
- typedef ucs_cpu_set_t doca_cpu_set_t
- DOCA CPU set structure.
- typedef void ( *doca_urom_service_get_workers_by_gid_task_completion_cb_t )( doca_urom_service_get_workers_by_gid_task* task, union doca_data task_user_data, union doca_data ctx_user_data )
- Service get workers task completion callback type.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_service_as_ctx ( doca_urom_service* service_ctx )
- Convert service_ctx instance into a generalized context for use with DOCA core objects.
- doca_error_t doca_urom_service_create ( doca_urom_service** service_ctx )
- This method creates a UROM Service context.
- doca_error_t doca_urom_service_destroy ( doca_urom_service* service_ctx )
- This method destroys a UROM Service context.
- doca_error_t doca_urom_service_get_cpuset ( doca_urom_service* service_ctx, doca_cpu_set_t* cpuset )
- Get the allowed CPU set for the service.
- doca_error_t doca_urom_service_get_plugins_list ( doca_urom_service* service_ctx, const doca_urom_service_plugin_info** plugins, size_t* plugins_count )
- This method gets the list of supported plugins on service's DPU side.
- doca_error_t doca_urom_service_set_dev ( doca_urom_service* service_ctx, doca_dev* dev )
- This method attaches a DOCA Device to the UROM Service context.
- doca_error_t doca_urom_service_set_max_comm_msg_size ( doca_urom_service* service_ctx, size_t msg_size )
- Set the maximum message size for the UROM communication channel.
- doca_error_t doca_urom_service_set_max_workers ( doca_urom_service* service_ctx, uint32_t max_workers )
- Set maximum number of UROM workers.
Defines
- #define DOCA_CPU_SET ( _cpu, _cpusetp )
-
Value
UCS_CPU_SET(_cpu, _cpusetp)
- #define DOCA_CPU_ZERO ( _cpusetp ) UCS_CPU_ZERO(_cpusetp)
-
- #define doca_cpu_is_set ( _cpu, _cpusetp )
-
Value
ucs_cpu_is_set(_cpu, _cpusetp)
Typedefs
- typedef ucs_cpu_set_t doca_cpu_set_t
DOCA CPU set structure.
- void ( *doca_urom_service_get_workers_by_gid_task_completion_cb_t )( doca_urom_service_get_workers_by_gid_task* task, union doca_data task_user_data, union doca_data ctx_user_data )
Service get workers task completion callback type.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_service_as_ctx ( doca_urom_service* service_ctx )
-
Convert service_ctx instance into a generalized context for use with DOCA core objects.
Parameters
- service_ctx
- Service context instance. This must remain valid until after the context is no longer required.
Returns
Non NULL upon success, NULL otherwise.
Description
- doca_error_t doca_urom_service_create ( doca_urom_service** service_ctx )
-
This method creates a UROM Service context.
Parameters
- service_ctx
- The DOCA UROM Service
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - service_ctx argument is a NULL pointer.
- DOCA_ERROR_NO_MEMORY - failed to alloc service_ctx.
Description
The UROM Service runs on a DOCA Device. A Service manages UROM Workers which run on the Device. A Worker runs UROM Plugins which implement application logic which runs on the Device.
A Service is created in state `DOCA_CTX_STATE_IDLE`. After creation, a user may configure the Service using setter methods (e.g. `doca_urom_service_set_dev()`). Before use, a Service must be transitioned to state `DOCA_CTX_STATE_RUNNING` using the `doca_ctx_start()` interface. A typical invocation looks like:
`doca_ctx_start(doca_urom_service_as_ctx(service_ctx))`
- doca_error_t doca_urom_service_destroy ( doca_urom_service* service_ctx )
-
This method destroys a UROM Service context.
Parameters
- service_ctx
- Pointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_NOT_PERMITTED - Service isn't in IDLE state.
- DOCA_ERROR_IN_USE - One or more work queues are still attached. These must be detached first.
Description
- doca_error_t doca_urom_service_get_cpuset ( doca_urom_service* service_ctx, doca_cpu_set_t* cpuset )
-
Get the allowed CPU set for the service.
Parameters
- service_ctx
- Service context instance.
- cpuset
- Set of allowed CPUs.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - service_ctx is not started.
Description
- doca_error_t doca_urom_service_get_plugins_list ( doca_urom_service* service_ctx, const doca_urom_service_plugin_info** plugins, size_t* plugins_count )
-
This method gets the list of supported plugins on service's DPU side.
Parameters
- service_ctx
- Service context instance.
- plugins
- Set of supported plugins.
- plugins_count
- Set of plugins number.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - service_ctx is not running.
- DOCA_ERROR_NOT_FOUND - No plugins were discovered on DPU side.
Description
- doca_error_t doca_urom_service_set_dev ( doca_urom_service* service_ctx, doca_dev* dev )
-
This method attaches a DOCA Device to the UROM Service context.
Parameters
- service_ctx
- The UROM Service context to attach the device to.
- dev
- The device to attach.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer.
- DOCA_ERROR_NOT_SUPPORTED - UROM is not supported
- DOCA_ERROR_BAD_STATE - service_ctx is not idle.
Description
Attaching to a DOCA Device is mandatory, network address will be extracted from services mapping that is defined in the user environment DOCA_UROM_SERVICE_FILE
- doca_error_t doca_urom_service_set_max_comm_msg_size ( doca_urom_service* service_ctx, size_t msg_size )
-
Set the maximum message size for the UROM communication channel.
Parameters
- service_ctx
- The UROM Service context to set comm msg size
- msg_size
- The maximum message size.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - service_ctx argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - service_ctx is not idle.
Description
This method sets the maximum size for message in UROM communication channel, default message size is 4096B. The communication channel message is composed of the UROM urom_worker_notify/urom_worker_cmd structures and the plugin payload (command/notification). It's important to ensure that the combined size of plugins' commands and notifications, along with the UROM structures size, does not exceed this maximum size.
- doca_error_t doca_urom_service_set_max_workers ( doca_urom_service* service_ctx, uint32_t max_workers )
-
Set maximum number of UROM workers.
Parameters
- service_ctx
- The UROM Service context to set number of workers.
- max_workers
- The maximum number of workers, Must be a power of 2.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - service_ctx argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - service_ctx is not idle.
Description
This method sets the maximum number of spawned workers
1.23.2. DOCA UROM Environment Variables
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Environment Variables.
DOCA UROM environment variables are described in the following table.
Variable | Description ------------- | ------------- DOCA_UROM_SERVICE_FILE | Path to the UROM Service File.
DOCA_UROM_SERVICE_FILE
This variable sets the path to the UROM Service File. When creating a UROM Service, UROM performs a look up using this file, the hostname where an application is running, and the PCI address of the associated DOCA device to identify the network address, and network devices associated with the UROM Service.
This file contains one entry per line describing the location of each UROM Service that may be used by UROM. The format of each line must be as follows:
<app_hostname> <service_type> <dev_hostname> <dev_pci_addr> <net,devs>
Fields are described in the following table.
| Field | Description | | ------------- | ----------- | | app_hostname | Network host name (or IP address) for the node that this line applies to. | | service_type | The UROM service type. Valid type is `dpu`. Type `dpu` is used for all DOCA Devices. | | dev_hostname | Network host name (or IP address) for the associated DOCA device. | | dev_pci_addr | PCI address of the associated DOCA device. This must match the PCI address provided by DOCA. | | net,devs | Comma-separated list of network devices which are shared between the host and DOCA device. |
As an example, an application running on a single node (named app_host1) which has a UROM Service running on DPU (named dpu_host1) would have a Service Directory file with the following entries:
app_host1 dpu dpu_host1 03:00.0 dev1:1,dev2:1
1.23.3. DOCA UROM Workers
[ DOCA UROM (Unified Resource and Offload Manager) ]
DOCA UROM Worker interfaces and data structures.
The UROM Worker represents a process running on a DOCA device. The process may be used to offload application logic to the device. Application logic is defined in Worker plugins. A Worker may be configured to support one or more plugins concurrently. Users submit DOCA tasks to a Worker in order to initiate an offloaded operation.
Defines
- #define DOCA_UROM_WORKER_ID_ANY -1ULL
- DOCA UROM WORKER ID any give the library the responsibility to generate a worker id.
Typedefs
- typedef void ( *doca_urom_worker_cmd_task_completion_cb_t )( doca_urom_worker_cmd_task* task, union doca_data task_user_data, union doca_data ctx_user_data )
- Worker Command task completion callback type.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_worker_as_ctx ( doca_urom_worker* worker_ctx )
- doca_error_t doca_urom_worker_create ( doca_urom_worker** worker_ctx )
- This method creates a UROM Worker context.
- doca_error_t doca_urom_worker_destroy ( doca_urom_worker* worker_ctx )
- This method destroys a UROM Worker context.
- doca_error_t doca_urom_worker_get_gid ( doca_urom_worker* worker_ctx, uint32_t* worker_gid )
- This method gets the Worker context group ID to be used to identify the Worker group that belongs to.
- doca_error_t doca_urom_worker_get_id ( doca_urom_worker* worker_ctx, uint64_t* worker_id )
- This method gets the Worker context ID to be used to identify the Worker. Worker IDs enable an application to establish multiple connections to the same Worker process running on a DOCA Device. If when creating the worker the user sets worker id equals to DOCA_UROM_WORKER_ID_ANY the library will generate new id for the worker.
- doca_error_t doca_urom_worker_set_cpuset ( doca_urom_worker* worker_ctx, doca_cpu_set_t cpuset )
- Set the allowed CPUs for the Worker. The cpuset must be a subset of the service's allowed CPUs.
- doca_error_t doca_urom_worker_set_env ( doca_urom_worker* worker_ctx, const char* env, size_t count )
- Set worker env variables when spawning worker on DPU side.
- doca_error_t doca_urom_worker_set_gid ( doca_urom_worker* worker_ctx, uint32_t gid )
- Set worker group ID, must be set before starting the worker context.
- doca_error_t doca_urom_worker_set_id ( doca_urom_worker* worker_ctx, uint64_t worker_id )
- This method sets the Worker context ID to be used to identify the Worker. Worker IDs enable an application to establish multiple connections to the same Worker process running on a DOCA Device.
- doca_error_t doca_urom_worker_set_max_inflight_tasks ( doca_urom_worker* worker_ctx, uint32_t max_tasks )
- Set Worker maximum in-flight tasks.
- doca_error_t doca_urom_worker_set_plugins ( doca_urom_worker* worker_ctx, uint64_t plugins )
- This method adds plugins mask for the supported plugins by the UROM Worker on the DPU.
- doca_error_t doca_urom_worker_set_service ( doca_urom_worker* worker_ctx, doca_urom_service* service_ctx )
- This method attaches a UROM Service to the Worker context.
Defines
Typedefs
- void ( *doca_urom_worker_cmd_task_completion_cb_t )( doca_urom_worker_cmd_task* task, union doca_data task_user_data, union doca_data ctx_user_data )
Worker Command task completion callback type.
Functions
- DOCA_EXPERIMENTAL doca_ctx* doca_urom_worker_as_ctx ( doca_urom_worker* worker_ctx )
-
Parameters
- worker_ctx
- Worker context instance. This must remain valid until after the context is no longer required.
Returns
Non NULL upon success, NULL otherwise.
Description
Convert worker_ctx instance into a generalized context for use with DOCA core objects.
- doca_error_t doca_urom_worker_create ( doca_urom_worker** worker_ctx )
-
This method creates a UROM Worker context.
Parameters
- worker_ctx
- The new Worker context.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer.
- DOCA_ERROR_NO_MEMORY - failed to alloc worker_ctx.
Description
`
A Worker is created in state `DOCA_CTX_STATE_IDLE`. After creation, a user may configure the Worker using setter methods (e.g. `doca_urom_worker_set_service()`). Before use, a Worker must be transitioned to state `DOCA_CTX_STATE_RUNNING` using the `doca_ctx_start()` interface. A typical invocation looks like:
`doca_ctx_start(doca_urom_worker_as_ctx(worker_ctx))`
- doca_error_t doca_urom_worker_destroy ( doca_urom_worker* worker_ctx )
-
This method destroys a UROM Worker context.
Parameters
- worker_ctx
- Pointer to instance to be destroyed.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Unable to gain exclusive access to the worker_ctx instance.
- DOCA_ERROR_IN_USE - One or more work queues are still attached. These must be detached first.
Description
- doca_error_t doca_urom_worker_get_gid ( doca_urom_worker* worker_ctx, uint32_t* worker_gid )
-
This method gets the Worker context group ID to be used to identify the Worker group that belongs to.
Parameters
- worker_ctx
- The UROM Worker context.
- worker_gid
- The UROM Worker group ID.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer.
Description
- doca_error_t doca_urom_worker_get_id ( doca_urom_worker* worker_ctx, uint64_t* worker_id )
-
This method gets the Worker context ID to be used to identify the Worker. Worker IDs enable an application to establish multiple connections to the same Worker process running on a DOCA Device. If when creating the worker the user sets worker id equals to DOCA_UROM_WORKER_ID_ANY the library will generate new id for the worker.
Parameters
- worker_ctx
- The UROM Worker context.
- worker_id
- The UROM Worker ID.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer.
Description
- doca_error_t doca_urom_worker_set_cpuset ( doca_urom_worker* worker_ctx, doca_cpu_set_t cpuset )
-
Set the allowed CPUs for the Worker. The cpuset must be a subset of the service's allowed CPUs.
Parameters
- worker_ctx
- The UROM Worker context.
- cpuset
- The set of allowed CPUs.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure: DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer, or, the the cpuset is invalid. DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
- doca_error_t doca_urom_worker_set_env ( doca_urom_worker* worker_ctx, const char* env, size_t count )
-
Set worker env variables when spawning worker on DPU side.
Parameters
- worker_ctx
- The UROM Worker context.
- env
- A string array containing name=value tuples.
- count
- String array size.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer, or, count in invalid.
- DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
Must be set before starting the worker context, will fail spawn command if worker already spawned on the DPU. The env variable value shouldn't contain spaces.
- doca_error_t doca_urom_worker_set_gid ( doca_urom_worker* worker_ctx, uint32_t gid )
-
Set worker group ID, must be set before starting the worker context.
Parameters
- worker_ctx
- The UROM Worker context.
- gid
- group id
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure: DOCA_ERROR_INVALID_VALUE - Any argument is a NULL pointer, or, the the cpuset is invalid. DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
- doca_error_t doca_urom_worker_set_id ( doca_urom_worker* worker_ctx, uint64_t worker_id )
-
This method sets the Worker context ID to be used to identify the Worker. Worker IDs enable an application to establish multiple connections to the same Worker process running on a DOCA Device.
Parameters
- worker_ctx
- The UROM Worker context.
- worker_id
- The UROM Worker ID.
Returns
DOCA_SUCCESS - in case of success. doca_error code - in case of failure:
- DOCA_ERROR_INVALID_VALUE - worker_ctx argument is a NULL pointer.
- DOCA_ERROR_BAD_STATE - worker_ctx is not idle.
Description
Worker ID must be unique to a UROM Service. If DOCA_UROM_WORKER_ID_ANY is specified, the Service will assign a unique ID for the newly created worker.
If a specific ID is used, the Service will look for an existing Worker with matching ID. If one exists, the Service will establish a new connection to the existing Worker. If a matching Worker does not exist, a new Worker will be created with the specified Worker ID.
Parallel tasks can coordinate by using a convention for worker_id which includes task ID and worker index. task ID should come from a launcher. Worker index can be derived using a local process rank (also from a launcher) and the desired number of workers. The number of workers should be based on the number of available cores for offload, which can be queried through DOCA UROM. The process for setting up workers is then:
1. Query DOCA UROM for available cores on the Service 2. Query launcher for task_id and local_rank 3. Derive ID: worker_id = task_id << 32 | (local_rank % cores) 4. Create a new Worker context with the derived worker_id
- doca_error_t doca_urom_worker_set_max_inflight_tasks ( doca_urom_worker* worker_ctx, uint32_t max_tasks )
-
Set Worker maximum in-flight tasks.
Parameters
- worker_ctx
- The UROM Worker context.
- max_tasks
- The maximum number of tasks to set, should be power of two.
Returns
DOCA_SUCCESS - in case of success. doca_error co