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

  
 
  

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

NAME
     rte_fib.h

SYNOPSIS
     #include <stdint.h>
     #include <rte_common.h>
     #include <rte_rcu_qsbr.h>

   Data Structures
     struct rte_fib_conf
     struct rte_fib_rcu_config

   Macros
     #define RTE_FIB_MAXDEPTH	32
     #define RTE_FIB_F_LOOKUP_NETWORK_ORDER   1

   Typedefs
     typedef  int(*  rte_fib_modify_fn_t)  (struct  rte_fib  *fib,  uint32_t ip,
	 uint8_t depth, uint64_t next_hop, int op)
     typedef  void(*  rte_fib_lookup_fn_t)  (void  *fib,  const  uint32_t  *ips,
	 uint64_t *next_hops, const unsigned int n)

   Enumerations
     enum rte_fib_qsbr_mode { RTE_FIB_QSBR_MODE_DQ = 0, RTE_FIB_QSBR_MODE_SYNC }
     enum rte_fib_type { RTE_FIB_DUMMY, RTE_FIB_DIR24_8 }
     enum rte_fib_dir24_8_nh_sz
     enum	   rte_fib_lookup_type	       {	 RTE_FIB_LOOKUP_DEFAULT,
	 RTE_FIB_LOOKUP_DIR24_8_SCALAR_MACRO,  RTE_FIB_LOOKUP_DIR24_8_SCALAR_IN-
	 LINE,	 RTE_FIB_LOOKUP_DIR24_8_SCALAR_UNI,  RTE_FIB_LOOKUP_DIR24_8_VEC-
	 TOR_AVX512 }

   Functions
     void rte_fib_free (struct rte_fib *fib)
     struct rte_fib * rte_fib_create (const char *name,  int  socket_id,  struct
	 rte_fib_conf *conf) __rte_malloc __rte_dealloc(rte_fib_free
     struct rte_fib struct rte_fib * rte_fib_find_existing (const char *name)
     int  rte_fib_add (struct rte_fib *fib, uint32_t ip, uint8_t depth, uint64_t
	 next_hop)
     int rte_fib_delete (struct rte_fib *fib, uint32_t ip, uint8_t depth)
     int rte_fib_lookup_bulk  (struct  rte_fib	*fib,  uint32_t  *ips,	uint64_t
	 *next_hops, int n)
     void * rte_fib_get_dp (struct rte_fib *fib)
     struct rte_rib * rte_fib_get_rib (struct rte_fib *fib)
     int  rte_fib_select_lookup  (struct  rte_fib *fib, enum rte_fib_lookup_type
	 type)
     __rte_experimental int rte_fib_rcu_qsbr_add (struct  rte_fib  *fib,  struct
	 rte_fib_rcu_config *cfg)

Detailed Description
     RTE FIB library.

     FIB  (Forwarding  information  base) implementation for IPv4 Longest Prefix
     Match

     Definition in file rte_fib.h.

Macro Definition Documentation
   #define RTE_FIB_MAXDEPTH   32
     Maximum depth value possible for IPv4 FIB.

     Definition at line 34 of file rte_fib.h.

   #define RTE_FIB_F_LOOKUP_NETWORK_ORDER   1
     If set, fib lookup is expecting IPv4 address in network byte order

     Definition at line 95 of file rte_fib.h.

Typedef Documentation
   typedef int(* rte_fib_modify_fn_t) (struct rte_fib *fib, uint32_t ip, uint8_t
     depth, uint64_t next_hop, int op)
     Modify FIB function

     Definition at line 56 of file rte_fib.h.

   typedef void(* rte_fib_lookup_fn_t) (void *fib, const uint32_t *ips, uint64_t
     *next_hops, const unsigned int n)
     FIB bulk lookup function

     Definition at line 59 of file rte_fib.h.

Enumeration Type Documentation
   enum rte_fib_qsbr_mode
     RCU reclamation modes

     Enumerator

     RTE_FIB_QSBR_MODE_DQ
	    Create defer queue for reclaim.

     RTE_FIB_QSBR_MODE_SYNC
	    Use blocking mode reclaim. No defer queue created.

     Definition at line 42 of file rte_fib.h.

   enum rte_fib_type
     Type of FIB struct

     Enumerator

     RTE_FIB_DUMMY
	    RIB tree based FIB

     RTE_FIB_DIR24_8
	    DIR24_8 based FIB

     Definition at line 50 of file rte_fib.h.

   enum rte_fib_dir24_8_nh_sz
     Size of nexthop (1 << nh_sz) bits for DIR24_8 based FIB

     Definition at line 68 of file rte_fib.h.

   enum rte_fib_lookup_type
     Type of lookup function implementation

     Enumerator

     RTE_FIB_LOOKUP_DEFAULT
	    Selects the best implementation based on the max simd bitwidth

     RTE_FIB_LOOKUP_DIR24_8_SCALAR_MACRO
	    Macro based lookup function

     RTE_FIB_LOOKUP_DIR24_8_SCALAR_INLINE
	    Lookup implementation using inlined functions for different next hop
	    sizes

     RTE_FIB_LOOKUP_DIR24_8_SCALAR_UNI
	    Unified lookup function for all next hop sizes

     RTE_FIB_LOOKUP_DIR24_8_VECTOR_AVX512
	    Vector implementation using AVX512

     Definition at line 76 of file rte_fib.h.

Function Documentation
   void rte_fib_free (struct rte_fib * fib)
     Free an FIB object.

     Parameters
	 fib FIB object handle created by rte_fib_create(). If fib is  NULL,  no
	 operation is performed.

   struct  rte_fib  *  rte_fib_create  (const char * name, int socket_id, struct
     rte_fib_conf * conf)
     Create FIB

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

     Returns
	 Handle to the FIB object on success NULL otherwise with  rte_errno  set
	 to an appropriate values.

   struct rte_fib struct rte_fib * rte_fib_find_existing (const char * name)
     Find an existing FIB object and return a pointer to it.

     Parameters
	 name Name of the fib object as passed to rte_fib_create()

     Returns
	 Pointer  to  fib  object or NULL if object not found with rte_errno set
	 appropriately. Possible rte_errno values include:

	 * ENOENT - required entry not available to return.

   int rte_fib_add (struct rte_fib * fib, uint32_t ip, uint8_t	depth,	uint64_t
     next_hop)
     Add a route to the FIB.

     Parameters
	 fib FIB object handle
	 ip IPv4 prefix address to be added to the FIB
	 depth Prefix length
	 next_hop Next hop to be added to the FIB

     Returns
	 0 on success, negative value otherwise

   int rte_fib_delete (struct rte_fib * fib, uint32_t ip, uint8_t depth)
     Delete a rule from the FIB.

     Parameters
	 fib FIB object handle
	 ip IPv4 prefix address to be deleted from the FIB
	 depth Prefix length

     Returns
	 0 on success, negative value otherwise

   int	rte_fib_lookup_bulk  (struct  rte_fib  * fib, uint32_t * ips, uint64_t *
     next_hops, int n)
     Lookup multiple IP addresses in the FIB.

     Parameters
	 fib FIB object handle
	 ips Array of IPs to be looked up in the FIB
	 next_hops Next hop of the most specific rule found for IP. This  is  an
	 array of eight byte values. If the lookup for the given IP failed, then
	 corresponding	element  would	contain default nexthop value configured
	 for a FIB.
	 n Number of elements in ips (and next_hops) array to lookup.

     Returns
	 -EINVAL for incorrect arguments, otherwise 0

   void * rte_fib_get_dp (struct rte_fib * fib)
     Get pointer to the dataplane specific struct

     Parameters
	 fib FIB object handle

     Returns
	 Pointer on the dataplane struct on success NULL otherwise

   struct rte_rib * rte_fib_get_rib (struct rte_fib * fib)
     Get pointer to the RIB

     Parameters
	 fib FIB object handle

     Returns
	 Pointer on the RIB on success NULL otherwise

   int rte_fib_select_lookup (struct rte_fib  *  fib,  enum  rte_fib_lookup_type
     type)
     Set lookup function based on type

     Parameters
	 fib FIB object handle
	 type type of lookup function

     Returns
	 0 on success -EINVAL on failure

   __rte_experimental  int  rte_fib_rcu_qsbr_add  (struct  rte_fib * fib, struct
     rte_fib_rcu_config * cfg)
     Associate RCU QSBR variable with a FIB object.

     Parameters
	 fib FIB object handle
	 cfg RCU QSBR configuration

     Returns
	 0 on success Negative otherwise Possible error codes are:

	 * -EINVAL - invalid parameters

	 * -EEXIST - already added QSBR

	 * -ENOMEM - memory allocation failure

	 * -ENOTSUP - not supported by configured dataplane algorithm

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

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

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

home | help