syntax = "proto3";

package v2ray.core.proxy.freedom;
option csharp_namespace = "V2Ray.Core.Proxy.Freedom";
option go_package = "github.com/v2fly/v2ray-core/v5/proxy/freedom";
option java_package = "com.v2ray.core.proxy.freedom";
option java_multiple_files = true;

import "common/protocol/server_spec.proto";
import "common/protoext/extensions.proto";

message DestinationOverride {
  v2ray.core.common.protocol.ServerEndpoint server = 1;
}

enum ProtocolReplacement {
  IDENTITY = 0;
  FORCE_TCP = 1;
  FORCE_UDP = 2;
}

message Config {
  enum DomainStrategy {
    AS_IS = 0;
    USE_IP = 1;
    USE_IP4 = 2;
    USE_IP6 = 3;
  }
  DomainStrategy domain_strategy = 1;
  uint32 timeout = 2 [deprecated = true];
  DestinationOverride destination_override = 3;
  uint32 user_level = 4;
  ProtocolReplacement protocol_replacement = 5;
}

message SimplifiedConfig {
  option (v2ray.core.common.protoext.message_opt).type = "outbound";
  option (v2ray.core.common.protoext.message_opt).short_name = "freedom";

  DestinationOverride destination_override = 3;
  ProtocolReplacement protocol_replacement = 5;
}