selftests: forwarding: vxlan_bridge_1d: Add a TTL test
authorPetr Machata <petrm@mellanox.com>
Mon, 19 Nov 2018 16:11:20 +0000 (16:11 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 20 Nov 2018 01:59:44 +0000 (17:59 -0800)
This tests whether TTL of VXLAN envelope packets is properly set based
on the device configuration.

Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/net/forwarding/vxlan_bridge_1d.sh

index a943d8da14b90ecfd50abf64ba17dcb0c41246b0..0c17b0d427ba49b6273db44144d7790b332a07e0 100755 (executable)
@@ -68,6 +68,7 @@ export VXPORT
        ping_ipv4
        test_flood
        test_unicast
+       test_ttl
        reapply_config
        ping_ipv4
        test_flood
@@ -474,6 +475,38 @@ test_unicast()
        done
 }
 
+vxlan_ping_test()
+{
+       local ping_dev=$1; shift
+       local ping_dip=$1; shift
+       local ping_args=$1; shift
+       local capture_dev=$1; shift
+       local capture_dir=$1; shift
+       local capture_pref=$1; shift
+       local expect=$1; shift
+
+       local t0=$(tc_rule_stats_get $capture_dev $capture_pref $capture_dir)
+       ping_do $ping_dev $ping_dip "$ping_args"
+       local t1=$(tc_rule_stats_get $capture_dev $capture_pref $capture_dir)
+       local delta=$((t1 - t0))
+
+       # Tolerate a couple stray extra packets.
+       ((expect <= delta && delta <= expect + 2))
+       check_err $? "$capture_dev: Expected to capture $expect packets, got $delta."
+}
+
+test_ttl()
+{
+       RET=0
+
+       tc filter add dev v1 egress pref 77 prot ip \
+               flower ip_ttl 99 action pass
+       vxlan_ping_test $h1 192.0.2.3 "" v1 egress 77 10
+       tc filter del dev v1 egress pref 77 prot ip
+
+       log_test "VXLAN: envelope TTL"
+}
+
 test_all()
 {
        echo "Running tests with UDP port $VXPORT"