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

FreeBSD Manual Pages

  
 
  

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

NAME
       rte_table_action.h

SYNOPSIS
       #include	<stdint.h>
       #include	<rte_compat.h>
       #include	<rte_ether.h>
       #include	<rte_ip6.h>
       #include	<rte_meter.h>
       #include	<rte_table_hash.h>
       #include	'rte_pipeline.h'

   Data	Structures
       struct rte_table_action_common_config
       struct rte_table_action_fwd_params
       struct rte_table_action_lb_config
       struct rte_table_action_lb_params
       struct rte_table_action_dscp_table_entry
       struct rte_table_action_dscp_table
       struct rte_table_action_meter_profile
       struct rte_table_action_mtr_tc_params
       struct rte_table_action_mtr_counters_tc
       struct rte_table_action_mtr_config
       struct rte_table_action_mtr_params
       struct rte_table_action_mtr_counters
       struct rte_table_action_tm_config
       struct rte_table_action_tm_params
       struct rte_table_action_ether_hdr
       struct rte_table_action_vlan_hdr
       struct rte_table_action_mpls_hdr
       struct rte_table_action_pppoe_hdr
       struct rte_table_action_ipv4_header
       struct rte_table_action_ipv6_header
       struct rte_table_action_udp_header
       struct rte_table_action_vxlan_hdr
       struct rte_table_action_encap_ether_params
       struct rte_table_action_encap_vlan_params
       struct rte_table_action_encap_qinq_params
       struct rte_table_action_encap_mpls_params
       struct rte_table_action_encap_pppoe_params
       struct rte_table_action_encap_vxlan_params
       struct rte_table_action_encap_config
       struct rte_table_encap_ether_qinq_pppoe
       struct rte_table_action_encap_params
       struct rte_table_action_nat_config
       struct rte_table_action_nat_params
       struct rte_table_action_ttl_config
       struct rte_table_action_ttl_params
       struct rte_table_action_ttl_counters
       struct rte_table_action_stats_config
       struct rte_table_action_stats_params
       struct rte_table_action_stats_counters
       struct rte_table_action_time_params
       struct rte_table_action_vlo
       struct rte_table_action_sym_crypto_config
       struct rte_table_action_sym_crypto_params
       struct rte_table_action_tag_params
       struct rte_table_action_decap_params

   Macros
       #define RTE_TABLE_ACTION_LB_KEY_SIZE_MIN	  8
       #define RTE_TABLE_ACTION_LB_KEY_SIZE_MAX	  64
       #define RTE_TABLE_ACTION_LB_TABLE_SIZE	8
       #define RTE_TABLE_ACTION_TC_MAX	 16
       #define RTE_TABLE_ACTION_TC_QUEUE_MAX   16
       #define RTE_TABLE_ACTION_MPLS_LABELS_MAX	  4
       #define RTE_TABLE_ACTION_SYM_CRYPTO_IV_SIZE_MAX	 (16)

   Enumerations
       enum rte_table_action_type { RTE_TABLE_ACTION_FWD = 0,
	   RTE_TABLE_ACTION_LB,	RTE_TABLE_ACTION_MTR, RTE_TABLE_ACTION_TM,
	   RTE_TABLE_ACTION_ENCAP, RTE_TABLE_ACTION_NAT, RTE_TABLE_ACTION_TTL,
	   RTE_TABLE_ACTION_STATS, RTE_TABLE_ACTION_TIME,
	   RTE_TABLE_ACTION_SYM_CRYPTO,	RTE_TABLE_ACTION_TAG,
	   RTE_TABLE_ACTION_DECAP }
       enum rte_table_action_meter_algorithm { RTE_TABLE_ACTION_METER_SRTCM,
	   RTE_TABLE_ACTION_METER_TRTCM	}
       enum rte_table_action_policer { RTE_TABLE_ACTION_POLICER_COLOR_GREEN =
	   0, RTE_TABLE_ACTION_POLICER_COLOR_YELLOW,
	   RTE_TABLE_ACTION_POLICER_COLOR_RED, RTE_TABLE_ACTION_POLICER_DROP,
	   RTE_TABLE_ACTION_POLICER_MAX	}
       enum rte_table_action_encap_type	{ RTE_TABLE_ACTION_ENCAP_ETHER = 0,
	   RTE_TABLE_ACTION_ENCAP_VLAN,	RTE_TABLE_ACTION_ENCAP_QINQ,
	   RTE_TABLE_ACTION_ENCAP_MPLS,	RTE_TABLE_ACTION_ENCAP_PPPOE,
	   RTE_TABLE_ACTION_ENCAP_VXLAN, RTE_TABLE_ACTION_ENCAP_QINQ_PPPOE }

   Functions
       __rte_experimental struct rte_table_action_profile *
	   rte_table_action_profile_create (struct
	   rte_table_action_common_config *common)
       __rte_experimental int rte_table_action_profile_free (struct
	   rte_table_action_profile *profile)
       __rte_experimental int rte_table_action_profile_action_register (struct
	   rte_table_action_profile *profile, enum rte_table_action_type type,
	   void	*action_config)
       __rte_experimental int rte_table_action_profile_freeze (struct
	   rte_table_action_profile *profile)
       __rte_experimental struct rte_table_action * rte_table_action_create
	   (struct rte_table_action_profile *profile, uint32_t socket_id)
       __rte_experimental int rte_table_action_free (struct rte_table_action
	   *action)
       __rte_experimental int rte_table_action_table_params_get	(struct
	   rte_table_action *action, struct rte_pipeline_table_params *params)
       __rte_experimental int rte_table_action_apply (struct rte_table_action
	   *action, void *data,	enum rte_table_action_type type, void
	   *action_params)
       __rte_experimental int rte_table_action_dscp_table_update (struct
	   rte_table_action *action, uint64_t dscp_mask, struct
	   rte_table_action_dscp_table *table)
       __rte_experimental int rte_table_action_meter_profile_add (struct
	   rte_table_action *action, uint32_t meter_profile_id,	struct
	   rte_table_action_meter_profile *profile)
       __rte_experimental int rte_table_action_meter_profile_delete (struct
	   rte_table_action *action, uint32_t meter_profile_id)
       __rte_experimental int rte_table_action_meter_read (struct
	   rte_table_action *action, void *data, uint32_t tc_mask, struct
	   rte_table_action_mtr_counters *stats, int clear)
       __rte_experimental int rte_table_action_ttl_read	(struct
	   rte_table_action *action, void *data, struct
	   rte_table_action_ttl_counters *stats, int clear)
       __rte_experimental int rte_table_action_stats_read (struct
	   rte_table_action *action, void *data, struct
	   rte_table_action_stats_counters *stats, int clear)
       __rte_experimental int rte_table_action_time_read (struct
	   rte_table_action *action, void *data, uint64_t *timestamp)
       __rte_experimental struct rte_cryptodev_sym_session *
	   rte_table_action_crypto_sym_session_get (struct rte_table_action
	   *action, void *data)

Detailed Description
       RTE Pipeline Table Actions

       This API	provides a common set of actions for pipeline tables to	speed
       up application development.

       Each match-action rule added to a pipeline table	has associated data
       that stores the action context. This data is input to the table action
       handler called for every	input packet that hits the rule	as part	of the
       table lookup during the pipeline	execution. The pipeline	library	allows
       the user	to define his own table	actions	by providing customized	table
       action handlers (table lookup) and complete freedom of setting the
       rules and their data (table rule	add/delete). While the user can	still
       follow this process, this API is	intended to provide a quicker
       development alternative for a set of predefined actions.

       The typical steps to use	this API are:

        Define	 a table action	profile. This is a configuration template that
	 can potentially be  shared  by	 multiple  tables  from	 the  same  or
	 different  pipelines,	with  different	 tables	from the same pipeline
	 likely	to use different action	profiles.  For	every  table  using  a
	 given	action profile,	the profile defines the	set of actions and the
	 action	configuration to be implemented	for all	the table  rules.  API
	 functions:			    rte_table_action_profile_create(),
	 rte_table_action_profile_action_register(),
	 rte_table_action_profile_freeze().

        Instantiate the table action profile to create	table action  objects.
	 Each  pipeline	 table has its own table action	object.	API functions:
	 rte_table_action_create().

        Use the table action object to	generate  the  pipeline	 table	action
	 handlers  (invoked  by	 the  pipeline	table  lookup  operation). API
	 functions: rte_table_action_table_params_get().

        Use the table action object  to  generate  the	 rule  data  (for  the
	 pipeline  table rule add operation) based on given action parameters.
	 API functions:	rte_table_action_apply().

        Use the table action object to	read action data (e.g. stats counters)
	 for any given rule. API functions: rte_table_action_XYZ_read().

       Warning
	   EXPERIMENTAL: this API may change without prior notice

       Definition in file rte_table_action.h.

Macro Definition Documentation
   #define RTE_TABLE_ACTION_LB_KEY_SIZE_MIN   8
       RTE_TABLE_ACTION_LB Load	balance	key size min (number of	bytes).

       Definition at line 137 of file rte_table_action.h.

   #define RTE_TABLE_ACTION_LB_KEY_SIZE_MAX   64
       Load balance key	size max (number of bytes).

       Definition at line 140 of file rte_table_action.h.

   #define RTE_TABLE_ACTION_LB_TABLE_SIZE   8
       Load balance table size.

       Definition at line 143 of file rte_table_action.h.

   #define RTE_TABLE_ACTION_TC_MAX   16
       RTE_TABLE_ACTION_MTR Max	number of traffic classes (TCs).

       Definition at line 185 of file rte_table_action.h.

   #define RTE_TABLE_ACTION_TC_QUEUE_MAX   16
       Max number of queues per	traffic	class.

       Definition at line 188 of file rte_table_action.h.

   #define RTE_TABLE_ACTION_MPLS_LABELS_MAX   4
       Max number of MPLS labels per output packet for MPLS encapsulation.

       Definition at line 461 of file rte_table_action.h.

   #define RTE_TABLE_ACTION_SYM_CRYPTO_IV_SIZE_MAX   (16)
       RTE_TABLE_ACTION_CRYPTO

       Definition at line 709 of file rte_table_action.h.

Enumeration Type Documentation
   enum	rte_table_action_type
       Table actions.

       Enumerator

       RTE_TABLE_ACTION_FWD
	      Forward to next pipeline table, output port or drop.

       RTE_TABLE_ACTION_LB
	      Load balance.

       RTE_TABLE_ACTION_MTR
	      Traffic Metering and Policing.

       RTE_TABLE_ACTION_TM
	      Traffic Management.

       RTE_TABLE_ACTION_ENCAP
	      Packet encapsulations.

       RTE_TABLE_ACTION_NAT
	      Network Address Translation (NAT).

       RTE_TABLE_ACTION_TTL
	      Time to Live (TTL) update.

       RTE_TABLE_ACTION_STATS
	      Statistics.

       RTE_TABLE_ACTION_TIME
	      Timestamp.

       RTE_TABLE_ACTION_SYM_CRYPTO
	      Crypto.

       RTE_TABLE_ACTION_TAG
	      Tag.

       RTE_TABLE_ACTION_DECAP
	      Packet decapsulations.

       Definition at line 70 of	file rte_table_action.h.

   enum	rte_table_action_meter_algorithm
       Supported traffic metering algorithms.

       Enumerator

       RTE_TABLE_ACTION_METER_SRTCM
	      Single Rate Three	Color Marker (srTCM) - IETF RFC	2697.

       RTE_TABLE_ACTION_METER_TRTCM
	      Two Rate Three Color Marker (trTCM) - IETF RFC 2698.

       Definition at line 216 of file rte_table_action.h.

   enum	rte_table_action_policer
       Policer actions.

       Enumerator

       RTE_TABLE_ACTION_POLICER_COLOR_GREEN
	      Recolor the packet as green.

       RTE_TABLE_ACTION_POLICER_COLOR_YELLOW
	      Recolor the packet as yellow.

       RTE_TABLE_ACTION_POLICER_COLOR_RED
	      Recolor the packet as red.

       RTE_TABLE_ACTION_POLICER_DROP
	      Drop the packet.

       RTE_TABLE_ACTION_POLICER_MAX
	      Number of	policer	actions.

       Definition at line 239 of file rte_table_action.h.

   enum	rte_table_action_encap_type
       RTE_TABLE_ACTION_ENCAP Supported	packet encapsulation types.

       Enumerator

       RTE_TABLE_ACTION_ENCAP_ETHER
	      IP -> { Ether | IP }

       RTE_TABLE_ACTION_ENCAP_VLAN
	      IP -> { Ether | VLAN | IP	}

       RTE_TABLE_ACTION_ENCAP_QINQ
	      IP -> { Ether | S-VLAN | C-VLAN |	IP }

       RTE_TABLE_ACTION_ENCAP_MPLS
	      IP -> { Ether | MPLS | IP	}

       RTE_TABLE_ACTION_ENCAP_PPPOE
	      IP -> { Ether | PPPoE | PPP | IP }

       RTE_TABLE_ACTION_ENCAP_VXLAN
	      Ether -> { Ether | IP | UDP | VXLAN | Ether } Ether -> { Ether |
	      VLAN | IP	| UDP |	VXLAN |	Ether }

       RTE_TABLE_ACTION_ENCAP_QINQ_PPPOE
	      IP -> { Ether | S-VLAN | C-VLAN |	PPPoE |	PPP | IP }

       Definition at line 363 of file rte_table_action.h.

Function Documentation
   __rte_experimental	     struct	    rte_table_action_profile	     *
       rte_table_action_profile_create	(struct	rte_table_action_common_config
       * common)
       Table action profile create.

       Parameters
	   common Common action	configuration.

       Returns
	   Table action	profile	handle on success, NULL	otherwise.

   __rte_experimental	   int	    rte_table_action_profile_free      (struct
       rte_table_action_profile	* profile)
       Table action profile free.

       Parameters
	   profile Table profile action	handle (needs to be valid).

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental	int  rte_table_action_profile_action_register  (struct
       rte_table_action_profile	* profile,  enum  rte_table_action_type	 type,
       void * action_config)
       Table action profile action register.

       Parameters
	   profile  Table  profile action handle (needs	to be valid and	not in
	   frozen state).
	   type	Specific table action to be registered for profile.
	   action_config  Configuration	 for  the  type	 action.   If	struct
	   rte_table_action_*type*_config  is defined by the Table Action API,
	   it needs to point to	a valid	instance of this structure,  otherwise
	   it needs to be set to NULL.

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental	   int	   rte_table_action_profile_freeze     (struct
       rte_table_action_profile	* profile)
       Table action profile freeze.

       Once this function is called successfully, the given profile enters the
       frozen state with the following immediate effects: no more actions  can
       be  registered  for this	profile, so the	profile	can be instantiated to
       create table action objects.

       Parameters
	   profile Table profile action	handle (needs to be valid and  not  in
	   frozen state).

       Returns
	   Zero	on success, non-zero error code	otherwise.

       See also
	   rte_table_action_create()

   __rte_experimental	struct	 rte_table_action   *  rte_table_action_create
       (struct rte_table_action_profile	* profile, uint32_t socket_id)
       Table action create.

       Instantiates the	given table action profile to create  a	 table	action
       object.

       Parameters
	   profile  Table  profile  action  handle  (needs  to be valid	and in
	   frozen state).
	   socket_id CPU socket	ID where the internal data structures required
	   by the new table action object should be allocated.

       Returns
	   Handle to table action object on success, NULL on error.

       See also
	   rte_table_action_create()

   __rte_experimental int  rte_table_action_free  (struct  rte_table_action  *
       action)
       Table action free.

       Parameters
	   action Handle to table action object	(needs to be valid).

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental	  int	  rte_table_action_table_params_get    (struct
       rte_table_action	* action, struct rte_pipeline_table_params * params)
       Table action table params get.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   params Pipeline table parameters (needs to be pre-allocated).

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental int rte_table_action_apply  (struct  rte_table_action  *
       action,	 void	*   data,  enum	 rte_table_action_type	type,  void  *
       action_params)
       Table action apply.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   data	Data byte array	(typically table rule data)  to	 apply	action
	   type	on.
	   type	 Specific  table  action  previously  registered for the table
	   action profile of the action	object.
	   action_params  Parameters  for   the	  type	 action.   If	struct
	   rte_table_action_*type*_params  is defined by the Table Action API,
	   it needs to point to	a valid	instance of this structure,  otherwise
	   it needs to be set to NULL.

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental	  int	 rte_table_action_dscp_table_update    (struct
       rte_table_action	   *	action,	    uint64_t	 dscp_mask,	struct
       rte_table_action_dscp_table * table)
       Table action DSCP table update.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   dscp_mask  64-bit  mask  defining  the  DSCP	 table	entries	 to be
	   updated. If bit N is	set in this bit	mask, then DSCP	table entry  N
	   is to be updated, otherwise not.
	   table DSCP table.

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental	  int	 rte_table_action_meter_profile_add    (struct
       rte_table_action	  *   action,	uint32_t   meter_profile_id,	struct
       rte_table_action_meter_profile *	profile)
       Table action meter profile add.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   meter_profile_id  Meter  profile ID to be used for the profile once
	   it is successfully added to the action object (needs	to  be	unused
	   by  the  set	 of meter profiles currently registered	for the	action
	   object).
	   profile Meter profile to be added.

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental	int   rte_table_action_meter_profile_delete    (struct
       rte_table_action	* action, uint32_t meter_profile_id)
       Table action meter profile delete.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   meter_profile_id  Meter  profile  ID	 of  the  meter	 profile to be
	   deleted from	the action object (needs to be valid  for  the	action
	   object).

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental int rte_table_action_meter_read (struct rte_table_action
       *     action,	 void	  *    data,	uint32_t    tc_mask,	struct
       rte_table_action_mtr_counters * stats, int clear)
       Table action meter read.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   data	Data byte array	(typically table rule data) with meter	action
	   previously applied on it.
	   tc_mask  Bit	 mask  defining	 which traffic classes should have the
	   meter stats counters	read from data and stored into stats. If bit N
	   is set in this bit mask, then traffic  class	 N  is	part  of  this
	   operation,  otherwise  it is	not. If	bit N is set in	this bit mask,
	   then	traffic	class N	must be	one of the traffic  classes  that  are
	   enabled  for	 the  meter action in the table	action profile used by
	   the action object.
	   stats When non-NULL,	it points to the area where  the  meter	 stats
	   counters  read  from	 data are saved. Only the meter	stats counters
	   for the tc_mask traffic classes are read and	stored to stats.
	   clear When non-zero,	the meter stats	counters are cleared (i.e. set
	   to zero), otherwise the counters are	not modified.  When  the  read
	   operation  is  enabled  (stats is non-NULL),	the clear operation is
	   performed after the read operation is completed.

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental int rte_table_action_ttl_read (struct rte_table_action *
       action, void * data, struct rte_table_action_ttl_counters * stats,  int
       clear)
       Table action TTL	read.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   data	 Data  byte  array (typically table rule data) with TTL	action
	   previously applied on it.
	   stats When non-NULL,	it points to the  area	where  the  TTL	 stats
	   counters read from data are saved.
	   clear  When	non-zero, the TTL stats	counters are cleared (i.e. set
	   to zero), otherwise the counters are	not modified.  When  the  read
	   operation  is  enabled  (stats is non-NULL),	the clear operation is
	   performed after the read operation is completed.

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental int rte_table_action_stats_read (struct rte_table_action
       * action, void *	data, struct rte_table_action_stats_counters *	stats,
       int clear)
       Table action stats read.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   data	 Data byte array (typically table rule data) with stats	action
	   previously applied on it.
	   stats When non-NULL,	it points to the area where the	stats counters
	   read	from data are saved.
	   clear When non-zero,	the stats counters are cleared	(i.e.  set  to
	   zero),  otherwise  the  counters  are  not  modified. When the read
	   operation is	enabled	(stats is non-NULL), the  clear	 operation  is
	   performed after the read operation is completed.

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental  int rte_table_action_time_read (struct rte_table_action
       * action, void *	data, uint64_t * timestamp)
       Table action timestamp read.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   data	Data byte array	(typically table  rule	data)  with  timestamp
	   action previously applied on	it.
	   timestamp  Pre-allocated  memory where the timestamp	read from data
	   is saved (has to be non-NULL).

       Returns
	   Zero	on success, non-zero error code	otherwise.

   __rte_experimental	     struct	   rte_cryptodev_sym_session	     *
       rte_table_action_crypto_sym_session_get	 (struct   rte_table_action  *
       action, void * data)
       Table action cryptodev symmetric	session	get.

       Parameters
	   action Handle to table action object	(needs to be valid).
	   data	Data byte array	(typically table rule data)  with  sym	crypto
	   action.

       Returns
	   The pointer to the session on success, NULL otherwise.

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

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

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

home | help