syntax = "proto3"; package envoy.config.core.v3; import "envoy/config/core/v3/config_source.proto"; import "google/protobuf/any.proto"; import "udpa/annotations/status.proto"; import "validate/validate.proto"; option java_package = "io.envoyproxy.envoy.config.core.v3"; option java_outer_classname = "ExtensionProto"; option java_multiple_files = true; option (udpa.annotations.file_status).package_version_status = ACTIVE; // [#protodoc-title: Extension configuration] // Message type for extension configuration. // [#next-major-version: revisit all existing typed_config that doesn't use this wrapper.]. message TypedExtensionConfig { // The name of an extension. This is not used to select the extension, instead // it serves the role of an opaque identifier. string name = 1 [(validate.rules).string = {min_len: 1}]; // The typed config for the extension. The type URL will be used to identify // the extension. In the case that the type URL is *udpa.type.v1.TypedStruct*, // the inner type URL of *TypedStruct* will be utilized. See the // :ref:`extension configuration overview // ` for further details. google.protobuf.Any typed_config = 2 [(validate.rules).any = {required: true}]; } // Configuration source specifier for a late-bound extension configuration. The // parent resource is warmed until all the initial extension configurations are // received, unless the flag to apply the default configuration is set. // Subsequent extension updates are atomic on a per-worker basis. Once an // extension configuration is applied to a request or a connection, it remains // constant for the duration of processing. If the initial delivery of the // extension configuration fails, due to a timeout for example, the optional // default configuration is applied. Without a default configuration, the // extension is disabled, until an extension configuration is received. The // behavior of a disabled extension depends on the context. For example, a // filter chain with a disabled extension filter rejects all incoming streams. message ExtensionConfigSource { ConfigSource config_source = 1 [(validate.rules).any = {required: true}]; // Optional default configuration to use as the initial configuration if // there is a failure to receive the initial extension configuration or if // `apply_default_config_without_warming` flag is set. google.protobuf.Any default_config = 2; // Use the default config as the initial configuration without warming and // waiting for the first discovery response. Requires the default configuration // to be supplied. bool apply_default_config_without_warming = 3; // A set of permitted extension type URLs. Extension configuration updates are rejected // if they do not match any type URL in the set. repeated string type_urls = 4 [(validate.rules).repeated = {min_items: 1}]; }