On 29 September 2017 at 06:18, Beilei Xing <beilei.x...@intel.com> wrote: > This patch adds GTP, GTPC and GTPU items for > generic flow API, and also exposes item fields > through the flow command. > > Signed-off-by: Beilei Xing <beilei.x...@intel.com> > Acked-by: Adrien Mazarguil <adrien.mazarg...@6wind.com> > --- > app/test-pmd/cmdline_flow.c | 40 ++++++++++++++++++++++ > app/test-pmd/config.c | 3 ++ > doc/guides/prog_guide/rte_flow.rst | 17 ++++++++++ > doc/guides/testpmd_app_ug/testpmd_funcs.rst | 4 +++ > lib/librte_ether/rte_flow.h | 52 > +++++++++++++++++++++++++++++ > 5 files changed, 116 insertions(+)
<snip> > /** > + * RTE_FLOW_ITEM_TYPE_GTP. > + * > + * Matches a GTPv1 header. > + */ > +struct rte_flow_item_gtp { > + /** > + * Version (3b), protocol type (1b), reserved (1b), > + * Extension header flag (1b), > + * Sequence number flag (1b), > + * N-PDU number flag (1b). > + */ > + uint8_t v_pt_rsv_flags; > + uint8_t msg_type; /**< Message type. */ > + rte_be16_t msg_len; /**< Message length. */ > + rte_be32_t teid; /**< Tunnel endpoint identifier. */ > +}; In future, you might add support for GTPv2 (which is used since LTE). Maybe this structure should have v1 in its name to avoid confusion? > + > +/** Default mask for RTE_FLOW_ITEM_TYPE_GTP. */ > +#ifndef __cplusplus > +static const struct rte_flow_item_gtp rte_flow_item_gtp_mask = { > + .teid = RTE_BE32(0xffffffff), > +}; > +#endif > + > +/** > * Matching pattern item definition. > * > * A pattern is formed by stacking items starting from the lowest protocol > -- > 2.5.5 >