table of contents
rte_rib6.h(3) | DPDK | rte_rib6.h(3) |
NAME¶
rte_rib6.h
SYNOPSIS¶
#include <rte_memcpy.h>
#include <rte_common.h>
Data Structures¶
struct rte_rib6_conf
Enumerations¶
enum { RTE_RIB6_GET_NXT_ALL, RTE_RIB6_GET_NXT_COVER
}
Functions¶
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)
Detailed Description¶
RTE rib6 library.
Level compressed tree implementation for IPv6 Longest Prefix Match
Definition in file rte_rib6.h.
Enumeration Type Documentation¶
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.
Function Documentation¶
static void rte_rib6_copy_addr (uint8_t * dst, const uint8_t * src) [inline], [static]¶
Copy IPv6 address from one location to another
Parameters:
src pointer from where to copy
Definition at line 60 of file rte_rib6.h.
static int rte_rib6_is_equal (const uint8_t * ip1, const uint8_t * ip2) [inline], [static]¶
Compare two IPv6 addresses
Parameters:
ip2 pointer to the second ipv6 address
Returns:
Definition at line 80 of file rte_rib6.h.
static uint8_t get_msk_part (uint8_t depth, int byte) [inline], [static]¶
Get 8-bit part of 128-bit IPv6 mask
Parameters:
byte position of a 8-bit chunk in the 128-bit mask
Returns:
Definition at line 104 of file rte_rib6.h.
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:
ip IP to be looked up in the RIB
Returns:
struct rte_rib6_node* rte_rib6_lookup_parent (struct rte_rib6_node * ent)¶
Lookup less specific route into the RIB structure
Parameters:
Returns:
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:
ip net to be looked up in the RIB
depth prefix length
Returns:
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:
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:
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:
ip net to be removed from the RIB
depth prefix length
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:
ip net to be inserted to the RIB
depth prefix length
Returns:
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:
ip pointer to the ipv6 to save
Returns:
int rte_rib6_get_depth (const struct rte_rib6_node * node, uint8_t * depth)¶
Get a depth from rte_rib6_node
Parameters:
depth pointer to the depth to save
Returns:
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:
Returns:
int rte_rib6_get_nh (const struct rte_rib6_node * node, uint64_t * nh)¶
Get nexthop from the rte_rib6_node
Parameters:
nh pointer to the nexthop to save
Returns:
int rte_rib6_set_nh (struct rte_rib6_node * node, uint64_t nh)¶
Set nexthop into the rte_rib6_node
Parameters:
nh nexthop value to set to the rib6 node
Returns:
struct rte_rib6* rte_rib6_create (const char * name, int socket_id, const struct rte_rib6_conf * conf)¶
Create RIB
Parameters:
socket_id NUMA socket ID for RIB table memory allocation
conf Structure containing the configuration
Returns:
struct rte_rib6* rte_rib6_find_existing (const char * name)¶
Find an existing RIB object and return a pointer to it.
Parameters:
Returns:
void rte_rib6_free (struct rte_rib6 * rib)¶
Free an RIB object.
Parameters:
Author¶
Generated automatically by Doxygen for DPDK from the source code.
Thu May 23 2024 | Version 23.11.0 |