syntax = "proto3"; package envoy.api.v2; import "google/protobuf/wrappers.proto"; import "validate/validate.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_len = 1]; } message SocketAddress { enum Protocol { TCP = 0; // [#not-implemented-hide:] UDP = 1; } Protocol protocol = 1 [(validate.rules).enum = {in: [0]}]; // The address for this socket. :ref:`Listeners ` will bind // to the address or outbound connections will be made. An empty address // implies a bind to 0.0.0.0 or ::. It's still possible to distinguish on an // address via the prefix/suffix matching in FilterChainMatch after connection. // For :ref:`clusters `, an address may be // either an IP or hostname to be resolved via DNS. If it is a hostname, // :ref:`resolver_name ` should // be set unless default (i.e. DNS) resolution is expected. string address = 2; oneof port_specifier { option (validate.required) = true; uint32 port_value = 3; // This is only valid if :ref:`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; } message BindConfig { // The address to bind to when creating a socket. SocketAddress source_address = 1 [(validate.rules).message.required = true]; } // 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 `_ range. message CidrRange { // IPv4 or IPv6 address, e.g. 192.0.0.0 or 2001:db8::. string address_prefix = 1 [(validate.rules).string.min_len = 1]; // Length of prefix, e.g. 0, 32. google.protobuf.UInt32Value prefix_len = 2 [(validate.rules).uint32.lte = 128]; }