#include <rte_mbuf_dyn.h>
#include <rte_meter.h>
#include <rte_gtp.h>
+#include <rte_l2tpv2.h>
+#include <rte_ppp.h>
+#include <rte_gre.h>
#ifdef __cplusplus
extern "C" {
* @see struct rte_flow_item_flex.
*/
RTE_FLOW_ITEM_TYPE_FLEX,
+
+ /**
+ * Matches L2TPv2 Header.
+ *
+ * See struct rte_flow_item_l2tpv2.
+ */
+ RTE_FLOW_ITEM_TYPE_L2TPV2,
+
+ /**
+ * Matches PPP Header.
+ *
+ * See struct rte_flow_item_ppp.
+ */
+ RTE_FLOW_ITEM_TYPE_PPP,
+
+ /**
+ * Matches GRE optional fields.
+ *
+ * See struct rte_flow_item_gre_opt.
+ */
+ RTE_FLOW_ITEM_TYPE_GRE_OPTION,
};
/**
};
#endif
+/**
+ * RTE_FLOW_ITEM_TYPE_GRE_OPTION.
+ *
+ * Matches GRE optional fields in header.
+ */
+struct rte_flow_item_gre_opt {
+ struct rte_gre_hdr_opt_checksum_rsvd checksum_rsvd;
+ struct rte_gre_hdr_opt_key key;
+ struct rte_gre_hdr_opt_sequence sequence;
+};
+
/**
* RTE_FLOW_ITEM_TYPE_FUZZY
*
* RTE_FLOW_ITEM_TYPE_META
*
* Matches a specified metadata value. On egress, metadata can be set
- * either by mbuf dynamic metadata field with PKT_TX_DYNF_METADATA flag or
- * RTE_FLOW_ACTION_TYPE_SET_META. On ingress, RTE_FLOW_ACTION_TYPE_SET_META
+ * either by mbuf dynamic metadata field with RTE_MBUF_DYNFLAG_TX_METADATA flag
+ * or RTE_FLOW_ACTION_TYPE_SET_META. On ingress, RTE_FLOW_ACTION_TYPE_SET_META
* sets metadata for a packet and the metadata will be reported via mbuf
- * metadata dynamic field with PKT_RX_DYNF_METADATA flag. The dynamic mbuf
- * field must be registered in advance by rte_flow_dynf_metadata_register().
+ * metadata dynamic field with RTE_MBUF_DYNFLAG_RX_METADATA flag. The dynamic
+ * mbuf field must be registered in advance by
+ * rte_flow_dynf_metadata_register().
*/
struct rte_flow_item_meta {
uint32_t data;
};
#endif
+/**
+ * @warning
+ * @b EXPERIMENTAL: this structure may change without prior notice
+ *
+ * RTE_FLOW_ITEM_TYPE_L2TPV2
+ *
+ * Matches L2TPv2 Header
+ */
+struct rte_flow_item_l2tpv2 {
+ struct rte_l2tpv2_combined_msg_hdr hdr;
+};
+
+/** Default mask for RTE_FLOW_ITEM_TYPE_L2TPV2. */
+#ifndef __cplusplus
+static const struct rte_flow_item_l2tpv2 rte_flow_item_l2tpv2_mask = {
+ /*
+ * flags and version bit mask
+ * 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
+ * T L x x S x O P x x x x V V V V
+ */
+ .hdr = {
+ .common = {
+ .flags_version = RTE_BE16(0xcb0f),
+ },
+ },
+};
+#endif
+
+/**
+ * @warning
+ * @b EXPERIMENTAL: this structure may change without prior notice
+ *
+ * RTE_FLOW_ITEM_TYPE_PPP
+ *
+ * Matches PPP Header
+ */
+struct rte_flow_item_ppp {
+ struct rte_ppp_hdr hdr;
+};
+
+/** Default mask for RTE_FLOW_ITEM_TYPE_PPP. */
+#ifndef __cplusplus
+static const struct rte_flow_item_ppp rte_flow_item_ppp_mask = {
+ .hdr = {
+ .addr = 0xff,
+ .ctrl = 0xff,
+ .proto_id = RTE_BE16(0xffff),
+ }
+};
+#endif
+
/**
* Matching pattern item definition.
*
RTE_FLOW_ACTION_TYPE_JUMP,
/**
- * Attaches an integer value to packets and sets PKT_RX_FDIR and
- * PKT_RX_FDIR_ID mbuf flags.
+ * Attaches an integer value to packets and sets RTE_MBUF_F_RX_FDIR and
+ * RTE_MBUF_F_RX_FDIR_ID mbuf flags.
*
* See struct rte_flow_action_mark.
*
/**
* Flags packets. Similar to MARK without a specific value; only
- * sets the PKT_RX_FDIR mbuf flag.
+ * sets the RTE_MBUF_F_RX_FDIR mbuf flag.
*
* No associated configuration structure.
*
RTE_FLOW_ACTION_TYPE_SECURITY,
/**
+ * @deprecated
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Implements OFPAT_SET_MPLS_TTL ("MPLS TTL") as defined by the
* OpenFlow Switch Specification.
*
RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL,
/**
+ * @deprecated
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Implements OFPAT_DEC_MPLS_TTL ("decrement MPLS TTL") as defined
* by the OpenFlow Switch Specification.
*
RTE_FLOW_ACTION_TYPE_OF_DEC_MPLS_TTL,
/**
+ * @deprecated
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Implements OFPAT_SET_NW_TTL ("IP TTL") as defined by the OpenFlow
* Switch Specification.
*
RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Implements OFPAT_DEC_NW_TTL ("decrement IP TTL") as defined by
* the OpenFlow Switch Specification.
*
RTE_FLOW_ACTION_TYPE_OF_DEC_NW_TTL,
/**
+ * @deprecated
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Implements OFPAT_COPY_TTL_OUT ("copy TTL "outwards" -- from
* next-to-outermost to outermost") as defined by the OpenFlow
* Switch Specification.
RTE_FLOW_ACTION_TYPE_OF_COPY_TTL_OUT,
/**
+ * @deprecated
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Implements OFPAT_COPY_TTL_IN ("copy TTL "inwards" -- from
* outermost to next-to-outermost") as defined by the OpenFlow
* Switch Specification.
RTE_FLOW_ACTION_TYPE_RAW_DECAP,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Modify IPv4 source address in the outermost IPv4 header.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ACTION_TYPE_SET_IPV4_SRC,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Modify IPv4 destination address in the outermost IPv4 header.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ACTION_TYPE_SET_IPV4_DST,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Modify IPv6 source address in the outermost IPv6 header.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ACTION_TYPE_SET_IPV6_SRC,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Modify IPv6 destination address in the outermost IPv6 header.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV6,
RTE_FLOW_ACTION_TYPE_SET_IPV6_DST,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Modify source port number in the outermost TCP/UDP header.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_TCP
RTE_FLOW_ACTION_TYPE_SET_TP_SRC,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Modify destination port number in the outermost TCP/UDP header.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_TCP
RTE_FLOW_ACTION_TYPE_MAC_SWAP,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Decrease TTL value directly
*
* No associated configuration structure.
RTE_FLOW_ACTION_TYPE_DEC_TTL,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Set TTL value
*
* See struct rte_flow_action_set_ttl
RTE_FLOW_ACTION_TYPE_SET_TTL,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Set source MAC address from matched flow.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ACTION_TYPE_SET_MAC_SRC,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Set destination MAC address from matched flow.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_ETH,
RTE_FLOW_ACTION_TYPE_SET_MAC_DST,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Increase sequence number in the outermost TCP header.
*
* Action configuration specifies the value to increase
RTE_FLOW_ACTION_TYPE_INC_TCP_SEQ,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Decrease sequence number in the outermost TCP header.
*
* Action configuration specifies the value to decrease
RTE_FLOW_ACTION_TYPE_DEC_TCP_SEQ,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Increase acknowledgment number in the outermost TCP header.
*
* Action configuration specifies the value to increase
RTE_FLOW_ACTION_TYPE_INC_TCP_ACK,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Decrease acknowledgment number in the outermost TCP header.
*
* Action configuration specifies the value to decrease
RTE_FLOW_ACTION_TYPE_DEC_TCP_ACK,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Set Tag.
*
* Tag is for internal flow usage only and
RTE_FLOW_ACTION_TYPE_SET_TAG,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Set metadata on ingress or egress path.
*
* See struct rte_flow_action_set_meta.
RTE_FLOW_ACTION_TYPE_SET_META,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Modify IPv4 DSCP in the outermost IP header.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV4,
RTE_FLOW_ACTION_TYPE_SET_IPV4_DSCP,
/**
+ * @warning This is a legacy action.
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* Modify IPv6 DSCP in the outermost IP header.
*
* If flow pattern does not define a valid RTE_FLOW_ITEM_TYPE_IPV6,
/**
* RTE_FLOW_ACTION_TYPE_MARK
*
- * Attaches an integer value to packets and sets PKT_RX_FDIR and
- * PKT_RX_FDIR_ID mbuf flags.
+ * Attaches an integer value to packets and sets RTE_MBUF_F_RX_FDIR and
+ * RTE_MBUF_F_RX_FDIR_ID mbuf flags.
*
* This value is arbitrary and application-defined. Maximum allowed value
* depends on the underlying implementation. It is returned in the
* Adds a counter action to a matched flow.
*
* If more than one count action is specified in a single flow rule, then each
- * action must specify a unique id.
+ * action must specify a unique ID.
*
* Counters can be retrieved and reset through ``rte_flow_query()``, see
* ``struct rte_flow_query_count``.
*
- * For ports within the same switch domain then the counter id namespace extends
+ * For ports within the same switch domain then the counter ID namespace extends
* to all ports within that switch domain.
*/
struct rte_flow_action_count {
* through.
*/
uint32_t level;
- uint64_t types; /**< Specific RSS hash types (see ETH_RSS_*). */
+ uint64_t types; /**< Specific RSS hash types (see RTE_ETH_RSS_*). */
uint32_t key_len; /**< Hash key length in bytes. */
uint32_t queue_num; /**< Number of entries in @p queue. */
const uint8_t *key; /**< Hash key. */
};
/**
+ * @deprecated
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* RTE_FLOW_ACTION_TYPE_OF_SET_MPLS_TTL
*
* Implements OFPAT_SET_MPLS_TTL ("MPLS TTL") as defined by the OpenFlow
};
/**
+ * @deprecated
+ * @see RTE_FLOW_ACTION_TYPE_MODIFY_FIELD
+ *
* RTE_FLOW_ACTION_TYPE_OF_SET_NW_TTL
*
* Implements OFPAT_SET_NW_TTL ("IP TTL") as defined by the OpenFlow Switch
* RTE_FLOW_ACTION_TYPE_SET_META
*
* Set metadata. Metadata set by mbuf metadata dynamic field with
- * PKT_TX_DYNF_DATA flag on egress will be overridden by this action. On
- * ingress, the metadata will be carried by mbuf metadata dynamic field
- * with PKT_RX_DYNF_METADATA flag if set. The dynamic mbuf field must be
- * registered in advance by rte_flow_dynf_metadata_register().
+ * RTE_MBUF_DYNFLAG_TX_METADATA flag on egress will be overridden by this
+ * action. On ingress, the metadata will be carried by mbuf metadata dynamic
+ * field with RTE_MBUF_DYNFLAG_RX_METADATA flag if set. The dynamic mbuf field
+ * must be registered in advance by rte_flow_dynf_metadata_register().
*
* Altering partial bits is supported with mask. For bits which have never
* been set, unpredictable value will be seen depending on driver
RTE_MBUF_DYNFIELD((m), rte_flow_dynf_metadata_offs, uint32_t *)
/* Mbuf dynamic flags for metadata. */
-#define PKT_RX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
-#define PKT_TX_DYNF_METADATA (rte_flow_dynf_metadata_mask)
+#define RTE_MBUF_DYNFLAG_RX_METADATA (rte_flow_dynf_metadata_mask)
+#define PKT_RX_DYNF_METADATA RTE_DEPRECATED(PKT_RX_DYNF_METADATA) \
+ RTE_MBUF_DYNFLAG_RX_METADATA
+#define RTE_MBUF_DYNFLAG_TX_METADATA (rte_flow_dynf_metadata_mask)
+#define PKT_TX_DYNF_METADATA RTE_DEPRECATED(PKT_TX_DYNF_METADATA) \
+ RTE_MBUF_DYNFLAG_TX_METADATA
__rte_experimental
static inline uint32_t
RTE_FLOW_ERROR_TYPE_ACTION_NUM, /**< Number of actions. */
RTE_FLOW_ERROR_TYPE_ACTION_CONF, /**< Action configuration. */
RTE_FLOW_ERROR_TYPE_ACTION, /**< Specific action. */
+ RTE_FLOW_ERROR_TYPE_STATE, /**< Current device state. */
};
/**
* Perform verbose error reporting if not NULL. PMDs initialize this
* structure in case of error only.
* @return
- * 0 on success, a nagative value otherwise.
+ * 0 on success, a negative value otherwise.
*/
__rte_experimental
int
*
* RTE_ETH_EVENT_FLOW_AGED event will be triggered when at least one new aged
* out flow was detected after the last call to rte_flow_get_aged_flows.
- * This function can be called to get the aged flows usynchronously from the
+ * This function can be called to get the aged flows asynchronously from the
* event callback or synchronously regardless the event.
* This is not safe to call rte_flow_get_aged_flows function with other flow
* functions from multiple threads simultaneously.