test_mld_basic.py::MLDBasic
- ::startup
- ::prepare:#73:dut/pim6d/log
- ::prepare:#80:h1_dut/packet
- ::test_ssm:#89:h1/h1-dut/multicast-join[fdbc:1::fc02:ff:febc:100,ff05::2345]
- ::test_ssm:#91:dut/pim6d/log
- ::test_ssm:#92:dut/pim6d/vtysh[debug show mld interface dut-h1]
- ::test_ssm:#96:src/scapy[src-lan/IPv6/UDP]
- ::test_ssm:#106:h1_dut/packet
- ::test_asm:#110:h1/h1-dut/multicast-join[*,ff05::1234]
- ::test_asm:#112:dut/pim6d/log
- ::test_asm:#113:dut/pim6d/vtysh[debug show mld interface dut-h1]
- ::test_no_rtralert:#123:h1/scapy[h1-dut/IPv6/ICMPv6MLReport2]
- ::test_no_rtralert:#128:dut/pim6d/log
- ::test_invalid_group:#139:h1/scapy[h1-dut/IPv6/IPv6ExtHdrHopByHop/ICMPv6MLReport2]
- ::test_invalid_group:#144:dut/pim6d/log
- ::shutdown
::startup
passed after 1.19s
('test_mld_basic.py', -inf, 'startup')
::prepare
::prepare:#73:dut/pim6d/log
passed after 0.00s
('test_mld_basic.py', 73, '#73:dut/pim6d/log')
::prepare:#80:h1_dut/packet
passed after 2.63s
('test_mld_basic.py', 80, '#80:h1_dut/packet')
::test_ssm
Join a (S,G) on MLD and try forwarding a packet on it.
::test_ssm:#89:h1/h1-dut/multicast-join[fdbc:1::fc02:ff:febc:100,ff05::2345]
passed after 0.00s
('test_mld_basic.py', 89, '#89:h1/h1-dut/multicast-join[fdbc:1::fc02:ff:febc:100,ff05::2345]')
::test_ssm:#91:dut/pim6d/log
passed after 0.01s
('test_mld_basic.py', 91, '#91:dut/pim6d/log')
::test_ssm:#92:dut/pim6d/vtysh[debug show mld interface dut-h1]
passed after 0.00s, CLI command: debug show mld interface dut-h1
('test_mld_basic.py', 92, '#92:dut/pim6d/vtysh[debug show mld interface dut-h1]')
::test_ssm:#96:src/scapy[src-lan/IPv6/UDP]
passed after 0.07s, packet: Ether / IPv6 / UDP IPv6Address('fdbc:1::fc02:ff:febc:100'):9999 > ff05::2345:9999
###[ Ethernet ]### dst = 33:33:00:00:23:45 src = None type = IPv6 ###[ IPv6 ]### version = 6 tc = 0 fl = 0 plen = None nh = UDP hlim = 255 src = IPv6Address('fdbc:1::fc02:ff:febc:100') dst = ff05::2345 ###[ UDP ]### sport = 9999 dport = 9999 len = None chksum = None
::test_ssm:#106:h1_dut/packet
passed after 0.00s
('test_mld_basic.py', 106, '#106:h1_dut/packet')
::test_asm
::test_asm:#110:h1/h1-dut/multicast-join[*,ff05::1234]
passed after 0.00s
('test_mld_basic.py', 110, '#110:h1/h1-dut/multicast-join[*,ff05::1234]')
::test_asm:#112:dut/pim6d/log
passed after 0.01s
('test_mld_basic.py', 112, '#112:dut/pim6d/log')
::test_asm:#113:dut/pim6d/vtysh[debug show mld interface dut-h1]
passed after 0.00s, CLI command: debug show mld interface dut-h1
('test_mld_basic.py', 113, '#113:dut/pim6d/vtysh[debug show mld interface dut-h1]')
::test_no_rtralert
MLD code should be ignoring MLD reports without router alert option.
::test_no_rtralert:#123:h1/scapy[h1-dut/IPv6/ICMPv6MLReport2]
passed after 0.06s, packet: Ether / fe80::fc03:ff:fefe:100 > ff02::16 (58) / ICMPv6MLReport2
###[ Ethernet ]### dst = 33:33:00:00:00:16 src = None type = IPv6 ###[ IPv6 ]### version = 6 tc = 0 fl = 0 plen = None nh = ICMPv6 hlim = 1 src = IPv6Address('fe80::fc03:ff:fefe:100') dst = ff02::16 ###[ MLDv2 - Multicast Listener Report ]### type = MLD Report Version 2 res = 0 cksum = None reserved = 0 records_number= None \records \ |###[ ICMPv6 MLDv2 - Multicast Address Record ]### | rtype = 4 | auxdata_len= None | sources_number= None | dst = ff0e::1234 | sources = [ ] | auxdata = ''
::test_no_rtralert:#128:dut/pim6d/log
passed after 0.00s
('test_mld_basic.py', 128, '#128:dut/pim6d/log')
::test_invalid_group
An unicast address is not a valid group address.
::test_invalid_group:#139:h1/scapy[h1-dut/IPv6/IPv6ExtHdrHopByHop/ICMPv6MLReport2]
passed after 0.06s, packet: Ether / fe80::fc03:ff:fefe:100 > ff02::16 (0) / IPv6ExtHdrHopByHop / ICMPv6MLReport2
###[ Ethernet ]### dst = 33:33:00:00:00:16 src = None type = IPv6 ###[ IPv6 ]### version = 6 tc = 0 fl = 0 plen = None nh = Hop-by-Hop Option Header hlim = 1 src = IPv6Address('fe80::fc03:ff:fefe:100') dst = ff02::16 ###[ IPv6 Extension Header - Hop-by-Hop Options Header ]### nh = ICMPv6 len = None autopad = On \options \ |###[ Router Alert ]### | otype = Router Alert [00: skip, 0: Don't change en-route] | optlen = 2 | value = None ###[ MLDv2 - Multicast Listener Report ]### type = MLD Report Version 2 res = 0 cksum = None reserved = 0 records_number= None \records \ |###[ ICMPv6 MLDv2 - Multicast Address Record ]### | rtype = 4 | auxdata_len= None | sources_number= None | dst = fe80::1234 | sources = [ ] | auxdata = ''
::test_invalid_group:#144:dut/pim6d/log
failed after 1.94s
('test_mld_basic.py', 144, '#144:dut/pim6d/log')
self = <test_mld_basic.MLDBasic object at 0x7f7765958550>, topo = <topotato.toponom.Network object at 0x7f77659ace90>, dut = <Router 1 "dut">, h1 = <Router 3 "h1">, h2 = <Router 4 "h2"> src = <Router 2 "src"> @topotatofunc def test_invalid_group(self, topo, dut, h1, h2, src): """ An unicast address is not a valid group address. """ ip = IPv6(hlim=1, src=h1.iface_to("dut").ll6, dst="ff02::16") hbh = IPv6ExtHdrHopByHop(options = RouterAlert()) mfrec0 = ICMPv6MLDMultAddrRec(dst="fe80::1234") yield from ScapySend.make( h1, "h1-dut", pkt = ip/hbh/ICMPv6MLReport2(records = [mfrec0]), ) > yield from AssertLog.make(dut, 'pim6d', '[MLD default:dut-h1 fe80::fc02:ff:fefe:100] malformed MLDv2 report (invalid group fe80::1234)', maxwait=2.0) E topotato.exceptions.TopotatoLogFail: [MLD default:dut-h1 fe80::fc02:ff:fefe:100] malformed MLDv2 report (invalid group fe80::1234) /home/equinox/python/topotato/test_mld_basic.py:144: TopotatoLogFail
::shutdown
passed after 1.14s
('test_mld_basic.py', inf, 'shutdown')