* [PATCH net-next 01/16] selftests: net: bridge: rename current igmp tests to igmpv2
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 02/16] selftests: net: bridge: igmp: add support for packet source address Nikolay Aleksandrov
` (15 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
To prepare the bridge_igmp.sh for IGMPv3 we need to rename the
current test to IGMPv2.
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
tools/testing/selftests/net/forwarding/bridge_igmp.sh | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 88d2472ba151..481198300b72 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
-ALL_TESTS="reportleave_test"
+ALL_TESTS="v2reportleave_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -110,7 +110,7 @@ mcast_packet_test()
return $seen
}
-reportleave_test()
+v2reportleave_test()
{
RET=0
ip address add dev $h2 $TEST_GROUP/32 autojoin
@@ -118,12 +118,12 @@ reportleave_test()
sleep 5
bridge mdb show dev br0 | grep $TEST_GROUP 1>/dev/null
- check_err $? "Report didn't create mdb entry for $TEST_GROUP"
+ check_err $? "IGMPv2 report didn't create mdb entry for $TEST_GROUP"
mcast_packet_test $TEST_GROUP_MAC $TEST_GROUP $h1 $h2
check_fail $? "Traffic to $TEST_GROUP wasn't forwarded"
- log_test "IGMP report $TEST_GROUP"
+ log_test "IGMPv2 report $TEST_GROUP"
RET=0
bridge mdb show dev br0 | grep $TEST_GROUP 1>/dev/null
@@ -139,7 +139,7 @@ reportleave_test()
mcast_packet_test $TEST_GROUP_MAC $TEST_GROUP $h1 $h2
check_err $? "Traffic to $TEST_GROUP was forwarded without mdb entry"
- log_test "IGMP leave $TEST_GROUP"
+ log_test "IGMPv2 leave $TEST_GROUP"
}
trap cleanup EXIT
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 02/16] selftests: net: bridge: igmp: add support for packet source address
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 01/16] selftests: net: bridge: rename current igmp tests to igmpv2 Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 03/16] selftests: net: bridge: igmp: check for specific udp ip protocol Nikolay Aleksandrov
` (14 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
Add support for one more argument which specifies the source address to
use. It will be later used for IGMPv3 S,G entry testing.
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../testing/selftests/net/forwarding/bridge_igmp.sh | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 481198300b72..1c19459dbc58 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -83,9 +83,10 @@ cleanup()
mcast_packet_test()
{
local mac=$1
- local ip=$2
- local host1_if=$3
- local host2_if=$4
+ local src_ip=$2
+ local ip=$3
+ local host1_if=$4
+ local host2_if=$5
local seen=0
# Add an ACL on `host2_if` which will tell us whether the packet
@@ -94,7 +95,7 @@ mcast_packet_test()
tc filter add dev $host2_if ingress protocol ip pref 1 handle 101 \
flower dst_mac $mac action drop
- $MZ $host1_if -c 1 -p 64 -b $mac -B $ip -t udp "dp=4096,sp=2048" -q
+ $MZ $host1_if -c 1 -p 64 -b $mac -A $src_ip -B $ip -t udp "dp=4096,sp=2048" -q
sleep 1
tc -j -s filter show dev $host2_if ingress \
@@ -120,7 +121,7 @@ v2reportleave_test()
bridge mdb show dev br0 | grep $TEST_GROUP 1>/dev/null
check_err $? "IGMPv2 report didn't create mdb entry for $TEST_GROUP"
- mcast_packet_test $TEST_GROUP_MAC $TEST_GROUP $h1 $h2
+ mcast_packet_test $TEST_GROUP_MAC 192.0.2.1 $TEST_GROUP $h1 $h2
check_fail $? "Traffic to $TEST_GROUP wasn't forwarded"
log_test "IGMPv2 report $TEST_GROUP"
@@ -136,7 +137,7 @@ v2reportleave_test()
bridge mdb show dev br0 | grep $TEST_GROUP 1>/dev/null
check_fail $? "Leave didn't delete mdb entry for $TEST_GROUP"
- mcast_packet_test $TEST_GROUP_MAC $TEST_GROUP $h1 $h2
+ mcast_packet_test $TEST_GROUP_MAC 192.0.2.1 $TEST_GROUP $h1 $h2
check_err $? "Traffic to $TEST_GROUP was forwarded without mdb entry"
log_test "IGMPv2 leave $TEST_GROUP"
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 03/16] selftests: net: bridge: igmp: check for specific udp ip protocol
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 01/16] selftests: net: bridge: rename current igmp tests to igmpv2 Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 02/16] selftests: net: bridge: igmp: add support for packet source address Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 04/16] selftests: net: bridge: igmp: add IGMPv3 entries' state helpers Nikolay Aleksandrov
` (13 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
We have to specifically check for udp protocol in addition to the mac
address because in IGMPv3 tests group-specific queries will use the same
mac address.
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
tools/testing/selftests/net/forwarding/bridge_igmp.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 1c19459dbc58..5562aef14c0a 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -93,7 +93,7 @@ mcast_packet_test()
# was received by it or not.
tc qdisc add dev $host2_if ingress
tc filter add dev $host2_if ingress protocol ip pref 1 handle 101 \
- flower dst_mac $mac action drop
+ flower ip_proto udp dst_mac $mac action drop
$MZ $host1_if -c 1 -p 64 -b $mac -A $src_ip -B $ip -t udp "dp=4096,sp=2048" -q
sleep 1
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 04/16] selftests: net: bridge: igmp: add IGMPv3 entries' state helpers
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (2 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 03/16] selftests: net: bridge: igmp: check for specific udp ip protocol Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 05/16] selftests: net: bridge: add tests for igmpv3 is_include and inc -> allow reports Nikolay Aleksandrov
` (12 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
Add helpers which will be used in subsequent tests, they are:
- check_sg_entries: check for proper source list and S,G entry
existence
- check_sg_fwding: check for proper traffic forwarding/blocking
- check_sg_state: check for proper blocked/forwarding entry state
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 67 +++++++++++++++++++
1 file changed, 67 insertions(+)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 5562aef14c0a..19c1f46d1151 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -143,6 +143,73 @@ v2reportleave_test()
log_test "IGMPv2 leave $TEST_GROUP"
}
+check_sg_entries()
+{
+ local report=$1; shift
+ local slist=("$@")
+ local sarg=""
+
+ for src in "${slist[@]}"; do
+ sarg="${sarg} and .source_list[].address == \"$src\""
+ done
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and .source_list != null $sarg)" &>/dev/null
+ check_err $? "Wrong *,G entry source list after $report report"
+
+ for sgent in "${slist[@]}"; do
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and .src == \"$sgent\")" &>/dev/null
+ check_err $? "Missing S,G entry ($sgent, $TEST_GROUP)"
+ done
+}
+
+check_sg_fwding()
+{
+ local should_fwd=$1; shift
+ local sources=("$@")
+
+ for src in "${sources[@]}"; do
+ local retval=0
+
+ mcast_packet_test $TEST_GROUP_MAC $src $TEST_GROUP $h2 $h1
+ retval=$?
+ if [ $should_fwd -eq 1 ]; then
+ check_fail $retval "Didn't forward traffic from S,G ($src, $TEST_GROUP)"
+ else
+ check_err $retval "Forwarded traffic for blocked S,G ($src, $TEST_GROUP)"
+ fi
+ done
+}
+
+check_sg_state()
+{
+ local is_blocked=$1; shift
+ local sources=("$@")
+ local should_fail=1
+
+ if [ $is_blocked -eq 1 ]; then
+ should_fail=0
+ fi
+
+ for src in "${sources[@]}"; do
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and .source_list != null) |
+ .source_list[] |
+ select(.address == \"$src\") |
+ select(.timer == \"0.00\")" &>/dev/null
+ check_err_fail $should_fail $? "Entry $src has zero timer"
+
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and .src == \"$src\" and \
+ .flags[] == \"blocked\")" &>/dev/null
+ check_err_fail $should_fail $? "Entry $src has blocked flag"
+ done
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 05/16] selftests: net: bridge: add tests for igmpv3 is_include and inc -> allow reports
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (3 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 04/16] selftests: net: bridge: igmp: add IGMPv3 entries' state helpers Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 06/16] selftests: net: bridge: add test for igmpv3 inc -> is_include report Nikolay Aleksandrov
` (11 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
First we test is_include/include mode then we build on that with allow
effectively achieving:
state report result action
INCLUDE (A) ALLOW (B) INCLUDE (A+B) (B)=GMI
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 82 ++++++++++++++++++-
1 file changed, 81 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 19c1f46d1151..e9999e346ea6 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -1,11 +1,20 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
-ALL_TESTS="v2reportleave_test"
+ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
TEST_GROUP_MAC="01:00:5e:0a:0a:0a"
+
+ALL_GROUP="224.0.0.1"
+ALL_MAC="01:00:5e:00:00:01"
+
+# IGMPv3 is_in report: grp 239.10.10.10 is_include 192.0.2.1,192.0.2.2,192.0.2.3
+MZPKT_IS_INC="22:00:9d:de:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:03"
+# IGMPv3 allow report: grp 239.10.10.10 allow 192.0.2.10,192.0.2.11,192.0.2.12
+MZPKT_ALLOW="22:00:99:c3:00:00:00:01:05:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
+
source lib.sh
h1_create()
@@ -210,6 +219,77 @@ check_sg_state()
done
}
+v3include_prepare()
+{
+ local host1_if=$1
+ local mac=$2
+ local group=$3
+ local X=("192.0.2.1" "192.0.2.2" "192.0.2.3")
+
+ ip link set dev br0 type bridge mcast_igmp_version 3
+ check_err $? "Could not change bridge IGMP version to 3"
+
+ $MZ $host1_if -b $mac -c 1 -B $group -t ip "proto=2,p=$MZPKT_IS_INC" -q
+ sleep 1
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and .source_list != null)" &>/dev/null
+ check_err $? "Missing *,G entry with source list"
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and .filter_mode == \"include\")" &>/dev/null
+ check_err $? "Wrong *,G entry filter mode"
+ check_sg_entries "is_include" "${X[@]}"
+}
+
+v3cleanup()
+{
+ local port=$1
+ local group=$2
+
+ bridge mdb del dev br0 port $port grp $group
+ ip link set dev br0 type bridge mcast_igmp_version 2
+}
+
+v3include_test()
+{
+ RET=0
+ local X=("192.0.2.1" "192.0.2.2" "192.0.2.3")
+
+ v3include_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ check_sg_state 0 "${X[@]}"
+
+ check_sg_fwding 1 "${X[@]}"
+ check_sg_fwding 0 "192.0.2.100"
+
+ log_test "IGMPv3 report $TEST_GROUP is_include"
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
+v3inc_allow_test()
+{
+ RET=0
+ local X=("192.0.2.10" "192.0.2.11" "192.0.2.12")
+
+ v3include_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_ALLOW" -q
+ sleep 1
+ check_sg_entries "allow" "${X[@]}"
+
+ check_sg_state 0 "${X[@]}"
+
+ check_sg_fwding 1 "${X[@]}"
+ check_sg_fwding 0 "192.0.2.100"
+
+ log_test "IGMPv3 report $TEST_GROUP include -> allow"
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 06/16] selftests: net: bridge: add test for igmpv3 inc -> is_include report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (4 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 05/16] selftests: net: bridge: add tests for igmpv3 is_include and inc -> allow reports Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 07/16] selftests: net: bridge: add test for igmpv3 inc -> is_exclude report Nikolay Aleksandrov
` (10 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
INCLUDE (A) IS_IN (B) INCLUDE (A+B) (B)=GMI
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 25 ++++++++++++++++++-
1 file changed, 24 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index e9999e346ea6..added5c69e8b 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -1,7 +1,7 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
-ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test"
+ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -12,6 +12,8 @@ ALL_MAC="01:00:5e:00:00:01"
# IGMPv3 is_in report: grp 239.10.10.10 is_include 192.0.2.1,192.0.2.2,192.0.2.3
MZPKT_IS_INC="22:00:9d:de:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:03"
+# IGMPv3 is_in report: grp 239.10.10.10 is_include 192.0.2.10,192.0.2.11,192.0.2.12
+MZPKT_IS_INC2="22:00:9d:c3:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
# IGMPv3 allow report: grp 239.10.10.10 allow 192.0.2.10,192.0.2.11,192.0.2.12
MZPKT_ALLOW="22:00:99:c3:00:00:00:01:05:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
@@ -290,6 +292,27 @@ v3inc_allow_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3inc_is_include_test()
+{
+ RET=0
+ local X=("192.0.2.10" "192.0.2.11" "192.0.2.12")
+
+ v3include_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_IS_INC2" -q
+ sleep 1
+ check_sg_entries "is_include" "${X[@]}"
+
+ check_sg_state 0 "${X[@]}"
+
+ check_sg_fwding 1 "${X[@]}"
+ check_sg_fwding 0 "192.0.2.100"
+
+ log_test "IGMPv3 report $TEST_GROUP include -> is_include"
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 07/16] selftests: net: bridge: add test for igmpv3 inc -> is_exclude report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (5 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 06/16] selftests: net: bridge: add test for igmpv3 inc -> is_include report Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 08/16] selftests: net: bridge: add test for igmpv3 inc -> to_exclude report Nikolay Aleksandrov
` (9 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
INCLUDE (A) IS_EX (B) EXCLUDE (A*B,B-A) (B-A)=0
Delete (A-B)
Group Timer=GMI
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 41 ++++++++++++++++++-
1 file changed, 40 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index added5c69e8b..34d2c4370fa6 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -1,7 +1,8 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
-ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test"
+ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
+ v3inc_is_exclude_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -16,6 +17,8 @@ MZPKT_IS_INC="22:00:9d:de:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:
MZPKT_IS_INC2="22:00:9d:c3:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
# IGMPv3 allow report: grp 239.10.10.10 allow 192.0.2.10,192.0.2.11,192.0.2.12
MZPKT_ALLOW="22:00:99:c3:00:00:00:01:05:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
+# IGMPv3 is_ex report: grp 239.10.10.10 is_exclude 192.0.2.1,192.0.2.2,192.0.2.20,192.0.2.21
+MZPKT_IS_EXC="22:00:da:b6:00:00:00:01:02:00:00:04:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:14:c0:00:02:15"
source lib.sh
@@ -313,6 +316,42 @@ v3inc_is_include_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3inc_is_exclude_test()
+{
+ RET=0
+ local X=("192.0.2.1" "192.0.2.2")
+ local Y=("192.0.2.20" "192.0.2.21")
+
+ v3include_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_IS_EXC" -q
+ sleep 1
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and .filter_mode == \"exclude\")" &>/dev/null
+ check_err $? "Wrong *,G entry filter mode"
+
+ check_sg_entries "is_exclude" "${X[@]}" "${Y[@]}"
+
+ check_sg_state 0 "${X[@]}"
+ check_sg_state 1 "${Y[@]}"
+
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and
+ .source_list[].address == \"192.0.2.3\")" &>/dev/null
+ check_fail $? "Wrong *,G entry source list, 192.0.2.3 entry still exists"
+
+ check_sg_fwding 1 "${X[@]}" 192.0.2.100
+ check_sg_fwding 0 "${Y[@]}"
+
+ log_test "IGMPv3 report $TEST_GROUP include -> is_exclude"
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 08/16] selftests: net: bridge: add test for igmpv3 inc -> to_exclude report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (6 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 07/16] selftests: net: bridge: add test for igmpv3 inc -> is_exclude report Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 09/16] selftests: net: bridge: add test for igmpv3 exc -> allow report Nikolay Aleksandrov
` (8 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
INCLUDE (A) TO_EX (B) EXCLUDE (A*B,B-A) (B-A)=0
Delete (A-B)
Send Q(G,A*B)
Group Timer=GMI
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 51 ++++++++++++++++++-
1 file changed, 50 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 34d2c4370fa6..36f10a3168cc 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-2.0
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
- v3inc_is_exclude_test"
+ v3inc_is_exclude_test v3inc_to_exclude_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -19,6 +19,8 @@ MZPKT_IS_INC2="22:00:9d:c3:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00
MZPKT_ALLOW="22:00:99:c3:00:00:00:01:05:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
# IGMPv3 is_ex report: grp 239.10.10.10 is_exclude 192.0.2.1,192.0.2.2,192.0.2.20,192.0.2.21
MZPKT_IS_EXC="22:00:da:b6:00:00:00:01:02:00:00:04:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:14:c0:00:02:15"
+# IGMPv3 to_ex report: grp 239.10.10.10 to_exclude 192.0.2.1,192.0.2.20,192.0.2.30
+MZPKT_TO_EXC="22:00:9a:b1:00:00:00:01:04:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:14:c0:00:02:1e"
source lib.sh
@@ -352,6 +354,53 @@ v3inc_is_exclude_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3inc_to_exclude_test()
+{
+ RET=0
+ local X=("192.0.2.1")
+ local Y=("192.0.2.20" "192.0.2.30")
+
+ v3include_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ ip link set dev br0 type bridge mcast_last_member_interval 500
+ check_err $? "Could not change mcast_last_member_interval to 5s"
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_TO_EXC" -q
+ sleep 1
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and .filter_mode == \"exclude\")" &>/dev/null
+ check_err $? "Wrong *,G entry filter mode"
+
+ check_sg_entries "to_exclude" "${X[@]}" "${Y[@]}"
+
+ check_sg_state 0 "${X[@]}"
+ check_sg_state 1 "${Y[@]}"
+
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and
+ .source_list[].address == \"192.0.2.2\")" &>/dev/null
+ check_fail $? "Wrong *,G entry source list, 192.0.2.2 entry still exists"
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and
+ .source_list[].address == \"192.0.2.21\")" &>/dev/null
+ check_fail $? "Wrong *,G entry source list, 192.0.2.21 entry still exists"
+
+ check_sg_fwding 1 "${X[@]}" 192.0.2.100
+ check_sg_fwding 0 "${Y[@]}"
+
+ log_test "IGMPv3 report $TEST_GROUP include -> to_exclude"
+
+ ip link set dev br0 type bridge mcast_last_member_interval 100
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 09/16] selftests: net: bridge: add test for igmpv3 exc -> allow report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (7 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 08/16] selftests: net: bridge: add test for igmpv3 inc -> to_exclude report Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 10/16] selftests: net: bridge: add test for igmpv3 exc -> is_include report Nikolay Aleksandrov
` (7 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
EXCLUDE (X,Y) ALLOW (A) EXCLUDE (X+A,Y-A) (A)=GMI
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 83 +++++++++++++------
1 file changed, 59 insertions(+), 24 deletions(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 36f10a3168cc..d786e75abe2c 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-2.0
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
- v3inc_is_exclude_test v3inc_to_exclude_test"
+ v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -17,6 +17,8 @@ MZPKT_IS_INC="22:00:9d:de:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:
MZPKT_IS_INC2="22:00:9d:c3:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
# IGMPv3 allow report: grp 239.10.10.10 allow 192.0.2.10,192.0.2.11,192.0.2.12
MZPKT_ALLOW="22:00:99:c3:00:00:00:01:05:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
+# IGMPv3 allow report: grp 239.10.10.10 allow 192.0.2.20,192.0.2.30
+MZPKT_ALLOW2="22:00:5b:b4:00:00:00:01:05:00:00:02:ef:0a:0a:0a:c0:00:02:14:c0:00:02:1e"
# IGMPv3 is_ex report: grp 239.10.10.10 is_exclude 192.0.2.1,192.0.2.2,192.0.2.20,192.0.2.21
MZPKT_IS_EXC="22:00:da:b6:00:00:00:01:02:00:00:04:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:14:c0:00:02:15"
# IGMPv3 to_ex report: grp 239.10.10.10 to_exclude 192.0.2.1,192.0.2.20,192.0.2.30
@@ -250,6 +252,38 @@ v3include_prepare()
check_sg_entries "is_include" "${X[@]}"
}
+v3exclude_prepare()
+{
+ local host1_if=$1
+ local mac=$2
+ local group=$3
+ local pkt=$4
+ local X=("192.0.2.1" "192.0.2.2")
+ local Y=("192.0.2.20" "192.0.2.21")
+
+ v3include_prepare $host1_if $mac $group
+
+ $MZ $host1_if -c 1 -b $mac -B $group -t ip "proto=2,p=$MZPKT_IS_EXC" -q
+ sleep 1
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and .filter_mode == \"exclude\")" &>/dev/null
+ check_err $? "Wrong *,G entry filter mode"
+
+ check_sg_entries "is_exclude" "${X[@]}" "${Y[@]}"
+
+ check_sg_state 0 "${X[@]}"
+ check_sg_state 1 "${Y[@]}"
+
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and
+ .source_list[].address == \"192.0.2.3\")" &>/dev/null
+ check_fail $? "Wrong *,G entry source list, 192.0.2.3 entry still exists"
+}
+
v3cleanup()
{
local port=$1
@@ -321,30 +355,8 @@ v3inc_is_include_test()
v3inc_is_exclude_test()
{
RET=0
- local X=("192.0.2.1" "192.0.2.2")
- local Y=("192.0.2.20" "192.0.2.21")
-
- v3include_prepare $h1 $ALL_MAC $ALL_GROUP
-
- $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_IS_EXC" -q
- sleep 1
- bridge -j -d -s mdb show dev br0 \
- | jq -e ".[].mdb[] | \
- select(.grp == \"$TEST_GROUP\" and \
- .source_list != null and .filter_mode == \"exclude\")" &>/dev/null
- check_err $? "Wrong *,G entry filter mode"
-
- check_sg_entries "is_exclude" "${X[@]}" "${Y[@]}"
- check_sg_state 0 "${X[@]}"
- check_sg_state 1 "${Y[@]}"
-
- bridge -j -d -s mdb show dev br0 \
- | jq -e ".[].mdb[] | \
- select(.grp == \"$TEST_GROUP\" and \
- .source_list != null and
- .source_list[].address == \"192.0.2.3\")" &>/dev/null
- check_fail $? "Wrong *,G entry source list, 192.0.2.3 entry still exists"
+ v3exclude_prepare $h1 $ALL_MAC $ALL_GROUP
check_sg_fwding 1 "${X[@]}" 192.0.2.100
check_sg_fwding 0 "${Y[@]}"
@@ -401,6 +413,29 @@ v3inc_to_exclude_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3exc_allow_test()
+{
+ RET=0
+ local X=("192.0.2.1" "192.0.2.2" "192.0.2.20" "192.0.2.30")
+ local Y=("192.0.2.21")
+
+ v3exclude_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_ALLOW2" -q
+ sleep 1
+ check_sg_entries "allow" "${X[@]}" "${Y[@]}"
+
+ check_sg_state 0 "${X[@]}"
+ check_sg_state 1 "${Y[@]}"
+
+ check_sg_fwding 1 "${X[@]}" 192.0.2.100
+ check_sg_fwding 0 "${Y[@]}"
+
+ log_test "IGMPv3 report $TEST_GROUP exclude -> allow"
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 10/16] selftests: net: bridge: add test for igmpv3 exc -> is_include report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (8 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 09/16] selftests: net: bridge: add test for igmpv3 exc -> allow report Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 11/16] selftests: net: bridge: add test for igmpv3 exc -> is_exclude report Nikolay Aleksandrov
` (6 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
EXCLUDE (X,Y) IS_IN (A) EXCLUDE (X+A,Y-A) (A)=GMI
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 27 ++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index d786e75abe2c..b2b0f7d7e860 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -2,7 +2,7 @@
# SPDX-License-Identifier: GPL-2.0
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
- v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test"
+ v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -15,6 +15,8 @@ ALL_MAC="01:00:5e:00:00:01"
MZPKT_IS_INC="22:00:9d:de:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:03"
# IGMPv3 is_in report: grp 239.10.10.10 is_include 192.0.2.10,192.0.2.11,192.0.2.12
MZPKT_IS_INC2="22:00:9d:c3:00:00:00:01:01:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
+# IGMPv3 is_in report: grp 239.10.10.10 is_include 192.0.2.20,192.0.2.30
+MZPKT_IS_INC3="22:00:5f:b4:00:00:00:01:01:00:00:02:ef:0a:0a:0a:c0:00:02:14:c0:00:02:1e"
# IGMPv3 allow report: grp 239.10.10.10 allow 192.0.2.10,192.0.2.11,192.0.2.12
MZPKT_ALLOW="22:00:99:c3:00:00:00:01:05:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:02:0b:c0:00:02:0c"
# IGMPv3 allow report: grp 239.10.10.10 allow 192.0.2.20,192.0.2.30
@@ -436,6 +438,29 @@ v3exc_allow_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3exc_is_include_test()
+{
+ RET=0
+ local X=("192.0.2.1" "192.0.2.2" "192.0.2.20" "192.0.2.30")
+ local Y=("192.0.2.21")
+
+ v3exclude_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_IS_INC3" -q
+ sleep 1
+ check_sg_entries "is_include" "${X[@]}" "${Y[@]}"
+
+ check_sg_state 0 "${X[@]}"
+ check_sg_state 1 "${Y[@]}"
+
+ check_sg_fwding 1 "${X[@]}" 192.0.2.100
+ check_sg_fwding 0 "${Y[@]}"
+
+ log_test "IGMPv3 report $TEST_GROUP exclude -> is_include"
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 11/16] selftests: net: bridge: add test for igmpv3 exc -> is_exclude report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (9 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 10/16] selftests: net: bridge: add test for igmpv3 exc -> is_include report Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 12/16] selftests: net: bridge: add test for igmpv3 exc -> to_exclude report Nikolay Aleksandrov
` (5 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
EXCLUDE (X,Y) IS_EX (A) EXCLUDE (A-Y,Y*A) (A-X-Y)=GMI
Delete (X-A)
Delete (Y-A)
Group Timer=GMI
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 28 ++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index b2b0f7d7e860..91b0b26428f6 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -2,7 +2,8 @@
# SPDX-License-Identifier: GPL-2.0
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
- v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test"
+ v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test \
+ v3exc_is_exclude_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -23,6 +24,8 @@ MZPKT_ALLOW="22:00:99:c3:00:00:00:01:05:00:00:03:ef:0a:0a:0a:c0:00:02:0a:c0:00:0
MZPKT_ALLOW2="22:00:5b:b4:00:00:00:01:05:00:00:02:ef:0a:0a:0a:c0:00:02:14:c0:00:02:1e"
# IGMPv3 is_ex report: grp 239.10.10.10 is_exclude 192.0.2.1,192.0.2.2,192.0.2.20,192.0.2.21
MZPKT_IS_EXC="22:00:da:b6:00:00:00:01:02:00:00:04:ef:0a:0a:0a:c0:00:02:01:c0:00:02:02:c0:00:02:14:c0:00:02:15"
+# IGMPv3 is_ex report: grp 239.10.10.10 is_exclude 192.0.2.20,192.0.2.30
+MZPKT_IS_EXC2="22:00:5e:b4:00:00:00:01:02:00:00:02:ef:0a:0a:0a:c0:00:02:14:c0:00:02:1e"
# IGMPv3 to_ex report: grp 239.10.10.10 to_exclude 192.0.2.1,192.0.2.20,192.0.2.30
MZPKT_TO_EXC="22:00:9a:b1:00:00:00:01:04:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:14:c0:00:02:1e"
@@ -461,6 +464,29 @@ v3exc_is_include_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3exc_is_exclude_test()
+{
+ RET=0
+ local X=("192.0.2.30")
+ local Y=("192.0.2.20")
+
+ v3exclude_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_IS_EXC2" -q
+ sleep 1
+ check_sg_entries "is_exclude" "${X[@]}" "${Y[@]}"
+
+ check_sg_state 0 "${X[@]}"
+ check_sg_state 1 "${Y[@]}"
+
+ check_sg_fwding 1 "${X[@]}" 192.0.2.100
+ check_sg_fwding 0 "${Y[@]}"
+
+ log_test "IGMPv3 report $TEST_GROUP exclude -> is_exclude"
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 12/16] selftests: net: bridge: add test for igmpv3 exc -> to_exclude report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (10 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 11/16] selftests: net: bridge: add test for igmpv3 exc -> is_exclude report Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 13/16] selftests: net: bridge: add test for igmpv3 inc -> block report Nikolay Aleksandrov
` (4 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
EXCLUDE (X,Y) TO_EX (A) EXCLUDE (A-Y,Y*A) (A-X-Y)=Group Timer
Delete (X-A)
Delete (Y-A)
Send Q(G,A-Y)
Group Timer=GMI
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 30 ++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 91b0b26428f6..3cfc30b88285 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -3,7 +3,7 @@
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test \
- v3exc_is_exclude_test"
+ v3exc_is_exclude_test v3exc_to_exclude_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -487,6 +487,34 @@ v3exc_is_exclude_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3exc_to_exclude_test()
+{
+ RET=0
+ local X=("192.0.2.1" "192.0.2.30")
+ local Y=("192.0.2.20")
+
+ v3exclude_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ ip link set dev br0 type bridge mcast_last_member_interval 500
+ check_err $? "Could not change mcast_last_member_interval to 5s"
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_TO_EXC" -q
+ sleep 1
+ check_sg_entries "to_exclude" "${X[@]}" "${Y[@]}"
+
+ check_sg_state 0 "${X[@]}"
+ check_sg_state 1 "${Y[@]}"
+
+ check_sg_fwding 1 "${X[@]}" 192.0.2.100
+ check_sg_fwding 0 "${Y[@]}"
+
+ log_test "IGMPv3 report $TEST_GROUP exclude -> to_exclude"
+
+ ip link set dev br0 type bridge mcast_last_member_interval 100
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 13/16] selftests: net: bridge: add test for igmpv3 inc -> block report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (11 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 12/16] selftests: net: bridge: add test for igmpv3 exc -> to_exclude report Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 14/16] selftests: net: bridge: add test for igmpv3 exc " Nikolay Aleksandrov
` (3 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
INCLUDE (A) BLOCK (B) INCLUDE (A) Send Q(G,A*B)
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 33 ++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 3cfc30b88285..3772c7a066c9 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -3,7 +3,7 @@
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test \
- v3exc_is_exclude_test v3exc_to_exclude_test"
+ v3exc_is_exclude_test v3exc_to_exclude_test v3inc_block_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -28,6 +28,8 @@ MZPKT_IS_EXC="22:00:da:b6:00:00:00:01:02:00:00:04:ef:0a:0a:0a:c0:00:02:01:c0:00:
MZPKT_IS_EXC2="22:00:5e:b4:00:00:00:01:02:00:00:02:ef:0a:0a:0a:c0:00:02:14:c0:00:02:1e"
# IGMPv3 to_ex report: grp 239.10.10.10 to_exclude 192.0.2.1,192.0.2.20,192.0.2.30
MZPKT_TO_EXC="22:00:9a:b1:00:00:00:01:04:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:14:c0:00:02:1e"
+# IGMPv3 block report: grp 239.10.10.10 block 192.0.2.1,192.0.2.20,192.0.2.30
+MZPKT_BLOCK="22:00:98:b1:00:00:00:01:06:00:00:03:ef:0a:0a:0a:c0:00:02:01:c0:00:02:14:c0:00:02:1e"
source lib.sh
@@ -515,6 +517,35 @@ v3exc_to_exclude_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3inc_block_test()
+{
+ RET=0
+ local X=("192.0.2.2" "192.0.2.3")
+
+ v3include_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_BLOCK" -q
+ # make sure the lowered timers have expired (by default 2 seconds)
+ sleep 3
+ check_sg_entries "block" "${X[@]}"
+
+ check_sg_state 0 "${X[@]}"
+
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and
+ .source_list[].address == \"192.0.2.1\")" &>/dev/null
+ check_fail $? "Wrong *,G entry source list, 192.0.2.1 entry still exists"
+
+ check_sg_fwding 1 "${X[@]}"
+ check_sg_fwding 0 "192.0.2.100"
+
+ log_test "IGMPv3 report $TEST_GROUP include -> block"
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 14/16] selftests: net: bridge: add test for igmpv3 exc -> block report
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (12 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 13/16] selftests: net: bridge: add test for igmpv3 inc -> block report Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 15/16] selftests: net: bridge: add test for igmpv3 exclude timeout Nikolay Aleksandrov
` (2 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
The test checks for the following case:
state report result action
EXCLUDE (X,Y) BLOCK (A) EXCLUDE (X+(A-Y),Y) (A-X-Y)=Group Timer
Send Q(G,A-Y)
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 30 ++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 3772c7a066c9..45c5619666d8 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -3,7 +3,7 @@
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test \
- v3exc_is_exclude_test v3exc_to_exclude_test v3inc_block_test"
+ v3exc_is_exclude_test v3exc_to_exclude_test v3inc_block_test v3exc_block_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -546,6 +546,34 @@ v3inc_block_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3exc_block_test()
+{
+ RET=0
+ local X=("192.0.2.1" "192.0.2.2" "192.0.2.30")
+ local Y=("192.0.2.20" "192.0.2.21")
+
+ v3exclude_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ ip link set dev br0 type bridge mcast_last_member_interval 500
+ check_err $? "Could not change mcast_last_member_interval to 5s"
+
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_BLOCK" -q
+ sleep 1
+ check_sg_entries "block" "${X[@]}" "${Y[@]}"
+
+ check_sg_state 0 "${X[@]}"
+ check_sg_state 1 "${Y[@]}"
+
+ check_sg_fwding 1 "${X[@]}" 192.0.2.100
+ check_sg_fwding 0 "${Y[@]}"
+
+ log_test "IGMPv3 report $TEST_GROUP exclude -> block"
+
+ ip link set dev br0 type bridge mcast_last_member_interval 100
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 15/16] selftests: net: bridge: add test for igmpv3 exclude timeout
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (13 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 14/16] selftests: net: bridge: add test for igmpv3 exc " Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-27 18:59 ` [PATCH net-next 16/16] selftests: net: bridge: add test for igmpv3 *,g auto-add Nikolay Aleksandrov
2020-10-30 17:53 ` [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Jakub Kicinski
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
Test that when a group in exclude mode expires it changes mode to
include and the blocked entries are deleted.
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 49 ++++++++++++++++++-
1 file changed, 48 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index 45c5619666d8..db0a03e30868 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -3,7 +3,8 @@
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test \
- v3exc_is_exclude_test v3exc_to_exclude_test v3inc_block_test v3exc_block_test"
+ v3exc_is_exclude_test v3exc_to_exclude_test v3inc_block_test v3exc_block_test \
+ v3exc_timeout_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -574,6 +575,52 @@ v3exc_block_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3exc_timeout_test()
+{
+ RET=0
+ local X=("192.0.2.20" "192.0.2.30")
+
+ # GMI should be 3 seconds
+ ip link set dev br0 type bridge mcast_query_interval 100 mcast_query_response_interval 100
+
+ v3exclude_prepare $h1 $ALL_MAC $ALL_GROUP
+ ip link set dev br0 type bridge mcast_query_interval 500 mcast_query_response_interval 500
+ $MZ $h1 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_ALLOW2" -q
+ sleep 3
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and .filter_mode == \"include\")" &>/dev/null
+ check_err $? "Wrong *,G entry filter mode"
+
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and
+ .source_list[].address == \"192.0.2.1\")" &>/dev/null
+ check_fail $? "Wrong *,G entry source list, 192.0.2.1 entry still exists"
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and \
+ .source_list != null and
+ .source_list[].address == \"192.0.2.2\")" &>/dev/null
+ check_fail $? "Wrong *,G entry source list, 192.0.2.2 entry still exists"
+
+ check_sg_entries "allow" "${X[@]}"
+
+ check_sg_state 0 "${X[@]}"
+
+ check_sg_fwding 1 "${X[@]}"
+ check_sg_fwding 0 192.0.2.100
+
+ log_test "IGMPv3 group $TEST_GROUP exclude timeout"
+
+ ip link set dev br0 type bridge mcast_query_interval 12500 \
+ mcast_query_response_interval 1000
+
+ v3cleanup $swp1 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH net-next 16/16] selftests: net: bridge: add test for igmpv3 *,g auto-add
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (14 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 15/16] selftests: net: bridge: add test for igmpv3 exclude timeout Nikolay Aleksandrov
@ 2020-10-27 18:59 ` Nikolay Aleksandrov
2020-10-30 17:53 ` [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Jakub Kicinski
16 siblings, 0 replies; 18+ messages in thread
From: Nikolay Aleksandrov @ 2020-10-27 18:59 UTC (permalink / raw)
To: netdev; +Cc: roopa, kuba, bridge, Nikolay Aleksandrov
From: Nikolay Aleksandrov <nikolay@nvidia.com>
When we have *,G ports in exclude mode and a new S,G,port is added
the kernel has to automatically create an S,G entry for each exclude
port to get proper forwarding.
Signed-off-by: Nikolay Aleksandrov <nikolay@nvidia.com>
---
.../selftests/net/forwarding/bridge_igmp.sh | 31 ++++++++++++++++++-
1 file changed, 30 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/forwarding/bridge_igmp.sh b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
index db0a03e30868..0e71abdd7a03 100755
--- a/tools/testing/selftests/net/forwarding/bridge_igmp.sh
+++ b/tools/testing/selftests/net/forwarding/bridge_igmp.sh
@@ -4,7 +4,7 @@
ALL_TESTS="v2reportleave_test v3include_test v3inc_allow_test v3inc_is_include_test \
v3inc_is_exclude_test v3inc_to_exclude_test v3exc_allow_test v3exc_is_include_test \
v3exc_is_exclude_test v3exc_to_exclude_test v3inc_block_test v3exc_block_test \
- v3exc_timeout_test"
+ v3exc_timeout_test v3star_ex_auto_add_test"
NUM_NETIFS=4
CHECK_TC="yes"
TEST_GROUP="239.10.10.10"
@@ -621,6 +621,35 @@ v3exc_timeout_test()
v3cleanup $swp1 $TEST_GROUP
}
+v3star_ex_auto_add_test()
+{
+ RET=0
+
+ v3exclude_prepare $h1 $ALL_MAC $ALL_GROUP
+
+ $MZ $h2 -c 1 -b $ALL_MAC -B $ALL_GROUP -t ip "proto=2,p=$MZPKT_IS_INC" -q
+ sleep 1
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and .src == \"192.0.2.3\" and \
+ .port == \"$swp1\")" &>/dev/null
+ check_err $? "S,G entry for *,G port doesn't exist"
+
+ bridge -j -d -s mdb show dev br0 \
+ | jq -e ".[].mdb[] | \
+ select(.grp == \"$TEST_GROUP\" and .src == \"192.0.2.3\" and \
+ .port == \"$swp1\" and \
+ .flags[] == \"added_by_star_ex\")" &>/dev/null
+ check_err $? "Auto-added S,G entry doesn't have added_by_star_ex flag"
+
+ check_sg_fwding 1 192.0.2.3
+
+ log_test "IGMPv3 S,G port entry automatic add to a *,G port"
+
+ v3cleanup $swp1 $TEST_GROUP
+ v3cleanup $swp2 $TEST_GROUP
+}
+
trap cleanup EXIT
setup_prepare
--
2.25.4
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3
2020-10-27 18:59 [PATCH net-next 00/16] selftests: net: bridge: add tests for IGMPv3 Nikolay Aleksandrov
` (15 preceding siblings ...)
2020-10-27 18:59 ` [PATCH net-next 16/16] selftests: net: bridge: add test for igmpv3 *,g auto-add Nikolay Aleksandrov
@ 2020-10-30 17:53 ` Jakub Kicinski
16 siblings, 0 replies; 18+ messages in thread
From: Jakub Kicinski @ 2020-10-30 17:53 UTC (permalink / raw)
To: Nikolay Aleksandrov; +Cc: netdev, roopa, bridge, Nikolay Aleksandrov
On Tue, 27 Oct 2020 20:59:18 +0200 Nikolay Aleksandrov wrote:
> This set adds tests for the bridge's new IGMPv3 support. The tests use
> precooked packets which are sent via mausezahn and the resulting state
> after each test is checked for proper X,Y sets, (*,G) source list, source
> list entry timers, (S,G) existence and flags, packet forwarding and
> blocking, exclude group expiration and (*,G) auto-add. The first 3 patches
> prepare the existing IGMPv2 tests, then patch 4 adds new helpers which are
> used throughout the rest of the v3 tests.
> The following new tests are added:
> - base case: IGMPv3 report 239.10.10.10 is_include (A)
> - include -> allow report
> - include -> is_include report
> - include -> is_exclude report
> - include -> to_exclude report
> - exclude -> allow report
> - exclude -> is_include report
> - exclude -> is_exclude report
> - exclude -> to_exclude report
> - include -> block report
> - exclude -> block report
> - exclude timeout (move to include + entry deletion)
> - S,G port entry automatic add to a *,G,exclude port
>
> The variable names and set notation are the same as per RFC 3376,
> for more information check RFC 3376 sections 4.2.15 and 6.4.1.
> MLDv2 tests will be added by a separate patch-set.
Applied, thanks Nik!
^ permalink raw reply [flat|nested] 18+ messages in thread