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

  
 
  

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_AC-
	 TION_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_PO-
	 LICER_COLOR_RED,   RTE_TABLE_ACTION_POLICER_DROP,  RTE_TABLE_ACTION_PO-
	 LICER_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_AC-
	 TION_ENCAP_MPLS,   RTE_TABLE_ACTION_ENCAP_PPPOE,   RTE_TABLE_ACTION_EN-
	 CAP_VXLAN, RTE_TABLE_ACTION_ENCAP_QINQ_PPPOE }

   Functions
     __rte_experimental struct rte_table_action_profile *  rte_table_action_pro-
	 file_create (struct rte_table_action_common_config *common)
     __rte_experimental  int rte_table_action_profile_free (struct rte_table_ac-
	 tion_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_ta-
	 ble_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  *ac-
	 tion)
     __rte_experimental  int  rte_table_action_table_params_get  (struct rte_ta-
	 ble_action *action, struct rte_pipeline_table_params *params)
     __rte_experimental int rte_table_action_apply (struct rte_table_action *ac-
	 tion, void *data, enum rte_table_action_type type, void *action_params)
     __rte_experimental int rte_table_action_dscp_table_update	(struct  rte_ta-
	 ble_action    *action,   uint64_t   dscp_mask,   struct   rte_table_ac-
	 tion_dscp_table *table)
     __rte_experimental int rte_table_action_meter_profile_add	(struct  rte_ta-
	 ble_action  *action,  uint32_t  meter_profile_id,  struct rte_table_ac-
	 tion_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_ac-
	 tion_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_ac-
	 tion_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  han-
     dlers  (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_pro-
       file_create(), rte_table_action_profile_action_register(),  rte_table_ac-
       tion_profile_freeze().

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

     * Use the table action object to generate the pipeline  table  action  han-
       dlers  (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 func-
       tions: 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_pro-
     file_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_ac-
     tion_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_ta-
	 ble_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_ac-
     tion_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  ob-
     ject.

     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 * ac-
     tion)
     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_ta-
     ble_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 * ac-
     tion, 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_ac-
	 tion_*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_ta-
     ble_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  up-
	 dated, 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_ta-
     ble_action * action, uint32_t meter_profile_id, struct rte_table_action_me-
     ter_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_ta-
     ble_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 pre-
	 viously 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,  other-
	 wise  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  ac-
	 tion in the table action profile used by the action object.
	 stats	When non-NULL, it points to the area where the meter stats coun-
	 ters 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 previ-
	 ously 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 pre-
	 viously 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 en-
	 abled	(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_ac-
     tion_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  ac-
	 tion.

     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 Aug 27 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_TM&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help