Hi Ferruh, On Wed, Jan 04, 2017 at 05:49:46PM +0000, Ferruh Yigit wrote: > Hi Nelio, > > A quick question.
I'll reply since it's related to the API. > On 12/29/2016 3:15 PM, Nelio Laranjeiro wrote: > > Introduce initial software for rte_flow rules. > > > > VLAN, VXLAN are still not supported. > > > > Signed-off-by: Nelio Laranjeiro <nelio.laranje...@6wind.com> > > Acked-by: Adrien Mazarguil <adrien.mazarg...@6wind.com> > > <...> > > > +static int > > +priv_flow_validate(struct priv *priv, > > + const struct rte_flow_attr *attr, > > + const struct rte_flow_item items[], > > + const struct rte_flow_action actions[], > > + struct rte_flow_error *error, > > + struct mlx5_flow *flow) > > +{ > > + const struct mlx5_flow_items *cur_item = mlx5_flow_items; > > <...> > > > + for (; items->type != RTE_FLOW_ITEM_TYPE_END; ++items) { > <...> > > + } > > + for (; actions->type != RTE_FLOW_ACTION_TYPE_END; ++actions) { > <...> > > + } > > Is it guarantied in somewhere that items or actions terminated with > TYPE_END? Yes, since it's now the only way to terminate items/actions lists [1][2]. There used to be a "max" value in the original draft but it seemed redundant and proved annoying to use, and was therefore dropped. END items/actions behave like a NUL terminator for C strings. They are likewise defined with value 0 for convenience. > And these fields are direct inputs from user. > Is there a way to verify user provided values are with TYPE_END terminated? No, applications must check for its presence (they normally add it themselves) before feeding these lists to PMDs. I think that's safe enough. Note the testpmd flow command does not allow entering a flow rule without "end" tokens in both lists, there is no way around this restriction. [1] http://dpdk.org/doc/guides/prog_guide/rte_flow.html#matching-pattern [2] http://dpdk.org/doc/guides/prog_guide/rte_flow.html#actions -- Adrien Mazarguil 6WIND