syntax = "proto3"; package envoy.api.v2; import "google/protobuf/wrappers.proto"; // [V2-API-DIFF] Addresses now have .proto structure. message Pipe { string path = 1; } // Unresolved addresses contain either named hosts or ports that require // resolution via DNS or an optional custom Resolver. message UnresolvedAddress { message NamedAddress { enum Protocol { TCP = 0; } Protocol protocol = 1; // For listeners, an empty address implies a bind to 0.0.0.0 or ::. It's // still possible to distinguish on address via the prefix/suffix matching // in FilterChainMatch after connection. // For clusters, an address may be either an IP or hostname to be resolved via // DNS. string address = 2; oneof port_specifier { google.protobuf.UInt32Value port = 3; string service_name = 4; } } // Support pluggable resolvers. message Resolver { // Name of the resolver. This must have been registered with Envoy. string name = 1; // TODO(htuch): Do we need further extensibility or should we collapse // Resolver to a string? } // If not specified, the default DNS resolver is used. Resolver resolver = 1; oneof address { NamedAddress named_address = 2; Pipe pipe = 3; } } message UnresolvedAddresses { repeated UnresolvedAddress addresses = 1; } // A ResolvedAddress identifies a concrete socket or UDS path and is not subject // to further resolution via DNS or custom resolvers. message ResolvedAddress { message SocketAddress { enum Protocol { TCP = 0; } Protocol protocol = 1; // IP address as returned by inet_ntop(). string ip_address = 2; google.protobuf.UInt32Value port = 3; } oneof address { SocketAddress socket_address = 2; Pipe pipe = 3; } } message ResolvedAddresses { repeated ResolvedAddress addresses = 1; }