You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
3.0 KiB
80 lines
3.0 KiB
syntax = "proto3"; |
|
|
|
package envoy.api.v2; |
|
|
|
import "google/protobuf/wrappers.proto"; |
|
|
|
import "validate/validate.proto"; |
|
import "gogoproto/gogo.proto"; |
|
|
|
// [#protodoc-title: Network addresses] |
|
// [#v2-api-diff: Addresses now have .proto structure.] |
|
|
|
message Pipe { |
|
// Unix Domain Socket path. |
|
string path = 1 [(validate.rules).string.min_bytes = 1]; |
|
} |
|
|
|
message SocketAddress { |
|
enum Protocol { |
|
TCP = 0; |
|
// [#not-implemented-hide:] |
|
UDP = 1; |
|
} |
|
Protocol protocol = 1 [(validate.rules).enum.defined_only = true]; |
|
// The address for this socket. :ref:`Listeners <config_listeners>` will bind |
|
// to the address or outbound connections will be made. An empty address is |
|
// not allowed, specify ``0.0.0.0`` or ``::`` to bind any. It's still possible to |
|
// distinguish on an address via the prefix/suffix matching in |
|
// FilterChainMatch after connection. For :ref:`clusters |
|
// <config_cluster_manager_cluster>`, an address may be either an IP or |
|
// hostname to be resolved via DNS. If it is a hostname, :ref:`resolver_name |
|
// <envoy_api_field_SocketAddress.resolver_name>` should be set unless default |
|
// (i.e. DNS) resolution is expected. |
|
string address = 2 [(validate.rules).string.min_bytes = 1]; |
|
oneof port_specifier { |
|
option (validate.required) = true; |
|
uint32 port_value = 3; |
|
// This is only valid if :ref:`resolver_name |
|
// <envoy_api_field_SocketAddress.resolver_name>` is specified below and the |
|
// named resolver is capable of named port resolution. |
|
string named_port = 4; |
|
} |
|
// The name of the resolver. This must have been registered with Envoy. If this is |
|
// empty, a context dependent default applies. If address is a hostname this |
|
// should be set for resolution other than DNS. If the address is a concrete |
|
// IP address, no resolution will occur. |
|
string resolver_name = 5; |
|
|
|
// When binding to an IPv6 address above, this enables `IPv4 compatibity |
|
// <https://tools.ietf.org/html/rfc3493#page-11>`_. Binding to ``::`` will |
|
// allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into |
|
// IPv6 space as ``::FFFF:<IPv4-address>``. |
|
bool ipv4_compat = 6; |
|
} |
|
|
|
message BindConfig { |
|
// The address to bind to when creating a socket. |
|
SocketAddress source_address = 1 |
|
[(validate.rules).message.required = true, (gogoproto.nullable) = false]; |
|
} |
|
|
|
// Addresses specify either a logical or physical address and port, which are |
|
// used to tell Envoy where to bind/listen, connect to upstream and find |
|
// management servers. |
|
message Address { |
|
oneof address { |
|
option (validate.required) = true; |
|
SocketAddress socket_address = 1; |
|
Pipe pipe = 2; |
|
} |
|
} |
|
|
|
// CidrRange specifies an IP Address and a prefix length to construct |
|
// the subnet mask for a `CIDR <https://tools.ietf.org/html/rfc4632>`_ range. |
|
message CidrRange { |
|
// IPv4 or IPv6 address, e.g. ``192.0.0.0`` or ``2001:db8::``. |
|
string address_prefix = 1 [(validate.rules).string.min_bytes = 1]; |
|
// Length of prefix, e.g. 0, 32. |
|
google.protobuf.UInt32Value prefix_len = 2 [(validate.rules).uint32.lte = 128]; |
|
}
|
|
|