code: def create_ip_arp_request(srchw, srcip, targetip):
      '''
      Create and return a packet containing an Ethernet header
      and ARP header.
      '''
      ether = Ethernet()
      ether.src = srchw
      ether.dst = SpecialEthAddr.ETHER_BROADCAST.value
      ether.ethertype = EtherType.ARP
      arp = Arp()
      arp.operation = ArpOperation.Request
      arp.senderhwaddr = srchw
      arp.senderprotoaddr = srcip
      arp.targethwaddr = SpecialEthAddr.ETHER_BROADCAST.value
      arp.targetprotoaddr = targetip
      return ether + arf create_ip_arp_request(srchw, srcip, targetip):
      '''
      Create and return a packet containing an Ethernet header
      and ARP header.
      '''
      ether = Ethernet()
      ether.src = srchw
      ether.dst = SpecialEthAddr.ETHER_BROADCAST.value
      ether.ethertype = EtherType.ARP
      arp = Arp()
      arp.operation = ArpOperation.Request
      arp.senderhwaddr = srchw
      arp.senderprotoaddr = srcip
      arp.targethwaddr = SpecialEthAddr.ETHER_BROADCAST.value
      arp.targetprotoaddr = targetip
      return ether + arp
docs: Create and return a packet containing an Ethernet header
      and ARP header.