ethdev: add IGMP key field to flow API
Add new rte_flow_item_igmp in order to match the Internet Group Management Protocol based on RFC 2236. Signed-off-by: Kiran Kumar K <kirankumark@marvell.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
This commit is contained in:
parent
86e1974a42
commit
30f9f9f451
@ -1265,6 +1265,18 @@ Matches a network service header (RFC 8300).
|
|||||||
- Default ``mask`` matches mdtype, next_proto, spi, sindex.
|
- Default ``mask`` matches mdtype, next_proto, spi, sindex.
|
||||||
|
|
||||||
|
|
||||||
|
Item: ``IGMP``
|
||||||
|
^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
Matches a Internet Group Management Protocol (RFC 2236).
|
||||||
|
|
||||||
|
- ``type``: IGMP message type (Query/Report).
|
||||||
|
- ``max_resp_time``: max time allowed before sending report.
|
||||||
|
- ``checksum``: checksum, 1s complement of whole IGMP message.
|
||||||
|
- ``group_addr``: group address, for Query value will be 0.
|
||||||
|
- Default ``mask`` matches group_addr.
|
||||||
|
|
||||||
|
|
||||||
Actions
|
Actions
|
||||||
~~~~~~~
|
~~~~~~~
|
||||||
|
|
||||||
|
@ -81,6 +81,7 @@ static const struct rte_flow_desc_data rte_flow_desc_item[] = {
|
|||||||
MK_FLOW_ITEM(PPPOE_PROTO_ID,
|
MK_FLOW_ITEM(PPPOE_PROTO_ID,
|
||||||
sizeof(struct rte_flow_item_pppoe_proto_id)),
|
sizeof(struct rte_flow_item_pppoe_proto_id)),
|
||||||
MK_FLOW_ITEM(NSH, sizeof(struct rte_flow_item_nsh)),
|
MK_FLOW_ITEM(NSH, sizeof(struct rte_flow_item_nsh)),
|
||||||
|
MK_FLOW_ITEM(IGMP, sizeof(struct rte_flow_item_igmp)),
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Generate flow_action[] entry. */
|
/** Generate flow_action[] entry. */
|
||||||
|
@ -477,6 +477,13 @@ enum rte_flow_item_type {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
RTE_FLOW_ITEM_TYPE_NSH,
|
RTE_FLOW_ITEM_TYPE_NSH,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Matches Internet Group Management Protocol (IGMP).
|
||||||
|
* See struct rte_flow_item_igmp.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
RTE_FLOW_ITEM_TYPE_IGMP,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1346,6 +1353,29 @@ static const struct rte_flow_item_nsh rte_flow_item_nsh_mask = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @warning
|
||||||
|
* @b EXPERIMENTAL: this structure may change without prior notice
|
||||||
|
*
|
||||||
|
* RTE_FLOW_ITEM_TYPE_IGMP
|
||||||
|
*
|
||||||
|
* Match Internet Group Management Protocol (IGMP), RFC 2236
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
struct rte_flow_item_igmp {
|
||||||
|
uint32_t type:8;
|
||||||
|
uint32_t max_resp_time:8;
|
||||||
|
uint32_t checksum:16;
|
||||||
|
uint32_t group_addr;
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Default mask for RTE_FLOW_ITEM_TYPE_IGMP. */
|
||||||
|
#ifndef __cplusplus
|
||||||
|
static const struct rte_flow_item_igmp rte_flow_item_igmp_mask = {
|
||||||
|
.group_addr = 0xffffffff,
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Matching pattern item definition.
|
* Matching pattern item definition.
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user