DPDK
1.6.0r2
|
#include <errno.h>
#include <sys/queue.h>
#include <stdint.h>
#include <stdlib.h>
#include <rte_branch_prediction.h>
#include <rte_memory.h>
Macros | |
#define | RTE_LPM_NAMESIZE 32 |
#define | RTE_LPM_HEAP 0 |
#define | RTE_LPM_MEMZONE 1 |
#define | RTE_LPM_MAX_DEPTH 32 |
#define | RTE_LPM_LOOKUP_SUCCESS 0x0100 |
#define | rte_lpm_lookup_bulk(lpm, ips, next_hops, n) rte_lpm_lookup_bulk_func(lpm, ips, next_hops, n) |
Functions | |
struct rte_lpm * | rte_lpm_create (const char *name, int socket_id, int max_rules, int flags) |
struct rte_lpm * | rte_lpm_find_existing (const char *name) |
void | rte_lpm_free (struct rte_lpm *lpm) |
int | rte_lpm_add (struct rte_lpm *lpm, uint32_t ip, uint8_t depth, uint8_t next_hop) |
int | rte_lpm_delete (struct rte_lpm *lpm, uint32_t ip, uint8_t depth) |
void | rte_lpm_delete_all (struct rte_lpm *lpm) |
static int | rte_lpm_lookup (struct rte_lpm *lpm, uint32_t ip, uint8_t *next_hop) |
RTE Longest Prefix Match (LPM)
#define RTE_LPM_HEAP 0 |
#define rte_lpm_lookup_bulk | ( | lpm, | |
ips, | |||
next_hops, | |||
n | |||
) | rte_lpm_lookup_bulk_func(lpm, ips, next_hops, n) |
Lookup multiple IP addresses in an LPM table. This may be implemented as a macro, so the address of the function should not be used.
lpm | LPM object handle |
ips | Array of IPs to be looked up in the LPM table |
next_hops | Next hop of the most specific rule found for IP (valid on lookup hit only). This is an array of two byte values. The most significant byte in each value says whether the lookup was successful (bitmask RTE_LPM_LOOKUP_SUCCESS is set). The least significant byte is the actual next hop. |
n | Number of elements in ips (and next_hops) array to lookup. This should be a compile time constant, and divisible by 8 for best performance. |
#define RTE_LPM_LOOKUP_SUCCESS 0x0100 |
Bitmask used to indicate successful lookup
#define RTE_LPM_MAX_DEPTH 32 |
Maximum depth value possible for IPv4 LPM.
#define RTE_LPM_MEMZONE 1 |
#define RTE_LPM_NAMESIZE 32 |
Max number of characters in LPM name.
int rte_lpm_add | ( | struct rte_lpm * | lpm, |
uint32_t | ip, | ||
uint8_t | depth, | ||
uint8_t | next_hop | ||
) |
Add a rule to the LPM table.
lpm | LPM object handle |
ip | IP of the rule to be added to the LPM table |
depth | Depth of the rule to be added to the LPM table |
next_hop | Next hop of the rule to be added to the LPM table |
|
read |
Create an LPM object.
name | LPM object name |
socket_id | NUMA socket ID for LPM table memory allocation |
max_rules | Maximum number of LPM rules that can be added |
flags | This parameter is currently unused |
int rte_lpm_delete | ( | struct rte_lpm * | lpm, |
uint32_t | ip, | ||
uint8_t | depth | ||
) |
Delete a rule from the LPM table.
lpm | LPM object handle |
ip | IP of the rule to be deleted from the LPM table |
depth | Depth of the rule to be deleted from the LPM table |
void rte_lpm_delete_all | ( | struct rte_lpm * | lpm | ) |
Delete all rules from the LPM table.
lpm | LPM object handle |
|
read |
Find an existing LPM object and return a pointer to it.
name | Name of the lpm object as passed to rte_lpm_create() |
void rte_lpm_free | ( | struct rte_lpm * | lpm | ) |
Free an LPM object.
lpm | LPM object handle |
|
inlinestatic |
Lookup an IP into the LPM table.
lpm | LPM object handle |
ip | IP to be looked up in the LPM table |
next_hop | Next hop of the most specific rule found for IP (valid on lookup hit only) |