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

FreeBSD Manual Pages

  
 
  

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

NAME
       rte_lpm.h

SYNOPSIS
       #include	<errno.h>
       #include	<stdalign.h>
       #include	<stdint.h>
       #include	<rte_branch_prediction.h>
       #include	<rte_byteorder.h>
       #include	<rte_common.h>
       #include	<rte_vect.h>
       #include	<rte_rcu_qsbr.h>
       #include	'rte_lpm_scalar.h'

   Data	Structures
       struct rte_lpm_config
       struct rte_lpm_rcu_config

   Macros
       #define RTE_LPM_NAMESIZE	  32
       #define RTE_LPM_MAX_DEPTH   32
       #define RTE_LPM_LOOKUP_SUCCESS	0x01000000
       #define rte_lpm_lookup_bulk(lpm,	 ips,  next_hops,  n)
		   rte_lpm_lookup_bulk_func(lpm, ips, next_hops, n)

   Enumerations
       enum rte_lpm_qsbr_mode {	RTE_LPM_QSBR_MODE_DQ = 0,
	   RTE_LPM_QSBR_MODE_SYNC }

   Functions
       void rte_lpm_free (struct rte_lpm *lpm)
       struct rte_lpm *	rte_lpm_create (const char *name, int socket_id, const
	   struct rte_lpm_config *config) __rte_malloc
	   __rte_dealloc(rte_lpm_free
       struct rte_lpm struct rte_lpm * rte_lpm_find_existing (const char
	   *name)
       int rte_lpm_rcu_qsbr_add	(struct	rte_lpm	*lpm, struct
	   rte_lpm_rcu_config *cfg)
       int rte_lpm_add (struct rte_lpm *lpm, uint32_t ip, uint8_t depth,
	   uint32_t next_hop)
       int rte_lpm_is_rule_present (struct rte_lpm *lpm, uint32_t ip, uint8_t
	   depth, uint32_t *next_hop)
       int rte_lpm_delete (struct rte_lpm *lpm,	uint32_t ip, uint8_t depth)
       void rte_lpm_delete_all (struct rte_lpm *lpm)
       static int rte_lpm_lookup (const	struct rte_lpm *lpm, uint32_t ip,
	   uint32_t *next_hop)
       static void rte_lpm_lookupx4 (const struct rte_lpm *lpm,	xmm_t ip,
	   uint32_t hop[4], uint32_t defv)

Detailed Description
       RTE Longest Prefix Match	(LPM)

       Definition in file rte_lpm.h.

Macro Definition Documentation
   #define RTE_LPM_NAMESIZE   32
       Max number of characters	in LPM name.

       Definition at line 29 of	file rte_lpm.h.

   #define RTE_LPM_MAX_DEPTH   32
       Maximum depth value possible for	IPv4 LPM.

       Definition at line 32 of	file rte_lpm.h.

   #define RTE_LPM_LOOKUP_SUCCESS   0x01000000
       Bitmask used to indicate	successful lookup

       Definition at line 63 of	file rte_lpm.h.

   #define rte_lpm_lookup_bulk(lpm, ips, next_hops, n)
	     rte_lpm_lookup_bulk_func(lpm, ips,	next_hops, n)
       Lookup multiple IP addresses in an LPM table. This may be implemented
       as a macro, so the address of the function should not be	used.

       Parameters
	   lpm LPM object handle
	   ips Array of	IPs to be looked up in the LPM table
	   next_hops Next hop of the most specific rule	found for IP (valid on
	   lookup hit only). This is an	array of two byte values. The most
	   significant byte in each value says whether the lookup was
	   successful (bitmask RTE_LPM_LOOKUP_SUCCESS is set). The least
	   significant byte is the actual next hop.
	   n Number of elements	in ips (and next_hops) array to	lookup.	This
	   should be a compile time constant, and divisible by 8 for best
	   performance.

       Returns
	   -EINVAL for incorrect arguments, otherwise 0

       Definition at line 345 of file rte_lpm.h.

Enumeration Type Documentation
   enum	rte_lpm_qsbr_mode
       RCU reclamation modes

       Enumerator

       RTE_LPM_QSBR_MODE_DQ
	      Create defer queue for reclaim.

       RTE_LPM_QSBR_MODE_SYNC
	      Use blocking mode	reclaim. No defer queue	created.

       Definition at line 69 of	file rte_lpm.h.

Function Documentation
   void	rte_lpm_free (struct rte_lpm * lpm)
       Free an LPM object.

       Parameters
	   lpm LPM object handle If lpm	is NULL, no operation is performed.

   struct  rte_lpm  *  rte_lpm_create (const char * name, int socket_id, const
       struct rte_lpm_config * config)
       Create an LPM object.

       Parameters
	   name	LPM object name
	   socket_id NUMA socket ID for	LPM table memory allocation
	   config Structure containing the configuration

       Returns
	   Handle to LPM object	on success, NULL otherwise with	rte_errno  set
	   to an appropriate values. Possible rte_errno	values include:

	    E_RTE_NO_CONFIG  -	 function  could not get pointer to rte_config
	     structure

	    E_RTE_SECONDARY - function	was called from	 a  secondary  process
	     instance

	    EINVAL - invalid parameter	passed to function

	    ENOSPC  -	the  maximum  number  of  memzones  has	 already  been
	     allocated

	    EEXIST - a	memzone	with the same name already exists

	    ENOMEM - no appropriate memory area  found	 in  which  to	create
	     memzone

   struct rte_lpm struct rte_lpm * rte_lpm_find_existing (const	char * name)
       Find an existing	LPM object and return a	pointer	to it.

       Parameters
	   name	Name of	the lpm	object as passed to rte_lpm_create()

       Returns
	   Pointer  to	lpm  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_lpm_rcu_qsbr_add (struct rte_lpm * lpm, struct rte_lpm_rcu_config *
       cfg)
       Associate RCU QSBR variable with	an LPM object.

       Parameters
	   lpm the lpm object to add RCU QSBR
	   cfg RCU QSBR	configuration

       Returns
	   On success -	0 On error - 1	with  error  code  set	in  rte_errno.
	   Possible rte_errno codes are:

	    EINVAL - invalid pointer

	    EEXIST - already added QSBR

	    ENOMEM - memory allocation	failure

   int rte_lpm_add (struct rte_lpm * lpm, uint32_t ip, uint8_t depth, uint32_t
       next_hop)
       Add a rule to the LPM table.

       Parameters
	   lpm LPM object handle
	   ip IP of the	rule to	be added to the	LPM table
	   depth Depth of the rule to be added to the LPM table
	   next_hop Next hop of	the rule to be added to	the LPM	table

       Returns
	   0 on	success, negative value	otherwise

   int	rte_lpm_is_rule_present	 (struct  rte_lpm  * lpm, uint32_t ip, uint8_t
       depth, uint32_t * next_hop)
       Check if	a rule is present in the LPM table, and	provide	its  next  hop
       if it is.

       Parameters
	   lpm LPM object handle
	   ip IP of the	rule to	be searched
	   depth Depth of the rule to searched
	   next_hop Next hop of	the rule (valid	only if	it is found)

       Returns
	   1 if	the rule exists, 0 if it does not, a negative value on failure

   int rte_lpm_delete (struct rte_lpm *	lpm, uint32_t ip, uint8_t depth)
       Delete a	rule from the LPM table.

       Parameters
	   lpm LPM object handle
	   ip IP of the	rule to	be deleted from	the LPM	table
	   depth Depth of the rule to be deleted from the LPM table

       Returns
	   0 on	success, negative value	otherwise

   void	rte_lpm_delete_all (struct rte_lpm * lpm)
       Delete all rules	from the LPM table.

       Parameters
	   lpm LPM object handle

   static  int	rte_lpm_lookup	(const	struct	rte_lpm	 *  lpm,  uint32_t ip,
       uint32_t	* next_hop) [inline],  [static]
       Lookup an IP into the LPM table.

       Parameters
	   lpm LPM object handle
	   ip IP to be looked up in the	LPM table
	   next_hop Next hop of	the most specific rule found for IP (valid  on
	   lookup hit only)

       Returns
	   -EINVAL  for	 incorrect  arguments,	-ENOENT	 on  lookup miss, 0 on
	   lookup hit

       Definition at line 292 of file rte_lpm.h.

   static void	rte_lpm_lookupx4  (const  struct  rte_lpm  *  lpm,  xmm_t  ip,
       uint32_t	hop[4],	uint32_t defv) [inline],  [static]
       Lookup four IP addresses	in an LPM table.

       Parameters
	   lpm LPM object handle
	   ip Four IPs to be looked up in the LPM table
	   hop	Next  hop  of  the  most  specific rule	found for IP (valid on
	   lookup hit only). This is an	4 elements array of two	 byte  values.
	   If  the  lookup  was	 successful  for  the  given  IP,  then	 least
	   significant byte of the corresponding element is  the  actual  next
	   hop	and  the  most significant byte	is zero. If the	lookup for the
	   given IP failed, then corresponding element would  contain  default
	   value, see description of then next parameter.
	   defv	 Default value to populate into	corresponding element of hop[]
	   array, if lookup would fail.

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

Version	25.11.0			Thu Jun	11 2026			  rte_lpm.h(3)

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

home | help