mbox series

[net-next,00/16] selftests: net: bridge: add tests for MLDv2

Message ID 20201103172412.1044840-1-razor@blackwall.org (mailing list archive)
Headers show
Series selftests: net: bridge: add tests for MLDv2 | expand

Message

Nikolay Aleksandrov Nov. 3, 2020, 5:23 p.m. UTC
From: Nikolay Aleksandrov <nikolay@nvidia.com>

Hi,
This is the second selftests patch-set for the new multicast functionality
which adds tests for the bridge's MLDv2 support. The tests use full
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
factor out common functions which are used by IGMPv3 tests in lib.sh and
add support for IPv6 test UDP packet, then patch 4 adds the first test with
the initial MLDv2 setup.
The following new tests are added:
 - base case: MLDv2 report ff02::cc is_include
 - 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 3810,
for more information check RFC 3810 sections 2.3 and 7.

Thanks,
 Nik

Nikolay Aleksandrov (16):
  selftests: net: bridge: factor out mcast_packet_test
  selftests: net: lib: add support for IPv6 mcast packet test
  selftests: net: bridge: factor out and rename sg state functions
  selftests: net: bridge: add initial MLDv2 include test
  selftests: net: bridge: add test for mldv2 inc -> allow report
  selftests: net: bridge: add test for mldv2 inc -> is_include report
  selftests: net: bridge: add test for mldv2 inc -> is_exclude report
  selftests: net: bridge: add test for mldv2 inc -> to_exclude report
  selftests: net: bridge: add test for mldv2 exc -> allow report
  selftests: net: bridge: add test for mldv2 exc -> is_include report
  selftests: net: bridge: add test for mldv2 exc -> is_exclude report
  selftests: net: bridge: add test for mldv2 exc -> to_exclude report
  selftests: net: bridge: add test for mldv2 inc -> block report
  selftests: net: bridge: add test for mldv2 exc -> block report
  selftests: net: bridge: add test for mldv2 exclude timeout
  selftests: net: bridge: add test for mldv2 *,g auto-add

 .../selftests/net/forwarding/bridge_igmp.sh   | 211 ++-----
 .../selftests/net/forwarding/bridge_mld.sh    | 558 ++++++++++++++++++
 tools/testing/selftests/net/forwarding/lib.sh | 107 ++++
 3 files changed, 721 insertions(+), 155 deletions(-)
 create mode 100755 tools/testing/selftests/net/forwarding/bridge_mld.sh

Comments

Jakub Kicinski Nov. 5, 2020, 12:58 a.m. UTC | #1
On Tue,  3 Nov 2020 19:23:56 +0200 Nikolay Aleksandrov wrote:
> This is the second selftests patch-set for the new multicast functionality
> which adds tests for the bridge's MLDv2 support. The tests use full
> 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
> factor out common functions which are used by IGMPv3 tests in lib.sh and
> add support for IPv6 test UDP packet, then patch 4 adds the first test with
> the initial MLDv2 setup.
> The following new tests are added:
>  - base case: MLDv2 report ff02::cc is_include
>  - 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 3810,
> for more information check RFC 3810 sections 2.3 and 7.

Applied, thank you!