On Tue, Feb 6, 2018 at 11:31 PM, Ben Pfaff <[email protected]> wrote: > On Fri, Feb 02, 2018 at 09:06:39PM +0530, [email protected] wrote: > > From: Numan Siddique <[email protected]> > > > > Presently, if a logical flow has possible conjunctive matches, OVN > expression > > parser has support for that. But certain fields like ip4.src, ip4.dst > are not > > considered as dimensions in the conjunctive matches. > > > > In order to support all the possible fields as dimensions, this patch > has added > > a new expression type 'EXPR_T_CONJ'. After a expression is simplified by > > expr_simplify(), before calling expr_normalize(), a new function > > expr_eval_conj() is called, which evaluates for possible dimensions for > > conjunctive matches. > > > > For example if the match expression is > > "ip4 && ip4.src == {10.0.0.4, 10.0.0.5, 10.0.0.6} && > > ip4.dst == {20.0.0.4, 20.0.0.5, 20.0.0.6}" > > > > expr_simplify() would have generated the expression as - > > > > AND(CMP(IP4), > > OR((CMP(ip4.src == 10.0.0.4), CMP(ip4.src == 10.0.0.5), > > CMP(ip4.src == 10.0.0.6)), > > OR((CMP(ip4.dst == 20.0.0.4), CMP(ip4.src == 20.0.0.5), > > CMP(ip4.src == 20.0.0.6))). > > > > expr_eval_conj() would return a new expression something like > > > > CONJ(AND(CMP(IP4), > > OR((CMP(ip4.src == 10.0.0.4), CMP(ip4.src == 10.0.0.5), > > CMP(ip4.src == 10.0.0.6))), > > AND(CMP(IP4), > > OR((CMP(ip4.dst == 20.0.0.4), CMP(ip4.dst == 20.0.0.5), > > CMP(ip4.dst == 20.0.0.6)))) > > > > expr_normalize() would normalize each individual 'AND' clause in the > CONJ and > > expr_to_matches() would add the necessary conjunctive matches. > > > > TODO: If the proposed approach is reasonable, then test cases and > necessary > > code comments needs to be added. > > I think I like this approach, but I also think that it's worthwhile > trying to figure out whether it's possible to do it without adding the > extra EXPR_T_CONJ type and the extra processing step. I started playing > with that idea yesterday. I think it's possible, but I didn't actually > finish implementing it. > > That's great. Looking forward for those patches whenever they are ready :).
> I did come up with a few independent patches to improve the expr code, > though. Would you take a look? They are at: > https://patchwork.ozlabs.org/project/openvswitch/list/? > series=27221 Thanks Ben. I will try out these patches tomorrow. Thanks Numan > > This patch causes one warning from Clang (and I think it's right that > this code is fishy): > > ../ovn/lib/expr.c:1470:16: error: implicit conversion from enumeration > type 'enum expr_type' to different enumeration type 'enum expr_level' > [-Werror,-Wenum-conversion] > > Thanks, > > Ben. > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
