---
name: "rte_table.h"
section: "3"
platform: "linux"
package: "dpdk-doc"
version: "24.11.4-0+deb13u1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/rte_table.h"
---

# rte\_table.h(3)

## NAME

rte\_table.h

## SYNOPSIS

`#include <stdint.h>`\
 `#include <rte_port.h>`\

### Data Structures

struct **rte\_table\_stats**\
 struct **rte\_table\_ops**\

### Typedefs

**typedef** void \*(\* **rte\_table\_op\_create**) (void \*params, int socket\_id, uint32\_t entry\_size)\
 **typedef** int(\* **rte\_table\_op\_free**) (void \*table)\
 **typedef** int(\* **rte\_table\_op\_entry\_add**) (void \*table, void \*key, void \*entry, int \*key\_found, void \*\*entry\_ptr)\
 **typedef** int(\* **rte\_table\_op\_entry\_delete**) (void \*table, void \*key, int \*key\_found, void \*entry)\
 **typedef** int(\* **rte\_table\_op\_entry\_add\_bulk**) (void \*table, void \*\*keys, void \*\*entries, uint32\_t n\_keys, int \*key\_found, void \*\*entries\_ptr)\
 **typedef** int(\* **rte\_table\_op\_entry\_delete\_bulk**) (void \*table, void \*\*keys, uint32\_t n\_keys, int \*key\_found, void \*\*entries)\
 **typedef** int(\* **rte\_table\_op\_lookup**) (void \*table, struct **rte\_mbuf** \*\*pkts, uint64\_t pkts\_mask, uint64\_t \*lookup\_hit\_mask, void \*\*entries)\
 **typedef** int(\* **rte\_table\_op\_stats\_read**) (void \*table, struct **rte\_table\_stats** \*stats, int clear)\

## Detailed Description

RTE Table

This tool is part of the DPDK Packet Framework tool suite and provides a standard interface to implement different types of lookup tables for data plane processing.

Virtually any search algorithm that can uniquely associate data to a lookup key can be fitted under this lookup table abstraction. For the flow table use-case, the lookup key is an n-tuple of packet fields that uniquely identifies a traffic flow, while data represents actions and action meta-data associated with the same traffic flow.

Definition in file **rte\_table.h**.

## Typedef Documentation

### typedef void \*(\* rte\_table\_op\_create) (void \*params, int socket\_id, uint32\_t entry\_size)

Lookup table create

**Parameters**

*params* Parameters for lookup table creation. The underlying data structure is different for each lookup table type. \
 *socket\_id* CPU socket ID (e.g. for memory allocation purpose) \
 *entry\_size* Data size of each lookup table entry (measured in bytes)

**Returns**

Handle to lookup table instance

Definition at line **47** of file **rte\_table.h**.

### typedef int(\* rte\_table\_op\_free) (void \*table)

Lookup table free

**Parameters**

*table* Handle to lookup table instance

**Returns**

0 on success, error code otherwise

Definition at line **58** of file **rte\_table.h**.

### typedef int(\* rte\_table\_op\_entry\_add) (void \*table, void \*key, void \*entry, int \*key\_found, void \*\*entry\_ptr)

Lookup table entry add

**Parameters**

*table* Handle to lookup table instance \
 *key* Lookup key \
 *entry* Data to be associated with the current key. This parameter has to point to a valid memory buffer where the first entry\_size bytes (table create parameter) are populated with the data. \
 *key\_found* After successful invocation, \*key\_found is set to a value different than 0 if the current key is already present in the table and to 0 if not. This pointer has to be set to a valid memory location before the table entry add function is called. \
 *entry\_ptr* After successful invocation, \*entry\_ptr stores the handle to the table entry containing the data associated with the current key. This handle can be used to perform further read-write accesses to this entry. This handle is valid until the key is deleted from the table or the same key is re-added to the table, typically to associate it with different data. This pointer has to be set to a valid memory location before the function is called.

**Returns**

0 on success, error code otherwise

Definition at line **87** of file **rte\_table.h**.

### typedef int(\* rte\_table\_op\_entry\_delete) (void \*table, void \*key, int \*key\_found, void \*entry)

Lookup table entry delete

**Parameters**

*table* Handle to lookup table instance \
 *key* Lookup key \
 *key\_found* After successful invocation, \*key\_found is set to a value different than 0 if the current key was present in the table before the delete operation was performed and to 0 if not. This pointer has to be set to a valid memory location before the table entry delete function is called. \
 *entry* After successful invocation, if the key is found in the table (\*key found is different than 0 after function call is completed) and entry points to a valid buffer (entry is set to a value different than NULL before the function is called), then the first entry\_size bytes (table create parameter) in \*entry store a copy of table entry that contained the data associated with the current key before the key was deleted.

**Returns**

0 on success, error code otherwise

Definition at line **116** of file **rte\_table.h**.

### typedef int(\* rte\_table\_op\_entry\_add\_bulk) (void \*table, void \*\*keys, void \*\*entries, uint32\_t n\_keys, int \*key\_found, void \*\*entries\_ptr)

Lookup table entry add bulk

**Parameters**

*table* Handle to lookup table instance \
 *keys* Array containing lookup keys \
 *entries* Array containing data to be associated with each key. Every item in the array has to point to a valid memory buffer where the first entry\_size bytes (table create parameter) are populated with the data. \
 *n\_keys* Number of keys to add \
 *key\_found* After successful invocation, key\_found for every item in the array is set to a value different than 0 if the current key is already present in the table and to 0 if not. This pointer has to be set to a valid memory location before the table entry add function is called. \
 *entries\_ptr* After successful invocation, array \*entries\_ptr stores the handle to the table entry containing the data associated with every key. This handle can be used to perform further read-write accesses to this entry. This handle is valid until the key is deleted from the table or the same key is re-added to the table, typically to associate it with different data. This pointer has to be set to a valid memory location before the function is called.

**Returns**

0 on success, error code otherwise

Definition at line **151** of file **rte\_table.h**.

### typedef int(\* rte\_table\_op\_entry\_delete\_bulk) (void \*table, void \*\*keys, uint32\_t n\_keys, int \*key\_found, void \*\*entries)

Lookup table entry delete bulk

**Parameters**

*table* Handle to lookup table instance \
 *keys* Array containing lookup keys \
 *n\_keys* Number of keys to delete \
 *key\_found* After successful invocation, key\_found for every item in the array is set to a value different than 0if the current key was present in the table before the delete operation was performed and to 0 if not. This pointer has to be set to a valid memory location before the table entry delete function is called. \
 *entries* If entries pointer is NULL, this pointer is ignored for every entry found. Else, after successful invocation, if specific key is found in the table (key\_found is different than 0 for this item after function call is completed) and item of entry array points to a valid buffer (entry is set to a value different than NULL before the function is called), then the first entry\_size bytes (table create parameter) in \*entry store a copy of table entry that contained the data associated with the current key before the key was deleted.

**Returns**

0 on success, error code otherwise

Definition at line **186** of file **rte\_table.h**.

### typedef int(\* rte\_table\_op\_lookup) (void \*table, struct rte\_mbuf \*\*pkts, uint64\_t pkts\_mask, uint64\_t \*lookup\_hit\_mask, void \*\*entries)

Lookup table lookup

**Parameters**

*table* Handle to lookup table instance \
 *pkts* Burst of input packets specified as array of up to 64 pointers to struct **rte\_mbuf** \
 *pkts\_mask* 64-bit bitmask specifying which packets in the input burst are valid. When pkts\_mask bit n is set, then element n of pkts array is pointing to a valid packet. Otherwise, element n of pkts array does not point to a valid packet, therefore it will not be accessed. \
 *lookup\_hit\_mask* Once the table lookup operation is completed, this 64-bit bitmask specifies which of the valid packets in the input burst resulted in lookup hit. For each valid input packet (pkts\_mask bit n is set), the following are true on lookup hit: lookup\_hit\_mask bit n is set, element n of entries array is valid and it points to the lookup table entry that was hit. For each valid input packet (pkts\_mask bit n is set), the following are true on lookup miss: lookup\_hit\_mask bit n is not set and element n of entries array is not valid. \
 *entries* Once the table lookup operation is completed, this array provides the lookup table entries that were hit, as described above. It is required that this array is always pre-allocated by the caller of this function with exactly 64 elements. The implementation is allowed to speculatively modify the elements of this array, so elements marked as invalid in lookup\_hit\_mask once the table lookup operation is completed might have been modified by this function.

**Returns**

0 on success, error code otherwise

Definition at line **226** of file **rte\_table.h**.

### typedef int(\* rte\_table\_op\_stats\_read) (void \*table, struct rte\_table\_stats \*stats, int clear)

Lookup table stats read

**Parameters**

*table* Handle to lookup table instance \
 *stats* Handle to table stats struct to copy data \
 *clear* Flag indicating that stats should be cleared after read

**Returns**

Error code or 0 on success.

Definition at line **246** of file **rte\_table.h**.

## Author

Generated automatically by Doxygen for DPDK from the source code.
