def METHOD_NAME(gw_ip: str, vlan: str, non_nat_arp_egress_port: str) -> str:
    try:
        logging.debug(
            "sending arp via egress: %s",
            non_nat_arp_egress_port,
        )
        eth_mac_src, psrc = _get_addresses(non_nat_arp_egress_port)
        pkt = _create_arp_packet(eth_mac_src, psrc, gw_ip, vlan)
        logging.debug("ARP Req pkt:\n%s", pkt.pprint())
        res = _send_packet_and_receive_response(pkt, vlan, non_nat_arp_egress_port)
        if res is None:
            logging.debug("Got Null response")
            return ""
        parsed = ParseSocketPacket(res)
        logging.debug("ARP Res pkt %s", str(parsed))
        if str(parsed.arp.psrc) != gw_ip:
            logging.warning(
                "Unexpected IP in ARP response. expected: %s pkt: {str(parsed)}",
                gw_ip,
            )
            return ""
        if vlan.isdigit():
            if parsed.dot1q is not None and str(parsed.dot1q.vlan) == vlan:
                mac = parsed.arp.hwsrc
            else:
                logging.warning(
                    "Unexpected vlan in ARP response. expected: %s pkt: %s",
                    vlan,
                    str(parsed),
                )
                return ""
        else:
            mac = parsed.arp.hwsrc
        return mac.mac_address
    except ValueError:
        logging.warning(
            "Invalid GW Ip address: [%s] or vlan %s",
            gw_ip, vlan,
        )
        return ""