MCPcopy Create free account
hub / github.com/FDio/vpp / resolve_ndp

Method resolve_ndp

test/vpp_pg_interface.py:622–673  ·  view source on GitHub ↗

Resolve NDP using provided packet-generator interface :param pg_interface: interface used to resolve, if None then this interface is used :param timeout: how long to wait for response before giving up :param link_layer: resolve for global address if False (defaul

(self, pg_interface=None, timeout=1.0, link_layer=False)

Source from the content-addressed store, hash-verified

620 self.test.logger.info("No ARP received on port %s" % pg_interface.name)
621
622 def resolve_ndp(self, pg_interface=None, timeout=1.0, link_layer=False):
623 """Resolve NDP using provided packet-generator interface
624
625 :param pg_interface: interface used to resolve, if None then this
626 interface is used
627 :param timeout: how long to wait for response before giving up
628 :param link_layer: resolve for global address if False (default)
629 or for link-layer address if True
630
631 """
632 if pg_interface is None:
633 pg_interface = self
634 addr = self.local_ip6_ll if link_layer else self.local_ip6
635 self.test.logger.info(
636 "Sending NDP request for %s on port %s" % (addr, pg_interface.name)
637 )
638 ndp_req = self.create_ndp_req(addr)
639 pg_interface.add_stream(ndp_req)
640 pg_interface.enable_capture()
641 self.test.pg_start()
642 now = time.time()
643 deadline = now + timeout
644 # Enabling IPv6 on an interface can generate more than the
645 # ND reply we are looking for (namely MLD). So loop through
646 # the replies to look for want we want.
647 while now < deadline:
648 try:
649 captured_packet = pg_interface.wait_for_packet(
650 deadline - now, filter_out_fn=None
651 )
652 except CaptureTimeoutError:
653 self.test.logger.info("Timeout while waiting for NDP response")
654 raise
655 ndp_reply = captured_packet.copy() # keep original for exception
656 try:
657 ndp_na = ndp_reply[ICMPv6ND_NA]
658 opt = ndp_na[ICMPv6NDOptDstLLAddr]
659 self.test.logger.info(
660 "VPP %s MAC address is %s " % (self.name, opt.lladdr)
661 )
662 self._local_mac = opt.lladdr
663 self.test.logger.debug(self.test.vapi.cli("show trace"))
664 # we now have the MAC we've been after
665 return
666 except:
667 self.test.logger.info(
668 ppp("Unexpected response to NDP request:", captured_packet)
669 )
670 now = time.time()
671
672 self.test.logger.debug(self.test.vapi.cli("show trace"))
673 raise CaptureTimeoutError("Timeout while waiting for NDP response")

Callers 15

setUpMethod · 0.45
setUpClassMethod · 0.45
setUpClassMethod · 0.45
setUpClassMethod · 0.45
setUpClassMethod · 0.45
setUpClassMethod · 0.45
configure_interfaceMethod · 0.45
setUpMethod · 0.45
setUpClassMethod · 0.45
setUpMethod · 0.45
test_greMethod · 0.45
test_gre6Method · 0.45

Calls 9

create_ndp_reqMethod · 0.95
pppFunction · 0.90
CaptureTimeoutErrorClass · 0.85
pg_startMethod · 0.80
copyMethod · 0.80
add_streamMethod · 0.45
enable_captureMethod · 0.45
wait_for_packetMethod · 0.45
cliMethod · 0.45

Tested by 15

setUpMethod · 0.36
setUpClassMethod · 0.36
setUpClassMethod · 0.36
setUpClassMethod · 0.36
setUpClassMethod · 0.36
setUpClassMethod · 0.36
configure_interfaceMethod · 0.36
setUpMethod · 0.36
setUpClassMethod · 0.36
setUpMethod · 0.36
test_greMethod · 0.36
test_gre6Method · 0.36