示例#1
0
    def test(self):
        self.nodes[LEADER].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[LEADER].get_state(), 'leader')

        # 1 DUT_ROUTER1: Attach to LEADER
        self.nodes[DUT_ROUTER1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')

        # DUT_ROUTER1: Verify MLE advertisements
        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        msg = router1_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        # 2 REED1: Attach to DUT_ROUTER1
        self.nodes[REED1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[REED1].get_state(), 'child')

        # 3 DUT_ROUTER1: Verify MLE Parent Response
        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        msg = router1_messages.next_mle_message(mle.CommandType.PARENT_RESPONSE)
        msg.assertSentToNode(self.nodes[REED1])
        command.check_parent_response(msg)

        # 4 DUT_ROUTER1: Verify MLE Child ID Response
        msg = router1_messages.next_mle_message(mle.CommandType.CHILD_ID_RESPONSE)
        msg.assertSentToNode(self.nodes[REED1])
        command.check_child_id_response(msg)

        # 5 Omitted

        # 6 MED1: Attach to REED1
        self.nodes[MED1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[MED1].get_state(), 'child')

        # 7 REED1: Verify sending Address Solicit Request to DUT_ROUTER1
        reed1_messages = self.simulator.get_messages_sent_by(REED1)
        msg = reed1_messages.next_coap_message('0.02')
        reed1_ipv6_address = msg.ipv6_packet.ipv6_header.source_address.compressed
        msg.assertSentToNode(self.nodes[DUT_ROUTER1]);
        msg.assertCoapMessageRequestUriPath('/a/as')

        # 8 DUT_ROUTER1: Verify forwarding REED1's Address Solicit Request to LEADER
        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        msg = router1_messages.next_coap_message('0.02')
        msg.assertSentToNode(self.nodes[LEADER]);
        msg.assertCoapMessageRequestUriPath('/a/as')

        # DUT_ROUTER1: Verify forwarding LEADER's Address Solicit Response to REED1
        msg = router1_messages.next_coap_message('2.04')
        msg.assertSentToDestinationAddress(reed1_ipv6_address)

        # 9 LEADER: Verify connectivity by sending an ICMPv6 Echo Request to REED1
        for addr in self.nodes[REED1].get_addrs():
            if addr[0:4] != 'fe80':
                self.assertTrue(self.nodes[LEADER].ping(addr))
示例#2
0
    def test(self):
        # 1
        self.nodes[DUT_LEADER].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')

        for i in range(ROUTER1, MED3 + 1):
            self.nodes[i].start()

        self.simulator.go(5)

        for i in [ROUTER1, ROUTER2]:
            self.assertEqual(self.nodes[i].get_state(), 'router')

        for i in MTDS:
            self.assertEqual(self.nodes[i].get_state(), 'child')

        # 2
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        # 3
        self.nodes[ROUTER2].add_prefix('2001:2:0:1::/64', 'paros')
        self.nodes[ROUTER2].register_netdata()

        # Set lowpan context of sniffer
        self.simulator.set_lowpan_context(1, '2001:2:0:1::/64')

        self.nodes[MED1].add_ipaddr('2001:2:0:1::1234')
        self.nodes[SED1].add_ipaddr('2001:2:0:1::1234')

        self.simulator.go(5)

        # 4
        # Flush the message queue to avoid possible impact on follow-up
        # verification.
        self.simulator.get_messages_sent_by(DUT_LEADER)

        self.nodes[MED3].ping('2001:2:0:1::1234')

        # Verify DUT_LEADER sent an Address Query Request to the Realm local
        # address.
        dut_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = dut_messages.next_coap_message('0.02', '/a/aq')
        command.check_address_query(msg, self.nodes[DUT_LEADER],
                                    config.REALM_LOCAL_ALL_ROUTERS_ADDRESS)

        # 5 & 6
        # Verify DUT_LEADER sent an Address Error Notification to the Realm
        # local address.
        self.simulator.go(5)
        dut_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = dut_messages.next_coap_message('0.02', '/a/ae')
        command.check_address_error_notification(
            msg, self.nodes[DUT_LEADER],
            config.REALM_LOCAL_ALL_ROUTERS_ADDRESS)
    def test(self):
        # 1
        self.nodes[DUT_LEADER].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')

        for i in range(ROUTER1, MED3 + 1):
            self.nodes[i].start()

        self.simulator.go(5)

        for i in [ROUTER1, ROUTER2]:
            self.assertEqual(self.nodes[i].get_state(), 'router')

        for i in MTDS:
            self.assertEqual(self.nodes[i].get_state(), 'child')

        # 2
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        # 3
        self.nodes[ROUTER2].add_prefix('2001:2:0:1::/64', 'paros')
        self.nodes[ROUTER2].register_netdata()

        # Set lowpan context of sniffer
        self.simulator.set_lowpan_context(1, '2001:2:0:1::/64')

        self.nodes[MED1].add_ipaddr('2001:2:0:1::1234')
        self.nodes[SED1].add_ipaddr('2001:2:0:1::1234')

        self.simulator.go(5)

        # 4
        # Flush the message queue to avoid possible impact on follow-up verification.
        self.simulator.get_messages_sent_by(DUT_LEADER)

        self.nodes[MED3].ping('2001:2:0:1::1234')

        # Verify DUT_LEADER sent an Address Query Request to the Realm local address.
        dut_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = dut_messages.next_coap_message('0.02', '/a/aq')
        command.check_address_query(msg, self.nodes[DUT_LEADER], config.REALM_LOCAL_ALL_ROUTERS_ADDRESS)

        # 5 & 6
        # Verify DUT_LEADER sent an Address Error Notification to the Realm local address.
        self.simulator.go(5)
        dut_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = dut_messages.next_coap_message('0.02', '/a/ae')
        command.check_address_error_notification(msg, self.nodes[DUT_LEADER], config.REALM_LOCAL_ALL_ROUTERS_ADDRESS)
    def test(self):
        # 1 ALL: Build and verify the topology
        self.nodes[DUT_LEADER].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')

        self.nodes[DUT_ROUTER1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')

        # 2 DUT_LEADER, DUT_ROUTER1: Verify both DUT_LEADER and DUT_ROUTER1
        # send MLE Advertisement message
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        msg = router1_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        # Send a harness helper ping to the DUT
        router1_rloc = self.nodes[DUT_ROUTER1].get_ip6_address(
            config.ADDRESS_TYPE.RLOC)
        self.assertTrue(self.nodes[DUT_LEADER].ping(router1_rloc))

        leader_rloc = self.nodes[DUT_LEADER].get_ip6_address(
            config.ADDRESS_TYPE.RLOC)
        self.assertTrue(self.nodes[DUT_ROUTER1].ping(leader_rloc))

        # 3 DUT_LEADER: Reset DUT_LEADER
        leader_rloc16 = self.nodes[DUT_LEADER].get_addr16()
        self.nodes[DUT_LEADER].reset()
        self._setUpLeader()

        # Clean sniffer's buffer
        self.simulator.get_messages_sent_by(DUT_LEADER)
        self.simulator.get_messages_sent_by(DUT_ROUTER1)

        # DUT_LEADER sleep time is less than leader timeout value
        self.simulator.go(config.MAX_ADVERTISEMENT_INTERVAL)

        # Verify DUT_LEADER didn't send MLE Advertisement messages
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT,
                                               False)
        self.assertTrue(msg is None)

        self.nodes[DUT_LEADER].start()

        # Verify the DUT_LEADER is still a leader
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
        self.assertEqual(self.nodes[DUT_LEADER].get_addr16(), leader_rloc16)

        # 4 DUT_LEADER: Verify DUT_LEADER sent a multicast Link Request message
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        leader_messages_temp = copy.deepcopy(leader_messages)

        msg = leader_messages.next_mle_message(mle.CommandType.LINK_REQUEST)
        command.check_link_request(
            msg,
            tlv_request_address16=command.CheckType.CONTAIN,
            tlv_request_route64=command.CheckType.CONTAIN,
        )

        # 5 DUT_ROUTER1: Verify DUT_ROUTER1 replied with Link Accept message
        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        router1_messages_temp = copy.deepcopy(router1_messages)
        msg = router1_messages.next_mle_message(mle.CommandType.LINK_ACCEPT)
        if msg is not None:
            command.check_link_accept(
                msg,
                self.nodes[DUT_LEADER],
                address16=command.CheckType.CONTAIN,
                leader_data=command.CheckType.CONTAIN,
                route64=command.CheckType.CONTAIN,
            )
        else:
            msg = router1_messages_temp.next_mle_message(
                mle.CommandType.LINK_ACCEPT_AND_REQUEST)
            self.assertTrue(msg is not None)
            command.check_link_accept(
                msg,
                self.nodes[DUT_LEADER],
                address16=command.CheckType.CONTAIN,
                leader_data=command.CheckType.CONTAIN,
                route64=command.CheckType.CONTAIN,
                challenge=command.CheckType.CONTAIN,
            )

        # 6 DUT_LEADER: Verify DUT_LEADER didn't send a Parent Request message
        msg = leader_messages_temp.next_mle_message(
            mle.CommandType.PARENT_REQUEST, False)
        self.assertTrue(msg is None)

        # 7 ALL: Verify connectivity by sending an ICMPv6 Echo Request from
        # DUT_LEADER to DUT_ROUTER1 link local address
        router1_link_local_address = self.nodes[DUT_ROUTER1].get_ip6_address(
            config.ADDRESS_TYPE.LINK_LOCAL)
        self.assertTrue(
            self.nodes[DUT_LEADER].ping(router1_link_local_address))
    def test(self):
        self.nodes[DUT_LEADER].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')

        self.nodes[BR].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[BR].get_state(), 'router')

        # 1 BR: Configure BR to be a DHCPv6 server
        self.nodes[BR].add_prefix('2001::/64', 'pdros')
        self.nodes[BR].add_prefix('2002::/64', 'pdros')
        self.nodes[BR].add_prefix('2003::/64', 'pdros')
        self.nodes[BR].register_netdata()

        # Set lowpan context of sniffer
        self.simulator.set_lowpan_context(1, '2001::/64')
        self.simulator.set_lowpan_context(2, '2002::/64')
        self.simulator.set_lowpan_context(3, '2003::/64')

        # 2 DUT_LEADER: Verify LEADER sent an Advertisement
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        # 3 MED1, MED2: MED1 and MED2 attach to DUT_LEADER
        for i in MTDS:
            self.nodes[i].start()
            self.simulator.go(5)
            self.assertEqual(self.nodes[i].get_state(), 'child')

        # 4 MED1: MED1 send an ICMPv6 Echo Request to the MED2 ML-EID
        med2_ml_eid = self.nodes[MED2].get_ip6_address(config.ADDRESS_TYPE.ML_EID)
        self.assertTrue(med2_ml_eid != None)
        self.assertTrue(self.nodes[MED1].ping(med2_ml_eid))

        # Verify DUT_LEADER didn't generate an Address Query Request
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_coap_message('0.02', '/a/aq', False)
        assert msg is None, "Error: The DUT_LEADER sent an unexpected Address Query Request"

        # Wait for sniffer got packets
        self.simulator.go(1)

        # Verify MED2 sent an ICMPv6 Echo Reply
        med2_messages = self.simulator.get_messages_sent_by(MED2)
        msg = med2_messages.get_icmp_message(ipv6.ICMP_ECHO_RESPONSE)
        assert msg is not None, "Error: The MED2 didn't send ICMPv6 Echo Reply to MED1"

        # 5 MED1: MED1 send an ICMPv6 Echo Request to the MED2 2001::GUA
        addr = self.nodes[MED2].get_addr("2001::/64")
        self.assertTrue(addr is not None)
        self.assertTrue(self.nodes[MED1].ping(addr))

        # Verify DUT_LEADER didn't generate an Address Query Request
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_coap_message('0.02', '/a/aq', False)
        assert msg is None, "Error: The DUT_LEADER sent an unexpected Address Query Request"

        # Wait for sniffer got packets
        self.simulator.go(1)

        # Verify MED2 sent an ICMPv6 Echo Reply
        med2_messages = self.simulator.get_messages_sent_by(MED2)
        msg = med2_messages.get_icmp_message(ipv6.ICMP_ECHO_RESPONSE)
        assert msg is not None, "Error: The MED2 didn't send ICMPv6 Echo Reply to MED1"

        # 6 MED1: MED1 send an ICMPv6 Echo Request to the MED2 2002::GUA
        addr = self.nodes[MED2].get_addr("2002::/64")
        self.assertTrue(addr is not None)
        self.assertTrue(self.nodes[MED1].ping(addr))

        # Verify DUT_LEADER didn't generate an Address Query Request
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_coap_message('0.02', '/a/aq', False)
        assert msg is None, "Error: The DUT_LEADER sent an unexpected Address Query Request"

        # Wait for sniffer got packets
        self.simulator.go(1)

        # Verify MED2 sent an ICMPv6 Echo Reply
        med2_messages = self.simulator.get_messages_sent_by(MED2)
        msg = med2_messages.get_icmp_message(ipv6.ICMP_ECHO_RESPONSE)
        assert msg is not None, "Error: The MED2 didn't send ICMPv6 Echo Reply to MED1"

        # 7 MED1: MED1 send an ICMPv6 Echo Request to the MED2 2003::GUA
        addr = self.nodes[MED2].get_addr("2003::/64")
        self.assertTrue(addr is not None)
        self.assertTrue(self.nodes[MED1].ping(addr))

        # Verify DUT_LEADER didn't generate an Address Query Request
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_coap_message('0.02', '/a/aq', False)
        assert msg is None, "Error: The DUT_LEADER sent an unexpected Address Query Request"

        # Wait for sniffer got packets
        self.simulator.go(1)

        # Verify MED2 sent an ICMPv6 Echo Reply
        med2_messages = self.simulator.get_messages_sent_by(MED2)
        msg = med2_messages.get_icmp_message(ipv6.ICMP_ECHO_RESPONSE)
        assert msg is not None, "Error: The MED2 didn't send ICMPv6 Echo Reply to MED1"
    def test(self):
        self.nodes[LEADER].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[LEADER].get_state(), 'leader')

        # 1 DUT_ROUTER1: Attach to LEADER
        self.nodes[DUT_ROUTER1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')

        # DUT_ROUTER1: Verify MLE advertisements
        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        msg = router1_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        # 2 REED1: Attach to DUT_ROUTER1
        self.nodes[REED1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[REED1].get_state(), 'child')

        # 3 DUT_ROUTER1: Verify MLE Parent Response
        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        msg = router1_messages.next_mle_message(mle.CommandType.PARENT_RESPONSE)
        msg.assertSentToNode(self.nodes[REED1])
        command.check_parent_response(msg)

        # 4 DUT_ROUTER1: Verify MLE Child ID Response
        msg = router1_messages.next_mle_message(mle.CommandType.CHILD_ID_RESPONSE)
        msg.assertSentToNode(self.nodes[REED1])
        command.check_child_id_response(msg)

        # 5 Omitted

        # 6 MED1: Attach to REED1
        self.nodes[MED1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[MED1].get_state(), 'child')

        # 7 REED1: Verify sending Address Solicit Request to DUT_ROUTER1
        reed1_messages = self.simulator.get_messages_sent_by(REED1)
        msg = reed1_messages.next_coap_message('0.02')
        reed1_ipv6_address = msg.ipv6_packet.ipv6_header.source_address.compressed
        msg.assertSentToNode(self.nodes[DUT_ROUTER1]);
        msg.assertCoapMessageRequestUriPath('/a/as')

        # 8 DUT_ROUTER1: Verify forwarding REED1's Address Solicit Request to LEADER
        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        msg = router1_messages.next_coap_message('0.02')
        msg.assertSentToNode(self.nodes[LEADER]);
        msg.assertCoapMessageRequestUriPath('/a/as')

        # DUT_ROUTER1: Verify forwarding LEADER's Address Solicit Response to REED1
        msg = router1_messages.next_coap_message('2.04')
        msg.assertSentToDestinationAddress(reed1_ipv6_address)

        self.simulator.go(config.MAX_ADVERTISEMENT_INTERVAL)

        # 9 LEADER: Verify connectivity by sending an ICMPv6 Echo Request to REED1
        for addr in self.nodes[REED1].get_addrs():
            if addr[0:4] != 'fe80':
                self.assertTrue(self.nodes[LEADER].ping(addr))
    def test(self):
        # 1 ALL: Build and verify the topology
        self.nodes[DUT_LEADER].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')

        self.nodes[DUT_ROUTER1].start()
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_ROUTER1].get_state(), 'router')

        # 2 DUT_LEADER, DUT_ROUTER1: Verify both DUT_LEADER and DUT_ROUTER1 send MLE Advertisement message
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        msg = router1_messages.next_mle_message(mle.CommandType.ADVERTISEMENT)
        command.check_mle_advertisement(msg)

        # Send a harness helper ping to the DUT
        router1_rloc = self.nodes[DUT_ROUTER1].get_ip6_address(config.ADDRESS_TYPE.RLOC)
        self.assertTrue(self.nodes[DUT_LEADER].ping(router1_rloc))

        leader_rloc = self.nodes[DUT_LEADER].get_ip6_address(config.ADDRESS_TYPE.RLOC)
        self.assertTrue(self.nodes[DUT_ROUTER1].ping(leader_rloc))

        # 3 DUT_LEADER: Reset DUT_LEADER
        leader_rloc16 = self.nodes[DUT_LEADER].get_addr16()
        self.nodes[DUT_LEADER].reset()
        self._setUpLeader()

        # Clean sniffer's buffer
        self.simulator.get_messages_sent_by(DUT_LEADER)
        self.simulator.get_messages_sent_by(DUT_ROUTER1)

        # DUT_LEADER sleep time is less than leader timeout value
        self.simulator.go(config.MAX_ADVERTISEMENT_INTERVAL)

        # Verify DUT_LEADER didn't send MLE Advertisement messages
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        msg = leader_messages.next_mle_message(mle.CommandType.ADVERTISEMENT, False)
        self.assertTrue(msg is None)

        self.nodes[DUT_LEADER].start()

        # Verify the DUT_LEADER is still a leader
        self.simulator.go(5)
        self.assertEqual(self.nodes[DUT_LEADER].get_state(), 'leader')
        self.assertEqual(self.nodes[DUT_LEADER].get_addr16(), leader_rloc16)

        # 4 DUT_LEADER: Verify DUT_LEADER sent a multicast Link Request message
        leader_messages = self.simulator.get_messages_sent_by(DUT_LEADER)
        leader_messages_temp = copy.deepcopy(leader_messages)

        msg = leader_messages.next_mle_message(mle.CommandType.LINK_REQUEST)
        command.check_link_request(msg, tlv_request_address16 = command.CheckType.CONTAIN, \
            tlv_request_route64 = command.CheckType.CONTAIN)

        # 5 DUT_ROUTER1: Verify DUT_ROUTER1 replied with Link Accept message
        router1_messages = self.simulator.get_messages_sent_by(DUT_ROUTER1)
        router1_messages_temp = copy.deepcopy(router1_messages)
        msg = router1_messages.next_mle_message(mle.CommandType.LINK_ACCEPT)
        if msg is not None:
          command.check_link_accept(msg, self.nodes[DUT_LEADER], address16 = command.CheckType.CONTAIN, \
              leader_data = command.CheckType.CONTAIN, route64 = command.CheckType.CONTAIN)
        else:
          msg = router1_messages_temp.next_mle_message(mle.CommandType.LINK_ACCEPT_AND_REQUEST)
          self.assertTrue(msg is not None)
          command.check_link_accept(msg, self.nodes[DUT_LEADER], address16 = command.CheckType.CONTAIN, \
              leader_data = command.CheckType.CONTAIN, route64 = command.CheckType.CONTAIN, \
              challenge = command.CheckType.CONTAIN)

        # 6 DUT_LEADER: Verify DUT_LEADER didn't send a Parent Request message
        msg = leader_messages_temp.next_mle_message(mle.CommandType.PARENT_REQUEST, False)
        self.assertTrue(msg is None)

        # 7 ALL: Verify connectivity by sending an ICMPv6 Echo Request from DUT_LEADER to DUT_ROUTER1 link local address
        router1_link_local_address = self.nodes[DUT_ROUTER1].get_ip6_address(config.ADDRESS_TYPE.LINK_LOCAL)
        self.assertTrue(self.nodes[DUT_LEADER].ping(router1_link_local_address))