Resolve ARP using provided packet-generator interface :param pg_interface: interface used to resolve, if None then this interface is used
(self, pg_interface=None)
| 584 | ) |
| 585 | |
| 586 | def resolve_arp(self, pg_interface=None): |
| 587 | """Resolve ARP using provided packet-generator interface |
| 588 | |
| 589 | :param pg_interface: interface used to resolve, if None then this |
| 590 | interface is used |
| 591 | |
| 592 | """ |
| 593 | if pg_interface is None: |
| 594 | pg_interface = self |
| 595 | self.test.logger.info( |
| 596 | "Sending ARP request for %s on port %s" |
| 597 | % (self.local_ip4, pg_interface.name) |
| 598 | ) |
| 599 | arp_req = self.create_arp_req() |
| 600 | pg_interface.add_stream(arp_req) |
| 601 | pg_interface.enable_capture() |
| 602 | self.test.pg_start() |
| 603 | self.test.logger.info(self.test.vapi.cli("show trace")) |
| 604 | try: |
| 605 | captured_packet = pg_interface.wait_for_packet(1) |
| 606 | except CaptureTimeoutError: |
| 607 | self.test.logger.info("No ARP received on port %s" % pg_interface.name) |
| 608 | return |
| 609 | arp_reply = captured_packet.copy() # keep original for exception |
| 610 | if ARP not in arp_reply: |
| 611 | raise UnexpectedPacketError( |
| 612 | ppp("Unexpected response to ARP request:", captured_packet) |
| 613 | ) |
| 614 | if arp_reply[ARP].op == getattr(ARP, "is_at", 2): |
| 615 | self.test.logger.info( |
| 616 | "VPP %s MAC address is %s " % (self.name, arp_reply[ARP].hwsrc) |
| 617 | ) |
| 618 | self._local_mac = arp_reply[ARP].hwsrc |
| 619 | else: |
| 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 |