xref: /aosp_15_r20/external/grpc-grpc-java/xds/third_party/envoy/src/main/proto/envoy/config/core/v3/proxy_protocol.proto (revision e07d83d3ffcef9ecfc9f7f475418ec639ff0e5fe)
1syntax = "proto3";
2
3package envoy.config.core.v3;
4
5import "udpa/annotations/status.proto";
6import "validate/validate.proto";
7
8option java_package = "io.envoyproxy.envoy.config.core.v3";
9option java_outer_classname = "ProxyProtocolProto";
10option java_multiple_files = true;
11option go_package = "github.com/envoyproxy/go-control-plane/envoy/config/core/v3;corev3";
12option (udpa.annotations.file_status).package_version_status = ACTIVE;
13
14// [#protodoc-title: Proxy protocol]
15
16message ProxyProtocolPassThroughTLVs {
17  enum PassTLVsMatchType {
18    // Pass all TLVs.
19    INCLUDE_ALL = 0;
20
21    // Pass specific TLVs defined in tlv_type.
22    INCLUDE = 1;
23  }
24
25  // The strategy to pass through TLVs. Default is INCLUDE_ALL.
26  // If INCLUDE_ALL is set, all TLVs will be passed through no matter the tlv_type field.
27  PassTLVsMatchType match_type = 1;
28
29  // The TLV types that are applied based on match_type.
30  // TLV type is defined as uint8_t in proxy protocol. See `the spec
31  // <https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt>`_ for details.
32  repeated uint32 tlv_type = 2 [(validate.rules).repeated = {items {uint32 {lt: 256}}}];
33}
34
35message ProxyProtocolConfig {
36  enum Version {
37    // PROXY protocol version 1. Human readable format.
38    V1 = 0;
39
40    // PROXY protocol version 2. Binary format.
41    V2 = 1;
42  }
43
44  // The PROXY protocol version to use. See https://www.haproxy.org/download/2.1/doc/proxy-protocol.txt for details
45  Version version = 1;
46
47  // This config controls which TLVs can be passed to upstream if it is Proxy Protocol
48  // V2 header. If there is no setting for this field, no TLVs will be passed through.
49  ProxyProtocolPassThroughTLVs pass_through_tlvs = 2;
50}
51