@@ -14,40 +14,47 @@ option java_multiple_files = true;
1414option go_package = "github.com/envoyproxy/go-control-plane/envoy/extensions/filters/http/dynamic_modules/v3;dynamic_modulesv3" ;
1515option (udpa.annotations.file_status ).package_version_status = ACTIVE ;
1616
17- // [#protodoc-title: HTTP filter for dynamic modules ]
17+ // [#protodoc-title: Dynamic Modules HTTP Filter ]
1818// [#extension: envoy.filters.http.dynamic_modules]
1919
20- // Configuration of the HTTP filter for dynamic modules . This filter allows loading shared object files
21- // that can be loaded via dlopen by the HTTP filter.
20+ // Configuration for the Dynamic Modules HTTP filter . This filter allows loading shared object files
21+ // that can be loaded via `` dlopen`` to extend the HTTP filter chain .
2222//
23- // A module can be loaded by multiple HTTP filters, hence the program can be structured in a way that
24- // the module is loaded only once and shared across multiple filters providing multiple functionalities .
23+ // A module can be loaded by multiple HTTP filters; the module is loaded only once and shared across
24+ // multiple filters.
2525//
26- // A dynamic module HTTP filter can opt into being a terminal filter with no upstream by setting ``terminal_filter`` to
27- // true in the configuration. A terminal dynamic module can use ``send_`` ABI methods to send response headers,
28- // body and trailers to the downstream.
26+ // A dynamic module HTTP filter can opt into being a terminal filter with no upstream by setting
27+ // :ref:`terminal_filter
28+ // <envoy_v3_api_field_extensions.filters.http.dynamic_modules.v3.DynamicModuleFilter.terminal_filter>`
29+ // to ``true``. A terminal dynamic module can use ``send_`` ABI methods to send response headers,
30+ // body, and trailers to the downstream.
2931message DynamicModuleFilter {
3032 // Specifies the shared-object level configuration.
3133 envoy.extensions.dynamic_modules.v3.DynamicModuleConfig dynamic_module_config = 1 ;
3234
33- // The name for this filter configuration. This can be used to distinguish between different filter implementations
34- // inside a dynamic module. For example, a module can have completely different filter implementations.
35- // When Envoy receives this configuration, it passes the filter_name to the dynamic module's HTTP filter config init function
36- // together with the filter_config.
37- // That way a module can decide which in-module filter implementation to use based on the name at load time.
35+ // The name for this filter configuration.
36+ //
37+ // This can be used to distinguish between different filter implementations inside a dynamic
38+ // module. For example, a module can have completely different filter implementations. When Envoy
39+ // receives this configuration, it passes the ``filter_name`` to the dynamic module's HTTP filter
40+ // config init function together with the ``filter_config``. That way a module can decide which
41+ // in-module filter implementation to use based on the name at load time.
3842 string filter_name = 2 ;
3943
40- // The configuration for the filter chosen by filter_name. This is passed to the module's HTTP filter initialization function.
41- // Together with the filter_name, the module can decide which in-module filter implementation to use and
44+ // The configuration for the filter chosen by ``filter_name``.
45+ //
46+ // This is passed to the module's HTTP filter initialization function. Together with the
47+ // ``filter_name``, the module can decide which in-module filter implementation to use and
4248 // fine-tune the behavior of the filter.
4349 //
44- // For example, if a module has two filter implementations, one for logging and one for header manipulation,
45- // filter_name is used to choose either logging or header manipulation. The filter_config can be used to
46- // configure the logging level or the header manipulation behavior.
50+ // For example, if a module has two filter implementations, one for logging and one for header
51+ // manipulation, ``filter_name`` is used to choose either logging or header manipulation. The
52+ // ``filter_config`` can be used to configure the logging level or the header manipulation
53+ // behavior.
4754 //
48- // ``google.protobuf.Struct`` is serialized as JSON before
49- // passing it to the plugin. ``google.protobuf.BytesValue`` and
50- // ``google.protobuf.StringValue`` are passed directly without the wrapper.
55+ // ``google.protobuf.Struct`` is serialized as JSON before passing it to the plugin.
56+ // ``google.protobuf.BytesValue`` and ``google.protobuf.StringValue`` are passed directly without
57+ // the wrapper.
5158 //
5259 // .. code-block:: yaml
5360 //
@@ -63,35 +70,42 @@ message DynamicModuleFilter {
6370 //
6471 google.protobuf.Any filter_config = 3 ;
6572
66- // Set true if the dynamic module is a terminal filter to use without an upstream.
73+ // If ``true``, the dynamic module is a terminal filter to use without an upstream.
74+ //
6775 // The dynamic module is responsible for creating and sending the response to downstream.
76+ //
77+ // Defaults to ``false``.
6878 bool terminal_filter = 4 ;
6979}
7080
71- // Configuration of the HTTP per-route filter for dynamic modules. This filter allows loading shared object files
72- // that can be loaded via dlopen by the HTTP filter.
81+ // Configuration of the HTTP per-route filter for dynamic modules.
7382message DynamicModuleFilterPerRoute {
7483 // Specifies the shared-object level configuration.
7584 envoy.extensions.dynamic_modules.v3.DynamicModuleConfig dynamic_module_config = 1 ;
7685
77- // The name for this filter configuration. This can be used to distinguish between different filter implementations
78- // inside a dynamic module. For example, a module can have completely different filter implementations.
79- // When Envoy receives this configuration, it passes the filter_name to the dynamic module's HTTP per-route filter config init function
80- // together with the filter_config.
81- // That way a module can decide which in-module filter implementation to use based on the name at load time.
86+ // The name for this filter configuration.
87+ //
88+ // This can be used to distinguish between different filter implementations inside a dynamic
89+ // module. For example, a module can have completely different filter implementations. When Envoy
90+ // receives this configuration, it passes the ``per_route_config_name`` to the dynamic module's
91+ // HTTP per-route filter config init function together with the ``filter_config``. That way a
92+ // module can decide which in-module filter implementation to use based on the name at load time.
8293 string per_route_config_name = 2 ;
8394
84- // The configuration for the filter chosen by filter_name. This is passed to the module's HTTP per-route filter initialization function.
85- // Together with the filter_name, the module can decide which in-module filter implementation to use and
86- // fine-tune the behavior of the filter on a specific route.
95+ // The configuration for the filter chosen by ``per_route_config_name``.
96+ //
97+ // This is passed to the module's HTTP per-route filter initialization function. Together with
98+ // the ``per_route_config_name``, the module can decide which in-module filter implementation to
99+ // use and fine-tune the behavior of the filter on a specific route.
87100 //
88- // For example, if a module has two filter implementations, one for logging and one for header manipulation,
89- // filter_name is used to choose either logging or header manipulation. The filter_config can be used to
90- // configure the logging level or the header manipulation behavior.
101+ // For example, if a module has two filter implementations, one for logging and one for header
102+ // manipulation, ``per_route_config_name`` is used to choose either logging or header
103+ // manipulation. The ``filter_config`` can be used to configure the logging level or the header
104+ // manipulation behavior.
91105 //
92- // ``google.protobuf.Struct`` is serialized as JSON before
93- // passing it to the plugin. ``google.protobuf.BytesValue`` and
94- // ``google.protobuf.StringValue`` are passed directly without the wrapper.
106+ // ``google.protobuf.Struct`` is serialized as JSON before passing it to the plugin.
107+ // ``google.protobuf.BytesValue`` and ``google.protobuf.StringValue`` are passed directly without
108+ // the wrapper.
95109 //
96110 // .. code-block:: yaml
97111 //
0 commit comments