// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

syntax = "proto3";

package hashicorp.consul.dns;

import "annotations/ratelimit/ratelimit.proto";

option go_package = "github.com/hashicorp/consul/proto-public/pbdns";

service DNSService {
  // Query sends a DNS request over to Consul server and returns a DNS reply message.
  rpc Query(QueryRequest) returns (QueryResponse) {
    option (hashicorp.consul.internal.ratelimit.spec) = {
      operation_type: OPERATION_TYPE_READ,
      operation_category: OPERATION_CATEGORY_DNS
    };
  }
}

enum Protocol {
  PROTOCOL_UNSET_UNSPECIFIED = 0;
  PROTOCOL_TCP = 1;
  PROTOCOL_UDP = 2;
}

message QueryRequest {
  // msg is the DNS request message.
  bytes msg = 1;
  // protocol is the protocol of the request
  Protocol protocol = 2;
}

message QueryResponse {
  // msg is the DNS reply message.
  bytes msg = 1;
}
