On Fri, Apr 27, 2018 at 1:41 AM, Jakub Sitnicki <[email protected]> wrote:
> Hi Numan, > > I've started reviewing your patch and it occurred to me that we can > complicate > the annotation a bit (but not much) and achieve the same effect. Please > take a > look at the proposed change [1]. > > It seems to be passing your tests, with the changes as below: > > 1) I believe sets with just two items should also be considered a > dimension, > unless I'm reading ovs-fields man-page wrong. > > 2) It turns out we can apply conjunctive matching to the last "crazy" > expression > from your test as well. Quite surprising what the expression-to-matches > converter spits out. > > Looking forward to hearing what you think about it. > That's great Jacub. I will try it out and let you know. Thanks Numan > > Thanks, > Jakub > > [1] https://patchwork.ozlabs.org/patch/905334/ > > ---8<--- > > --- > tests/ovn.at | 83 ++++++++++++++++++++++++++++++ > ++++++++++++------------------ > 1 file changed, 58 insertions(+), 25 deletions(-) > > diff --git a/tests/ovn.at b/tests/ovn.at > index 5f2c04c39..8fe4c522a 100644 > --- a/tests/ovn.at > +++ b/tests/ovn.at > @@ -685,13 +685,13 @@ expr_to_flow () { > lflow="ip4.src == {10.0.0.1, 10.0.0.2, 10.0.0.3} && \ > ip4.dst == {20.0.0.1, 20.0.0.2, 20.0.0.3}" > AT_CHECK([expr_to_flow "$lflow"], [0], [dnl > -conj_id=1 > -ip,nw_dst=20.0.0.1: conjunction(1, 1/2) > -ip,nw_dst=20.0.0.2: conjunction(1, 1/2) > -ip,nw_dst=20.0.0.3: conjunction(1, 1/2) > -ip,nw_src=10.0.0.1: conjunction(1, 0/2) > -ip,nw_src=10.0.0.2: conjunction(1, 0/2) > -ip,nw_src=10.0.0.3: conjunction(1, 0/2) > +conj_id=1,ip > +ip,nw_dst=20.0.0.1: conjunction(1, 0/2) > +ip,nw_dst=20.0.0.2: conjunction(1, 0/2) > +ip,nw_dst=20.0.0.3: conjunction(1, 0/2) > +ip,nw_src=10.0.0.1: conjunction(1, 1/2) > +ip,nw_src=10.0.0.2: conjunction(1, 1/2) > +ip,nw_src=10.0.0.3: conjunction(1, 1/2) > ]) > > lflow="ip && (!ct.est || (ct.est && ct_label.blocked == 1))" > @@ -702,17 +702,15 @@ ct_state=-est+trk,ip > ct_state=-est+trk,ipv6 > ]) > > -# ip4.dst has only 2 items. So it shouldn't be considered as a > -# dimension. > lflow="ip4.src == {10.0.0.1, 10.0.0.2, 10.0.0.3} && \ > ip4.dst == {20.0.0.1, 20.0.0.2}" > AT_CHECK([expr_to_flow "$lflow"], [0], [dnl > -ip,nw_src=10.0.0.1,nw_dst=20.0.0.1 > -ip,nw_src=10.0.0.1,nw_dst=20.0.0.2 > -ip,nw_src=10.0.0.2,nw_dst=20.0.0.1 > -ip,nw_src=10.0.0.2,nw_dst=20.0.0.2 > -ip,nw_src=10.0.0.3,nw_dst=20.0.0.1 > -ip,nw_src=10.0.0.3,nw_dst=20.0.0.2 > +conj_id=1,ip > +ip,nw_dst=20.0.0.1: conjunction(1, 0/2) > +ip,nw_dst=20.0.0.2: conjunction(1, 0/2) > +ip,nw_src=10.0.0.1: conjunction(1, 1/2) > +ip,nw_src=10.0.0.2: conjunction(1, 1/2) > +ip,nw_src=10.0.0.3: conjunction(1, 1/2) > ]) > > lflow="ip4 && ip4.src == {10.0.0.1, 10.0.0.2, 10.0.0.3} && \ > @@ -720,19 +718,19 @@ ip4.dst == {20.0.0.1, 20.0.0.2, 20.0.0.3} && \ > tcp.dst >= 1000 && tcp.dst <= 1010" > > AT_CHECK([expr_to_flow "$lflow"], [0], [dnl > -conj_id=1 > -tcp,nw_dst=20.0.0.1: conjunction(1, 2/3) > -tcp,nw_dst=20.0.0.2: conjunction(1, 2/3) > -tcp,nw_dst=20.0.0.3: conjunction(1, 2/3) > +conj_id=1,tcp > +tcp,nw_dst=20.0.0.1: conjunction(1, 0/3) > +tcp,nw_dst=20.0.0.2: conjunction(1, 0/3) > +tcp,nw_dst=20.0.0.3: conjunction(1, 0/3) > tcp,nw_src=10.0.0.1: conjunction(1, 1/3) > tcp,nw_src=10.0.0.2: conjunction(1, 1/3) > tcp,nw_src=10.0.0.3: conjunction(1, 1/3) > -tcp,tp_dst=0x3ea/0xfffe: conjunction(1, 0/3) > -tcp,tp_dst=0x3ec/0xfffc: conjunction(1, 0/3) > -tcp,tp_dst=0x3f0/0xfffe: conjunction(1, 0/3) > -tcp,tp_dst=1000: conjunction(1, 0/3) > -tcp,tp_dst=1001: conjunction(1, 0/3) > -tcp,tp_dst=1010: conjunction(1, 0/3) > +tcp,tp_dst=0x3ea/0xfffe: conjunction(1, 2/3) > +tcp,tp_dst=0x3ec/0xfffc: conjunction(1, 2/3) > +tcp,tp_dst=0x3f0/0xfffe: conjunction(1, 2/3) > +tcp,tp_dst=1000: conjunction(1, 2/3) > +tcp,tp_dst=1001: conjunction(1, 2/3) > +tcp,tp_dst=1010: conjunction(1, 2/3) > ]) > > lflow="ip4 && ip4.src == {10.0.0.4, 10.0.0.5, 10.0.0.6} && \ > @@ -741,6 +739,41 @@ tcp.dst <= 2000 && tcp.src >=1000 && tcp.src <= 2000) > \ > || ip4.dst == 20.0.0.5 || ip4.dst == 20.0.0.6)" > > AT_CHECK([expr_to_flow "$lflow"], [0], [dnl > +conj_id=1,tcp > +ip,nw_src=10.0.0.4,nw_dst=20.0.0.5 > +ip,nw_src=10.0.0.4,nw_dst=20.0.0.6 > +ip,nw_src=10.0.0.5,nw_dst=20.0.0.5 > +ip,nw_src=10.0.0.5,nw_dst=20.0.0.6 > +ip,nw_src=10.0.0.6,nw_dst=20.0.0.5 > +ip,nw_src=10.0.0.6,nw_dst=20.0.0.6 > +tcp,nw_dst=20.0.0.4: conjunction(1, 0/4) > +tcp,nw_dst=20.0.0.7: conjunction(1, 0/4) > +tcp,nw_dst=20.0.0.8: conjunction(1, 0/4) > +tcp,nw_src=10.0.0.4: conjunction(1, 1/4) > +tcp,nw_src=10.0.0.5: conjunction(1, 1/4) > +tcp,nw_src=10.0.0.6: conjunction(1, 1/4) > +tcp,tp_dst=0x3ea/0xfffe: conjunction(1, 2/4) > +tcp,tp_dst=0x3ec/0xfffc: conjunction(1, 2/4) > +tcp,tp_dst=0x3f0/0xfff0: conjunction(1, 2/4) > +tcp,tp_dst=0x400/0xfe00: conjunction(1, 2/4) > +tcp,tp_dst=0x600/0xff00: conjunction(1, 2/4) > +tcp,tp_dst=0x700/0xff80: conjunction(1, 2/4) > +tcp,tp_dst=0x780/0xffc0: conjunction(1, 2/4) > +tcp,tp_dst=0x7c0/0xfff0: conjunction(1, 2/4) > +tcp,tp_dst=1000: conjunction(1, 2/4) > +tcp,tp_dst=1001: conjunction(1, 2/4) > +tcp,tp_dst=2000: conjunction(1, 2/4) > +tcp,tp_src=0x3ea/0xfffe: conjunction(1, 3/4) > +tcp,tp_src=0x3ec/0xfffc: conjunction(1, 3/4) > +tcp,tp_src=0x3f0/0xfff0: conjunction(1, 3/4) > +tcp,tp_src=0x400/0xfe00: conjunction(1, 3/4) > +tcp,tp_src=0x600/0xff00: conjunction(1, 3/4) > +tcp,tp_src=0x700/0xff80: conjunction(1, 3/4) > +tcp,tp_src=0x780/0xffc0: conjunction(1, 3/4) > +tcp,tp_src=0x7c0/0xfff0: conjunction(1, 3/4) > +tcp,tp_src=1000: conjunction(1, 3/4) > +tcp,tp_src=1001: conjunction(1, 3/4) > +tcp,tp_src=2000: conjunction(1, 3/4) > ]) > AT_CLEANUP > > -- > 2.14.3 > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
