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

  
 
  

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

NAME
     rte_acl.h

SYNOPSIS
     #include <rte_common.h>
     #include <rte_acl_osdep.h>

   Data Structures
     struct rte_acl_field_def
     struct rte_acl_config
     struct rte_acl_field
     struct rte_acl_rule_data
     struct rte_acl_param

   Macros
     #define RTE_ACL_RULE_DEF(name,  fld_num)
     #define RTE_ACL_NAMESIZE	32

   Enumerations
     enum rte_acl_classify_alg {  }

   Functions
     void rte_acl_free (struct rte_acl_ctx *ctx)
     struct  rte_acl_ctx  *  rte_acl_create  (const struct rte_acl_param *param)
	 __rte_malloc __rte_dealloc(rte_acl_free
     struct rte_acl_ctx struct rte_acl_ctx * rte_acl_find_existing  (const  char
	 *name)
     int  rte_acl_add_rules  (struct rte_acl_ctx *ctx, const struct rte_acl_rule
	 *rules, uint32_t num)
     void rte_acl_reset_rules (struct rte_acl_ctx *ctx)
     int rte_acl_build (struct rte_acl_ctx  *ctx,  const  struct  rte_acl_config
	 *cfg)
     void rte_acl_reset (struct rte_acl_ctx *ctx)
     int  rte_acl_classify (const struct rte_acl_ctx *ctx, const uint8_t **data,
	 uint32_t *results, uint32_t num, uint32_t categories)
     int rte_acl_classify_alg (const  struct  rte_acl_ctx  *ctx,  const  uint8_t
	 **data,  uint32_t  *results,  uint32_t  num,  uint32_t categories, enum
	 rte_acl_classify_alg alg)
     void rte_acl_dump (const struct rte_acl_ctx *ctx)
     void rte_acl_list_dump (void)

Detailed Description
     RTE Classifier.

     Definition in file rte_acl.h.

Macro Definition Documentation
   #define RTE_ACL_RULE_DEF(name, fld_num)
     Value:.PP
	 struct name {\
	 struct rte_acl_rule_data data; 	      \
	 struct rte_acl_field field[fld_num];	      \
     }
     Defines single ACL rule. data - miscellaneous data for the rule. field[]  -
     value and mask or range for each field.

     Definition at line 112 of file rte_acl.h.

   #define RTE_ACL_NAMESIZE   32
     Max number of characters in name.

     Definition at line 124 of file rte_acl.h.

Enumeration Type Documentation
   enum rte_acl_classify_alg
     Available implementations of ACL classify.

     Enumerator

     RTE_ACL_CLASSIFY_SCALAR
	    generic implementation.

     RTE_ACL_CLASSIFY_SSE
	    requires SSE4.1 support.

     RTE_ACL_CLASSIFY_AVX2
	    requires AVX2 support.

     RTE_ACL_CLASSIFY_NEON
	    requires NEON support.

     RTE_ACL_CLASSIFY_ALTIVEC
	    requires ALTIVEC support.

     RTE_ACL_CLASSIFY_AVX512X16
	    requires AVX512 support.

     RTE_ACL_CLASSIFY_AVX512X32
	    requires AVX512 support.

     Definition at line 242 of file rte_acl.h.

Function Documentation
   void rte_acl_free (struct rte_acl_ctx * ctx)
     De-allocate all memory used by ACL context.

     Parameters
	 ctx ACL context to free If ctx is NULL, no operation is performed.

   struct rte_acl_ctx * rte_acl_create (const struct rte_acl_param * param)
     Create a new ACL context.

     Parameters
	 param Parameters used to create and initialise the ACL context.

     Returns
	 Pointer to ACL context structure that is used in future ACL operations,
	 or  NULL on error, with error code set in rte_errno. Possible rte_errno
	 errors include:

	 * EINVAL - invalid parameter passed to function

   struct rte_acl_ctx struct rte_acl_ctx * rte_acl_find_existing (const  char  *
     name)
     Find an existing ACL context object and return a pointer to it.

     Parameters
	 name Name of the ACL context as passed to rte_acl_create()

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

	 * ENOENT - value not available for return

   int rte_acl_add_rules (struct rte_acl_ctx * ctx, const struct rte_acl_rule  *
     rules, uint32_t num)
     Add  rules  to  an  existing ACL context. This function is not multi-thread
     safe.

     Parameters
	 ctx ACL context to add patterns to.
	 rules Array of rules to add to the ACL context. Note that all fields in
	 rte_acl_rule structures are expected to be in	host  byte  order.  Each
	 rule expected to be in the same format and not exceed size specified at
	 ACL context creation time.
	 num Number of elements in the input array of rules.

     Returns

	 * -ENOMEM if there is no space in the ACL context for these rules.

	 * -EINVAL if the parameters are invalid.

	 * Zero if operation completed successfully.

   void rte_acl_reset_rules (struct rte_acl_ctx * ctx)
     Delete  all  rules  from the ACL context. This function is not multi-thread
     safe. Note that internal run-time structures are not affected.

     Parameters
	 ctx ACL context to delete rules from.

   int rte_acl_build (struct rte_acl_ctx * ctx, const  struct  rte_acl_config  *
     cfg)
     Analyze  set of rules and build required internal run-time structures. This
     function is not multi-thread safe.

     Parameters
	 ctx ACL context to build.
	 cfg Pointer to struct rte_acl_config - defines build parameters.

     Returns

	 * -ENOMEM if couldn't allocate enough memory.

	 * -EINVAL if the parameters are invalid.

	 * Negative error code if operation failed.

	 * Zero if operation completed successfully.

   void rte_acl_reset (struct rte_acl_ctx * ctx)
     Delete all rules from the ACL context and	destroy  all  internal	run-time
     structures. This function is not multi-thread safe.

     Parameters
	 ctx ACL context to reset.

   int	rte_acl_classify (const struct rte_acl_ctx * ctx, const uint8_t ** data,
     uint32_t * results, uint32_t num, uint32_t categories)
     Perform search for a matching ACL rule for each input data buffer. Each in-
     put data buffer can have up to categories matches. That  implies  that  re-
     sults  array should be big enough to hold (categories * num) elements. Also
     categories parameter should  be  either  one  or  multiple  of  RTE_ACL_RE-
     SULTS_MULTIPLIER  and  can't be bigger than RTE_ACL_MAX_CATEGORIES. If more
     than one rule is applicable for given input buffer and given category, then
     rule with highest priority will be returned as a match. Note, that it is  a
     caller's responsibility to ensure that input parameters are valid and point
     to correct memory locations.

     Parameters
	 ctx ACL context to search with.
	 data  Array  of  pointers to input data buffers to perform search. Note
	 that all fields in input data buffers supposed to be  in  network  byte
	 order (MSB).
	 results Array of search results, categories results per each input data
	 buffer.
	 num Number of elements in the input data buffers array.
	 categories  Number  of  maximum possible matches for each input buffer,
	 one possible match per category.

     Returns
	 zero on successful completion. -EINVAL for incorrect arguments.

   int rte_acl_classify_alg (const struct rte_acl_ctx * ctx,  const  uint8_t  **
     data,   uint32_t	*  results,  uint32_t  num,  uint32_t  categories,  enum
     rte_acl_classify_alg alg)
     Perform search using specified algorithm for a matching ACL rule  for  each
     input  data  buffer.  Each  input	data  buffer  can  have up to categories
     matches. That implies that results array should be big enough to hold (cat-
     egories * num) elements. Also categories parameter should be either one  or
     multiple	of   RTE_ACL_RESULTS_MULTIPLIER   and	can't	be  bigger  than
     RTE_ACL_MAX_CATEGORIES. If more than one rule is applicable for given input
     buffer and given category, then rule with highest priority will be returned
     as a match. Note, that it is a caller's responsibility to ensure that input
     parameters are valid and point to correct memory locations.

     Parameters
	 ctx ACL context to search with.
	 data Array of pointers to input data buffers to  perform  search.  Note
	 that  all  fields  in input data buffers supposed to be in network byte
	 order (MSB).
	 results Array of search results, categories results per each input data
	 buffer.
	 num Number of elements in the input data buffers array.
	 categories Number of maximum possible matches for  each  input  buffer,
	 one possible match per category.
	 alg  Algorithm to be used for the search. It is the caller responsibil-
	 ity to ensure that the value refers to the existing algorithm, and that
	 it could be run on the given CPU.

     Returns
	 zero on successful completion. -EINVAL for incorrect arguments.

   void rte_acl_dump (const struct rte_acl_ctx * ctx)
     Dump an ACL context structure to the console.

     Parameters
	 ctx ACL context to dump.

   void rte_acl_list_dump (void)
     Dump all ACL context structures to the console.

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

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

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

home | help