On Fri, Sep 29, 2017 at 10:29:55AM +0100, Sean Harte wrote: > On 29 September 2017 at 09:54, Xing, Beilei <beilei.x...@intel.com> wrote: <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? > > > > I considered it before. But I think we can modify it when we support GTPv2 > > in future, and keep concise 'GTP' currently:) since I have described it > > matches v1 header. > > > > You could rename v_pt_rsv_flags to version_flags to avoid some future > code changes to support GTPv2. There's still the issue that not all > GTPv2 messages have a TEID though.
Although they have the same size, the header of these two protocols obviously differs. My suggestion would be to go with a separate GTPv2 pattern item using its own dedicated structure instead. -- Adrien Mazarguil 6WIND