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

FreeBSD Manual Pages

  
 
  

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

NAME
       rte_regexdev.h

SYNOPSIS
       #include	<rte_compat.h>
       #include	<rte_common.h>
       #include	<rte_dev.h>
       #include	<rte_mbuf.h>
       #include	'rte_regexdev_core.h'

   Data	Structures
       struct rte_regexdev_info
       struct rte_regexdev_config
       struct rte_regexdev_qp_conf
       struct rte_regexdev_rule
       struct rte_regexdev_xstats_map
       struct rte_regexdev_match
       struct rte_regex_ops

   Macros
       #define RTE_REGEXDEV_CAPA_RUNTIME_COMPILATION_F	 (1ULL << 0)
       #define RTE_REGEXDEV_CAPA_SUPP_PCRE_START_ANCHOR_F   (1ULL << 1)
       #define RTE_REGEXDEV_CAPA_SUPP_PCRE_ATOMIC_GROUPING_F   (1ULL <<	2)
       #define RTE_REGEXDEV_SUPP_PCRE_BACKTRACKING_CTRL_F   (1ULL << 3)
       #define RTE_REGEXDEV_SUPP_PCRE_CALLOUTS_F   (1ULL << 4)
       #define RTE_REGEXDEV_SUPP_PCRE_BACKREFERENCE_F	(1ULL << 5)
       #define RTE_REGEXDEV_SUPP_PCRE_GREEDY_F	 (1ULL << 6)
       #define RTE_REGEXDEV_SUPP_PCRE_MATCH_ALL_F   (1ULL << 7)
       #define RTE_REGEXDEV_SUPP_PCRE_LOOKAROUND_ASRT_F	  (1ULL	<< 8)
       #define RTE_REGEXDEV_SUPP_PCRE_MATCH_POINT_RST_F	  (1ULL	<< 9)
       #define RTE_REGEXDEV_SUPP_NEWLINE_CONVENTIONS_F	 (1ULL << 10)
       #define RTE_REGEXDEV_SUPP_PCRE_NEWLINE_SEQ_F   (1ULL << 11)
       #define RTE_REGEXDEV_SUPP_PCRE_POSSESSIVE_QUALIFIERS_F	(1ULL << 12)
       #define RTE_REGEXDEV_SUPP_PCRE_SUBROUTINE_REFERENCES_F	(1ULL << 13)
       #define RTE_REGEXDEV_SUPP_PCRE_UTF_8_F	(1ULL << 14)
       #define RTE_REGEXDEV_SUPP_PCRE_UTF_16_F	 (1ULL << 15)
       #define RTE_REGEXDEV_SUPP_PCRE_UTF_32_F	 (1ULL << 16)
       #define RTE_REGEXDEV_SUPP_PCRE_WORD_BOUNDARY_F	(1ULL << 17)
       #define RTE_REGEXDEV_SUPP_PCRE_FORWARD_REFERENCES_F   (1ULL << 18)
       #define RTE_REGEXDEV_SUPP_MATCH_AS_END_F	  (1ULL	<< 19)
       #define RTE_REGEXDEV_SUPP_CROSS_BUFFER_F	  (1ULL	<< 20)
       #define RTE_REGEXDEV_SUPP_MATCH_ALL_F   (1ULL <<	21)
       #define RTE_REGEXDEV_CAPA_QUEUE_PAIR_OOS_F   (1ULL << 22)
       #define RTE_REGEX_PCRE_RULE_ALLOW_EMPTY_F   (1ULL << 0)
       #define RTE_REGEX_PCRE_RULE_ANCHORED_F	(1ULL << 1)
       #define RTE_REGEX_PCRE_RULE_CASELESS_F	(1ULL << 2)
       #define RTE_REGEX_PCRE_RULE_DOTALL_F   (1ULL << 3)
       #define RTE_REGEX_PCRE_RULE_DUPNAMES_F	(1ULL << 4)
       #define RTE_REGEX_PCRE_RULE_EXTENDED_F	(1ULL << 5)
       #define RTE_REGEX_PCRE_RULE_MATCH_UNSET_BACKREF_F   (1ULL << 6)
       #define RTE_REGEX_PCRE_RULE_MULTILINE_F	 (1ULL << 7)
       #define RTE_REGEX_PCRE_RULE_NO_AUTO_CAPTURE_F   (1ULL <<	8)
       #define RTE_REGEX_PCRE_RULE_UCP_F   (1ULL << 9)
       #define RTE_REGEX_PCRE_RULE_UNGREEDY_F	(1ULL << 10)
       #define RTE_REGEX_PCRE_RULE_UTF_F   (1ULL << 11)
       #define RTE_REGEX_PCRE_RULE_NEVER_BACKSLASH_C_F	 (1ULL << 12)
       #define RTE_REGEXDEV_CFG_CROSS_BUFFER_SCAN_F   (1ULL << 0)
       #define RTE_REGEXDEV_CFG_MATCH_AS_END_F	 (1ULL << 1)
       #define RTE_REGEXDEV_CFG_MATCH_ALL_F   (1ULL << 2)
       #define RTE_REGEX_QUEUE_PAIR_CFG_OOS_F	(1ULL << 0)
       #define RTE_REGEXDEV_XSTATS_NAME_SIZE   64
       #define RTE_REGEX_OPS_REQ_GROUP_ID0_VALID_F   (1	<< 0)
       #define RTE_REGEX_OPS_REQ_GROUP_ID1_VALID_F   (1	<< 1)
       #define RTE_REGEX_OPS_REQ_GROUP_ID2_VALID_F   (1	<< 2)
       #define RTE_REGEX_OPS_REQ_GROUP_ID3_VALID_F   (1	<< 3)
       #define RTE_REGEX_OPS_REQ_STOP_ON_MATCH_F   (1 << 4)
       #define RTE_REGEX_OPS_REQ_MATCH_HIGH_PRIORITY_F	 (1 << 5)
       #define RTE_REGEX_OPS_RSP_PMI_SOJ_F   (1	<< 0)
       #define RTE_REGEX_OPS_RSP_PMI_EOJ_F   (1	<< 1)
       #define RTE_REGEX_OPS_RSP_MAX_SCAN_TIMEOUT_F   (1 << 2)
       #define RTE_REGEX_OPS_RSP_MAX_MATCH_F   (1 << 3)
       #define RTE_REGEX_OPS_RSP_MAX_PREFIX_F	(1 << 4)
       #define RTE_REGEX_OPS_RSP_RESOURCE_LIMIT_REACHED_F   (1 << 4)

   Typedefs
       typedef void(* regexdev_stop_flush_t) (uint8_t dev_id, uint16_t qp_id,
	   struct rte_regex_ops	*op)

   Enumerations
       enum rte_regexdev_attr_id { RTE_REGEXDEV_ATTR_SOCKET_ID,
	   RTE_REGEXDEV_ATTR_MAX_MATCHES, RTE_REGEXDEV_ATTR_MAX_SCAN_TIMEOUT,
	   RTE_REGEXDEV_ATTR_MAX_PREFIX	}
       enum rte_regexdev_rule_op { RTE_REGEX_RULE_OP_ADD,
	   RTE_REGEX_RULE_OP_REMOVE }

   Functions
       __rte_experimental int rte_regexdev_is_valid_dev	(uint16_t dev_id)
       __rte_experimental uint8_t rte_regexdev_count (void)
       __rte_experimental int rte_regexdev_get_dev_id (const char *name)
       __rte_experimental int rte_regexdev_info_get (uint8_t dev_id, struct
	   rte_regexdev_info *dev_info)
       __rte_experimental int rte_regexdev_configure (uint8_t dev_id, const
	   struct rte_regexdev_config *cfg)
       __rte_experimental int rte_regexdev_queue_pair_setup (uint8_t dev_id,
	   uint16_t queue_pair_id, const struct	rte_regexdev_qp_conf *qp_conf)
       __rte_experimental int rte_regexdev_start (uint8_t dev_id)
       __rte_experimental int rte_regexdev_stop	(uint8_t dev_id)
       __rte_experimental int rte_regexdev_close (uint8_t dev_id)
       __rte_experimental int rte_regexdev_attr_get (uint8_t dev_id, enum
	   rte_regexdev_attr_id	attr_id, void *attr_value)
       __rte_experimental int rte_regexdev_attr_set (uint8_t dev_id, enum
	   rte_regexdev_attr_id	attr_id, const void *attr_value)
       __rte_experimental int rte_regexdev_rule_db_update (uint8_t dev_id,
	   const struct	rte_regexdev_rule *rules, uint32_t nb_rules)
       __rte_experimental int rte_regexdev_rule_db_compile_activate (uint8_t
	   dev_id)
       __rte_experimental int rte_regexdev_rule_db_import (uint8_t dev_id,
	   const char *rule_db,	uint32_t rule_db_len)
       __rte_experimental int rte_regexdev_rule_db_export (uint8_t dev_id,
	   char	*rule_db)
       __rte_experimental int rte_regexdev_xstats_names_get (uint8_t dev_id,
	   struct rte_regexdev_xstats_map *xstats_map)
       __rte_experimental int rte_regexdev_xstats_get (uint8_t dev_id, const
	   uint16_t *ids, uint64_t *values, uint16_t nb_values)
       __rte_experimental int rte_regexdev_xstats_by_name_get (uint8_t dev_id,
	   const char *name, uint16_t *id, uint64_t *value)
       __rte_experimental int rte_regexdev_xstats_reset	(uint8_t dev_id, const
	   uint16_t *ids, uint16_t nb_ids)
       __rte_experimental int rte_regexdev_selftest (uint8_t dev_id)
       __rte_experimental int rte_regexdev_dump	(uint8_t dev_id, FILE *f)
       static __rte_experimental uint16_t rte_regexdev_enqueue_burst (uint8_t
	   dev_id, uint16_t qp_id, struct rte_regex_ops	**ops, uint16_t
	   nb_ops)
       static __rte_experimental uint16_t rte_regexdev_dequeue_burst (uint8_t
	   dev_id, uint16_t qp_id, struct rte_regex_ops	**ops, uint16_t
	   nb_ops)

Detailed Description
       RTE RegEx Device	API

       Defines RTE RegEx Device	APIs for RegEx operations and its
       provisioning.

       The RegEx Device	API is composed	of two parts:

        The application-oriented RegEx	API that includes functions to setup a
	 RegEx	device	(configure  it,	 setup	its queue pairs	and start it),
	 update	the rule database and so on.

        The driver-oriented RegEx API that  exports  a	 function  allowing  a
	 RegEx	poll  Mode Driver (PMD)	to simultaneously register itself as a
	 RegEx device driver.

       RegEx device components and definitions:

       +-----------------+
       |		 |
       |		 o---------+	rte_regexdev_[en|de]queue_burst()
       |   PCRE	based	 o------+  |		   |
       |  RegEx	pattern	 |	|  |  +--------+   |
       | matching engine o------+--+--o	       |   |	+------+
       |		 |	|  |  |	queue  |<==o===>|Core 0|
       |		 o----+	|  |  |	pair 0 |	|      |
       |		 |    |	|  |  +--------+	+------+
       +-----------------+    |	|  |
	      ^		      |	|  |  +--------+
	      |		      |	|  |  |	       |	+------+
	      |		      |	+--+--o	queue  |<======>|Core 1|
	  Rule|Database	      |	   |  |	pair 1 |	|      |
       +------+----------+    |	   |  +--------+	+------+
       |     Group 0	 |    |	   |
       | +-------------+ |    |	   |  +--------+	+------+
       | | Rules 0..n  | |    |	   |  |	       |	|Core 2|
       | +-------------+ |    |	   +--o	queue  |<======>|      |
       |     Group 1	 |    |	      |	pair 2 |	+------+
       | +-------------+ |    |	      +--------+
       | | Rules 0..n  | |    |
       | +-------------+ |    |	      +--------+
       |     Group 2	 |    |	      |	       |	+------+
       | +-------------+ |    |	      |	queue  |<======>|Core n|
       | | Rules 0..n  | |    +-------o	pair n |	|      |
       | +-------------+ |	      +--------+	+------+
       |     Group n	 |
       | +-------------+ |<-------rte_regexdev_rule_db_update()
       | |	       | |<-------rte_regexdev_rule_db_compile_activate()
       | | Rules 0..n  | |<-------rte_regexdev_rule_db_import()
       | +-------------+ |------->rte_regexdev_rule_db_export()
       +-----------------+

	RegEx: A regular expression  is	 a  concise  and  flexible  means  for
       matching	 strings  of  text,  such  as particular characters, words, or
       patterns	of characters. A common	abbreviation for this is RegEx.

       RegEx device: A hardware	 or  software-based  implementation  of	 RegEx
       device API for PCRE based pattern matching syntax and semantics.

       PCRE	 RegEx	    syntax	and	 semantics	specification:
       http://regexkit.sourceforge.net/Documentation/pcre/pcrepattern.html

       RegEx queue pair: Each RegEx device should have one or more queue  pair
       to  transmit a burst of pattern matching	request	and receive a burst of
       receive	the  pattern   matching	  response.   The   pattern   matching
       request/response	embedded in rte_regex_ops structure.

       Rule: A pattern matching	rule expressed in PCRE RegEx syntax along with
       Match ID	and Group ID to	identify the rule upon the match.

       Rule  database:	The  RegEx  device  accepts  regular  expressions  and
       converts	them into a compiled rule database that	can then  be  used  to
       scan   data.  Compilation  allows  the  device  to  analyze  the	 given
       pattern(s) and pre-determine how	to  scan  for  these  patterns	in  an
       optimized  fashion  that	 would be far too expensive to compute at run-
       time. A rule database contains a	set of rules that compiled  in	device
       specific	binary form.

       Match  ID  or Rule ID: A	unique identifier provided at the time of rule
       creation	for the	application to identify	the rule upon match.

       Group ID: Group of rules	can be grouped under one group	ID  to	enable
       rule   isolation	  and  effective  pattern  matching.  A	 unique	 group
       identifier provided at the time of rule creation	for the	application to
       identify	the rule upon match.

       Scan: A pattern matching	request	through	enqueue	API.

       It may possible that a given RegEx  device  may	not  support  all  the
       features	 of  PCRE.  The	 application  may  probe  unsupported features
       through struct rte_regexdev_info::pcre_unsup_flags

       By default, all the functions of	the RegEx Device API exported by a PMD
       are lock-free functions which assume to not be invoked in  parallel  on
       different  logical  cores  to  work  on	the  same  target  object. For
       instance, the dequeue function of a PMD cannot be invoked  in  parallel
       on  two	logical	cores to operates on same RegEx	queue pair. Of course,
       this function can be invoked in parallel	by different logical  core  on
       different  queue	 pair.	It  is	the  responsibility of the upper level
       application to enforce this rule.

       In all functions	of the RegEx API, the RegEx device is designated by an
       integer >= 0 named the device identifier	dev_id

       At the RegEx driver level, RegEx	devices	are represented	by  a  generic
       data structure of type rte_regexdev.

       RegEx  devices  are  dynamically	 registered  during the	PCI/SoC	device
       probing phase performed at EAL initialization time. When	a RegEx	device
       is being	probed,	a rte_regexdev structure and a new  device  identifier
       are  allocated  for  that  device.  Then,  the regexdev_init() function
       supplied	by the RegEx driver matching the probed	device is  invoked  to
       properly	initialize the device.

       The role	of the device init function consists of	resetting the hardware
       or software RegEx driver	implementations.

       If  the device init operation is	successful, the	correspondence between
       the device identifier assigned to the new  device  and  its  associated
       rte_regexdev  structure	is effectively registered. Otherwise, both the
       rte_regexdev structure and the device identifier	are freed.

       The functions exported by the application RegEx API to setup  a	device
       designated  by  its  device identifier must be invoked in the following
       order:

        rte_regexdev_configure()

        rte_regexdev_queue_pair_setup()

        rte_regexdev_start()

       Then, the application can invoke, in any	order, the functions  exported
       by  the	RegEx  API  to	enqueue	 pattern matching job, dequeue pattern
       matching	response, get the stats, update	 the  rule  database,  get/set
       device attributes and so	on

       If  the	application  wants  to	change	the  configuration  (i.e. call
       rte_regexdev_configure()	or rte_regexdev_queue_pair_setup()),  it  must
       call  rte_regexdev_stop()  first	 to  stop  the	device and then	do the
       reconfiguration before calling rte_regexdev_start() again. The  enqueue
       and dequeue functions should not	be invoked when	the device is stopped.

       Finally,	 an  application  can  close  a	 RegEx	device by invoking the
       rte_regexdev_close() function.

       Each function of	the application	RegEx API invokes a specific  function
       of  the	PMD  that  controls the	target device designated by its	device
       identifier.

       For this	purpose, all device-specific functions of a RegEx  driver  are
       supplied	 through a set of pointers contained in	a generic structure of
       type regexdev_ops. The address of the regexdev_ops structure is	stored
       in  the rte_regexdev structure by the device init function of the RegEx
       driver, which is	invoked	during the PCI/SoC device  probing  phase,  as
       explained earlier.

       In  other  words,  each	function of the	RegEx API simply retrieves the
       rte_regexdev  structure	associated  with  the  device  identifier  and
       performs	 an  indirect  invocation of the corresponding driver function
       supplied	in the regexdev_ops structure of the rte_regexdev structure.

       For performance reasons,	the address of the fast-path functions of  the
       RegEx  driver  is not contained in the regexdev_ops structure. Instead,
       they are	directly stored	at the beginning of the	rte_regexdev structure
       to avoid	an extra indirect memory access	during their invocation.

       RTE RegEx device	drivers	do not use interrupts for enqueue  or  dequeue
       operation.  Instead, RegEx drivers export Poll-Mode enqueue and dequeue
       functions to applications.

       The enqueue operation submits a burst of	RegEx pattern matching request
       to the RegEx device and the dequeue operation gets a burst  of  pattern
       matching	response for the ones submitted	through	enqueue	operation.

       Typical application utilisation of the RegEx device API will follow the
       following programming flow.

        rte_regexdev_configure()

        rte_regexdev_queue_pair_setup()

        rte_regexdev_rule_db_update()	Needs  to  invoke  if precompiled rule
	 database   not	  provided   in	   rte_regexdev_config::rule_db	   for
	 rte_regexdev_configure()  and/or  application	needs  to  update rule
	 database.

        rte_regexdev_rule_db_compile_activate()   Needs    to	  invoke    if
	 rte_regexdev_rule_db_update function was used.

        Create	or reuse exiting mempool for rte_regex_ops objects.

        rte_regexdev_start()

        rte_regexdev_enqueue_burst()

        rte_regexdev_dequeue_burst()

       Definition in file rte_regexdev.h.

Macro Definition Documentation
   #define RTE_REGEXDEV_CAPA_RUNTIME_COMPILATION_F   (1ULL << 0)
       RegEx device does support compiling the rules at	runtime	unlike loading
       only	 the	  pre-built	rule	 database     using	struct
       rte_regexdev_config::rule_db in rte_regexdev_configure()

       See also
	   struct rte_regexdev_config::rule_db,	rte_regexdev_configure()

	   struct rte_regexdev_info::regexdev_capa

       Definition at line 280 of file rte_regexdev.h.

   #define RTE_REGEXDEV_CAPA_SUPP_PCRE_START_ANCHOR_F	(1ULL << 1)
       RegEx device support PCRE Anchor	to start of match flag.	Example	 RegEx
       is /\Gfoo\d/. Here \G asserts position at the end of the	previous match
       or  the	start  of  the	string for the first match. This position will
       change each time	the RegEx is applied to	the  subject  string.  If  the
       RegEx  is  applied  to  foo1foo2Zfoo3  the  first  two  matches will be
       successful for foo1foo2 and fail	for Zfoo3.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 291 of file rte_regexdev.h.

   #define RTE_REGEXDEV_CAPA_SUPP_PCRE_ATOMIC_GROUPING_F   (1ULL << 2)
       RegEx  device  support  PCRE  Atomic  grouping.	 Atomic	  groups   are
       represented  by	(?>).  An atomic group is a group that,	when the RegEx
       engine exits  from  it,	automatically  throws  away  all  backtracking
       positions  remembered  by any tokens inside the group. Example RegEx is
       a(?>bc|b)c if the given patterns	are abc	and abcc then a(bc|b)c matches
       both where as a(?>bc|b)c	matches	only abcc because atomic groups	 don't
       allow backtracking back to b.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 303 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_BACKTRACKING_CTRL_F	(1ULL << 3)
       RegEx  device support PCRE backtracking control verbs. Some examples of
       backtracking  verbs  are	 (*COMMIT),   (*ACCEPT),   (*FAIL),   (*SKIP),
       (*PRUNE).

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 311 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_CALLOUTS_F   (1ULL <<	4)
       RegEx  device  support  PCRE  callouts.	PCRE supports calling external
       function	in between matches by using (?C). Example RegEx	ABC(?C)D if  a
       given  patter  is  ABCD	then the RegEx engine will parse ABC perform a
       userdefined callout and return a	successful match at D.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 321 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_BACKREFERENCE_F   (1ULL << 5)
       RegEx   device	support	  PCRE	 backreference.	  Example   RegEx   is
       (\2ABC|(GHI))+ \2 matches the same text as most recently	matched	by the
       2nd capturing group i.e.	GHI.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 329 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_GREEDY_F   (1ULL << 6)
       RegEx  device  support  PCRE  Greedy  mode. For example if the RegEx is
       AB\d*? then *? represents zero or unlimited matches. In greedy mode the
       pattern AB12345 will be matched completely where	as the	ungreedy  mode
       AB will be returned as the match.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 338 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_MATCH_ALL_F	(1ULL << 7)
       RegEx device support match all mode. For	example	if the RegEx is	AB\d*?
       then  *?	 represents  zero  or unlimited	matches. In match all mode the
       pattern AB12345 will return 6 matches. AB, AB1,	AB12,  AB123,  AB1234,
       AB12345.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 347 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_LOOKAROUND_ASRT_F   (1ULL << 8)
       RegEx   device	support	  PCRE	 Lookaround   assertions   (Zero-width
       assertions). Example RegEx is [a-z]+\d+(?=!{3,})	if the	given  pattern
       is  dwad1234!  the  RegEx engine	doesn't	report any matches because the
       assert  (?=!{3,})  fails.  The  pattern	dwad123!!!  would   return   a
       successful match.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 357 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_MATCH_POINT_RST_F   (1ULL << 9)
       RegEx  device doesn't support PCRE match	point reset directive. Example
       RegEx is	[a-z]+\K\d+ if the pattern is dwad123  then  even  though  the
       entire pattern matches only 123 is reported as a	match.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 366 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_NEWLINE_CONVENTIONS_F   (1ULL << 10)
       RegEx   support	 PCRE  newline	convention.  Newline  conventions  are
       represented as follows: (*CR) carriage return  (*LF)  linefeed  (*CRLF)
       carriage	return,	followed by linefeed (*ANYCRLF)	any of the three above
       (*ANY) all Unicode newline sequences

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 378 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_NEWLINE_SEQ_F	  (1ULL	<< 11)
       RegEx device support PCRE newline sequence. The escape sequence \R will
       match	 any	 newline    sequence.	 It    is    equivalent	   to:
       (?>\r\n|\n|\x0b|\f|\r|\x85).

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 386 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_POSSESSIVE_QUALIFIERS_F   (1ULL << 12)
       RegEx  device  support  PCRE  possessive	 qualifiers.   Example	 RegEx
       possessive qualifiers *+, ++, ?+, {m,n}+. Possessive quantifier repeats
       the  token as many times	as possible and	it does	not give up matches as
       the engine backtracks. With a possessive	quantifier, the	deal is	all or
       nothing.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 396 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_SUBROUTINE_REFERENCES_F   (1ULL << 13)
       RegEx  device  support  PCRE  Subroutine	 references.  PCRE  Subroutine
       references  allow for sub patterns to be	assessed as part of the	RegEx.
       Example	 RegEx	 is   (foo|fuzz)\g<1>+bar    matches	the    pattern
       foofoofuzzfoofuzzbar.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 405 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_UTF_8_F   (1ULL << 14)
       RegEx device support UTF-8 character encoding.

       See also
	   struct rte_regexdev_info::pcre_unsup_flags

       Definition at line 411 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_UTF_16_F   (1ULL << 15)
       RegEx device support UTF-16 character encoding.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 417 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_UTF_32_F   (1ULL << 16)
       RegEx device support UTF-32 character encoding.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 423 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_WORD_BOUNDARY_F   (1ULL << 17)
       RegEx  device support word boundaries. The meta character \b represents
       word boundary anchor.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 430 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_PCRE_FORWARD_REFERENCES_F	 (1ULL << 18)
       RegEx device support Forward references.	Forward	references  allow  you
       to  use	a  back	 reference to a	group that appears later in the	RegEx.
       Example RegEx is	 (\3ABC|(DEF|(GHI)))+  matches	the  following	string
       GHIGHIABCDEF.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 439 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_MATCH_AS_END_F   (1ULL << 19)
       RegEx  device  support  match as	end. Match as end means	that the match
       result holds the	end offset of the detected match. No len value is set.
       If the device doesn't support this feature it means  the	 match	result
       holds the starting position of match and	the length of the match.

       See also
	   struct rte_regexdev_info::regexdev_capa

       Definition at line 449 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_CROSS_BUFFER_F   (1ULL << 20)
       RegEx  device  support  cross buffer match. Cross buffer	matching means
       that the	match can be detected  even  if	 the  string  was  started  in
       previous	   buffer.    In    case   the	 device	  is   configured   as
       RTE_REGEXDEV_CFG_MATCH_AS_END the end offset will be relative  for  the
       first  packet. For example RegEx	is ABC the first buffer	is xxxx	second
       buffer yyyA and the last	buffer BCzz. In	 case  the  match  as  end  is
       configured the end offset will be 10.

       See also
	   RTE_REGEXDEV_CFG_MATCH_AS_END_F

	   RTE_REGEXDEV_CFG_CROSS_BUFFER_SCAN_F

	   RTE_REGEX_OPS_RSP_PMI_SOJ_F

	   RTE_REGEX_OPS_RSP_PMI_EOJ_F

       Definition at line 465 of file rte_regexdev.h.

   #define RTE_REGEXDEV_SUPP_MATCH_ALL_F   (1ULL << 21)
       RegEx  device  support match all. Match all means that the RegEx	engine
       will return all possible	matches. For example, assume the RegEx is A+b,
       given the input AAAb the	returned matches will be: Ab, AAb and AAAb.

       See also
	   RTE_REGEXDEV_CFG_MATCH_ALL_F

       Definition at line 474 of file rte_regexdev.h.

   #define RTE_REGEXDEV_CAPA_QUEUE_PAIR_OOS_F	(1ULL << 22)
       RegEx device supports out of order scan.	Out of order  scan  means  the
       response	 of a specific job can be returned as soon as it is ready even
       if previous jobs	on the same queue didn't complete.

       See also
	   RTE_REGEX_QUEUE_PAIR_CFG_OOS_F

	   struct rte_regexdev_info::regexdev_capa

       Definition at line 483 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_ALLOW_EMPTY_F   (1ULL <<	0)
       When this flag is set, the pattern that	can  match  against  an	 empty
       string, such as .* are allowed.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 492 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_ANCHORED_F   (1ULL << 1)
       When this flag is set, the pattern is forced to be 'anchored', that is,
       it  is  constrained  to	match  only at the first matching point	in the
       string that is being searched. Similar to ^ and represented by \A.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 501 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_CASELESS_F   (1ULL << 2)
       When this flag is set, letters in the  pattern  match  both  upper  and
       lower case letters in the subject.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 509 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_DOTALL_F	  (1ULL	<< 3)
       When  this  flag	is set,	a dot metacharacter in the pattern matches any
       character, including one	that indicates a newline.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 517 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_DUPNAMES_F   (1ULL << 4)
       When this flag is set, names used to identify capture groups  need  not
       be unique.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 525 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_EXTENDED_F   (1ULL << 5)
       When  this  flag	is set,	most white space characters in the pattern are
       totally ignored except when escaped or inside a character class.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 533 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_MATCH_UNSET_BACKREF_F   (1ULL <<	6)
       When this flag is set,  a  backreference	 to  an	 unset	capture	 group
       matches an empty	string.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 541 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_MULTILINE_F   (1ULL << 7)
       When  this  flag	 is  set,  the	^  and	$ constructs match immediately
       following or  immediately  before  internal  newlines  in  the  subject
       string, respectively, as	well as	at the very start and end.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 550 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_NO_AUTO_CAPTURE_F   (1ULL << 8)
       When  this  Flag	 is  set,  it  disables	 the use of numbered capturing
       parentheses   in	  the	pattern.   References	to   capture	groups
       (backreferences	or recursion/subroutine	calls) may only	refer to named
       groups, though the reference can	be by name or by number.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 560 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_UCP_F   (1ULL <<	9)
       By default, only	ASCII characters are recognized,  When	this  flag  is
       set, Unicode properties are used	instead	to classify characters.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 568 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_UNGREEDY_F   (1ULL << 10)
       When  this flag is set, the 'greediness'	of the quantifiers is inverted
       so that they are	not greedy by default, but become greedy  if  followed
       by ?.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 577 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_UTF_F   (1ULL <<	11)
       When  this flag is set, RegEx engine has	to regard both the pattern and
       the subject strings that	are subsequently processed as strings  of  UTF
       characters instead of single-code-unit strings.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 586 of file rte_regexdev.h.

   #define RTE_REGEX_PCRE_RULE_NEVER_BACKSLASH_C_F   (1ULL << 12)
       This  flag  locks  out  the  use	 of  \C	 in  the pattern that is being
       compiled. This escape matches one data unit, even in UTF	mode which can
       cause unpredictable behavior in UTF-8 or	UTF-16 modes, because  it  may
       leave the current matching point	in the mi:set hlsearchddle of a	multi-
       code-unit character.

       See also
	   struct rte_regexdev_info::rule_flags

	   struct rte_regexdev_rule::rule_flags

       Definition at line 597 of file rte_regexdev.h.

   #define RTE_REGEXDEV_CFG_CROSS_BUFFER_SCAN_F	  (1ULL	<< 0)
       Cross  buffer  scan  refers to the ability to be	able to	detect matches
       that occur across buffer	boundaries, where the buffers are  related  to
       each  other  in	some  way.  Enable this	flag when to scan payload size
       greater than struct rte_regexdev_info::max_payload_size and/or  matches
       can present across scan buffer boundaries.

       See also
	   struct rte_regexdev_info::max_payload_size

	   struct rte_regexdev_config::dev_cfg_flags, rte_regexdev_configure()

	   RTE_REGEX_OPS_RSP_PMI_SOJ_F

	   RTE_REGEX_OPS_RSP_PMI_EOJ_F

       Definition at line 660 of file rte_regexdev.h.

   #define RTE_REGEXDEV_CFG_MATCH_AS_END_F   (1ULL << 1)
       Match as	end is the ability to return the result	as ending offset. When
       this flag is set, the result for	each match will	hold the ending	offset
       of  the	match  in  end_offset. If this flag is not set,	then the match
       result will hold	the starting offset in start_offset, and the length of
       the match in len.

       See also
	   RTE_REGEXDEV_SUPP_MATCH_AS_END_F

       Definition at line 670 of file rte_regexdev.h.

   #define RTE_REGEXDEV_CFG_MATCH_ALL_F	  (1ULL	<< 2)
       Match all is the	ability	to return all possible results.

       See also
	   RTE_REGEXDEV_SUPP_MATCH_ALL_F

       Definition at line 676 of file rte_regexdev.h.

   #define RTE_REGEX_QUEUE_PAIR_CFG_OOS_F   (1ULL << 0)
       Out of order scan, If not set, a	 scan  must  retire  after  previously
       issued  in-order	 scans	to  this  queue	pair. If set, this scan	can be
       retired as soon as device returns completion.  Application  should  not
       set out of order	scan flag if it	needs to maintain the ingress order of
       scan request.

       See also
	   struct rte_regexdev_qp_conf::qp_conf_flags

	   rte_regexdev_queue_pair_setup()

       Definition at line 756 of file rte_regexdev.h.

   #define RTE_REGEXDEV_XSTATS_NAME_SIZE   64
       Maximum name length for extended	statistics counters

       Definition at line 1086 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_REQ_GROUP_ID0_VALID_F	 (1 << 0)
       Set when	struct rte_regexdev_rule::group_id0 is valid.

       Definition at line 1274 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_REQ_GROUP_ID1_VALID_F	 (1 << 1)
       Set when	struct rte_regexdev_rule::group_id1 is valid.

       Definition at line 1277 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_REQ_GROUP_ID2_VALID_F	 (1 << 2)
       Set when	struct rte_regexdev_rule::group_id2 is valid.

       Definition at line 1280 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_REQ_GROUP_ID3_VALID_F	 (1 << 3)
       Set when	struct rte_regexdev_rule::group_id3 is valid.

       Definition at line 1283 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_REQ_STOP_ON_MATCH_F   (1 << 4)
       The RegEx engine	will stop scanning and return the first	match.

       Definition at line 1286 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_REQ_MATCH_HIGH_PRIORITY_F   (1	<< 5)
       In  High	Priority mode a	maximum	of one match will be returned per scan
       to reduce the post-processing required by the  application.  The	 match
       with  the  lowest Rule id, lowest start pointer and lowest match	length
       will be returned.

       See also
	   struct rte_regex_ops::nb_actual_matches

	   struct rte_regex_ops::nb_matches

       Definition at line 1296 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_RSP_PMI_SOJ_F	 (1 << 0)
       Indicates that the RegEx	device has encountered a partial match at  the
       start of	scan in	the given buffer.

       See also
	   RTE_REGEXDEV_CFG_CROSS_BUFFER_SCAN_F

       Definition at line 1305 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_RSP_PMI_EOJ_F	 (1 << 1)
       Indicates  that the RegEx device	has encountered	a partial match	at the
       end of scan in the given	buffer.

       See also
	   RTE_REGEXDEV_CFG_CROSS_BUFFER_SCAN_F

       Definition at line 1312 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_RSP_MAX_SCAN_TIMEOUT_F	  (1 <<	2)
       Indicates that the RegEx	device has  exceeded  the  max	timeout	 while
       scanning	the given buffer.

       See also
	   RTE_REGEXDEV_ATTR_MAX_SCAN_TIMEOUT

       Definition at line 1319 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_RSP_MAX_MATCH_F   (1 << 3)
       Indicates  that	the  RegEx  device  has	exceeded the max matches while
       scanning	the given buffer.

       See also
	   RTE_REGEXDEV_ATTR_MAX_MATCHES

       Definition at line 1326 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_RSP_MAX_PREFIX_F   (1 << 4)
       Indicates that the RegEx	device has  reached  the  max  allowed	prefix
       length while scanning the given buffer.

       See also
	   RTE_REGEXDEV_ATTR_MAX_PREFIX

       Definition at line 1333 of file rte_regexdev.h.

   #define RTE_REGEX_OPS_RSP_RESOURCE_LIMIT_REACHED_F	(1 << 4)
       Indicates  that	the  RegEx device has reached the max allowed resource
       allowed while scanning the given	buffer.

       Definition at line 1338 of file rte_regexdev.h.

Typedef	Documentation
   typedef void(*  regexdev_stop_flush_t)  (uint8_t  dev_id,  uint16_t	qp_id,
       struct rte_regex_ops *op)
       Callback	 function  called during rte_regexdev_stop(), invoked once per
       flushed RegEx op.

       Definition at line 759 of file rte_regexdev.h.

Enumeration Type Documentation
   enum	rte_regexdev_attr_id
       Enumerates RegEx	device attribute identifier

       Enumerator

       RTE_REGEXDEV_ATTR_SOCKET_ID
	      The NUMA socket id to which the device is	connected or a default
	      of zero if the socket could not  be  determined.	datatype:  int
	      operation: get

       RTE_REGEXDEV_ATTR_MAX_MATCHES
	      Maximum number of	matches	per scan. datatype: uint8_t operation:
	      get and set

       See also
	   RTE_REGEX_OPS_RSP_MAX_MATCH_F

       RTE_REGEXDEV_ATTR_MAX_SCAN_TIMEOUT
	      Upper  bound  scan time in ns. datatype: uint16_t	operation: get
	      and set

       See also
	   RTE_REGEX_OPS_RSP_MAX_SCAN_TIMEOUT_F

       RTE_REGEXDEV_ATTR_MAX_PREFIX
	      Maximum number of	prefix detected	per scan. This would be	useful
	      for denial of service detection. datatype:  uint16_t  operation:
	      get and set

       See also
	   RTE_REGEX_OPS_RSP_MAX_PREFIX_F

       Definition at line 868 of file rte_regexdev.h.

   enum	rte_regexdev_rule_op
       Enumerates RegEx	rule operation.

       Enumerator

       RTE_REGEX_RULE_OP_ADD
	      Add RegEx	rule to	rule database.

       RTE_REGEX_RULE_OP_REMOVE
	      Remove RegEx rule	from rule database.

       Definition at line 946 of file rte_regexdev.h.

Function Documentation
   __rte_experimental int rte_regexdev_is_valid_dev (uint16_t dev_id)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Check if	dev_id is ready.

       Parameters
	   dev_id The dev identifier of	the RegEx device.

       Returns

	    0 if device state is not in ready state.

	    1 if device state is ready	state.

   __rte_experimental uint8_t rte_regexdev_count (void)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Get  the	 total	number	of  RegEx  devices that	have been successfully
       initialised.

       Returns
	   The total number of usable RegEx devices.

   __rte_experimental int rte_regexdev_get_dev_id (const char *	name)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Get the device identifier for the named RegEx device.

       Parameters
	   name	RegEx device name to select the	RegEx device identifier.

       Returns
	   Returns RegEx device	identifier on success.

	    <0: Failure to find named RegEx device.

   __rte_experimental  int  rte_regexdev_info_get  (uint8_t   dev_id,	struct
       rte_regexdev_info * dev_info)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Retrieve	the contextual information of a	RegEx device.

       Parameters
	   dev_id The identifier of the	device.
	   dev_info  A	pointer	to a structure of type rte_regexdev_info to be
	   filled with the contextual information of the device.

       Returns

	    0:	Success, driver	updates	 the  contextual  information  of  the
	     RegEx device

	    <0: Error code returned by	the driver info	get function.

   __rte_experimental int rte_regexdev_configure (uint8_t dev_id, const	struct
       rte_regexdev_config * cfg)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Configure a RegEx device.

       This  function  must  be	invoked	first before any other function	in the
       API. This function can also be re-invoked  when	a  device  is  in  the
       stopped state.

       The  caller  may	 use  rte_regexdev_info_get() to get the capability of
       each resources available	for this regex device.

       Parameters
	   dev_id The identifier of the	device to configure.
	   cfg The RegEx device	configuration structure.

       Returns

	    0:	 Success,  device  configured.	Otherwise  negative  errno  is
	     returned.

   __rte_experimental	int   rte_regexdev_queue_pair_setup  (uint8_t  dev_id,
       uint16_t	queue_pair_id, const struct rte_regexdev_qp_conf * qp_conf)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Allocate	and set	up a RegEx queue pair for a RegEx device.

       Parameters
	   dev_id The identifier of the	device.
	   queue_pair_id The index of the RegEx	queue pair to setup. The value
	   must	be in the range	[0, nb_queue_pairs - 1]	previously supplied to
	   rte_regexdev_configure().
	   qp_conf The pointer to the configuration data to be	used  for  the
	   RegEx  queue	 pair.	NULL  value  is	allowed, in which case default
	   configuration used.

       Returns
	   0 on	success. Otherwise negative errno is returned.

   __rte_experimental int rte_regexdev_start (uint8_t dev_id)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Start a RegEx device.

       The device start	step is	the last one and consists of setting the RegEx
       queues to start accepting the pattern matching scan requests.

       On success, all basic functions exported	by  the	 API  (RegEx  enqueue,
       RegEx dequeue and so on)	can be invoked.

       Parameters
	   dev_id RegEx	device identifier.

       Returns
	   0 on	success. Otherwise negative errno is returned.

   __rte_experimental int rte_regexdev_stop (uint8_t dev_id)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Stop a RegEx device.

       Stop  a	RegEx  device.	The  device  can  be  restarted	with a call to
       rte_regexdev_start().

       This function causes all	queued response	regex ops to be	drained	in the
       response	 queue.	 While	draining  ops  out  of	the   device,	struct
       rte_regexdev_qp_conf::cb	will be	invoked	for each ops.

       Parameters
	   dev_id RegEx	device identifier.

       Returns
	   0 on	success. Otherwise negative errno is returned.

   __rte_experimental int rte_regexdev_close (uint8_t dev_id)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Close a RegEx device. The device	cannot be restarted!

       Parameters
	   dev_id RegEx	device identifier

       Returns
	   0 on	success. Otherwise negative errno is returned.

   __rte_experimental	int   rte_regexdev_attr_get   (uint8_t	 dev_id,  enum
       rte_regexdev_attr_id attr_id, void * attr_value)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Get an attribute	from a RegEx device.

       Parameters
	   dev_id RegEx	device identifier.
	   attr_id The attribute ID to retrieve.
	   attr_value A	pointer	that will be  filled  in  with	the  attribute
	   value if successful.

       Returns

	    0:	Successfully retrieved attribute value.

	    -EINVAL:  Invalid	device	or  attr_id provided, or attr_value is
	     NULL.

	    -ENOTSUP: if the device doesn't support specific attr_id.

   __rte_experimental  int   rte_regexdev_attr_set   (uint8_t	dev_id,	  enum
       rte_regexdev_attr_id attr_id, const void	* attr_value)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Set an attribute	to a RegEx device.

       Parameters
	   dev_id RegEx	device identifier.
	   attr_id The attribute ID to retrieve.
	   attr_value  Pointer that will be filled in with the attribute value
	   by the application.

       Returns

	    0:	Successfully applied the attribute value.

	    -EINVAL: Invalid device or	attr_id	 provided,  or	attr_value  is
	     NULL.

	    -ENOTSUP: if the device doesn't support specific attr_id.

   __rte_experimental  int  rte_regexdev_rule_db_update	(uint8_t dev_id, const
       struct rte_regexdev_rule	* rules, uint32_t nb_rules)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Update the local	rule set. This functions only modify the rule  set  in
       memory.	In  order  for	the  changes  to  take	effect,	 the  function
       rte_regexdev_rule_db_compile_active must	be called.

       Parameters
	   dev_id RegEx	device identifier.
	   rules  Points  to  an   array   of	nb_rules   objects   of	  type
	   rte_regexdev_rule   structure   which   contain   the  regex	 rules
	   attributes to be updated in rule database.
	   nb_rules The	number of PCRE rules to	update the rule	database.

       Returns
	   The number of regex rules actually updated on  the  regex  device's
	   rule	 database.  The	return value can be less than the value	of the
	   nb_rules parameter when the regex devices fails to update the  rule
	   database   or   if	invalid	  parameters   are   specified	 in  a
	   rte_regexdev_rule. If the return value is less than	nb_rules,  the
	   remaining  PCRE  rules at the end of	rules are not consumed and the
	   caller has to take care of them and rte_errno is  set  accordingly.
	   Possible errno values include:

	    -EINVAL: Invalid device ID	or rules is NULL

	    -ENOTSUP:	The  last  processed  rule  is	not  supported on this
	     device.

	    -ENOSPC: No space available in rule database.

       See also
	   rte_regexdev_rule_db_import(),	rte_regexdev_rule_db_export(),
	   rte_regexdev_rule_db_compile_activate()

   __rte_experimental	int   rte_regexdev_rule_db_compile_activate   (uint8_t
       dev_id)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Compile local rule set and  burn	 the  complied	result	to  the	 RegEx
       device.

       Parameters
	   dev_id RegEx	device identifier.

       Returns
	   0 on	success, otherwise negative errno.

       See also
	   rte_regexdev_rule_db_import(),	rte_regexdev_rule_db_export(),
	   rte_regexdev_rule_db_update()

   __rte_experimental int rte_regexdev_rule_db_import (uint8_t	dev_id,	 const
       char * rule_db, uint32_t	rule_db_len)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Import a	prebuilt rule database from a buffer to	a RegEx	device.

       Parameters
	   dev_id RegEx	device identifier.
	   rule_db Points to prebuilt rule database.
	   rule_db_len Length of the rule database.

       Returns

	    0:	Successfully updated the prebuilt rule database.

	    -EINVAL: Invalid device ID	or rule_db is NULL

	    -ENOTSUP: Rule database import is not supported on	this device.

	    -ENOSPC: No space available in rule database.

       See also
	   rte_regexdev_rule_db_update(), rte_regexdev_rule_db_export()

   __rte_experimental  int rte_regexdev_rule_db_export (uint8_t	dev_id,	char *
       rule_db)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Export the prebuilt rule	database from a	RegEx device to	the buffer.

       Parameters
	   dev_id RegEx	device identifier.
	   rule_db Block of memory to insert the rule  database.  Must	be  at
	   least  size	in capacity. If	set to NULL, function returns required
	   capacity.

       Returns

	    0:	Successfully exported the prebuilt rule	database.

	    size: If rule_db set to NULL then required	capacity for rule_db

	    -EINVAL: Invalid device ID

	    -ENOTSUP: Rule database export is not supported on	this device.

       See also
	   rte_regexdev_rule_db_update(), rte_regexdev_rule_db_import()

   __rte_experimental  int  rte_regexdev_xstats_names_get   (uint8_t   dev_id,
       struct rte_regexdev_xstats_map *	xstats_map)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Retrieve	names of extended statistics of	a regex	device.

       Parameters
	   dev_id The identifier of the	regex device.
	   xstats_map  Block of	memory to insert id and	names into. Must be at
	   least size in capacity. If set to NULL, function  returns  required
	   capacity.

       Returns

	    Positive  value  on  success:  -The return	value is the number of
	     entries filled in the stats map. -If xstats_map set to NULL  then
	     required capacity for xstats_map.

	    Negative  value  on error:	-ENODEV	for invalid dev_id -ENOTSUP if
	     the device	doesn't	support	this function.

   __rte_experimental  int  rte_regexdev_xstats_get  (uint8_t  dev_id,	 const
       uint16_t	* ids, uint64_t	* values, uint16_t nb_values)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Retrieve	extended statistics of an regex	device.

       Parameters
	   dev_id The identifier of the	device.
	   ids The id numbers of the stats to get. The ids can be got from the
	   stat	      position	     in	     the      stat	list	  from
	   rte_regexdev_xstats_names_get(),	   or	      by	 using
	   rte_regexdev_xstats_by_name_get().
	   values The values for each stats request by ID.
	   nb_values The number	of stats requested.

       Returns

	    Positive  value:  number  of  stat	entries	filled into the	values
	     array

	    Negative value on error: -ENODEV for invalid dev_id  -ENOTSUP  if
	     the device	doesn't	support	this function.

   __rte_experimental  int  rte_regexdev_xstats_by_name_get  (uint8_t  dev_id,
       const char * name, uint16_t * id, uint64_t * value)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Retrieve	the value of a single stat by requesting it by name.

       Parameters
	   dev_id The identifier of the	device.
	   name	The stat name to retrieve.
	   id If non-NULL, the numerical id of the stat	will be	 returned,  so
	   that	  further   requests   for   the   stat	  can	be  got	 using
	   rte_regexdev_xstats_get, which will be faster as it doesn't need to
	   scan	a list of names	for the	stat.
	   value Must be non-NULL, retrieved xstat value  will	be  stored  in
	   this	address.

       Returns

	    0:	Successfully retrieved xstat value.

	    -EINVAL: invalid parameters

	    -ENOTSUP: if not supported.

   __rte_experimental  int  rte_regexdev_xstats_reset  (uint8_t	 dev_id, const
       uint16_t	* ids, uint16_t	nb_ids)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Reset the values	of the xstats of the selected component	in the device.

       Parameters
	   dev_id The identifier of the	device.
	   ids Selects	specific  statistics  to  be  reset.  When  NULL,  all
	   statistics  will  be	 reset.	If non-NULL, must point	to array of at
	   least nb_ids	size.
	   nb_ids The number of	ids available from the ids array. Ignored when
	   ids is NULL.

       Returns

	    0:	Successfully reset the statistics to zero.

	    -EINVAL: invalid parameters.

	    -ENOTSUP: if not supported.

   __rte_experimental int rte_regexdev_selftest	(uint8_t dev_id)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Trigger the RegEx device	self test.

       Parameters
	   dev_id The identifier of the	device.

       Returns

	    0:	Selftest successful.

	    -ENOTSUP if the device doesn't support selftest.

	    other values < 0 on failure.

   __rte_experimental int rte_regexdev_dump (uint8_t dev_id, FILE * f)
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Dump internal information about dev_id to the FILE* provided in f.

       Parameters
	   dev_id The identifier of the	device.
	   f A pointer to a file for output.

       Returns
	   0 on	success, negative errno	on failure.

   static  __rte_experimental  uint16_t	 rte_regexdev_enqueue_burst   (uint8_t
       dev_id,	uint16_t  qp_id, struct	rte_regex_ops ** ops, uint16_t nb_ops)
       [inline],  [static]
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Enqueue a burst of scan request on a RegEx device.

       The rte_regexdev_enqueue_burst()	function is  invoked  to  place	 regex
       operations on the queue qp_id of	the device designated by its dev_id.

       The  nb_ops  parameter is the number of operations to process which are
       supplied	in the ops array of rte_regexdev_op structures.

       The  rte_regexdev_enqueue_burst()  function  returns  the   number   of
       operations it actually enqueued for processing. A return	value equal to
       nb_ops means that all packets have been enqueued.

       Parameters
	   dev_id The identifier of the	device.
	   qp_id  The index of the queue pair which packets are	to be enqueued
	   for processing. The value must be in	the range [0, nb_queue_pairs -
	   1] previously supplied to rte_regexdev_configure().
	   ops The address of an array of nb_ops pointers  to  rte_regexdev_op
	   structures which contain the	regex operations to be processed.
	   nb_ops The number of	operations to process.

       Returns
	   The number of operations actually enqueued on the regex device. The
	   return  value  can  be  less	than the value of the nb_ops parameter
	   when	the regex devices queue	is full	or if invalid  parameters  are
	   specified  in  a  rte_regexdev_op. If the return value is less than
	   nb_ops, the remaining ops at	the end	of ops are  not	 consumed  and
	   the caller has to take care of them.

       Definition at line 1470 of file rte_regexdev.h.

   static   __rte_experimental	uint16_t  rte_regexdev_dequeue_burst  (uint8_t
       dev_id, uint16_t	qp_id, struct rte_regex_ops ** ops,  uint16_t  nb_ops)
       [inline],  [static]
       Warning
	   EXPERIMENTAL: this API may change without prior notice.

       Dequeue	a burst	of scan	response from a	queue on the RegEx device. The
       dequeued	operation  are	stored	in  rte_regexdev_op  structures	 whose
       pointers	are supplied in	the ops	array.

       The  rte_regexdev_dequeue_burst()  function  returns  the number	of ops
       actually	 dequeued,  which  is  the  number  of	rte_regexdev_op	  data
       structures effectively supplied into the	ops array.

       A  return  value	 equal to nb_ops indicates that	the queue contained at
       least nb_ops operations,	and this  is  likely  to  signify  that	 other
       processed  operations  remain in	the devices output queue. Applications
       implementing a 'retrieve	as  many  processed  operations	 as  possible'
       policy	can   check   this   specific	case  and  keep	 invoking  the
       rte_regexdev_dequeue_burst() function until a value less	than nb_ops is
       returned.

       The rte_regexdev_dequeue_burst()	function does not  provide  any	 error
       notification to avoid the corresponding overhead.

       Parameters
	   dev_id The RegEx device identifier
	   qp_id  The index of the queue pair from which to retrieve processed
	   packets. The	value must be in the range  [0,	 nb_queue_pairs	 -  1]
	   previously supplied to rte_regexdev_configure().
	   ops	The  address  of  an  array  of	 pointers  to  rte_regexdev_op
	   structures that must	be large enough	to store  nb_ops  pointers  in
	   it.
	   nb_ops The maximum number of	operations to dequeue.

       Returns
	   The	number of operations actually dequeued,	which is the number of
	   pointers to rte_regexdev_op structures effectively supplied to  the
	   ops	array.	If the return value is less than nb_ops, the remaining
	   ops at the end of ops are not consumed and the caller has  to  take
	   care	of them.

       Definition at line 1530 of file rte_regexdev.h.

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

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

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

home | help