/** @file

  Definitions via the X Macro pattern for overridable configuration variables.

  @section license License

  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
*/

/**
  @section overview Overview

  This file provides a single source of truth for all overridable configuration
  variables using the X-macro pattern. By defining configs here once, we
  auto-generate code in multiple locations:

  - Lua plugin enum and variable array (ts_lua_http_config.cc)
  - String-to-enum mapping (overridable_txn_vars.cc)
  - The _conf_to_memberp switch statement (InkAPI.cc)
  - Config descriptor test array (test_HttpOverridableConfig.cc)

  @section xmacro_format X-Macro Format

  Each entry in OVERRIDABLE_CONFIGS has 5 parameters:

    X(CONFIG_KEY, MEMBER, RECORD_NAME, DATA_TYPE, CONV)

  - CONFIG_KEY: Enum suffix, becomes TS_CONFIG_<CONFIG_KEY> in the public API.
  - MEMBER: The struct member name in OverridableHttpConfigParams.
  - RECORD_NAME: The proxy.config.* record name string (or a variable for
    dynamic names like ConnectionTracker::CONFIG_SERVER_VAR_MIN).
  - DATA_TYPE: One of INT, FLOAT, or STRING. Used for type validation.
  - CONV: Converter specification (see below).

  @section converters Converter Types (CONV parameter)

  The CONV parameter controls how values are converted between the API and
  internal storage. There are three categories:

  1. GENERIC - Use _memberp_to_generic() which auto-selects the appropriate
     converter based on the member's C++ type (MgmtByte, MgmtInt, MgmtFloat,
     std::string_view, etc.). This is the most common case.

  2. NONE - No conversion; the config is handled specially elsewhere (e.g.,
     SSL string configs are processed directly in TSHttpTxnConfigStringSet).
     The MEMBER field is ignored but must be provided.

  3. Custom converter name - For configs needing special conversion logic.
     The name must match a _CONF_CASE_<name> macro defined in InkAPI.cc.
     Examples: HttpDownServerCacheTimeConv, HttpStatusCodeList_Conv,
     ConnectionTracker_MIN_SERVER_CONV, HttpTransact_HOST_RES_CONV.
     See the X-Macro Dispatch doxygen documentation in InkAPI.cc for more
     details.

  @section adding_new_config Adding a New Overridable Config

  To make a configuration variable overridable:

  1. Add the config member to OverridableHttpConfigParams in HttpConfig.h.
     (Move it from HttpConfigParams if it already exists as non-overridable.)

  2. Add an entry to OVERRIDABLE_CONFIGS below. Place it at the END of the
     list to match the enum order requirement.

  3. Add the enum value to TSOverridableConfigKey in apidefs.h.in.
     It MUST be added at the end, just before TS_CONFIG_LAST_ENTRY, to
     preserve ABI compatibility.

     IMPORTANT: The X-macro order MUST match the enum order exactly.
     overridable_txn_vars.cc has compile-time validation that will fail
     if they don't match.

  4. Update documentation in doc/developer-guide/api/.

  @section adding_custom_converter Adding a Custom Converter

  See the X-Macro Dispatch doxygen documentation in InkAPI.cc for more details.

  @section caching Automatic Caching for STRING Configs

  Some STRING configs require parsing that is more expensive than a simple
  string copy (e.g., parsing status code lists or host resolution preferences).
  For these configs, TSHttpTxnConfigStringSet() automatically uses
  ParsedConfigCache (defined in HttpConfig.h) to cache parsed results.

  This means the parsing only happens once per unique (config_key, value) pair.
  Subsequent calls with the same value use the cached result directly.
  HTTP_NEGATIVE_CACHING_LIST is an example configuration that takes advantage
  of this. This optimization is transparent to API users - they just call
  TSHttpTxnConfigStringSet() as usual and get the performance benefit
  automatically.

  @section none_configs Note on CONV=NONE

  Some SSL string configs use NONE because they bypass _conf_to_memberp()
  entirely and are handled directly in TSHttpTxnConfigStringSet(). For these
  entries, the MEMBER field is ignored but must still be provided to satisfy
  the macro format (typically using a placeholder member name).
*/

#pragma once

// clang-format off
#define OVERRIDABLE_CONFIGS(X) \
  X(URL_REMAP_PRISTINE_HOST_HDR,                    maintain_pristine_host_hdr,                 "proxy.config.url_remap.pristine_host_hdr",                       INT,    GENERIC) \
  X(HTTP_CHUNKING_ENABLED,                          chunking_enabled,                           "proxy.config.http.chunking_enabled",                             INT,    GENERIC) \
  X(HTTP_NEGATIVE_CACHING_ENABLED,                  negative_caching_enabled,                   "proxy.config.http.negative_caching_enabled",                     INT,    GENERIC) \
  X(HTTP_NEGATIVE_CACHING_LIFETIME,                 negative_caching_lifetime,                  "proxy.config.http.negative_caching_lifetime",                    INT,    GENERIC) \
  X(HTTP_CACHE_WHEN_TO_REVALIDATE,                  cache_when_to_revalidate,                   "proxy.config.http.cache.when_to_revalidate",                     INT,    GENERIC) \
  X(HTTP_KEEP_ALIVE_ENABLED_IN,                     keep_alive_enabled_in,                      "proxy.config.http.keep_alive_enabled_in",                        INT,    GENERIC) \
  X(HTTP_KEEP_ALIVE_ENABLED_OUT,                    keep_alive_enabled_out,                     "proxy.config.http.keep_alive_enabled_out",                       INT,    GENERIC) \
  X(HTTP_KEEP_ALIVE_POST_OUT,                       keep_alive_post_out,                        "proxy.config.http.keep_alive_post_out",                          INT,    GENERIC) \
  X(HTTP_SERVER_SESSION_SHARING_MATCH,              server_session_sharing_match,               "proxy.config.http.server_session_sharing.match",                 STRING, GENERIC) \
  X(NET_SOCK_RECV_BUFFER_SIZE_OUT,                  sock_recv_buffer_size_out,                  "proxy.config.net.sock_recv_buffer_size_out",                     INT,    GENERIC) \
  X(NET_SOCK_SEND_BUFFER_SIZE_OUT,                  sock_send_buffer_size_out,                  "proxy.config.net.sock_send_buffer_size_out",                     INT,    GENERIC) \
  X(NET_SOCK_OPTION_FLAG_OUT,                       sock_option_flag_out,                       "proxy.config.net.sock_option_flag_out",                          INT,    GENERIC) \
  X(HTTP_FORWARD_PROXY_AUTH_TO_PARENT,              fwd_proxy_auth_to_parent,                   "proxy.config.http.forward.proxy_auth_to_parent",                 INT,    GENERIC) \
  X(HTTP_ANONYMIZE_REMOVE_FROM,                     anonymize_remove_from,                      "proxy.config.http.anonymize_remove_from",                        INT,    GENERIC) \
  X(HTTP_ANONYMIZE_REMOVE_REFERER,                  anonymize_remove_referer,                   "proxy.config.http.anonymize_remove_referer",                     INT,    GENERIC) \
  X(HTTP_ANONYMIZE_REMOVE_USER_AGENT,               anonymize_remove_user_agent,                "proxy.config.http.anonymize_remove_user_agent",                  INT,    GENERIC) \
  X(HTTP_ANONYMIZE_REMOVE_COOKIE,                   anonymize_remove_cookie,                    "proxy.config.http.anonymize_remove_cookie",                      INT,    GENERIC) \
  X(HTTP_ANONYMIZE_REMOVE_CLIENT_IP,                anonymize_remove_client_ip,                 "proxy.config.http.anonymize_remove_client_ip",                   INT,    GENERIC) \
  X(HTTP_ANONYMIZE_INSERT_CLIENT_IP,                anonymize_insert_client_ip,                 "proxy.config.http.insert_client_ip",                             INT,    GENERIC) \
  X(HTTP_RESPONSE_SERVER_ENABLED,                   proxy_response_server_enabled,              "proxy.config.http.response_server_enabled",                      INT,    GENERIC) \
  X(HTTP_INSERT_SQUID_X_FORWARDED_FOR,              insert_squid_x_forwarded_for,               "proxy.config.http.insert_squid_x_forwarded_for",                 INT,    GENERIC) \
  X(HTTP_SEND_HTTP11_REQUESTS,                      send_http11_requests,                       "proxy.config.http.send_http11_requests",                         INT,    GENERIC) \
  X(HTTP_CACHE_HTTP,                                cache_http,                                 "proxy.config.http.cache.http",                                   INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_CLIENT_NO_CACHE,              cache_ignore_client_no_cache,               "proxy.config.http.cache.ignore_client_no_cache",                 INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_CLIENT_CC_MAX_AGE,            cache_ignore_client_cc_max_age,             "proxy.config.http.cache.ignore_client_cc_max_age",               INT,    GENERIC) \
  X(HTTP_CACHE_IMS_ON_CLIENT_NO_CACHE,              cache_ims_on_client_no_cache,               "proxy.config.http.cache.ims_on_client_no_cache",                 INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_SERVER_NO_CACHE,              cache_ignore_server_no_cache,               "proxy.config.http.cache.ignore_server_no_cache",                 INT,    GENERIC) \
  X(HTTP_CACHE_CACHE_RESPONSES_TO_COOKIES,          cache_responses_to_cookies,                 "proxy.config.http.cache.cache_responses_to_cookies",             INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_AUTHENTICATION,               cache_ignore_auth,                          "proxy.config.http.cache.ignore_authentication",                  INT,    GENERIC) \
  X(HTTP_CACHE_CACHE_URLS_THAT_LOOK_DYNAMIC,        cache_urls_that_look_dynamic,               "proxy.config.http.cache.cache_urls_that_look_dynamic",           INT,    GENERIC) \
  X(HTTP_CACHE_REQUIRED_HEADERS,                    cache_required_headers,                     "proxy.config.http.cache.required_headers",                       INT,    GENERIC) \
  X(HTTP_INSERT_REQUEST_VIA_STR,                    insert_request_via_string,                  "proxy.config.http.insert_request_via_str",                       INT,    GENERIC) \
  X(HTTP_INSERT_RESPONSE_VIA_STR,                   insert_response_via_string,                 "proxy.config.http.insert_response_via_str",                      INT,    GENERIC) \
  X(HTTP_CACHE_HEURISTIC_MIN_LIFETIME,              cache_heuristic_min_lifetime,               "proxy.config.http.cache.heuristic_min_lifetime",                 INT,    GENERIC) \
  X(HTTP_CACHE_HEURISTIC_MAX_LIFETIME,              cache_heuristic_max_lifetime,               "proxy.config.http.cache.heuristic_max_lifetime",                 INT,    GENERIC) \
  X(HTTP_CACHE_GUARANTEED_MIN_LIFETIME,             cache_guaranteed_min_lifetime,              "proxy.config.http.cache.guaranteed_min_lifetime",                INT,    GENERIC) \
  X(HTTP_CACHE_GUARANTEED_MAX_LIFETIME,             cache_guaranteed_max_lifetime,              "proxy.config.http.cache.guaranteed_max_lifetime",                INT,    GENERIC) \
  X(HTTP_CACHE_MAX_STALE_AGE,                       cache_max_stale_age,                        "proxy.config.http.cache.max_stale_age",                          INT,    GENERIC) \
  X(HTTP_KEEP_ALIVE_NO_ACTIVITY_TIMEOUT_IN,         keep_alive_no_activity_timeout_in,          "proxy.config.http.keep_alive_no_activity_timeout_in",            INT,    GENERIC) \
  X(HTTP_KEEP_ALIVE_NO_ACTIVITY_TIMEOUT_OUT,        keep_alive_no_activity_timeout_out,         "proxy.config.http.keep_alive_no_activity_timeout_out",           INT,    GENERIC) \
  X(HTTP_TRANSACTION_NO_ACTIVITY_TIMEOUT_IN,        transaction_no_activity_timeout_in,         "proxy.config.http.transaction_no_activity_timeout_in",           INT,    GENERIC) \
  X(HTTP_TRANSACTION_NO_ACTIVITY_TIMEOUT_OUT,       transaction_no_activity_timeout_out,        "proxy.config.http.transaction_no_activity_timeout_out",          INT,    GENERIC) \
  X(HTTP_TRANSACTION_ACTIVE_TIMEOUT_OUT,            transaction_active_timeout_out,             "proxy.config.http.transaction_active_timeout_out",               INT,    GENERIC) \
  X(HTTP_CONNECT_ATTEMPTS_MAX_RETRIES,              connect_attempts_max_retries,               "proxy.config.http.connect_attempts_max_retries",                 INT,    GENERIC) \
  X(HTTP_CONNECT_ATTEMPTS_MAX_RETRIES_DOWN_SERVER,  connect_attempts_max_retries_suspect_server, "proxy.config.http.connect_attempts_max_retries_down_server",     INT,    GENERIC) \
  X(HTTP_CONNECT_ATTEMPTS_MAX_RETRIES_SUSPECT_SERVER, connect_attempts_max_retries_suspect_server, "proxy.config.http.connect_attempts_max_retries_suspect_server", INT,    GENERIC) \
  X(HTTP_CONNECT_ATTEMPTS_RR_RETRIES,               connect_attempts_rr_retries,                "proxy.config.http.connect_attempts_rr_retries",                  INT,    GENERIC) \
  X(HTTP_CONNECT_ATTEMPTS_TIMEOUT,                  connect_attempts_timeout,                   "proxy.config.http.connect_attempts_timeout",                     INT,    GENERIC) \
  X(HTTP_DOWN_SERVER_CACHE_TIME,                    down_server_timeout,                        "proxy.config.http.down_server.cache_time",                       INT,    HttpDownServerCacheTimeConv) \
  X(HTTP_DOC_IN_CACHE_SKIP_DNS,                     doc_in_cache_skip_dns,                      "proxy.config.http.doc_in_cache_skip_dns",                        INT,    GENERIC) \
  X(HTTP_BACKGROUND_FILL_ACTIVE_TIMEOUT,            background_fill_active_timeout,             "proxy.config.http.background_fill_active_timeout",               INT,    GENERIC) \
  X(HTTP_RESPONSE_SERVER_STR,                       proxy_response_server_string,               "proxy.config.http.response_server_str",                          STRING, GENERIC) \
  X(HTTP_CACHE_HEURISTIC_LM_FACTOR,                 cache_heuristic_lm_factor,                  "proxy.config.http.cache.heuristic_lm_factor",                    FLOAT,  GENERIC) \
  X(HTTP_BACKGROUND_FILL_COMPLETED_THRESHOLD,       background_fill_threshold,                  "proxy.config.http.background_fill_completed_threshold",          FLOAT,  GENERIC) \
  X(NET_SOCK_PACKET_MARK_OUT,                       sock_packet_mark_out,                       "proxy.config.net.sock_packet_mark_out",                          INT,    GENERIC) \
  X(NET_SOCK_PACKET_TOS_OUT,                        sock_packet_tos_out,                        "proxy.config.net.sock_packet_tos_out",                           INT,    GENERIC) \
  X(HTTP_INSERT_AGE_IN_RESPONSE,                    insert_age_in_response,                     "proxy.config.http.insert_age_in_response",                       INT,    GENERIC) \
  X(HTTP_CHUNKING_SIZE,                             http_chunking_size,                         "proxy.config.http.chunking.size",                                INT,    GENERIC) \
  X(HTTP_FLOW_CONTROL_ENABLED,                      flow_control_enabled,                       "proxy.config.http.flow_control.enabled",                         INT,    GENERIC) \
  X(HTTP_FLOW_CONTROL_LOW_WATER_MARK,               flow_low_water_mark,                        "proxy.config.http.flow_control.low_water",                       INT,    GENERIC) \
  X(HTTP_FLOW_CONTROL_HIGH_WATER_MARK,              flow_high_water_mark,                       "proxy.config.http.flow_control.high_water",                      INT,    GENERIC) \
  X(HTTP_CACHE_RANGE_LOOKUP,                        cache_range_lookup,                         "proxy.config.http.cache.range.lookup",                           INT,    GENERIC) \
  X(HTTP_DEFAULT_BUFFER_SIZE,                       default_buffer_size_index,                  "proxy.config.http.default_buffer_size",                          INT,    GENERIC) \
  X(HTTP_DEFAULT_BUFFER_WATER_MARK,                 default_buffer_water_mark,                  "proxy.config.http.default_buffer_water_mark",                    INT,    GENERIC) \
  X(HTTP_REQUEST_HEADER_MAX_SIZE,                   request_hdr_max_size,                       "proxy.config.http.request_header_max_size",                      INT,    GENERIC) \
  X(HTTP_RESPONSE_HEADER_MAX_SIZE,                  response_hdr_max_size,                      "proxy.config.http.response_header_max_size",                     INT,    GENERIC) \
  X(HTTP_NEGATIVE_REVALIDATING_ENABLED,             negative_revalidating_enabled,              "proxy.config.http.negative_revalidating_enabled",                INT,    GENERIC) \
  X(HTTP_NEGATIVE_REVALIDATING_LIFETIME,            negative_revalidating_lifetime,             "proxy.config.http.negative_revalidating_lifetime",               INT,    GENERIC) \
  X(SSL_HSTS_MAX_AGE,                               proxy_response_hsts_max_age,                "proxy.config.ssl.hsts_max_age",                                  INT,    GENERIC) \
  X(SSL_HSTS_INCLUDE_SUBDOMAINS,                    proxy_response_hsts_include_subdomains,     "proxy.config.ssl.hsts_include_subdomains",                       INT,    GENERIC) \
  X(HTTP_CACHE_OPEN_READ_RETRY_TIME,                cache_open_read_retry_time,                 "proxy.config.http.cache.open_read_retry_time",                   INT,    GENERIC) \
  X(HTTP_CACHE_MAX_OPEN_READ_RETRIES,               max_cache_open_read_retries,                "proxy.config.http.cache.max_open_read_retries",                  INT,    GENERIC) \
  X(HTTP_CACHE_RANGE_WRITE,                         cache_range_write,                          "proxy.config.http.cache.range.write",                            INT,    GENERIC) \
  X(HTTP_POST_CHECK_CONTENT_LENGTH_ENABLED,         post_check_content_length_enabled,          "proxy.config.http.post.check.content_length.enabled",            INT,    GENERIC) \
  X(HTTP_GLOBAL_USER_AGENT_HEADER,                  global_user_agent_header,                   "proxy.config.http.global_user_agent_header",                     STRING, GENERIC) \
  X(HTTP_AUTH_SERVER_SESSION_PRIVATE,               auth_server_session_private,                "proxy.config.http.auth_server_session_private",                  INT,    GENERIC) \
  X(HTTP_SLOW_LOG_THRESHOLD,                        slow_log_threshold,                         "proxy.config.http.slow.log.threshold",                           INT,    GENERIC) \
  X(HTTP_CACHE_GENERATION,                          cache_generation_number,                    "proxy.config.http.cache.generation",                             INT,    GENERIC) \
  X(BODY_FACTORY_TEMPLATE_BASE,                     body_factory_template_base,                 "proxy.config.body_factory.template_base",                        STRING, GENERIC) \
  X(HTTP_CACHE_OPEN_WRITE_FAIL_ACTION,              cache_open_write_fail_action,               "proxy.config.http.cache.open_write_fail_action",                 INT,    GENERIC) \
  X(HTTP_NUMBER_OF_REDIRECTIONS,                    number_of_redirections,                     "proxy.config.http.number_of_redirections",                       INT,    GENERIC) \
  X(HTTP_CACHE_MAX_OPEN_WRITE_RETRIES,              max_cache_open_write_retries,               "proxy.config.http.cache.max_open_write_retries",                 INT,    GENERIC) \
  X(HTTP_CACHE_MAX_OPEN_WRITE_RETRY_TIMEOUT,        max_cache_open_write_retry_timeout,         "proxy.config.http.cache.max_open_write_retry_timeout",           INT,    GENERIC) \
  X(HTTP_REDIRECT_USE_ORIG_CACHE_KEY,               redirect_use_orig_cache_key,                "proxy.config.http.redirect_use_orig_cache_key",                  INT,    GENERIC) \
  X(HTTP_ATTACH_SERVER_SESSION_TO_CLIENT,           attach_server_session_to_client,            "proxy.config.http.attach_server_session_to_client",              INT,    GENERIC) \
  X(WEBSOCKET_NO_ACTIVITY_TIMEOUT,                  websocket_inactive_timeout,                 "proxy.config.websocket.no_activity_timeout",                     INT,    GENERIC) \
  X(WEBSOCKET_ACTIVE_TIMEOUT,                       websocket_active_timeout,                   "proxy.config.websocket.active_timeout",                          INT,    GENERIC) \
  X(HTTP_UNCACHEABLE_REQUESTS_BYPASS_PARENT,        uncacheable_requests_bypass_parent,         "proxy.config.http.uncacheable_requests_bypass_parent",           INT,    GENERIC) \
  X(HTTP_PARENT_PROXY_TOTAL_CONNECT_ATTEMPTS,       parent_connect_attempts,                    "proxy.config.http.parent_proxy.total_connect_attempts",          INT,    GENERIC) \
  X(HTTP_TRANSACTION_ACTIVE_TIMEOUT_IN,             transaction_active_timeout_in,              "proxy.config.http.transaction_active_timeout_in",                INT,    GENERIC) \
  X(SRV_ENABLED,                                    srv_enabled,                                "proxy.config.srv_enabled",                                       INT,    GENERIC) \
  X(HTTP_FORWARD_CONNECT_METHOD,                    forward_connect_method,                     "proxy.config.http.forward_connect_method",                       INT,    GENERIC) \
  X(SSL_CERT_FILENAME,                              ssl_client_cert_filename,                   "proxy.config.ssl.client.cert.filename",                          STRING, NONE) \
  X(SSL_CERT_FILEPATH,                              ssl_client_cert_filename,                   "proxy.config.ssl.client.cert.path",                              STRING, NONE) \
  X(PARENT_FAILURES_UPDATE_HOSTDB,                  parent_failures_update_hostdb,              "proxy.config.http.parent_proxy.mark_down_hostdb",                INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_ACCEPT_MISMATCH,              ignore_accept_mismatch,                     "proxy.config.http.cache.ignore_accept_mismatch",                 INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_ACCEPT_LANGUAGE_MISMATCH,     ignore_accept_language_mismatch,            "proxy.config.http.cache.ignore_accept_language_mismatch",        INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_ACCEPT_ENCODING_MISMATCH,     ignore_accept_encoding_mismatch,            "proxy.config.http.cache.ignore_accept_encoding_mismatch",        INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_ACCEPT_CHARSET_MISMATCH,      ignore_accept_charset_mismatch,             "proxy.config.http.cache.ignore_accept_charset_mismatch",         INT,    GENERIC) \
  X(HTTP_PARENT_PROXY_FAIL_THRESHOLD,               parent_fail_threshold,                      "proxy.config.http.parent_proxy.fail_threshold",                  INT,    GENERIC) \
  X(HTTP_PARENT_PROXY_RETRY_TIME,                   parent_retry_time,                          "proxy.config.http.parent_proxy.retry_time",                      INT,    GENERIC) \
  X(HTTP_PER_PARENT_CONNECT_ATTEMPTS,               per_parent_connect_attempts,                "proxy.config.http.parent_proxy.per_parent_connect_attempts",     INT,    GENERIC) \
  X(HTTP_NORMALIZE_AE,                              normalize_ae,                               "proxy.config.http.normalize_ae",                                 INT,    GENERIC) \
  X(HTTP_INSERT_FORWARDED,                          insert_forwarded,                           "proxy.config.http.insert_forwarded",                             STRING, GENERIC) \
  X(HTTP_PROXY_PROTOCOL_OUT,                        proxy_protocol_out,                         "proxy.config.http.proxy_protocol_out",                           INT,    GENERIC) \
  X(HTTP_ALLOW_MULTI_RANGE,                         allow_multi_range,                          "proxy.config.http.allow_multi_range",                            INT,    GENERIC) \
  X(HTTP_REQUEST_BUFFER_ENABLED,                    request_buffer_enabled,                     "proxy.config.http.request_buffer_enabled",                       INT,    GENERIC) \
  X(HTTP_ALLOW_HALF_OPEN,                           allow_half_open,                            "proxy.config.http.allow_half_open",                              INT,    GENERIC) \
  X(HTTP_SERVER_MIN_KEEP_ALIVE_CONNS,               connection_tracker_config.server_min,       ConnectionTracker::CONFIG_SERVER_VAR_MIN,                         INT,    ConnectionTracker_MIN_SERVER_CONV) \
  X(HTTP_PER_SERVER_CONNECTION_MAX,                 connection_tracker_config.server_max,       ConnectionTracker::CONFIG_SERVER_VAR_MAX,                         INT,    ConnectionTracker_MAX_SERVER_CONV) \
  X(HTTP_PER_SERVER_CONNECTION_MATCH,               connection_tracker_config.server_match,     ConnectionTracker::CONFIG_SERVER_VAR_MATCH,                       INT,    ConnectionTracker_SERVER_MATCH_CONV) \
  X(SSL_CLIENT_VERIFY_SERVER_POLICY,                ssl_client_verify_server_policy,            "proxy.config.ssl.client.verify.server.policy",                   STRING, NONE) \
  X(SSL_CLIENT_VERIFY_SERVER_PROPERTIES,            ssl_client_verify_server_properties,        "proxy.config.ssl.client.verify.server.properties",               STRING, NONE) \
  X(SSL_CLIENT_SNI_POLICY,                          ssl_client_sni_policy,                      "proxy.config.ssl.client.sni_policy",                             STRING, NONE) \
  X(SSL_CLIENT_PRIVATE_KEY_FILENAME,                ssl_client_private_key_filename,            "proxy.config.ssl.client.private_key.filename",                   STRING, NONE) \
  X(SSL_CLIENT_CA_CERT_FILENAME,                    ssl_client_ca_cert_filename,                "proxy.config.ssl.client.CA.cert.filename",                       STRING, NONE) \
  X(SSL_CLIENT_ALPN_PROTOCOLS,                      ssl_client_alpn_protocols,                  "proxy.config.ssl.client.alpn_protocols",                         STRING, NONE) \
  X(HTTP_HOST_RESOLUTION_PREFERENCE,                host_res_data,                              "proxy.config.hostdb.ip_resolve",                                 STRING, HttpTransact_HOST_RES_CONV) \
  X(HTTP_CONNECT_DOWN_POLICY,                       connect_down_policy,                        "proxy.config.http.connect.down.policy",                          INT,    GENERIC) \
  X(HTTP_MAX_PROXY_CYCLES,                          max_proxy_cycles,                           "proxy.config.http.max_proxy_cycles",                             INT,    GENERIC) \
  X(PLUGIN_VC_DEFAULT_BUFFER_INDEX,                 plugin_vc_default_buffer_index,             "proxy.config.plugin.vc.default_buffer_index",                    INT,    GENERIC) \
  X(PLUGIN_VC_DEFAULT_BUFFER_WATER_MARK,            plugin_vc_default_buffer_water_mark,        "proxy.config.plugin.vc.default_buffer_water_mark",               INT,    GENERIC) \
  X(NET_SOCK_NOTSENT_LOWAT,                         sock_packet_notsent_lowat,                  "proxy.config.net.sock_notsent_lowat",                            INT,    GENERIC) \
  X(BODY_FACTORY_RESPONSE_SUPPRESSION_MODE,         response_suppression_mode,                  "proxy.config.body_factory.response_suppression_mode",            INT,    GENERIC) \
  X(HTTP_ENABLE_PARENT_TIMEOUT_MARKDOWNS,           enable_parent_timeout_markdowns,            "proxy.config.http.parent_proxy.enable_parent_timeout_markdowns", INT,    GENERIC) \
  X(HTTP_DISABLE_PARENT_MARKDOWNS,                  disable_parent_markdowns,                   "proxy.config.http.parent_proxy.disable_parent_markdowns",        INT,    GENERIC) \
  X(NET_DEFAULT_INACTIVITY_TIMEOUT,                 default_inactivity_timeout,                 "proxy.config.net.default_inactivity_timeout",                    INT,    GENERIC) \
  X(HTTP_NO_DNS_JUST_FORWARD_TO_PARENT,             no_dns_forward_to_parent,                   "proxy.config.http.no_dns_just_forward_to_parent",                INT,    GENERIC) \
  X(HTTP_CACHE_IGNORE_QUERY,                        cache_ignore_query,                         "proxy.config.http.cache.ignore_query",                           INT,    GENERIC) \
  X(HTTP_DROP_CHUNKED_TRAILERS,                     http_drop_chunked_trailers,                 "proxy.config.http.drop_chunked_trailers",                        INT,    GENERIC) \
  X(HTTP_STRICT_CHUNK_PARSING,                      http_strict_chunk_parsing,                  "proxy.config.http.strict_chunk_parsing",                         INT,    GENERIC) \
  X(HTTP_NEGATIVE_CACHING_LIST,                     negative_caching_list,                      "proxy.config.http.negative_caching_list",                        STRING, HttpStatusCodeList_Conv) \
  X(HTTP_CONNECT_ATTEMPTS_RETRY_BACKOFF_BASE,       connect_attempts_retry_backoff_base,        "proxy.config.http.connect_attempts_retry_backoff_base",          INT,    GENERIC) \
  X(HTTP_NEGATIVE_REVALIDATING_LIST,                negative_revalidating_list,                 "proxy.config.http.negative_revalidating_list",                   STRING, HttpStatusCodeList_Conv) \
  X(HTTP_CACHE_POST_METHOD,                         cache_post_method,                          "proxy.config.http.cache.post_method",                            INT,    GENERIC) \
  X(HTTP_CACHE_TARGETED_CACHE_CONTROL_HEADERS,      targeted_cache_control_headers,             "proxy.config.http.cache.targeted_cache_control_headers",         STRING, TargetedCacheControlHeaders_Conv) \
  X(SSL_CLIENT_CA_CERT_PATH,                        ssl_client_ca_cert_path,                    "proxy.config.ssl.client.CA.cert.path",                           STRING, NONE) \
  X(HTTP_CACHE_MAX_STALE_AGE_PERCENT,               cache_max_stale_age_percent,                "proxy.config.http.cache.max_stale_age_percent",                  INT,    GENERIC) \
  X(HTTP_PER_SERVER_CONNECTION_METRIC_ENABLED,      connection_tracker_config.metric_enabled,   ConnectionTracker::CONFIG_SERVER_VAR_METRIC_ENABLED,              INT,    ConnectionTracker_METRIC_ENABLED_CONV) \
  X(HTTP_PER_SERVER_CONNECTION_METRIC_AGGREGATE,    connection_tracker_config.metric_aggregate, ConnectionTracker::CONFIG_SERVER_VAR_METRIC_AGGREGATE,            INT,    ConnectionTracker_METRIC_AGGREGATE_CONV)

// clang-format on
