diff mbox

[ovs-dev,v1] ofproto-dpif-mirror: Fix issue of reseting snaplen in mirroring

Message ID 1490584571-25307-1-git-send-email-sysugaozhenyu@gmail.com
State Accepted
Headers show

Commit Message

Gao Zhenyu March 27, 2017, 3:16 a.m. UTC
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(-)

Comments

William Tu March 31, 2017, 3:09 p.m. UTC | #1
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
>
Andy Zhou April 4, 2017, 12:24 a.m. UTC | #2
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 mbox

Patch

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