syntax = "proto3";

package v2ray.core.app.dns;
option csharp_namespace = "V2Ray.Core.App.Dns";
option go_package = "dns";
option java_package = "com.v2ray.core.app.dns";
option java_multiple_files = true;

import "v2ray.com/core/common/net/address.proto";
import "v2ray.com/core/common/net/destination.proto";

message Config {
  // Nameservers used by this DNS. Only traditional UDP servers are support at the moment.
  // A special value 'localhost' as a domain address can be set to use DNS on local system.
  repeated v2ray.core.common.net.Endpoint NameServers = 1;

  // Static hosts. Domain to IP.
  // Deprecated. Use static_hosts.
  map<string, v2ray.core.common.net.IPOrDomain> Hosts = 2 [deprecated = true];

  // Client IP for EDNS client subnet. Must be 4 bytes (IPv4) or 16 bytes (IPv6). 
  bytes client_ip = 3;

  message HostMapping {
    enum Type {
      Full = 0;
      SubDomain = 1;
    }

    Type type = 1;
    string domain = 2;
    repeated bytes ip = 3;
  }

  repeated HostMapping static_hosts = 4;
}
