Go to the source code of this file.
|
| static void | rte_rib6_copy_addr (uint8_t *dst, const uint8_t *src) |
| |
| static int | rte_rib6_is_equal (const uint8_t *ip1, const uint8_t *ip2) |
| |
| static uint8_t | get_msk_part (uint8_t depth, int byte) |
| |
| struct rte_rib6_node * | rte_rib6_lookup (struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]) |
| |
| struct rte_rib6_node * | rte_rib6_lookup_parent (struct rte_rib6_node *ent) |
| |
| struct rte_rib6_node * | rte_rib6_lookup_exact (struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth) |
| |
| struct rte_rib6_node * | rte_rib6_get_nxt (struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth, struct rte_rib6_node *last, int flag) |
| |
| void | rte_rib6_remove (struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth) |
| |
| struct rte_rib6_node * | rte_rib6_insert (struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth) |
| |
| int | rte_rib6_get_ip (const struct rte_rib6_node *node, uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]) |
| |
| int | rte_rib6_get_depth (const struct rte_rib6_node *node, uint8_t *depth) |
| |
| void * | rte_rib6_get_ext (struct rte_rib6_node *node) |
| |
| int | rte_rib6_get_nh (const struct rte_rib6_node *node, uint64_t *nh) |
| |
| int | rte_rib6_set_nh (struct rte_rib6_node *node, uint64_t nh) |
| |
| struct rte_rib6 * | rte_rib6_create (const char *name, int socket_id, const struct rte_rib6_conf *conf) |
| |
| struct rte_rib6 * | rte_rib6_find_existing (const char *name) |
| |
| void | rte_rib6_free (struct rte_rib6 *rib) |
| |
RTE rib6 library.
Level compressed tree implementation for IPv6 Longest Prefix Match
Definition in file rte_rib6.h.
◆ anonymous enum
rte_rib6_get_nxt() flags
| Enumerator |
|---|
| RTE_RIB6_GET_NXT_ALL | flag to get all subroutes in a RIB tree
|
| RTE_RIB6_GET_NXT_COVER | flag to get first matched subroutes in a RIB tree
|
Definition at line 29 of file rte_rib6.h.
◆ rte_rib6_copy_addr()
| static void rte_rib6_copy_addr |
( |
uint8_t * |
dst, |
|
|
const uint8_t * |
src |
|
) |
| |
|
inlinestatic |
Copy IPv6 address from one location to another
- Parameters
-
| dst | pointer to the place to copy |
| src | pointer from where to copy |
Definition at line 60 of file rte_rib6.h.
◆ rte_rib6_is_equal()
| static int rte_rib6_is_equal |
( |
const uint8_t * |
ip1, |
|
|
const uint8_t * |
ip2 |
|
) |
| |
|
inlinestatic |
Compare two IPv6 addresses
- Parameters
-
| ip1 | pointer to the first ipv6 address |
| ip2 | pointer to the second ipv6 address |
- Returns
- 1 if equal 0 otherwise
Definition at line 80 of file rte_rib6.h.
◆ get_msk_part()
| static uint8_t get_msk_part |
( |
uint8_t |
depth, |
|
|
int |
byte |
|
) |
| |
|
inlinestatic |
Get 8-bit part of 128-bit IPv6 mask
- Parameters
-
| depth | ipv6 prefix length |
| byte | position of a 8-bit chunk in the 128-bit mask |
- Returns
- 8-bit chunk of the 128-bit IPv6 mask
Definition at line 104 of file rte_rib6.h.
◆ rte_rib6_lookup()
| struct rte_rib6_node * rte_rib6_lookup |
( |
struct rte_rib6 * |
rib, |
|
|
const uint8_t |
ip[RTE_RIB6_IPV6_ADDR_SIZE] |
|
) |
| |
Lookup an IP into the RIB structure
- Parameters
-
| rib | RIB object handle |
| ip | IP to be looked up in the RIB |
- Returns
- pointer to struct rte_rib6_node on success NULL otherwise
◆ rte_rib6_lookup_parent()
| struct rte_rib6_node * rte_rib6_lookup_parent |
( |
struct rte_rib6_node * |
ent | ) |
|
Lookup less specific route into the RIB structure
- Parameters
-
| ent | Pointer to struct rte_rib6_node that represents target route |
- Returns
- pointer to struct rte_rib6_node that represents less specific route on success NULL otherwise
◆ rte_rib6_lookup_exact()
| struct rte_rib6_node * rte_rib6_lookup_exact |
( |
struct rte_rib6 * |
rib, |
|
|
const uint8_t |
ip[RTE_RIB6_IPV6_ADDR_SIZE], |
|
|
uint8_t |
depth |
|
) |
| |
Provides exact mach lookup of the prefix into the RIB structure
- Parameters
-
| rib | RIB object handle |
| ip | net to be looked up in the RIB |
| depth | prefix length |
- Returns
- pointer to struct rte_rib6_node on success NULL otherwise
◆ rte_rib6_get_nxt()
| struct rte_rib6_node * rte_rib6_get_nxt |
( |
struct rte_rib6 * |
rib, |
|
|
const uint8_t |
ip[RTE_RIB6_IPV6_ADDR_SIZE], |
|
|
uint8_t |
depth, |
|
|
struct rte_rib6_node * |
last, |
|
|
int |
flag |
|
) |
| |
Retrieve next more specific prefix from the RIB that is covered by ip/depth supernet in an ascending order
- Parameters
-
| rib | RIB object handle |
| ip | net address of supernet prefix that covers returned more specific prefixes |
| depth | supernet prefix length |
| last | pointer to the last returned prefix to get next prefix or NULL to get first more specific prefix |
| flag | -RTE_RIB6_GET_NXT_ALL get all prefixes from subtrie -RTE_RIB6_GET_NXT_COVER get only first more specific prefix even if it have more specifics |
- Returns
- pointer to the next more specific prefix NULL if there is no prefixes left
◆ rte_rib6_remove()
| void rte_rib6_remove |
( |
struct rte_rib6 * |
rib, |
|
|
const uint8_t |
ip[RTE_RIB6_IPV6_ADDR_SIZE], |
|
|
uint8_t |
depth |
|
) |
| |
Remove prefix from the RIB
- Parameters
-
| rib | RIB object handle |
| ip | net to be removed from the RIB |
| depth | prefix length |
◆ rte_rib6_insert()
| struct rte_rib6_node * rte_rib6_insert |
( |
struct rte_rib6 * |
rib, |
|
|
const uint8_t |
ip[RTE_RIB6_IPV6_ADDR_SIZE], |
|
|
uint8_t |
depth |
|
) |
| |
Insert prefix into the RIB
- Parameters
-
| rib | RIB object handle |
| ip | net to be inserted to the RIB |
| depth | prefix length |
- Returns
- pointer to new rte_rib6_node on success NULL otherwise
◆ rte_rib6_get_ip()
| int rte_rib6_get_ip |
( |
const struct rte_rib6_node * |
node, |
|
|
uint8_t |
ip[RTE_RIB6_IPV6_ADDR_SIZE] |
|
) |
| |
Get an ip from rte_rib6_node
- Parameters
-
| node | pointer to the rib6 node |
| ip | pointer to the ipv6 to save |
- Returns
- 0 on success -1 on failure with rte_errno indicating reason for failure.
◆ rte_rib6_get_depth()
| int rte_rib6_get_depth |
( |
const struct rte_rib6_node * |
node, |
|
|
uint8_t * |
depth |
|
) |
| |
Get a depth from rte_rib6_node
- Parameters
-
| node | pointer to the rib6 node |
| depth | pointer to the depth to save |
- Returns
- 0 on success -1 on failure with rte_errno indicating reason for failure.
◆ rte_rib6_get_ext()
| void * rte_rib6_get_ext |
( |
struct rte_rib6_node * |
node | ) |
|
Get ext field from the rte_rib6_node It is caller responsibility to make sure there are necessary space for the ext field inside rib6 node.
- Parameters
-
| node | pointer to the rte_rib6_node |
- Returns
- pointer to the ext
◆ rte_rib6_get_nh()
| int rte_rib6_get_nh |
( |
const struct rte_rib6_node * |
node, |
|
|
uint64_t * |
nh |
|
) |
| |
Get nexthop from the rte_rib6_node
- Parameters
-
| node | pointer to the rib6 node |
| nh | pointer to the nexthop to save |
- Returns
- 0 on success -1 on failure, with rte_errno indicating reason for failure.
◆ rte_rib6_set_nh()
| int rte_rib6_set_nh |
( |
struct rte_rib6_node * |
node, |
|
|
uint64_t |
nh |
|
) |
| |
Set nexthop into the rte_rib6_node
- Parameters
-
| node | pointer to the rib6 node |
| nh | nexthop value to set to the rib6 node |
- Returns
- 0 on success -1 on failure, with rte_errno indicating reason for failure.
◆ rte_rib6_create()
| struct rte_rib6 * rte_rib6_create |
( |
const char * |
name, |
|
|
int |
socket_id, |
|
|
const struct rte_rib6_conf * |
conf |
|
) |
| |
Create RIB
- Parameters
-
| name | RIB name |
| socket_id | NUMA socket ID for RIB table memory allocation |
| conf | Structure containing the configuration |
- Returns
- Pointer to RIB object on success NULL otherwise with rte_errno indicating reason for failure.
◆ rte_rib6_find_existing()
| struct rte_rib6 * rte_rib6_find_existing |
( |
const char * |
name | ) |
|
Find an existing RIB object and return a pointer to it.
- Parameters
-
- Returns
- Pointer to RIB object on success NULL otherwise with rte_errno indicating reason for failure.
◆ rte_rib6_free()
| void rte_rib6_free |
( |
struct rte_rib6 * |
rib | ) |
|
Free an RIB object.
- Parameters
-
| rib | RIB object handle created with rte_rib6_create(). If rib is NULL, no operation is performed. |