rte_rib.h(3)

NAME
rte_rib.h

SYNOPSIS

#include <stdlib.h>
#include <stdint.h>
#include <rte_common.h>

  Data Structures

struct rte_rib_conf

  Enumerations

enum { RTE_RIB_GET_NXT_ALL, RTE_RIB_GET_NXT_COVER }

  Functions

static uint32_t rte_rib_depth_to_mask (uint8_t depth)
struct rte_rib_node * rte_rib_lookup (struct rte_rib *rib, uint32_t ip)
struct rte_rib_node * rte_rib_lookup_parent (struct rte_rib_node *ent)
struct rte_rib_node * rte_rib_lookup_exact (struct rte_rib *rib, uint32_t ip, uint8_t depth)
struct rte_rib_node * rte_rib_get_nxt (struct rte_rib *rib, uint32_t ip, uint8_t depth, struct rte_rib_node *last, int flag)
void rte_rib_remove (struct rte_rib *rib, uint32_t ip, uint8_t depth)
struct rte_rib_node * rte_rib_insert (struct rte_rib *rib, uint32_t ip, uint8_t depth)
int rte_rib_get_ip (const struct rte_rib_node *node, uint32_t *ip)
int rte_rib_get_depth (const struct rte_rib_node *node, uint8_t *depth)
void * rte_rib_get_ext (struct rte_rib_node *node)
int rte_rib_get_nh (const struct rte_rib_node *node, uint64_t *nh)
int rte_rib_set_nh (struct rte_rib_node *node, uint64_t nh)
void rte_rib_free (struct rte_rib *rib)
struct rte_rib * rte_rib_create (const char *name, int socket_id, const struct rte_rib_conf *conf) __rte_malloc __rte_dealloc(rte_rib_free
struct rte_rib struct rte_rib * rte_rib_find_existing (const char *name)

Detailed Description

RTE RIB library.

Level compressed tree implementation for IPv4 Longest Prefix Match

Definition in file rte_rib.h.

Enumeration Type Documentation

  anonymous enum
rte_rib_get_nxt() flags

Enumerator

RTE_RIB_GET_NXT_ALL
    flag to get all subroutes in a RIB tree

RTE_RIB_GET_NXT_COVER
    flag to get first matched subroutes in a RIB tree

Definition at line 29 of file rte_rib.h.

Function Documentation

  uint32_t rte_rib_depth_to_mask (uint8_t depth) [inline], [static]
Get an IPv4 mask from prefix length It is caller responsibility to make sure depth is not bigger than 32

Parameters
    depth prefix length

Returns
    IPv4 mask

Definition at line 61 of file rte_rib.h.

  struct rte_rib_node * rte_rib_lookup (struct rte_rib * rib, uint32_t ip)
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_rib_node on success NULL otherwise

  struct rte_rib_node * rte_rib_lookup_parent (struct rte_rib_node * ent)
Lookup less specific route into the RIB structure

Parameters
    ent Pointer to struct rte_rib_node that represents target route

Returns
    pointer to struct rte_rib_node that represents less specific route on success NULL otherwise

  struct rte_rib_node * rte_rib_lookup_exact (struct rte_rib * rib, uint32_t ip, uint8_t depth)
Lookup 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_rib_node on success NULL otherwise

  struct rte_rib_node * rte_rib_get_nxt (struct rte_rib * rib, uint32_t ip, uint8_t depth, struct rte_rib_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_RIB_GET_NXT_ALL get all prefixes from subtrie -RTE_RIB_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

  void rte_rib_remove (struct rte_rib * rib, uint32_t ip, uint8_t depth)
Remove prefix from the RIB

Parameters
    rib RIB object handle
    ip net to be removed from the RIB
    depth prefix length

  struct rte_rib_node * rte_rib_insert (struct rte_rib * rib, uint32_t ip, 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_rib_node on success NULL otherwise

  int rte_rib_get_ip (const struct rte_rib_node * node, uint32_t * ip)
Get an ip from rte_rib_node

Parameters
    node pointer to the rib node
    ip pointer to the ip to save

Returns
    0 on success. -1 on failure with rte_errno indicating reason for failure.

  int rte_rib_get_depth (const struct rte_rib_node * node, uint8_t * depth)
Get a depth from rte_rib_node

Parameters
    node pointer to the rib node
    depth pointer to the depth to save

Returns
    0 on success. -1 on failure with rte_errno indicating reason for failure.

  void * rte_rib_get_ext (struct rte_rib_node * node)
Get ext field from the rib node It is caller responsibility to make sure there are necessary space for the ext field inside rib node.

Parameters
    node pointer to the rib node

Returns
    pointer to the ext

  int rte_rib_get_nh (const struct rte_rib_node * node, uint64_t * nh)
Get nexthop from the rib node

Parameters
    node pointer to the rib node
    nh pointer to the nexthop to save

Returns
    0 on success. -1 on failure with rte_errno indicating reason for failure.

  int rte_rib_set_nh (struct rte_rib_node * node, uint64_t nh)
Set nexthop into the rib node

Parameters
    node pointer to the rib node
    nh nexthop value to set to the rib node

Returns
    0 on success. -1 on failure with rte_errno indicating reason for failure.

  void rte_rib_free (struct rte_rib * rib)
Free an RIB object.

Parameters
    rib RIB object handle created with rte_rib_create(). If rib is NULL, no operation is performed.

  struct rte_rib * rte_rib_create (const char * name, int socket_id, const struct rte_rib_conf * conf)
Create RIB

Parameters
    name RIB name
    socket_id NUMA socket ID for RIB table memory allocation
    conf Structure containing the configuration

Returns
    Handle to RIB object on success NULL otherwise with rte_errno indicating reason for failure.

  struct rte_rib struct rte_rib * rte_rib_find_existing (const char * name)
Find an existing RIB object and return a pointer to it.

Parameters
    name Name of the rib object as passed to rte_rib_create()

Returns
    Pointer to RIB object on success NULL otherwise with rte_errno indicating reason for failure.

Author

Generated automatically by Doxygen for DPDK from the source code.