* See struct rte_flow_item_meta.
*/
RTE_FLOW_ITEM_TYPE_META,
+
+ /**
+ * Matches a GRE optional key field.
+ *
+ * The value should a big-endian 32bit integer.
+ *
+ * When this item present the K bit is implicitly matched as "1"
+ * in the default mask.
+ *
+ * @p spec/mask type:
+ * @code rte_be32_t * @endcode
+ */
+ RTE_FLOW_ITEM_TYPE_GRE_KEY,
+
+ /**
+ * Matches a GTP extension header: PDU session container.
+ *
+ * Configure flow for GTP packets with extension header type 0x85.
+ *
+ * See struct rte_flow_item_gtp_psc.
+ */
+ RTE_FLOW_ITEM_TYPE_GTP_PSC,
};
/**
#ifndef __cplusplus
static const struct rte_flow_item_esp rte_flow_item_esp_mask = {
.hdr = {
- .spi = 0xffffffff,
+ .spi = RTE_BE32(0xffffffff),
},
};
#endif
};
#endif
+/**
+ * RTE_FLOW_ITEM_TYPE_GTP_PSC.
+ *
+ * Matches a GTP PDU extension header with type 0x85.
+ */
+struct rte_flow_item_gtp_psc {
+ uint8_t pdu_type; /**< PDU type. */
+ uint8_t qfi; /**< QoS flow identifier. */
+};
+
+/** Default mask for RTE_FLOW_ITEM_TYPE_GTP_PSC. */
+#ifndef __cplusplus
+static const struct rte_flow_item_gtp_psc
+rte_flow_item_gtp_psc_mask = {
+ .qfi = 0x3f,
+};
+#endif
+
/**
* @warning
* @b EXPERIMENTAL: this structure may change without prior notice
/**
* Action types.
*
- * Each possible action is represented by a type. Some have associated
- * configuration structures. Several actions combined in a list can be
- * assigned to a flow rule and are performed in order.
+ * Each possible action is represented by a type.
+ * An action can have an associated configuration object.
+ * Several actions combined in a list can be assigned
+ * to a flow rule and are performed in order.
*
* They fall in three categories:
*
*
* A list of actions is terminated by a END action.
*
- * For simple actions without a configuration structure, conf remains NULL.
+ * For simple actions without a configuration object, conf remains NULL.
*/
struct rte_flow_action {
enum rte_flow_action_type type; /**< Action type. */
- const void *conf; /**< Pointer to action configuration structure. */
+ const void *conf; /**< Pointer to action configuration object. */
};
/**