Commit e8023b03 authored by Hangbin Liu's avatar Hangbin Liu Committed by David S. Miller

selftests: forwarding: use proto icmp for {gretap, ip6gretap}_mac testing

For tc ip_proto filter, when we extract the flow via __skb_flow_dissect()
without flag FLOW_DISSECTOR_F_STOP_AT_ENCAP, we will continue extract to
the inner proto.

So for GRE + ICMP messages, we should not track GRE proto, but inner ICMP
proto.

For test mirror_gre.sh, it may make user confused if we capture ICMP
message on $h3(since the flow is GRE message). So I move the capture
dev to h3-gt{4,6}, and only capture ICMP message.

Before the fix:
]# ./mirror_gre.sh
TEST: ingress mirror to gretap (skip_hw)                            [ OK ]
TEST: egress mirror to gretap (skip_hw)                             [ OK ]
TEST: ingress mirror to ip6gretap (skip_hw)                         [ OK ]
TEST: egress mirror to ip6gretap (skip_hw)                          [ OK ]
TEST: ingress mirror to gretap: envelope MAC (skip_hw)              [FAIL]
 Expected to capture 10 packets, got 0.
TEST: egress mirror to gretap: envelope MAC (skip_hw)               [FAIL]
 Expected to capture 10 packets, got 0.
TEST: ingress mirror to ip6gretap: envelope MAC (skip_hw)           [FAIL]
 Expected to capture 10 packets, got 0.
TEST: egress mirror to ip6gretap: envelope MAC (skip_hw)            [FAIL]
 Expected to capture 10 packets, got 0.
TEST: two simultaneously configured mirrors (skip_hw)               [ OK ]
WARN: Could not test offloaded functionality

After fix:
]# ./mirror_gre.sh
TEST: ingress mirror to gretap (skip_hw)                            [ OK ]
TEST: egress mirror to gretap (skip_hw)                             [ OK ]
TEST: ingress mirror to ip6gretap (skip_hw)                         [ OK ]
TEST: egress mirror to ip6gretap (skip_hw)                          [ OK ]
TEST: ingress mirror to gretap: envelope MAC (skip_hw)              [ OK ]
TEST: egress mirror to gretap: envelope MAC (skip_hw)               [ OK ]
TEST: ingress mirror to ip6gretap: envelope MAC (skip_hw)           [ OK ]
TEST: egress mirror to ip6gretap: envelope MAC (skip_hw)            [ OK ]
TEST: two simultaneously configured mirrors (skip_hw)               [ OK ]
WARN: Could not test offloaded functionality

Fixes: ba8d3987 ("selftests: forwarding: Add test for mirror to gretap")
Signed-off-by: default avatarHangbin Liu <liuhangbin@gmail.com>
Reviewed-by: default avatarPetr Machata <pmachata@gmail.com>
Tested-by: default avatarPetr Machata <pmachata@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2019fc96
...@@ -63,22 +63,23 @@ test_span_gre_mac() ...@@ -63,22 +63,23 @@ test_span_gre_mac()
{ {
local tundev=$1; shift local tundev=$1; shift
local direction=$1; shift local direction=$1; shift
local prot=$1; shift
local what=$1; shift local what=$1; shift
local swp3mac=$(mac_get $swp3) case "$direction" in
local h3mac=$(mac_get $h3) ingress) local src_mac=$(mac_get $h1); local dst_mac=$(mac_get $h2)
;;
egress) local src_mac=$(mac_get $h2); local dst_mac=$(mac_get $h1)
;;
esac
RET=0 RET=0
mirror_install $swp1 $direction $tundev "matchall $tcflags" mirror_install $swp1 $direction $tundev "matchall $tcflags"
tc filter add dev $h3 ingress pref 77 prot $prot \ icmp_capture_install h3-${tundev} "src_mac $src_mac dst_mac $dst_mac"
flower ip_proto 0x2f src_mac $swp3mac dst_mac $h3mac \
action pass
mirror_test v$h1 192.0.2.1 192.0.2.2 $h3 77 10 mirror_test v$h1 192.0.2.1 192.0.2.2 h3-${tundev} 100 10
tc filter del dev $h3 ingress pref 77 icmp_capture_uninstall h3-${tundev}
mirror_uninstall $swp1 $direction mirror_uninstall $swp1 $direction
log_test "$direction $what: envelope MAC ($tcflags)" log_test "$direction $what: envelope MAC ($tcflags)"
...@@ -120,14 +121,14 @@ test_ip6gretap() ...@@ -120,14 +121,14 @@ test_ip6gretap()
test_gretap_mac() test_gretap_mac()
{ {
test_span_gre_mac gt4 ingress ip "mirror to gretap" test_span_gre_mac gt4 ingress "mirror to gretap"
test_span_gre_mac gt4 egress ip "mirror to gretap" test_span_gre_mac gt4 egress "mirror to gretap"
} }
test_ip6gretap_mac() test_ip6gretap_mac()
{ {
test_span_gre_mac gt6 ingress ipv6 "mirror to ip6gretap" test_span_gre_mac gt6 ingress "mirror to ip6gretap"
test_span_gre_mac gt6 egress ipv6 "mirror to ip6gretap" test_span_gre_mac gt6 egress "mirror to ip6gretap"
} }
test_all() test_all()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment