Message ID | 1490584571-25307-1-git-send-email-sysugaozhenyu@gmail.com |
---|---|
State | Accepted |
Headers | show |
Looks good to me, thanks for the fix. Acked-by: William Tu <u9012063@gmail.com> On Sun, Mar 26, 2017 at 8:16 PM, Zhenyu Gao <sysugaozhenyu@gmail.com> wrote: > Currently, the mirror code doesn't check new value of snaplen when try > to reconfigure snaplen. > This patch fix this issue and add testings to reconfigure snaplen. > > Signed-off-by: Zhenyu Gao <sysugaozhenyu@gmail.com> > --- > ofproto/ofproto-dpif-mirror.c | 3 ++- > tests/ofproto-dpif.at | 40 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 42 insertions(+), 1 deletion(-) > > diff --git a/ofproto/ofproto-dpif-mirror.c b/ofproto/ofproto-dpif-mirror.c > index 675adf3..62dcc45 100644 > --- a/ofproto/ofproto-dpif-mirror.c > +++ b/ofproto/ofproto-dpif-mirror.c > @@ -252,7 +252,8 @@ mirror_set(struct mbridge *mbridge, void *aux, const char *name, > && hmapx_equals(&dsts_map, &mirror->dsts) > && vlan_bitmap_equal(mirror->vlans, src_vlans) > && mirror->out == out > - && mirror->out_vlan == out_vlan) > + && mirror->out_vlan == out_vlan > + && mirror->snaplen == snaplen) > { > hmapx_destroy(&srcs_map); > hmapx_destroy(&dsts_map); > diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at > index e3d79bd..0c2ea38 100644 > --- a/tests/ofproto-dpif.at > +++ b/tests/ofproto-dpif.at > @@ -4458,6 +4458,46 @@ AT_CHECK_UNQUOTED([tail -1 stdout], [0], > OVS_VSWITCHD_STOP > AT_CLEANUP > > +AT_SETUP([ofproto-dpif - mirroring, select_all with snaplen and reset snaplen]) > +AT_KEYWORDS([mirror mirrors mirroring]) > +OVS_VSWITCHD_START > +add_of_ports br0 1 2 3 > +ovs-vsctl \ > + set Bridge br0 mirrors=@m --\ > + --id=@p3 get Port p3 --\ > + --id=@m create Mirror name=mymirror select_all=true output_port=@p3 snaplen=100 > + > +AT_DATA([flows.txt], [dnl > +in_port=1 actions=output:2 > +in_port=2 actions=output:1 > +]) > +AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) > + > +flow="in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)" > +AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout]) > +AT_CHECK_UNQUOTED([tail -1 stdout], [0], > + [Datapath actions: trunc(100),3,2 > +]) > + > +ovs-vsctl set mirror mymirror snaplen=77 > + > +flow="in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)" > +AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout]) > +AT_CHECK_UNQUOTED([tail -1 stdout], [0], > + [Datapath actions: trunc(77),3,1 > +]) > + > +ovs-vsctl set mirror mymirror snaplen=65535 > + > +flow="in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)" > +AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout]) > +AT_CHECK_UNQUOTED([tail -1 stdout], [0], > + [Datapath actions: 3,1 > +]) > + > +OVS_VSWITCHD_STOP > +AT_CLEANUP > + > AT_SETUP([ofproto-dpif - mirroring, select_src with snaplen]) > AT_KEYWORDS([mirror mirrors mirroring]) > OVS_VSWITCHD_START > -- > 1.9.1 >
On Fri, Mar 31, 2017 at 8:09 AM, William Tu <u9012063@gmail.com> wrote: > Looks good to me, thanks for the fix. > > Acked-by: William Tu <u9012063@gmail.com> > > On Sun, Mar 26, 2017 at 8:16 PM, Zhenyu Gao <sysugaozhenyu@gmail.com> wrote: >> Currently, the mirror code doesn't check new value of snaplen when try >> to reconfigure snaplen. >> This patch fix this issue and add testings to reconfigure snaplen. >> >> Signed-off-by: Zhenyu Gao <sysugaozhenyu@gmail.com> Thanks Zhenyu for the bug fix and William for the review! Pushed to master, branch-2.7 and branch 2.6.
diff --git a/ofproto/ofproto-dpif-mirror.c b/ofproto/ofproto-dpif-mirror.c index 675adf3..62dcc45 100644 --- a/ofproto/ofproto-dpif-mirror.c +++ b/ofproto/ofproto-dpif-mirror.c @@ -252,7 +252,8 @@ mirror_set(struct mbridge *mbridge, void *aux, const char *name, && hmapx_equals(&dsts_map, &mirror->dsts) && vlan_bitmap_equal(mirror->vlans, src_vlans) && mirror->out == out - && mirror->out_vlan == out_vlan) + && mirror->out_vlan == out_vlan + && mirror->snaplen == snaplen) { hmapx_destroy(&srcs_map); hmapx_destroy(&dsts_map); diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index e3d79bd..0c2ea38 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -4458,6 +4458,46 @@ AT_CHECK_UNQUOTED([tail -1 stdout], [0], OVS_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([ofproto-dpif - mirroring, select_all with snaplen and reset snaplen]) +AT_KEYWORDS([mirror mirrors mirroring]) +OVS_VSWITCHD_START +add_of_ports br0 1 2 3 +ovs-vsctl \ + set Bridge br0 mirrors=@m --\ + --id=@p3 get Port p3 --\ + --id=@m create Mirror name=mymirror select_all=true output_port=@p3 snaplen=100 + +AT_DATA([flows.txt], [dnl +in_port=1 actions=output:2 +in_port=2 actions=output:1 +]) +AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) + +flow="in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)" +AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout]) +AT_CHECK_UNQUOTED([tail -1 stdout], [0], + [Datapath actions: trunc(100),3,2 +]) + +ovs-vsctl set mirror mymirror snaplen=77 + +flow="in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)" +AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout]) +AT_CHECK_UNQUOTED([tail -1 stdout], [0], + [Datapath actions: trunc(77),3,1 +]) + +ovs-vsctl set mirror mymirror snaplen=65535 + +flow="in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=128,frag=no),icmp(type=8,code=0)" +AT_CHECK([ovs-appctl ofproto/trace ovs-dummy "$flow"], [0], [stdout]) +AT_CHECK_UNQUOTED([tail -1 stdout], [0], + [Datapath actions: 3,1 +]) + +OVS_VSWITCHD_STOP +AT_CLEANUP + AT_SETUP([ofproto-dpif - mirroring, select_src with snaplen]) AT_KEYWORDS([mirror mirrors mirroring]) OVS_VSWITCHD_START
Currently, the mirror code doesn't check new value of snaplen when try to reconfigure snaplen. This patch fix this issue and add testings to reconfigure snaplen. Signed-off-by: Zhenyu Gao <sysugaozhenyu@gmail.com> --- ofproto/ofproto-dpif-mirror.c | 3 ++- tests/ofproto-dpif.at | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-)