|
|
|
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];
|
|
|
|
}
|