Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_rib6.h(3)			      DPDK			   rte_rib6.h(3)

NAME
     rte_rib6.h

SYNOPSIS
     #include <rte_memcpy.h>
     #include <rte_common.h>
     #include <rte_ip6.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)
	 __rte_deprecated_msg('use direct struct assignment')
     static int rte_rib6_is_equal  (const  uint8_t  *ip1,  const  uint8_t  *ip2)
	 __rte_deprecated_msg('use rte_ipv6_addr_eq')
     static uint8_t get_msk_part (uint8_t depth, int byte) __rte_deprecated
     struct  rte_rib6_node * rte_rib6_lookup (struct rte_rib6 *rib, const struct
	 rte_ipv6_addr *ip)
     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
	 struct rte_ipv6_addr *ip, uint8_t depth)
     struct rte_rib6_node * rte_rib6_get_nxt (struct rte_rib6 *rib, const struct
	 rte_ipv6_addr *ip, uint8_t depth, struct rte_rib6_node *last, int flag)
     void rte_rib6_remove (struct rte_rib6 *rib, const struct rte_ipv6_addr *ip,
	 uint8_t depth)
     struct  rte_rib6_node * rte_rib6_insert (struct rte_rib6 *rib, const struct
	 rte_ipv6_addr *ip, uint8_t depth)
     int rte_rib6_get_ip (const struct rte_rib6_node *node, struct rte_ipv6_addr
	 *ip)
     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)
     void rte_rib6_free (struct rte_rib6 *rib)
     struct rte_rib6 * rte_rib6_create (const char *name, int  socket_id,  const
	 struct rte_rib6_conf *conf) __rte_malloc __rte_dealloc(rte_rib6_free
     struct rte_rib6 struct rte_rib6 * rte_rib6_find_existing (const char *name)

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 30 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
	 dst pointer to the place to copy
	 src pointer from where to copy

     Definition at line 64 of file rte_rib6.h.

   static  int rte_rib6_is_equal (const uint8_t * ip1, const uint8_t * ip2) [in-
     line],  [static]
     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 87 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
	 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 113 of file rte_rib6.h.

   struct rte_rib6_node * rte_rib6_lookup (struct rte_rib6 * rib,  const  struct
     rte_ipv6_addr * 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_rib6_node on success NULL otherwise

   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

   struct rte_rib6_node * rte_rib6_lookup_exact (struct rte_rib6  *  rib,  const
     struct rte_ipv6_addr * ip, 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

   struct  rte_rib6_node * rte_rib6_get_nxt (struct rte_rib6 * rib, const struct
     rte_ipv6_addr * ip, 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

   void rte_rib6_remove (struct rte_rib6 * rib, const struct rte_ipv6_addr * 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_rib6_node  * rte_rib6_insert (struct rte_rib6 * rib, const struct
     rte_ipv6_addr * 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_rib6_node on success NULL otherwise

   int rte_rib6_get_ip (const struct rte_rib6_node * node, struct  rte_ipv6_addr
     * ip)
     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 fail-
	 ure.

   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  fail-
	 ure.

   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

   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  fail-
	 ure.

   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 fail-
	 ure.

   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.

   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 indicat-
	 ing reason for failure.

   struct rte_rib6 struct rte_rib6 * rte_rib6_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_rib6_create()

     Returns
	 Pointer to RIB object on success NULL otherwise with rte_errno indicat-
	 ing reason for failure.

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		   rte_rib6.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=get_msk_part&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help