syntax = "proto3"; package xray.transport.internet; option csharp_namespace = "Xray.Transport.Internet"; option go_package = "github.com/xtls/xray-core/transport/internet"; option java_package = "com.xray.transport.internet"; option java_multiple_files = true; import "common/serial/typed_message.proto"; enum TransportProtocol { TCP = 0; UDP = 1; MKCP = 2; WebSocket = 3; HTTP = 4; DomainSocket = 5; } enum DomainStrategy { AS_IS = 0; USE_IP = 1; USE_IP4 = 2; USE_IP6 = 3; USE_IP46 = 4; USE_IP64 = 5; FORCE_IP = 6; FORCE_IP4 = 7; FORCE_IP6 = 8; FORCE_IP46 = 9; FORCE_IP64 = 10; } message TransportConfig { // Type of network that this settings supports. // Deprecated. Use the string form below. TransportProtocol protocol = 1 [ deprecated = true ]; // Type of network that this settings supports. string protocol_name = 3; // Specific settings. Must be of the transports. xray.common.serial.TypedMessage settings = 2; } message StreamConfig { // Effective network. Deprecated. Use the string form below. TransportProtocol protocol = 1 [ deprecated = true ]; // Effective network. string protocol_name = 5; repeated TransportConfig transport_settings = 2; // Type of security. Must be a message name of the settings proto. string security_type = 3; // Settings for transport security. For now the only choice is TLS. repeated xray.common.serial.TypedMessage security_settings = 4; SocketConfig socket_settings = 6; } message ProxyConfig { string tag = 1; bool transportLayerProxy = 2; } // SocketConfig is options to be applied on network sockets. message SocketConfig { // Mark of the connection. If non-zero, the value will be set to SO_MARK. int32 mark = 1; // TFO is the state of TFO settings. int32 tfo = 2; enum TProxyMode { // TProxy is off. Off = 0; // TProxy mode. TProxy = 1; // Redirect mode. Redirect = 2; } // TProxy is for enabling TProxy socket option. TProxyMode tproxy = 3; // ReceiveOriginalDestAddress is for enabling IP_RECVORIGDSTADDR socket // option. This option is for UDP only. bool receive_original_dest_address = 4; bytes bind_address = 5; uint32 bind_port = 6; bool accept_proxy_protocol = 7; DomainStrategy domain_strategy = 8; string dialer_proxy = 9; int32 tcp_keep_alive_interval = 10; int32 tcp_keep_alive_idle = 11; string tcp_congestion = 12; string interface = 13; bool v6only = 14; int32 tcp_window_clamp = 15; int32 tcp_user_timeout = 16; int32 tcp_max_seg = 17; bool tcp_no_delay = 18; bool tcp_mptcp = 19; }