grpc 1.81.1 → 1.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1993) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +70 -47
  3. data/etc/roots.pem +9008 -3936
  4. data/include/grpc/credentials.h +10 -0
  5. data/include/grpc/event_engine/memory_allocator.h +1 -0
  6. data/include/grpc/grpc.h +9 -7
  7. data/include/grpc/grpc_audit_logging.h +2 -2
  8. data/include/grpc/grpc_security_constants.h +6 -0
  9. data/include/grpc/impl/channel_arg_names.h +39 -1
  10. data/src/core/call/call_filters.h +35 -17
  11. data/src/core/call/call_spine.h +4 -4
  12. data/src/core/call/client_call.cc +22 -10
  13. data/src/core/call/client_call.h +4 -0
  14. data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
  15. data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
  16. data/src/core/call/filter_fusion.h +15 -15
  17. data/src/core/call/interception_chain.cc +2 -0
  18. data/src/core/call/interception_chain.h +23 -13
  19. data/src/core/call/metadata.cc +7 -4
  20. data/src/core/call/metadata.h +1 -1
  21. data/src/core/call/metadata_batch.cc +2 -1
  22. data/src/core/call/metadata_batch.h +74 -38
  23. data/src/core/call/parsed_metadata.h +10 -5
  24. data/src/core/call/request_buffer.cc +6 -6
  25. data/src/core/call/request_buffer.h +1 -1
  26. data/src/core/call/server_call.cc +47 -18
  27. data/src/core/call/server_call.h +18 -5
  28. data/src/core/call/status_util.cc +0 -4
  29. data/src/core/call/status_util.h +0 -3
  30. data/src/core/channelz/channel_trace.cc +8 -6
  31. data/src/core/channelz/channel_trace.h +1 -1
  32. data/src/core/channelz/channelz.cc +9 -9
  33. data/src/core/channelz/channelz.h +12 -12
  34. data/src/core/channelz/channelz_registry.cc +10 -10
  35. data/src/core/channelz/text_encode.cc +9 -4
  36. data/src/core/channelz/v2tov1/convert.cc +2 -2
  37. data/src/core/channelz/ztrace_collector.h +5 -5
  38. data/src/core/client_channel/backup_poller.cc +3 -19
  39. data/src/core/client_channel/client_channel.cc +33 -65
  40. data/src/core/client_channel/client_channel.h +5 -3
  41. data/src/core/client_channel/client_channel_filter.cc +55 -99
  42. data/src/core/client_channel/client_channel_filter.h +4 -4
  43. data/src/core/client_channel/client_channel_plugin.cc +1 -1
  44. data/src/core/client_channel/client_channel_service_config.cc +4 -28
  45. data/src/core/client_channel/config_selector.h +2 -7
  46. data/src/core/client_channel/direct_channel.cc +12 -2
  47. data/src/core/client_channel/direct_channel.h +5 -3
  48. data/src/core/client_channel/dynamic_filters.cc +4 -7
  49. data/src/core/client_channel/dynamic_filters.h +1 -3
  50. data/src/core/client_channel/global_subchannel_pool.cc +4 -4
  51. data/src/core/client_channel/load_balanced_call_destination.cc +5 -3
  52. data/src/core/client_channel/retry_filter.cc +2 -25
  53. data/src/core/client_channel/retry_filter.h +3 -7
  54. data/src/core/client_channel/retry_filter_legacy_call_data.cc +6 -13
  55. data/src/core/client_channel/retry_filter_legacy_call_data.h +2 -2
  56. data/src/core/client_channel/retry_interceptor.cc +7 -35
  57. data/src/core/client_channel/retry_interceptor.h +11 -14
  58. data/src/core/client_channel/retry_service_config.cc +0 -2
  59. data/src/core/client_channel/retry_service_config.h +0 -2
  60. data/src/core/client_channel/retry_throttle.cc +19 -7
  61. data/src/core/client_channel/retry_throttle.h +24 -7
  62. data/src/core/client_channel/subchannel.cc +335 -1082
  63. data/src/core/client_channel/subchannel.h +44 -329
  64. data/src/core/client_channel/subchannel_metrics.cc +48 -0
  65. data/src/core/client_channel/subchannel_metrics.h +60 -0
  66. data/src/core/client_channel/subchannel_stream_client.cc +5 -5
  67. data/src/core/{resolver/dns/dns_resolver_plugin.h → config/experiment_env_var.cc} +12 -9
  68. data/src/core/config/experiment_env_var.h +26 -0
  69. data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
  70. data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
  71. data/src/core/credentials/call/external/external_account_credentials.cc +129 -16
  72. data/src/core/credentials/call/external/external_account_credentials.h +6 -1
  73. data/src/core/credentials/call/external/file_external_account_credentials.cc +1 -1
  74. data/src/core/credentials/call/external/url_external_account_credentials.cc +2 -3
  75. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.cc +8 -24
  76. data/src/core/credentials/call/gcp_service_account_identity/gcp_service_account_identity_credentials.h +3 -6
  77. data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.cc +525 -0
  78. data/src/core/credentials/call/gdch_service_account/gdch_service_account_credentials.h +138 -0
  79. data/src/core/credentials/call/json_util.h +1 -0
  80. data/src/core/credentials/call/jwt/json_token.cc +10 -2
  81. data/src/core/credentials/call/jwt/jwt_credentials.cc +11 -1
  82. data/src/core/credentials/call/jwt/jwt_credentials.h +3 -0
  83. data/src/core/credentials/call/jwt/jwt_verifier.cc +15 -1
  84. data/src/core/credentials/call/jwt_token_file/jwt_token_file_call_credentials.cc +1 -1
  85. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +78 -62
  86. data/src/core/credentials/call/oauth2/oauth2_credentials.h +2 -6
  87. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +411 -0
  88. data/src/core/credentials/call/regional_access_boundary_fetcher.h +158 -0
  89. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +57 -36
  90. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +28 -9
  91. data/src/core/credentials/transport/google_default/google_default_credentials.cc +6 -7
  92. data/src/core/credentials/transport/insecure/insecure_security_connector.h +1 -1
  93. data/src/core/credentials/transport/local/local_security_connector.cc +1 -1
  94. data/src/core/credentials/transport/ssl/ssl_credentials.cc +59 -72
  95. data/src/core/credentials/transport/ssl/ssl_credentials.h +9 -8
  96. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +26 -8
  97. data/src/core/credentials/transport/ssl/ssl_security_connector.h +4 -4
  98. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +38 -27
  99. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +10 -7
  100. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +51 -62
  101. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +5 -4
  102. data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.cc +172 -0
  103. data/src/core/credentials/transport/tls/grpc_tls_certificate_selector.h +129 -0
  104. data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
  105. data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +5 -5
  106. data/src/core/credentials/transport/tls/load_system_roots.h +2 -6
  107. data/src/core/credentials/transport/tls/load_system_roots_fallback.cc +5 -6
  108. data/src/core/credentials/transport/tls/load_system_roots_supported.cc +23 -18
  109. data/src/core/credentials/transport/tls/load_system_roots_supported.h +3 -2
  110. data/src/core/credentials/transport/tls/load_system_roots_windows.cc +5 -8
  111. data/src/core/credentials/transport/tls/spiffe_utils.cc +1 -1
  112. data/src/core/credentials/transport/tls/ssl_utils.cc +49 -28
  113. data/src/core/credentials/transport/tls/ssl_utils.h +12 -49
  114. data/src/core/credentials/transport/tls/tls_security_connector.cc +71 -44
  115. data/src/core/credentials/transport/tls/tls_security_connector.h +37 -16
  116. data/src/core/credentials/transport/tls/tls_utils.h +9 -0
  117. data/src/core/credentials/transport/xds/xds_credentials.cc +4 -12
  118. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +6 -0
  119. data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +16 -12
  120. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +29 -67
  121. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -8
  122. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +26 -60
  123. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +24 -19
  124. data/src/core/ext/filters/http/http_filters_plugin.cc +20 -9
  125. data/src/core/ext/filters/http/message_compress/compression_filter.cc +40 -32
  126. data/src/core/ext/filters/http/message_compress/compression_filter.h +0 -1
  127. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -81
  128. data/src/core/ext/filters/message_size/message_size_filter.h +1 -50
  129. data/src/core/ext/filters/rbac/rbac_filter.cc +43 -21
  130. data/src/core/ext/filters/rbac/rbac_filter.h +22 -4
  131. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +4 -3
  132. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +13 -56
  133. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -14
  134. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  135. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +218 -93
  136. data/src/core/ext/transport/chttp2/server/chttp2_server.h +15 -12
  137. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +177 -95
  138. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  139. data/src/core/ext/transport/chttp2/transport/flow_control.cc +6 -3
  140. data/src/core/ext/transport/chttp2/transport/flow_control.h +92 -10
  141. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +2 -4
  142. data/src/core/ext/transport/chttp2/transport/frame.cc +120 -13
  143. data/src/core/ext/transport/chttp2/transport/frame.h +68 -10
  144. data/src/core/ext/transport/chttp2/transport/frame_data.cc +33 -2
  145. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +55 -23
  146. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -0
  147. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -1
  148. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +13 -7
  149. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
  150. data/src/core/ext/transport/chttp2/transport/frame_security.cc +10 -1
  151. data/src/core/ext/transport/chttp2/transport/frame_security.h +2 -1
  152. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  153. data/src/core/ext/transport/chttp2/transport/goaway.cc +11 -1
  154. data/src/core/ext/transport/chttp2/transport/goaway.h +24 -1
  155. data/src/core/ext/transport/chttp2/transport/header_assembler.h +54 -22
  156. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +53 -5
  157. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +22 -0
  158. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +20 -0
  159. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +51 -5
  160. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -1
  161. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +361 -550
  162. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +71 -50
  163. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +2294 -0
  164. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +800 -0
  165. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
  166. data/src/core/ext/transport/chttp2/transport/http2_settings.h +49 -15
  167. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +0 -2
  168. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +75 -28
  169. data/src/core/ext/transport/chttp2/transport/http2_status.h +38 -37
  170. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +207 -22
  171. data/src/core/ext/transport/chttp2/transport/http2_transport.h +337 -53
  172. data/src/core/ext/transport/chttp2/transport/internal.h +25 -1
  173. data/src/core/ext/transport/chttp2/transport/message_assembler.h +1 -2
  174. data/src/core/ext/transport/chttp2/transport/parsing.cc +97 -29
  175. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +4 -3
  176. data/src/core/ext/transport/chttp2/transport/ping_promise.h +25 -5
  177. data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +7 -14
  178. data/src/core/ext/transport/chttp2/transport/read_context.h +614 -0
  179. data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
  180. data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
  181. data/src/core/ext/transport/chttp2/transport/security_frame.h +20 -10
  182. data/src/core/ext/transport/chttp2/transport/stream.h +347 -155
  183. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +100 -74
  184. data/src/core/ext/transport/chttp2/transport/write_cycle.h +32 -4
  185. data/src/core/ext/transport/chttp2/transport/writing.cc +0 -3
  186. data/src/core/ext/transport/inproc/inproc_transport.cc +6 -10
  187. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +20 -19
  188. data/src/core/ext/upb-gen/cel/expr/checked.upb.h +621 -432
  189. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +264 -166
  190. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +0 -13
  191. data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +708 -497
  192. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +294 -176
  193. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +0 -15
  194. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +262 -181
  195. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +84 -58
  196. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +0 -5
  197. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +254 -190
  198. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +107 -53
  199. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +0 -4
  200. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +271 -190
  201. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +88 -64
  202. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +0 -5
  203. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +1035 -730
  204. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +384 -260
  205. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +0 -19
  206. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +87 -56
  207. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +26 -16
  208. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +0 -2
  209. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +105 -71
  210. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +30 -22
  211. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +0 -2
  212. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +31 -29
  213. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +19 -7
  214. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +0 -1
  215. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +25 -23
  216. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +15 -7
  217. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +0 -1
  218. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +25 -23
  219. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +15 -7
  220. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +0 -1
  221. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +201 -165
  222. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +79 -31
  223. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +0 -2
  224. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +29 -26
  225. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +17 -11
  226. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +0 -1
  227. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +46 -29
  228. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +37 -19
  229. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +4 -4
  230. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +34 -27
  231. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +34 -13
  232. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +1 -2
  233. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +617 -452
  234. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +221 -163
  235. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +0 -16
  236. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +1339 -970
  237. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +484 -324
  238. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +0 -23
  239. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +181 -135
  240. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +59 -43
  241. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +0 -3
  242. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +1353 -1028
  243. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +535 -361
  244. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +0 -25
  245. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +37 -33
  246. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +19 -13
  247. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +0 -1
  248. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +234 -196
  249. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +77 -57
  250. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +0 -1
  251. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +695 -502
  252. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +246 -186
  253. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +0 -15
  254. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +140 -116
  255. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +53 -43
  256. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +0 -3
  257. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +363 -269
  258. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +131 -89
  259. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +0 -8
  260. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +35 -31
  261. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +15 -13
  262. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +0 -1
  263. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +1073 -769
  264. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +515 -293
  265. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +0 -30
  266. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +25 -23
  267. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +15 -7
  268. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +0 -1
  269. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +375 -267
  270. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +142 -86
  271. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +0 -7
  272. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +32 -27
  273. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +13 -11
  274. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +0 -1
  275. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +29 -26
  276. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +17 -11
  277. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +0 -1
  278. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +87 -56
  279. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +26 -16
  280. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +0 -2
  281. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +634 -468
  282. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +255 -161
  283. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +0 -14
  284. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +672 -474
  285. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +228 -130
  286. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +0 -9
  287. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +56 -40
  288. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +15 -13
  289. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +0 -1
  290. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +34 -29
  291. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +19 -11
  292. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +0 -1
  293. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +811 -635
  294. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +347 -221
  295. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +0 -16
  296. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +174 -118
  297. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +62 -38
  298. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +0 -4
  299. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +78 -57
  300. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +28 -18
  301. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +0 -2
  302. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +37 -33
  303. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +22 -14
  304. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +0 -1
  305. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +159 -119
  306. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +47 -35
  307. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +0 -5
  308. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +101 -76
  309. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +41 -23
  310. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +0 -2
  311. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +35 -31
  312. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +15 -13
  313. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +0 -1
  314. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +189 -127
  315. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +79 -49
  316. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +0 -4
  317. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +378 -283
  318. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +156 -98
  319. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +0 -8
  320. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +354 -255
  321. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +125 -69
  322. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +0 -6
  323. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +27 -24
  324. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +13 -11
  325. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +0 -1
  326. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +611 -451
  327. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +159 -119
  328. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +0 -11
  329. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +468 -321
  330. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +157 -99
  331. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -6
  332. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +146 -119
  333. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +55 -35
  334. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +0 -1
  335. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +61 -51
  336. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -16
  337. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +0 -2
  338. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +43 -39
  339. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +25 -13
  340. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +0 -1
  341. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +341 -247
  342. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +130 -84
  343. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +0 -8
  344. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +452 -313
  345. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +144 -100
  346. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +0 -10
  347. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +666 -493
  348. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +251 -181
  349. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +0 -12
  350. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +327 -197
  351. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +92 -48
  352. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +0 -3
  353. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +3583 -2532
  354. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +1340 -816
  355. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +0 -60
  356. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +111 -82
  357. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +48 -28
  358. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +0 -3
  359. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +548 -410
  360. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +214 -148
  361. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +0 -12
  362. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +59 -50
  363. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +30 -20
  364. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +0 -2
  365. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +29 -26
  366. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +17 -11
  367. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +0 -1
  368. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +60 -49
  369. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +28 -20
  370. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +0 -2
  371. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +50 -36
  372. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +19 -11
  373. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +0 -1
  374. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +82 -63
  375. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +27 -19
  376. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +0 -1
  377. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +27 -24
  378. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +13 -11
  379. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +0 -1
  380. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +70 -58
  381. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +32 -22
  382. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +0 -2
  383. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +2 -5
  384. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +1 -1
  385. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +73 -62
  386. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +39 -25
  387. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +0 -2
  388. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +49 -45
  389. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +33 -13
  390. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +0 -1
  391. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +771 -588
  392. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +383 -185
  393. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +0 -16
  394. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +66 -47
  395. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +31 -17
  396. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +0 -2
  397. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb.h +69 -58
  398. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.c +27 -23
  399. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.h +0 -2
  400. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +151 -119
  401. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +45 -39
  402. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +0 -5
  403. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb.h +19 -17
  404. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.c +1 -3
  405. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.h +0 -1
  406. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb.h +144 -109
  407. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.c +46 -38
  408. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.h +0 -4
  409. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb.h +1912 -0
  410. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.c +300 -0
  411. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upb_minitable.h +37 -0
  412. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb.h +187 -0
  413. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.c +64 -0
  414. data/src/core/ext/upb-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upb_minitable.h +31 -0
  415. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +184 -139
  416. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +65 -35
  417. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +0 -3
  418. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +129 -106
  419. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +69 -41
  420. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +0 -4
  421. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +83 -71
  422. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +40 -26
  423. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +0 -2
  424. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +148 -101
  425. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +45 -27
  426. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +0 -2
  427. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +62 -51
  428. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +35 -21
  429. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +0 -2
  430. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1362 -1024
  431. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +508 -336
  432. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +0 -22
  433. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +21 -19
  434. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +13 -7
  435. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +0 -1
  436. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +35 -31
  437. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +15 -13
  438. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +0 -1
  439. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +27 -24
  440. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +13 -11
  441. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +0 -1
  442. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +27 -24
  443. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +13 -11
  444. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +0 -1
  445. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +94 -74
  446. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.c +35 -23
  447. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb_minitable.h +0 -1
  448. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +231 -179
  449. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +88 -66
  450. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +0 -6
  451. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +21 -19
  452. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +13 -7
  453. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +0 -1
  454. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +63 -56
  455. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +31 -19
  456. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +0 -1
  457. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +27 -24
  458. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +13 -11
  459. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +0 -1
  460. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +27 -24
  461. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +13 -11
  462. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +0 -1
  463. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -5
  464. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +1 -1
  465. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +538 -364
  466. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +157 -95
  467. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +0 -8
  468. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -110
  469. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +69 -49
  470. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +0 -4
  471. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +517 -389
  472. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +182 -116
  473. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +0 -7
  474. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +84 -62
  475. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +30 -22
  476. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +0 -2
  477. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +340 -256
  478. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +92 -82
  479. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +0 -5
  480. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +19 -17
  481. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +1 -3
  482. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +0 -1
  483. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +857 -566
  484. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +288 -182
  485. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +0 -15
  486. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb.h +2362 -0
  487. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.c +556 -0
  488. data/src/core/ext/upb-gen/envoy/service/ext_proc/v3/external_processor.upb_minitable.h +47 -0
  489. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +105 -72
  490. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +36 -22
  491. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +0 -2
  492. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +312 -226
  493. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +132 -78
  494. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +0 -5
  495. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +82 -61
  496. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -19
  497. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +0 -2
  498. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +123 -89
  499. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +25 -25
  500. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +0 -4
  501. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +48 -33
  502. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +13 -11
  503. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +0 -1
  504. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +42 -36
  505. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +19 -13
  506. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +0 -1
  507. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +101 -79
  508. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +61 -31
  509. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +0 -5
  510. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +83 -60
  511. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +37 -19
  512. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +0 -2
  513. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +56 -40
  514. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +15 -13
  515. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +0 -1
  516. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +34 -29
  517. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +13 -11
  518. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +0 -1
  519. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +32 -27
  520. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +13 -11
  521. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +0 -1
  522. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +88 -71
  523. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +48 -30
  524. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +0 -3
  525. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +37 -30
  526. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +1 -5
  527. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +0 -2
  528. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +95 -71
  529. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +36 -22
  530. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +0 -2
  531. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +79 -56
  532. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +26 -18
  533. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +0 -2
  534. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +164 -124
  535. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +54 -40
  536. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +0 -4
  537. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +200 -147
  538. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +47 -41
  539. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +0 -7
  540. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +160 -130
  541. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +89 -47
  542. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +0 -5
  543. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +78 -62
  544. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +26 -20
  545. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +0 -3
  546. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +2 -5
  547. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +1 -1
  548. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +21 -19
  549. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +13 -7
  550. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +0 -1
  551. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +43 -36
  552. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +22 -12
  553. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +0 -2
  554. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +67 -55
  555. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +36 -18
  556. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +0 -3
  557. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +62 -51
  558. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +33 -19
  559. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +0 -2
  560. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +2 -5
  561. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +1 -1
  562. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +25 -23
  563. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +15 -7
  564. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +0 -1
  565. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +37 -33
  566. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +19 -13
  567. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +0 -1
  568. data/src/core/ext/upb-gen/google/api/annotations.upb.h +15 -13
  569. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +22 -7
  570. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +1 -1
  571. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +619 -430
  572. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +260 -168
  573. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +0 -13
  574. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +734 -518
  575. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +312 -182
  576. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +0 -16
  577. data/src/core/ext/upb-gen/google/api/http.upb.h +146 -105
  578. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +65 -29
  579. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +0 -3
  580. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +52 -37
  581. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +19 -11
  582. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +0 -1
  583. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +23 -21
  584. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +15 -7
  585. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +0 -1
  586. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +2236 -1514
  587. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +824 -406
  588. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +0 -34
  589. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +23 -21
  590. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +15 -7
  591. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +0 -1
  592. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +19 -17
  593. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +1 -3
  594. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +0 -1
  595. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +149 -100
  596. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +59 -43
  597. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +0 -4
  598. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +23 -21
  599. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +15 -7
  600. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +0 -1
  601. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +181 -139
  602. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +99 -53
  603. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +0 -9
  604. data/src/core/ext/upb-gen/google/rpc/status.upb.h +52 -37
  605. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +19 -11
  606. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +0 -1
  607. data/src/core/ext/upb-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upb.h +1651 -1191
  608. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +1157 -0
  609. data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.h +69 -0
  610. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +76 -56
  611. data/src/core/ext/upb-gen/grpc/gcp/altscontext.upb_minitable.c +93 -0
  612. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -7
  613. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +621 -425
  614. data/src/core/ext/upb-gen/grpc/gcp/handshaker.upb_minitable.c +415 -0
  615. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -17
  616. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +118 -88
  617. data/src/core/ext/upb-gen/grpc/gcp/transport_security_common.upb_minitable.c +119 -0
  618. data/src/core/ext/upb-gen/grpc/gcp/transport_security_common.upb_minitable.h +34 -0
  619. data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
  620. data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
  621. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -7
  622. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +313 -234
  623. data/src/core/ext/upb-gen/grpc/lb/v1/load_balancer.upb_minitable.c +243 -0
  624. data/src/core/ext/upb-gen/grpc/lb/v1/load_balancer.upb_minitable.h +39 -0
  625. data/src/core/ext/upb-gen/grpc/lookup/v1/rls.upb.h +497 -0
  626. data/src/core/ext/upb-gen/grpc/lookup/v1/rls.upb_minitable.c +120 -0
  627. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -8
  628. data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +540 -331
  629. data/src/core/ext/upb-gen/grpc/lookup/v1/rls_config.upb_minitable.c +290 -0
  630. data/src/core/ext/upb-gen/grpc/lookup/v1/rls_config.upb_minitable.h +39 -0
  631. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +189 -125
  632. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +59 -35
  633. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +0 -3
  634. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +454 -343
  635. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +204 -130
  636. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +0 -11
  637. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +369 -243
  638. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +109 -79
  639. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +0 -7
  640. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +256 -175
  641. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +122 -68
  642. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +0 -8
  643. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +128 -91
  644. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +82 -41
  645. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +5 -8
  646. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +36 -29
  647. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +36 -13
  648. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +1 -2
  649. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +13 -11
  650. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +22 -7
  651. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +1 -1
  652. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +36 -29
  653. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +36 -13
  654. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +1 -2
  655. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +34 -27
  656. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +34 -13
  657. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +1 -2
  658. data/src/core/ext/upb-gen/validate/validate.upb.h +1682 -1130
  659. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +587 -247
  660. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +4 -27
  661. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +128 -91
  662. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +82 -41
  663. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +5 -8
  664. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +36 -29
  665. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +36 -13
  666. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +1 -2
  667. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +13 -11
  668. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +22 -7
  669. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +1 -1
  670. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +122 -90
  671. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +82 -39
  672. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +3 -7
  673. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +34 -27
  674. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +34 -13
  675. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +1 -2
  676. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +21 -19
  677. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +13 -7
  678. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +0 -1
  679. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +29 -26
  680. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +17 -11
  681. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +0 -1
  682. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +70 -58
  683. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +32 -22
  684. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +0 -2
  685. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +53 -34
  686. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +26 -16
  687. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +0 -2
  688. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +29 -26
  689. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +17 -11
  690. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +0 -1
  691. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +37 -33
  692. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +22 -14
  693. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +0 -1
  694. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +102 -76
  695. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +43 -23
  696. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +0 -2
  697. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +33 -30
  698. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +19 -11
  699. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +0 -1
  700. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +136 -83
  701. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +41 -33
  702. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +0 -4
  703. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +46 -32
  704. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +20 -12
  705. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +0 -1
  706. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +29 -26
  707. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +20 -12
  708. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +0 -1
  709. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +93 -61
  710. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +28 -20
  711. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +0 -2
  712. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +19 -17
  713. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +1 -3
  714. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +0 -1
  715. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +105 -71
  716. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +32 -22
  717. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +0 -2
  718. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +430 -314
  719. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +153 -123
  720. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +0 -10
  721. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +307 -199
  722. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +74 -62
  723. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +0 -6
  724. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +52 -42
  725. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +19 -13
  726. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +0 -2
  727. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +95 -71
  728. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +36 -22
  729. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +0 -2
  730. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +92 -77
  731. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +42 -28
  732. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +0 -2
  733. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +67 -55
  734. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +36 -18
  735. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +0 -3
  736. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +29 -26
  737. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +17 -11
  738. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +0 -1
  739. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.c +453 -0
  740. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/ext_proc.upbdefs.h +67 -0
  741. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.c +142 -0
  742. data/src/core/ext/upbdefs-gen/envoy/extensions/filters/http/ext_proc/v3/processing_mode.upbdefs.h +37 -0
  743. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +885 -855
  744. data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +733 -0
  745. data/src/core/ext/upbdefs-gen/{src/proto/grpc/channelz → grpc/channelz/v1}/channelz.upbdefs.h +44 -44
  746. data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
  747. data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
  748. data/src/core/filter/auth/server_auth_filter.cc +2 -3
  749. data/src/core/filter/composite/composite_filter.cc +53 -34
  750. data/src/core/filter/composite/composite_filter.h +16 -5
  751. data/src/core/filter/ext_proc/ext_proc_filter.cc +1781 -0
  752. data/src/core/filter/ext_proc/ext_proc_filter.h +188 -0
  753. data/src/core/filter/ext_proc/ext_proc_messages.cc +756 -0
  754. data/src/core/filter/ext_proc/ext_proc_messages.h +324 -0
  755. data/src/core/filter/filter_args.h +17 -24
  756. data/src/core/handshaker/handshaker.cc +14 -6
  757. data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
  758. data/src/core/handshaker/http_connect/http_proxy_mapper.cc +30 -3
  759. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
  760. data/src/core/handshaker/security/secure_endpoint.cc +69 -14
  761. data/src/core/handshaker/security/security_handshaker.cc +15 -12
  762. data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
  763. data/src/core/lib/channel/channel_args.cc +20 -0
  764. data/src/core/lib/channel/channel_args.h +29 -23
  765. data/src/core/lib/channel/channel_stack.cc +4 -2
  766. data/src/core/lib/channel/channel_stack.h +3 -7
  767. data/src/core/lib/channel/channel_stack_builder_impl.cc +2 -3
  768. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -7
  769. data/src/core/lib/channel/promise_based_filter.cc +222 -24
  770. data/src/core/lib/channel/promise_based_filter.h +328 -206
  771. data/src/core/lib/compression/compression_internal.cc +4 -5
  772. data/src/core/lib/compression/message_compress.cc +132 -97
  773. data/src/core/lib/compression/message_compress.h +24 -0
  774. data/src/core/lib/debug/trace_flags.cc +10 -0
  775. data/src/core/lib/debug/trace_flags.h +4 -0
  776. data/src/core/lib/event_engine/ares_resolver.cc +68 -64
  777. data/src/core/lib/event_engine/ares_resolver.h +3 -2
  778. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
  779. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
  780. data/src/core/lib/event_engine/default_event_engine.cc +5 -5
  781. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +0 -13
  782. data/src/core/lib/event_engine/extensions/receive_coalescing_extension.h +44 -0
  783. data/src/core/lib/event_engine/extensions/tcp_trace.h +1 -1
  784. data/src/core/lib/event_engine/posix.h +2 -0
  785. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -12
  786. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +20 -24
  787. data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
  788. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
  789. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -1
  790. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +84 -40
  791. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -11
  792. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +32 -37
  793. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  794. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +2 -1
  795. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +10 -10
  796. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  797. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +3 -0
  798. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +3 -0
  799. data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
  800. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
  801. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
  802. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
  803. data/src/core/lib/event_engine/shim.cc +2 -16
  804. data/src/core/lib/event_engine/shim.h +0 -4
  805. data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
  806. data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
  807. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
  808. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
  809. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +4 -4
  810. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -4
  811. data/src/core/lib/event_engine/windows/windows_endpoint.cc +1 -3
  812. data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
  813. data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
  814. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
  815. data/src/core/lib/experiments/experiments.cc +414 -267
  816. data/src/core/lib/experiments/experiments.h +231 -130
  817. data/src/core/lib/iomgr/buffer_list.cc +3 -3
  818. data/src/core/lib/iomgr/buffer_list.h +2 -2
  819. data/src/core/lib/iomgr/cfstream_handle.cc +2 -6
  820. data/src/core/lib/iomgr/combiner.cc +0 -1
  821. data/src/core/lib/iomgr/endpoint_cfstream.cc +3 -10
  822. data/src/core/lib/iomgr/error.cc +5 -79
  823. data/src/core/lib/iomgr/error.h +8 -6
  824. data/src/core/lib/iomgr/error_cfstream.cc +1 -2
  825. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  826. data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -7
  827. data/src/core/lib/iomgr/ev_poll_posix.cc +7 -15
  828. data/src/core/lib/iomgr/event_engine_shims/closure.cc +1 -1
  829. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +5 -6
  830. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +1 -2
  831. data/src/core/lib/iomgr/iomgr_posix.cc +0 -4
  832. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +0 -4
  833. data/src/core/lib/iomgr/iomgr_windows.cc +0 -4
  834. data/src/core/lib/iomgr/socket_factory_posix.h +1 -1
  835. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -0
  836. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  837. data/src/core/lib/iomgr/systemd_utils.cc +0 -1
  838. data/src/core/lib/iomgr/tcp_client.h +1 -1
  839. data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
  840. data/src/core/lib/iomgr/tcp_posix.cc +33 -28
  841. data/src/core/lib/iomgr/tcp_server.h +1 -1
  842. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -6
  843. data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -1
  844. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
  845. data/src/core/lib/iomgr/tcp_server_windows.cc +0 -1
  846. data/src/core/lib/iomgr/tcp_windows.cc +5 -10
  847. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  848. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  849. data/src/core/lib/iomgr/vsock.h +3 -1
  850. data/src/core/lib/promise/activity.cc +1 -1
  851. data/src/core/lib/promise/activity.h +1 -1
  852. data/src/core/lib/promise/arena_promise.h +7 -7
  853. data/src/core/lib/promise/detail/promise_factory.h +14 -14
  854. data/src/core/lib/promise/detail/promise_like.h +4 -4
  855. data/src/core/lib/promise/inter_activity_latch.h +6 -6
  856. data/src/core/lib/promise/inter_activity_pipe.h +1 -1
  857. data/src/core/lib/promise/interceptor_list.h +1 -1
  858. data/src/core/lib/promise/observable.h +3 -3
  859. data/src/core/lib/promise/party.cc +1 -1
  860. data/src/core/lib/promise/try_seq.h +4 -4
  861. data/src/core/lib/resource_quota/arena.h +3 -3
  862. data/src/core/lib/resource_quota/memory_quota.cc +17 -17
  863. data/src/core/lib/resource_quota/memory_quota.h +1 -1
  864. data/src/core/lib/resource_quota/telemetry.cc +54 -0
  865. data/src/core/lib/resource_quota/telemetry.h +5 -23
  866. data/src/core/lib/resource_quota/thread_quota.cc +3 -3
  867. data/src/core/lib/security/authorization/audit_logging.cc +7 -7
  868. data/src/core/lib/security/authorization/audit_logging.h +3 -3
  869. data/src/core/lib/security/authorization/authorization_engine.h +1 -1
  870. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +11 -13
  871. data/src/core/lib/security/authorization/grpc_authorization_engine.h +2 -2
  872. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
  873. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
  874. data/src/core/lib/security/authorization/matchers.cc +20 -20
  875. data/src/core/lib/security/authorization/matchers.h +16 -17
  876. data/src/core/lib/security/authorization/rbac_policy.cc +139 -56
  877. data/src/core/lib/security/authorization/rbac_policy.h +22 -4
  878. data/src/core/lib/security/authorization/stdout_logger.cc +3 -3
  879. data/src/core/lib/security/authorization/stdout_logger.h +6 -5
  880. data/src/core/lib/surface/call.cc +16 -24
  881. data/src/core/lib/surface/call.h +14 -3
  882. data/src/core/lib/surface/call_utils.h +117 -0
  883. data/src/core/lib/surface/channel.cc +22 -3
  884. data/src/core/lib/surface/channel.h +15 -7
  885. data/src/core/lib/surface/channel_create.cc +1 -1
  886. data/src/core/lib/surface/channel_create.h +0 -2
  887. data/src/core/lib/surface/channel_init.cc +78 -39
  888. data/src/core/lib/surface/channel_init.h +30 -16
  889. data/src/core/lib/surface/filter_stack_call.cc +15 -39
  890. data/src/core/lib/surface/init.cc +20 -34
  891. data/src/core/lib/surface/lame_client.cc +1 -1
  892. data/src/core/lib/surface/legacy_channel.cc +11 -9
  893. data/src/core/lib/surface/legacy_channel.h +3 -1
  894. data/src/core/lib/surface/version.cc +2 -2
  895. data/src/core/lib/transport/bdp_estimator.cc +13 -13
  896. data/src/core/lib/transport/bdp_estimator.h +9 -5
  897. data/src/core/lib/transport/error_utils.cc +23 -162
  898. data/src/core/lib/transport/error_utils.h +0 -16
  899. data/src/core/lib/transport/promise_endpoint.h +8 -8
  900. data/src/core/lib/transport/transport.h +38 -9
  901. data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
  902. data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
  903. data/src/core/load_balancing/autosharding/autosharding.h +78 -0
  904. data/src/core/load_balancing/grpclb/grpclb.cc +2 -1
  905. data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
  906. data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
  907. data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
  908. data/src/core/load_balancing/health_check_client.cc +7 -7
  909. data/src/core/load_balancing/lb_policy.cc +1 -1
  910. data/src/core/load_balancing/oob_backend_metric.cc +5 -5
  911. data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
  912. data/src/core/load_balancing/pick_first/pick_first.cc +35 -2
  913. data/src/core/load_balancing/pick_first/pick_first.h +6 -0
  914. data/src/core/load_balancing/ring_hash/ring_hash.cc +112 -47
  915. data/src/core/load_balancing/rls/rls.cc +53 -29
  916. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +146 -88
  917. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +86 -0
  918. data/src/core/load_balancing/xds/cds.cc +88 -61
  919. data/src/core/load_balancing/xds/cds.h +21 -0
  920. data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -3
  921. data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
  922. data/src/core/mitigation_engine/mitigation.h +62 -0
  923. data/src/core/mitigation_engine/mitigation_engine.h +109 -0
  924. data/src/core/mitigation_engine/mitigation_provider.h +63 -0
  925. data/src/core/plugin_registry/grpc_plugin_registry.cc +41 -10
  926. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -5
  927. data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.cc → dns_resolver.cc} +49 -48
  928. data/src/core/resolver/dns/{event_engine/event_engine_client_channel_resolver.h → dns_resolver.h} +8 -5
  929. data/src/core/resolver/dns/{event_engine/service_config_helper.cc → service_config_helper.cc} +1 -1
  930. data/src/core/resolver/dns/{event_engine/service_config_helper.h → service_config_helper.h} +3 -3
  931. data/src/core/resolver/endpoint_addresses.h +3 -0
  932. data/src/core/resolver/fake/fake_resolver.cc +5 -5
  933. data/src/core/resolver/google_c2p/google_c2p_resolver.cc +40 -31
  934. data/src/core/resolver/xds/xds_resolver.cc +66 -147
  935. data/src/core/server/server.cc +72 -54
  936. data/src/core/server/server.h +30 -21
  937. data/src/core/server/server_config_selector.h +23 -7
  938. data/src/core/server/server_config_selector_filter.cc +228 -32
  939. data/src/core/server/server_config_selector_filter.h +59 -3
  940. data/src/core/server/xds_server_config_fetcher.cc +821 -759
  941. data/src/core/server/xds_server_config_fetcher.h +49 -0
  942. data/src/core/server/xds_server_config_fetcher_legacy.cc +1340 -0
  943. data/src/core/telemetry/call_tracer.cc +49 -2
  944. data/src/core/telemetry/call_tracer.h +1 -0
  945. data/src/core/telemetry/default_tcp_tracer.cc +1 -1
  946. data/src/core/telemetry/histogram.h +99 -98
  947. data/src/core/telemetry/instrument.cc +209 -90
  948. data/src/core/telemetry/instrument.h +123 -61
  949. data/src/core/telemetry/metrics.h +5 -0
  950. data/src/core/telemetry/tcp_tracer.h +38 -0
  951. data/src/core/{resolver/dns/c_ares/dns_resolver_ares.h → telemetry/telemetry_label.h} +11 -9
  952. data/src/core/transport/message_size_service_config.cc +123 -0
  953. data/src/core/transport/message_size_service_config.h +85 -0
  954. data/src/core/transport/session_endpoint.cc +29 -4
  955. data/src/core/transport/session_endpoint.h +4 -0
  956. data/src/core/tsi/alts/crypt/aes_gcm.cc +10 -13
  957. data/src/core/tsi/alts/crypt/gsec.h +4 -2
  958. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +4 -4
  959. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +6 -6
  960. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +5 -3
  961. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  962. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
  963. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
  964. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
  965. data/src/core/tsi/ssl_telemetry_utils.cc +300 -0
  966. data/src/core/tsi/ssl_telemetry_utils.h +84 -0
  967. data/src/core/tsi/ssl_transport_security.cc +846 -377
  968. data/src/core/tsi/ssl_transport_security.h +81 -28
  969. data/src/core/tsi/ssl_transport_security_utils.cc +18 -6
  970. data/src/core/tsi/tls_telemetry.cc +31 -0
  971. data/src/core/tsi/tls_telemetry.h +47 -0
  972. data/src/core/tsi/transport_security.cc +2 -2
  973. data/src/core/tsi/transport_security.h +8 -1
  974. data/src/core/tsi/transport_security_interface.h +1 -1
  975. data/src/core/{resolver/dns/native/dns_resolver.h → util/address_sorting_init.cc} +21 -8
  976. data/src/core/{resolver/dns/c_ares/grpc_ares_wrapper_posix.cc → util/address_sorting_init.h} +7 -8
  977. data/src/core/util/event_log.cc +3 -3
  978. data/src/core/util/http_client/httpcli.cc +21 -61
  979. data/src/core/util/http_client/httpcli.h +1 -8
  980. data/src/core/util/http_client/httpcli_security_connector.cc +14 -8
  981. data/src/core/util/http_client/parser.cc +1 -1
  982. data/src/core/util/json/json_object_loader.cc +7 -0
  983. data/src/core/util/json/json_object_loader.h +17 -2
  984. data/src/core/util/latent_see.cc +123 -36
  985. data/src/core/util/latent_see.h +14 -1
  986. data/src/core/util/linux/cpu.cc +1 -1
  987. data/src/core/util/load_file.cc +3 -9
  988. data/src/core/util/load_file.h +3 -4
  989. data/src/core/util/lru_cache.h +2 -0
  990. data/src/core/util/matchers.h +8 -0
  991. data/src/core/util/mpscq.cc +1 -1
  992. data/src/core/util/notification.h +4 -4
  993. data/src/core/util/posix/cpu.cc +1 -1
  994. data/src/core/util/ref_counted_string.h +1 -1
  995. data/src/core/util/status_helper.cc +68 -209
  996. data/src/core/util/status_helper.h +18 -34
  997. data/src/core/util/sync.h +20 -6
  998. data/src/core/util/table.h +20 -22
  999. data/src/core/util/tchar.cc +13 -7
  1000. data/src/core/util/trie_lookup.h +1 -1
  1001. data/src/core/util/work_serializer.cc +2 -2
  1002. data/src/core/xds/grpc/blackboard.cc +59 -0
  1003. data/src/core/{filter → xds/grpc}/blackboard.h +30 -11
  1004. data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
  1005. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +2 -11
  1006. data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
  1007. data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
  1008. data/src/core/xds/grpc/xds_audit_logger_registry.cc +51 -31
  1009. data/src/core/xds/grpc/xds_audit_logger_registry.h +17 -3
  1010. data/src/core/xds/grpc/xds_bootstrap_grpc.cc +4 -17
  1011. data/src/core/xds/grpc/xds_bootstrap_grpc.h +8 -6
  1012. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +488 -0
  1013. data/src/core/xds/grpc/xds_bootstrap_grpc_builder.h +97 -0
  1014. data/src/core/xds/grpc/xds_certificate_provider.cc +7 -7
  1015. data/src/core/xds/grpc/xds_client_grpc.cc +12 -16
  1016. data/src/core/xds/grpc/xds_client_grpc.h +0 -4
  1017. data/src/core/xds/grpc/xds_cluster.h +1 -0
  1018. data/src/core/xds/grpc/xds_cluster_parser.cc +5 -20
  1019. data/src/core/xds/grpc/xds_cluster_parser.h +0 -2
  1020. data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -4
  1021. data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +0 -2
  1022. data/src/core/xds/grpc/xds_common_types.cc +96 -91
  1023. data/src/core/xds/grpc/xds_common_types.h +36 -54
  1024. data/src/core/xds/grpc/xds_common_types_parser.cc +191 -414
  1025. data/src/core/xds/grpc/xds_common_types_parser.h +25 -10
  1026. data/src/core/xds/grpc/xds_endpoint.cc +1 -1
  1027. data/src/core/xds/grpc/xds_endpoint_parser.cc +18 -20
  1028. data/src/core/xds/grpc/xds_grpc_service_parser.cc +179 -0
  1029. data/src/core/{filter/blackboard.cc → xds/grpc/xds_grpc_service_parser.h} +14 -13
  1030. data/src/core/xds/grpc/xds_http_composite_filter.cc +53 -32
  1031. data/src/core/xds/grpc/xds_http_composite_filter.h +10 -6
  1032. data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +421 -0
  1033. data/src/core/xds/grpc/xds_http_ext_proc_filter.h +89 -0
  1034. data/src/core/xds/grpc/xds_http_fault_filter.cc +9 -161
  1035. data/src/core/xds/grpc/xds_http_fault_filter.h +20 -12
  1036. data/src/core/xds/grpc/xds_http_filter.cc +4 -2
  1037. data/src/core/xds/grpc/xds_http_filter.h +11 -20
  1038. data/src/core/xds/grpc/xds_http_filter_registry.cc +10 -137
  1039. data/src/core/xds/grpc/xds_http_filter_registry.h +7 -59
  1040. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +36 -131
  1041. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +30 -17
  1042. data/src/core/xds/grpc/xds_http_rbac_filter.cc +406 -37
  1043. data/src/core/xds/grpc/xds_http_rbac_filter.h +1 -3
  1044. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +8 -162
  1045. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +20 -12
  1046. data/src/core/xds/grpc/xds_lb_policy_registry.cc +0 -274
  1047. data/src/core/xds/grpc/xds_lb_policy_registry.h +7 -3
  1048. data/src/core/xds/grpc/xds_listener.cc +2 -0
  1049. data/src/core/xds/grpc/xds_listener.h +5 -0
  1050. data/src/core/xds/grpc/xds_listener_parser.cc +28 -19
  1051. data/src/core/xds/grpc/xds_matcher.h +2 -2
  1052. data/src/core/xds/grpc/xds_matcher_parse.h +3 -1
  1053. data/src/core/xds/grpc/xds_metadata_parser.cc +6 -3
  1054. data/src/core/xds/grpc/xds_metadata_parser.h +2 -0
  1055. data/src/core/xds/grpc/xds_route_config.cc +2 -0
  1056. data/src/core/xds/grpc/xds_route_config.h +4 -2
  1057. data/src/core/xds/grpc/xds_route_config_parser.cc +21 -93
  1058. data/src/core/xds/grpc/xds_route_config_parser.h +0 -3
  1059. data/src/core/xds/grpc/xds_routing.cc +192 -120
  1060. data/src/core/xds/grpc/xds_routing.h +92 -32
  1061. data/src/core/xds/grpc/xds_server_grpc.cc +22 -13
  1062. data/src/core/xds/grpc/xds_server_grpc.h +16 -2
  1063. data/src/core/xds/grpc/xds_server_grpc_interface.h +10 -0
  1064. data/src/core/xds/grpc/xds_tls_context.cc +117 -0
  1065. data/src/core/xds/grpc/xds_tls_context.h +76 -0
  1066. data/src/core/xds/grpc/xds_tls_context_parser.cc +275 -0
  1067. data/src/core/xds/grpc/xds_tls_context_parser.h +35 -0
  1068. data/src/core/xds/grpc/xds_transport_grpc.cc +243 -95
  1069. data/src/core/xds/grpc/xds_transport_grpc.h +50 -9
  1070. data/src/core/xds/xds_client/lrs_client.cc +26 -27
  1071. data/src/core/xds/xds_client/xds_bootstrap.cc +4 -16
  1072. data/src/core/xds/xds_client/xds_client.cc +21 -31
  1073. data/src/core/xds/xds_client/xds_transport.h +52 -3
  1074. data/src/ruby/ext/grpc/rb_byte_buffer.c +1 -0
  1075. data/src/ruby/ext/grpc/rb_call.c +29 -15
  1076. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  1077. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  1078. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  1079. data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
  1080. data/src/ruby/ext/grpc/rb_completion_queue.c +7 -5
  1081. data/src/ruby/ext/grpc/rb_compression_options.c +1 -0
  1082. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +8 -4
  1083. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +12 -6
  1084. data/src/ruby/ext/grpc/rb_server.c +1 -0
  1085. data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
  1086. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
  1087. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
  1088. data/src/ruby/lib/grpc/core/call_credentials.rb +86 -0
  1089. data/src/ruby/lib/grpc/core/channel_credentials.rb +69 -0
  1090. data/src/ruby/lib/grpc/core/credentials_helper.rb +126 -0
  1091. data/src/ruby/lib/grpc/generic/client_stub.rb +86 -73
  1092. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  1093. data/src/ruby/lib/grpc/version.rb +1 -1
  1094. data/src/ruby/lib/grpc.rb +25 -0
  1095. data/src/ruby/pb/README.md +1 -1
  1096. data/src/ruby/pb/generate_proto_ruby.sh +1 -1
  1097. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -1
  1098. data/src/ruby/pb/test/client.rb +5 -4
  1099. data/src/ruby/spec/call_credentials_spec.rb +52 -2
  1100. data/src/ruby/spec/call_spec.rb +14 -0
  1101. data/src/ruby/spec/credentials_helper_spec.rb +80 -0
  1102. data/src/ruby/spec/generic/client_stub_spec.rb +27 -4
  1103. data/src/ruby/spec/generic/server_interceptors_spec.rb +14 -3
  1104. data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
  1105. data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
  1106. data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
  1107. data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
  1108. data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
  1109. data/third_party/abseil-cpp/absl/base/casts.h +135 -2
  1110. data/third_party/abseil-cpp/absl/base/config.h +63 -41
  1111. data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
  1112. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
  1113. data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
  1114. data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
  1115. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
  1116. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
  1117. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
  1118. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
  1119. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
  1120. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
  1121. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
  1122. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
  1123. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
  1124. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
  1125. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
  1126. data/third_party/abseil-cpp/absl/base/macros.h +76 -37
  1127. data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
  1128. data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
  1129. data/third_party/abseil-cpp/absl/base/options.h +46 -18
  1130. data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
  1131. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
  1132. data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
  1133. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
  1134. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
  1135. data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
  1136. data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
  1137. data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
  1138. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
  1139. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
  1140. data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
  1141. data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
  1142. data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
  1143. data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
  1144. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
  1145. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
  1146. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
  1147. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
  1148. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
  1149. data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
  1150. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
  1151. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
  1152. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
  1153. data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
  1154. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
  1155. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
  1156. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
  1157. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
  1158. data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
  1159. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
  1160. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
  1161. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
  1162. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
  1163. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
  1164. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
  1165. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
  1166. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
  1167. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
  1168. data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
  1169. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
  1170. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
  1171. data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
  1172. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
  1173. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
  1174. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
  1175. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
  1176. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
  1177. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
  1178. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
  1179. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
  1180. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
  1181. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
  1182. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
  1183. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
  1184. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
  1185. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
  1186. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
  1187. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
  1188. data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
  1189. data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
  1190. data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
  1191. data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
  1192. data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
  1193. data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
  1194. data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
  1195. data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
  1196. data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
  1197. data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
  1198. data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
  1199. data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
  1200. data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
  1201. data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
  1202. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
  1203. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
  1204. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
  1205. data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
  1206. data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
  1207. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
  1208. data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
  1209. data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
  1210. data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
  1211. data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
  1212. data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
  1213. data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
  1214. data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
  1215. data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
  1216. data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
  1217. data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
  1218. data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
  1219. data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
  1220. data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
  1221. data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
  1222. data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
  1223. data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
  1224. data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
  1225. data/third_party/abseil-cpp/absl/log/log.h +2 -2
  1226. data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
  1227. data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
  1228. data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
  1229. data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
  1230. data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
  1231. data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
  1232. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
  1233. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
  1234. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
  1235. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
  1236. data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
  1237. data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
  1238. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
  1239. data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
  1240. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
  1241. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
  1242. data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
  1243. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
  1244. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
  1245. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
  1246. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
  1247. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
  1248. data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
  1249. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
  1250. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
  1251. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
  1252. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
  1253. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
  1254. data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
  1255. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
  1256. data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
  1257. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
  1258. data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
  1259. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
  1260. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
  1261. data/third_party/abseil-cpp/absl/status/status.cc +66 -70
  1262. data/third_party/abseil-cpp/absl/status/status.h +254 -23
  1263. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
  1264. data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
  1265. data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
  1266. data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
  1267. data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
  1268. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
  1269. data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
  1270. data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
  1271. data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
  1272. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
  1273. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
  1274. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
  1275. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
  1276. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
  1277. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
  1278. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
  1279. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
  1280. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
  1281. data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
  1282. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
  1283. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
  1284. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
  1285. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
  1286. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
  1287. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
  1288. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
  1289. data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
  1290. data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
  1291. data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
  1292. data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
  1293. data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
  1294. data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
  1295. data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
  1296. data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
  1297. data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
  1298. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
  1299. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
  1300. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
  1301. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
  1302. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
  1303. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
  1304. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
  1305. data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
  1306. data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
  1307. data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
  1308. data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
  1309. data/third_party/abseil-cpp/absl/time/clock.h +3 -0
  1310. data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
  1311. data/third_party/abseil-cpp/absl/time/format.cc +3 -10
  1312. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
  1313. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
  1314. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
  1315. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
  1316. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
  1317. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
  1318. data/third_party/abseil-cpp/absl/time/time.cc +4 -4
  1319. data/third_party/abseil-cpp/absl/time/time.h +14 -13
  1320. data/third_party/abseil-cpp/absl/types/compare.h +64 -63
  1321. data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
  1322. data/third_party/abseil-cpp/absl/types/optional.h +31 -4
  1323. data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
  1324. data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
  1325. data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
  1326. data/third_party/abseil-cpp/absl/types/span.h +67 -38
  1327. data/third_party/abseil-cpp/absl/types/variant.h +75 -18
  1328. data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
  1329. data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
  1330. data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
  1331. data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
  1332. data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
  1333. data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
  1334. data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
  1335. data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
  1336. data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
  1337. data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
  1338. data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
  1339. data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
  1340. data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
  1341. data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
  1342. data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
  1343. data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
  1344. data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
  1345. data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
  1346. data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
  1347. data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
  1348. data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
  1349. data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
  1350. data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
  1351. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
  1352. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
  1353. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
  1354. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
  1355. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
  1356. data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
  1357. data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
  1358. data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
  1359. data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
  1360. data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
  1361. data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
  1362. data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
  1363. data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
  1364. data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
  1365. data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
  1366. data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
  1367. data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
  1368. data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
  1369. data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
  1370. data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
  1371. data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
  1372. data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
  1373. data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
  1374. data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
  1375. data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
  1376. data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
  1377. data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
  1378. data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
  1379. data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
  1380. data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
  1381. data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
  1382. data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
  1383. data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
  1384. data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
  1385. data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
  1386. data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
  1387. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
  1388. data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
  1389. data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
  1390. data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
  1391. data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
  1392. data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
  1393. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
  1394. data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
  1395. data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
  1396. data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
  1397. data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
  1398. data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
  1399. data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
  1400. data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
  1401. data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
  1402. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
  1403. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
  1404. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
  1405. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
  1406. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
  1407. data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
  1408. data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
  1409. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
  1410. data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
  1411. data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
  1412. data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
  1413. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
  1414. data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
  1415. data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
  1416. data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
  1417. data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
  1418. data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
  1419. data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
  1420. data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
  1421. data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
  1422. data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
  1423. data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
  1424. data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
  1425. data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
  1426. data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
  1427. data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
  1428. data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
  1429. data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
  1430. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
  1431. data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
  1432. data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
  1433. data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
  1434. data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
  1435. data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
  1436. data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
  1437. data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
  1438. data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
  1439. data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
  1440. data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
  1441. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
  1442. data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
  1443. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
  1444. data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
  1445. data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
  1446. data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
  1447. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
  1448. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
  1449. data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
  1450. data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
  1451. data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
  1452. data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
  1453. data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
  1454. data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
  1455. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
  1456. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
  1457. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
  1458. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
  1459. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
  1460. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
  1461. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
  1462. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
  1463. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
  1464. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
  1465. data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
  1466. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
  1467. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
  1468. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
  1469. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
  1470. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
  1471. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
  1472. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
  1473. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
  1474. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
  1475. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
  1476. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
  1477. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
  1478. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
  1479. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
  1480. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
  1481. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
  1482. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
  1483. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
  1484. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
  1485. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
  1486. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
  1487. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
  1488. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
  1489. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
  1490. data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
  1491. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
  1492. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
  1493. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
  1494. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
  1495. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
  1496. data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
  1497. data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
  1498. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
  1499. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
  1500. data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
  1501. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
  1502. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
  1503. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
  1504. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
  1505. data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
  1506. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
  1507. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
  1508. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
  1509. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
  1510. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
  1511. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
  1512. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
  1513. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
  1514. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
  1515. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
  1516. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
  1517. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
  1518. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
  1519. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
  1520. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
  1521. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
  1522. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
  1523. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
  1524. data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
  1525. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
  1526. data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
  1527. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
  1528. data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
  1529. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
  1530. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
  1531. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
  1532. data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
  1533. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
  1534. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
  1535. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
  1536. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
  1537. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
  1538. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
  1539. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
  1540. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
  1541. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
  1542. data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
  1543. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
  1544. data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
  1545. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
  1546. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
  1547. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
  1548. data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
  1549. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
  1550. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
  1551. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
  1552. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
  1553. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
  1554. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
  1555. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
  1556. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
  1557. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
  1558. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
  1559. data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
  1560. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
  1561. data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
  1562. data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
  1563. data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
  1564. data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
  1565. data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
  1566. data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
  1567. data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
  1568. data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
  1569. data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
  1570. data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
  1571. data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
  1572. data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
  1573. data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
  1574. data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
  1575. data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
  1576. data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
  1577. data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
  1578. data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
  1579. data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
  1580. data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
  1581. data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
  1582. data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
  1583. data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
  1584. data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
  1585. data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
  1586. data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
  1587. data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
  1588. data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
  1589. data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
  1590. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
  1591. data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
  1592. data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
  1593. data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
  1594. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
  1595. data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
  1596. data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
  1597. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
  1598. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
  1599. data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
  1600. data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
  1601. data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
  1602. data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
  1603. data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
  1604. data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
  1605. data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
  1606. data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
  1607. data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
  1608. data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
  1609. data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
  1610. data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
  1611. data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
  1612. data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
  1613. data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
  1614. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
  1615. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
  1616. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
  1617. data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
  1618. data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
  1619. data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
  1620. data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
  1621. data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
  1622. data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
  1623. data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
  1624. data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
  1625. data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
  1626. data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
  1627. data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
  1628. data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
  1629. data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
  1630. data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
  1631. data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
  1632. data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
  1633. data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
  1634. data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
  1635. data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
  1636. data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
  1637. data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
  1638. data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
  1639. data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
  1640. data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
  1641. data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
  1642. data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
  1643. data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
  1644. data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
  1645. data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
  1646. data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
  1647. data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
  1648. data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
  1649. data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
  1650. data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
  1651. data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
  1652. data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
  1653. data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
  1654. data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
  1655. data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
  1656. data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
  1657. data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
  1658. data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
  1659. data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
  1660. data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
  1661. data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
  1662. data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
  1663. data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
  1664. data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
  1665. data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
  1666. data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
  1667. data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
  1668. data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
  1669. data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
  1670. data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
  1671. data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
  1672. data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
  1673. data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
  1674. data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
  1675. data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
  1676. data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
  1677. data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
  1678. data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
  1679. data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
  1680. data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
  1681. data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
  1682. data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
  1683. data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
  1684. data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
  1685. data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
  1686. data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
  1687. data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
  1688. data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
  1689. data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
  1690. data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
  1691. data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
  1692. data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
  1693. data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
  1694. data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
  1695. data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
  1696. data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
  1697. data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
  1698. data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
  1699. data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
  1700. data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
  1701. data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
  1702. data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
  1703. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
  1704. data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
  1705. data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
  1706. data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
  1707. data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
  1708. data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
  1709. data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
  1710. data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
  1711. data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
  1712. data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
  1713. data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
  1714. data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
  1715. data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
  1716. data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
  1717. data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
  1718. data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
  1719. data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
  1720. data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
  1721. data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
  1722. data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
  1723. data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
  1724. data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
  1725. data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
  1726. data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
  1727. data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
  1728. data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
  1729. data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
  1730. data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
  1731. data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
  1732. data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
  1733. data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
  1734. data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
  1735. data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
  1736. data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
  1737. data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
  1738. data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
  1739. data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
  1740. data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
  1741. data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
  1742. data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
  1743. data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
  1744. data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
  1745. data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
  1746. data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
  1747. data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
  1748. data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
  1749. data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
  1750. data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
  1751. data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
  1752. data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
  1753. data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
  1754. data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
  1755. data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
  1756. data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
  1757. data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
  1758. data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
  1759. data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
  1760. data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
  1761. data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
  1762. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
  1763. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
  1764. data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
  1765. data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
  1766. data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
  1767. data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
  1768. data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
  1769. data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
  1770. data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
  1771. data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
  1772. data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
  1773. data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
  1774. data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
  1775. data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
  1776. data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
  1777. data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
  1778. data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
  1779. data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
  1780. data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
  1781. data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
  1782. data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
  1783. data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
  1784. data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
  1785. data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
  1786. data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
  1787. data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
  1788. data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
  1789. data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
  1790. data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
  1791. data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
  1792. data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
  1793. data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
  1794. data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
  1795. data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
  1796. data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
  1797. data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
  1798. data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
  1799. data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
  1800. data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
  1801. data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
  1802. data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
  1803. data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
  1804. data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
  1805. data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
  1806. data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
  1807. data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
  1808. data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
  1809. data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
  1810. data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
  1811. data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
  1812. data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
  1813. data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
  1814. data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
  1815. data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
  1816. data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
  1817. data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
  1818. data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
  1819. data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
  1820. data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
  1821. data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
  1822. data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
  1823. data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
  1824. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
  1825. data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
  1826. data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
  1827. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
  1828. data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
  1829. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
  1830. data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
  1831. data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
  1832. data/third_party/upb/upb/base/error_handler.h +79 -0
  1833. data/third_party/upb/upb/base/internal/log2.h +29 -5
  1834. data/third_party/upb/upb/generated_code_support.h +1 -0
  1835. data/third_party/upb/upb/hash/common.c +129 -14
  1836. data/third_party/upb/upb/hash/common.h +1 -1
  1837. data/third_party/upb/upb/hash/ext_table.h +65 -0
  1838. data/third_party/upb/upb/lex/strtod.c +14 -5
  1839. data/third_party/upb/upb/mem/arena.c +113 -95
  1840. data/third_party/upb/upb/mem/internal/arena.h +13 -8
  1841. data/third_party/upb/upb/message/accessors.c +2 -3
  1842. data/third_party/upb/upb/message/accessors.h +32 -12
  1843. data/third_party/upb/upb/message/array.c +51 -2
  1844. data/third_party/upb/upb/message/array.h +10 -0
  1845. data/third_party/upb/upb/message/copy.c +18 -34
  1846. data/third_party/upb/upb/message/internal/accessors.h +15 -49
  1847. data/third_party/upb/upb/message/internal/array.h +1 -1
  1848. data/third_party/upb/upb/message/internal/map.h +1 -1
  1849. data/third_party/upb/upb/message/internal/message.c +8 -1
  1850. data/third_party/upb/upb/message/internal/message.h +40 -10
  1851. data/third_party/upb/upb/message/message.c +3 -2
  1852. data/third_party/upb/upb/message/value.h +0 -6
  1853. data/third_party/upb/upb/mini_descriptor/decode.c +78 -59
  1854. data/third_party/upb/upb/mini_descriptor/link.c +8 -6
  1855. data/third_party/upb/upb/mini_table/extension_registry.c +17 -49
  1856. data/third_party/upb/upb/mini_table/extension_registry.h +5 -17
  1857. data/third_party/upb/upb/mini_table/generated_registry.c +180 -0
  1858. data/third_party/upb/upb/mini_table/generated_registry.h +66 -0
  1859. data/third_party/upb/upb/mini_table/internal/extension.h +5 -3
  1860. data/third_party/upb/upb/mini_table/internal/field.h +7 -5
  1861. data/third_party/upb/upb/mini_table/internal/generated_registry.h +37 -0
  1862. data/third_party/upb/upb/mini_table/internal/message.c +0 -18
  1863. data/third_party/upb/upb/mini_table/internal/message.h +24 -41
  1864. data/third_party/upb/upb/mini_table/internal/size_log2.h +2 -1
  1865. data/third_party/upb/upb/mini_table/internal/sub.h +2 -5
  1866. data/third_party/upb/upb/mini_table/message.h +34 -13
  1867. data/third_party/upb/upb/port/atomic.h +180 -74
  1868. data/third_party/upb/upb/port/def.inc +194 -29
  1869. data/third_party/upb/upb/port/sanitizers.h +15 -0
  1870. data/third_party/upb/upb/port/undef.inc +6 -2
  1871. data/third_party/upb/upb/reflection/common.h +0 -6
  1872. data/third_party/upb/upb/reflection/def.hpp +8 -12
  1873. data/third_party/upb/upb/reflection/def_pool.c +85 -33
  1874. data/third_party/upb/upb/reflection/def_pool.h +38 -8
  1875. data/third_party/upb/upb/reflection/def_type.h +3 -0
  1876. data/third_party/upb/upb/reflection/enum_def.c +45 -33
  1877. data/third_party/upb/upb/reflection/enum_def.h +8 -4
  1878. data/third_party/upb/upb/reflection/enum_reserved_range.c +7 -3
  1879. data/third_party/upb/upb/reflection/enum_value_def.c +14 -29
  1880. data/third_party/upb/upb/reflection/enum_value_def.h +5 -4
  1881. data/third_party/upb/upb/reflection/extension_range.c +15 -14
  1882. data/third_party/upb/upb/reflection/extension_range.h +7 -4
  1883. data/third_party/upb/upb/reflection/field_def.c +114 -96
  1884. data/third_party/upb/upb/reflection/field_def.h +3 -3
  1885. data/third_party/upb/upb/reflection/file_def.c +71 -65
  1886. data/third_party/upb/upb/reflection/file_def.h +4 -5
  1887. data/third_party/upb/upb/reflection/internal/def_builder.c +22 -14
  1888. data/third_party/upb/upb/reflection/internal/def_builder.h +44 -38
  1889. data/third_party/upb/upb/reflection/internal/def_pool.h +5 -1
  1890. data/third_party/upb/upb/reflection/internal/enum_def.h +6 -4
  1891. data/third_party/upb/upb/reflection/internal/enum_reserved_range.h +3 -2
  1892. data/third_party/upb/upb/reflection/internal/enum_value_def.h +7 -4
  1893. data/third_party/upb/upb/reflection/internal/extension_range.h +4 -3
  1894. data/third_party/upb/upb/reflection/internal/field_def.h +15 -12
  1895. data/third_party/upb/upb/reflection/internal/file_def.h +8 -1
  1896. data/third_party/upb/upb/reflection/internal/message_def.h +10 -7
  1897. data/third_party/upb/upb/reflection/internal/message_reserved_range.h +3 -1
  1898. data/third_party/upb/upb/reflection/internal/method_def.h +6 -6
  1899. data/third_party/upb/upb/reflection/internal/oneof_def.h +6 -6
  1900. data/third_party/upb/upb/reflection/internal/service_def.h +9 -6
  1901. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  1902. data/third_party/upb/upb/reflection/message_def.c +46 -53
  1903. data/third_party/upb/upb/reflection/message_def.h +6 -7
  1904. data/third_party/upb/upb/reflection/message_reserved_range.c +7 -6
  1905. data/third_party/upb/upb/reflection/method_def.c +22 -20
  1906. data/third_party/upb/upb/reflection/method_def.h +4 -4
  1907. data/third_party/upb/upb/reflection/oneof_def.c +17 -15
  1908. data/third_party/upb/upb/reflection/oneof_def.h +6 -3
  1909. data/third_party/upb/upb/reflection/service_def.c +50 -23
  1910. data/third_party/upb/upb/reflection/service_def.h +7 -4
  1911. data/third_party/upb/upb/text/internal/encode.c +7 -10
  1912. data/third_party/upb/upb/wire/decode.c +269 -430
  1913. data/third_party/upb/upb/wire/decode.h +6 -45
  1914. data/third_party/upb/upb/wire/decode_fast/combinations.h +7 -3
  1915. data/third_party/upb/upb/wire/decode_fast/select.c +7 -2
  1916. data/third_party/upb/upb/wire/encode.c +144 -106
  1917. data/third_party/upb/upb/wire/encode.h +6 -2
  1918. data/third_party/upb/upb/wire/eps_copy_input_stream.c +36 -7
  1919. data/third_party/upb/upb/wire/eps_copy_input_stream.h +94 -380
  1920. data/third_party/upb/upb/wire/internal/decoder.c +1 -14
  1921. data/third_party/upb/upb/wire/internal/decoder.h +84 -24
  1922. data/third_party/upb/upb/wire/internal/eps_copy_input_stream.h +339 -0
  1923. data/third_party/upb/upb/wire/internal/reader.h +29 -12
  1924. data/third_party/upb/upb/wire/reader.c +35 -22
  1925. data/third_party/upb/upb/wire/reader.h +11 -18
  1926. data/third_party/utf8_range/utf8_range.c +1 -1
  1927. data/third_party/utf8_range/utf8_range.h +2 -1
  1928. metadata +158 -96
  1929. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +0 -117
  1930. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +0 -109
  1931. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +0 -80
  1932. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +0 -86
  1933. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +0 -83
  1934. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +0 -91
  1935. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
  1936. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
  1937. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +0 -217
  1938. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +0 -835
  1939. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +0 -108
  1940. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +0 -73
  1941. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +0 -298
  1942. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +0 -97
  1943. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +0 -38
  1944. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -150
  1945. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -60
  1946. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +0 -199
  1947. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +0 -48
  1948. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +0 -300
  1949. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +0 -84
  1950. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +0 -213
  1951. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +0 -48
  1952. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +0 -716
  1953. data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
  1954. data/src/core/lib/iomgr/resolve_address.cc +0 -59
  1955. data/src/core/lib/iomgr/resolve_address.h +0 -125
  1956. data/src/core/lib/iomgr/resolve_address_impl.h +0 -58
  1957. data/src/core/lib/iomgr/resolve_address_posix.cc +0 -184
  1958. data/src/core/lib/iomgr/resolve_address_posix.h +0 -78
  1959. data/src/core/lib/iomgr/resolve_address_windows.cc +0 -169
  1960. data/src/core/lib/iomgr/resolve_address_windows.h +0 -76
  1961. data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +0 -781
  1962. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +0 -93
  1963. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +0 -203
  1964. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +0 -838
  1965. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +0 -1237
  1966. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +0 -130
  1967. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +0 -35
  1968. data/src/core/resolver/dns/dns_resolver_plugin.cc +0 -69
  1969. data/src/core/resolver/dns/native/dns_resolver.cc +0 -173
  1970. data/src/core/util/json/json_util.cc +0 -101
  1971. data/src/core/util/json/json_util.h +0 -163
  1972. data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
  1973. data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
  1974. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
  1975. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
  1976. data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
  1977. data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
  1978. data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
  1979. data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
  1980. data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
  1981. data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
  1982. data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
  1983. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
  1984. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
  1985. data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
  1986. data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
  1987. data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
  1988. data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
  1989. data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
  1990. data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
  1991. data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
  1992. data/third_party/upb/upb/message/internal/tagged_ptr.h +0 -56
  1993. data/third_party/upb/upb/message/tagged_ptr.h +0 -48
@@ -16,12 +16,13 @@
16
16
  //
17
17
  //
18
18
 
19
+ #include "src/core/server/xds_server_config_fetcher.h"
20
+
19
21
  #include <grpc/credentials.h>
20
22
  #include <grpc/grpc.h>
21
23
  #include <grpc/grpc_security.h>
22
24
  #include <grpc/slice.h>
23
25
  #include <grpc/status.h>
24
- #include <grpc/support/port_platform.h>
25
26
  #include <string.h>
26
27
 
27
28
  #include <algorithm>
@@ -67,6 +68,7 @@
67
68
  #include "src/core/util/sync.h"
68
69
  #include "src/core/util/unique_type_name.h"
69
70
  #include "src/core/util/uri.h"
71
+ #include "src/core/xds/grpc/blackboard.h"
70
72
  #include "src/core/xds/grpc/certificate_provider_store.h"
71
73
  #include "src/core/xds/grpc/xds_bootstrap_grpc.h"
72
74
  #include "src/core/xds/grpc/xds_certificate_provider.h"
@@ -96,15 +98,40 @@ namespace {
96
98
 
97
99
  using ReadDelayHandle = XdsClient::ReadDelayHandle;
98
100
 
101
+ // Some common fields needed by most of the objects below. Refactored
102
+ // into a separate struct with its own ref-count to simplify lock
103
+ // annotations and save a bit of memory.
104
+ struct FetcherState final : public RefCounted<FetcherState> {
105
+ RefCountedPtr<GrpcXdsClient> xds_client;
106
+ RefCountedPtr<XdsResourceNameGenerator> resource_name_generator;
107
+ WorkSerializer work_serializer;
108
+
109
+ FetcherState(
110
+ RefCountedPtr<GrpcXdsClient> xds_client_in,
111
+ RefCountedPtr<XdsResourceNameGenerator> resource_name_generator_in)
112
+ : xds_client(std::move(xds_client_in)),
113
+ resource_name_generator(std::move(resource_name_generator_in)),
114
+ work_serializer(
115
+ grpc_event_engine::experimental::GetDefaultEventEngine()) {
116
+ GRPC_CHECK(xds_client != nullptr);
117
+ }
118
+
119
+ ~FetcherState() override {
120
+ xds_client.reset(DEBUG_LOCATION, "XdsServerConfigFetcher");
121
+ }
122
+ };
123
+
99
124
  // A server config fetcher that fetches the information for configuring server
100
125
  // listeners from the xDS control plane.
101
126
  class XdsServerConfigFetcher final : public ServerConfigFetcher {
102
127
  public:
103
- XdsServerConfigFetcher(RefCountedPtr<GrpcXdsClient> xds_client,
104
- grpc_server_xds_status_notifier notifier);
128
+ XdsServerConfigFetcher(
129
+ RefCountedPtr<GrpcXdsClient> xds_client,
130
+ grpc_server_xds_status_notifier notifier,
131
+ RefCountedPtr<XdsResourceNameGenerator> resource_name_generator);
105
132
 
106
133
  ~XdsServerConfigFetcher() override {
107
- xds_client_.reset(DEBUG_LOCATION, "XdsServerConfigFetcher");
134
+ fetcher_state_.reset(DEBUG_LOCATION, "XdsServerConfigFetcher");
108
135
  }
109
136
 
110
137
  void StartWatch(
@@ -115,40 +142,39 @@ class XdsServerConfigFetcher final : public ServerConfigFetcher {
115
142
 
116
143
  // Return the interested parties from the xds client so that it can be polled.
117
144
  grpc_pollset_set* interested_parties() override {
118
- return xds_client_->interested_parties();
145
+ return fetcher_state_->xds_client->interested_parties();
119
146
  }
120
147
 
121
148
  private:
122
149
  class ListenerWatcher;
123
150
 
124
- RefCountedPtr<GrpcXdsClient> xds_client_;
151
+ RefCountedPtr<FetcherState> fetcher_state_;
125
152
  const grpc_server_xds_status_notifier serving_status_notifier_;
126
- Mutex mu_;
127
153
  std::map<ServerConfigFetcher::WatcherInterface*, ListenerWatcher*>
128
- listener_watchers_ ABSL_GUARDED_BY(mu_);
154
+ listener_watchers_ ABSL_GUARDED_BY(&FetcherState::work_serializer);
129
155
  };
130
156
 
131
157
  // A watcher implementation for listening on LDS updates from the xDS control
132
158
  // plane. When a good LDS update is received, it creates a
133
- // FilterChainMatchManager object that would replace the existing (if any)
134
- // FilterChainMatchManager object after all referenced RDS resources are
159
+ // XdsConnectionManager object that would replace the existing (if any)
160
+ // XdsConnectionManager object after all referenced RDS resources are
135
161
  // fetched. Note that a good update also causes the server listener to start
136
162
  // listening if it isn't already. If an error LDS update is received (NACKed
137
- // resource, timeouts), the previous good FilterChainMatchManager, if any,
163
+ // resource, timeouts), the previous good XdsConnectionManager, if any,
138
164
  // continues to be used. If there isn't any previous good update or if the
139
165
  // update received was a fatal error (resource does not exist), the server
140
166
  // listener is made to stop listening.
141
167
  class XdsServerConfigFetcher::ListenerWatcher final
142
168
  : public XdsListenerResourceType::WatcherInterface {
143
169
  public:
144
- ListenerWatcher(RefCountedPtr<GrpcXdsClient> xds_client,
170
+ ListenerWatcher(RefCountedPtr<FetcherState> fetcher_state,
145
171
  std::unique_ptr<ServerConfigFetcher::WatcherInterface>
146
172
  server_config_watcher,
147
173
  grpc_server_xds_status_notifier serving_status_notifier,
148
174
  std::string listening_address);
149
175
 
150
176
  ~ListenerWatcher() override {
151
- xds_client_.reset(DEBUG_LOCATION, "ListenerWatcher");
177
+ fetcher_state_.reset(DEBUG_LOCATION, "ListenerWatcher");
152
178
  }
153
179
 
154
180
  void OnResourceChanged(
@@ -161,34 +187,34 @@ class XdsServerConfigFetcher::ListenerWatcher final
161
187
 
162
188
  const std::string& listening_address() const { return listening_address_; }
163
189
 
190
+ std::string ResourceName() const;
191
+
164
192
  private:
165
- class FilterChainMatchManager;
166
-
167
- void OnFatalError(absl::Status status) ABSL_EXCLUSIVE_LOCKS_REQUIRED(mu_);
168
-
169
- // Invoked by FilterChainMatchManager that is done fetching all referenced RDS
170
- // resources. If the calling FilterChainMatchManager is the
171
- // pending_filter_chain_match_manager_, it is promoted to be the
172
- // filter_chain_match_manager_ in use.
173
- void PendingFilterChainMatchManagerReady(
174
- FilterChainMatchManager* filter_chain_match_manager) {
175
- MutexLock lock(&mu_);
176
- PendingFilterChainMatchManagerReadyLocked(filter_chain_match_manager);
177
- }
178
- void PendingFilterChainMatchManagerReadyLocked(
179
- FilterChainMatchManager* filter_chain_match_manager)
180
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&mu_);
193
+ class XdsConnectionManager;
194
+
195
+ void OnFatalError(absl::Status status)
196
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer);
197
+
198
+ // Invoked by XdsConnectionManager that is done fetching all referenced RDS
199
+ // resources. If the calling XdsConnectionManager is the
200
+ // pending_connection_manager_, it is promoted to be the
201
+ // connection_manager_ in use.
202
+ void MaybeUpdateConnectionManager(XdsConnectionManager* connection_manager)
203
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer);
181
204
 
182
- RefCountedPtr<GrpcXdsClient> xds_client_;
205
+ RefCountedPtr<FetcherState> fetcher_state_;
183
206
  const std::unique_ptr<ServerConfigFetcher::WatcherInterface>
184
207
  server_config_watcher_;
185
208
  const grpc_server_xds_status_notifier serving_status_notifier_;
186
209
  const std::string listening_address_;
187
- Mutex mu_;
188
- RefCountedPtr<FilterChainMatchManager> filter_chain_match_manager_
189
- ABSL_GUARDED_BY(mu_);
190
- RefCountedPtr<FilterChainMatchManager> pending_filter_chain_match_manager_
191
- ABSL_GUARDED_BY(mu_);
210
+
211
+ RefCountedPtr<XdsConnectionManager> connection_manager_
212
+ ABSL_GUARDED_BY(&FetcherState::work_serializer);
213
+ RefCountedPtr<XdsConnectionManager> pending_connection_manager_
214
+ ABSL_GUARDED_BY(&FetcherState::work_serializer);
215
+
216
+ RefCountedPtr<Blackboard> blackboard_
217
+ ABSL_GUARDED_BY(&FetcherState::work_serializer);
192
218
  };
193
219
 
194
220
  // A connection manager used by the server listener code to inject channel args
@@ -196,164 +222,201 @@ class XdsServerConfigFetcher::ListenerWatcher final
196
222
  // appropriate filter chain from the xDS Listener resource and injects channel
197
223
  // args that configure the right mTLS certs and cause the right set of HTTP
198
224
  // filters to be injected.
199
- class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager final
225
+ class XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager final
200
226
  : public ServerConfigFetcher::ConnectionManager {
201
227
  public:
202
- FilterChainMatchManager(
203
- RefCountedPtr<GrpcXdsClient> xds_client,
204
- XdsListenerResource::FilterChainMap filter_chain_map,
205
- std::optional<XdsListenerResource::FilterChainData> default_filter_chain);
228
+ XdsConnectionManager(
229
+ RefCountedPtr<FetcherState> fetcher_state,
230
+ std::shared_ptr<const XdsListenerResource> listener_resource,
231
+ RefCountedPtr<ListenerWatcher> listener_watcher);
206
232
 
207
- ~FilterChainMatchManager() override {
208
- xds_client_.reset(DEBUG_LOCATION, "FilterChainMatchManager");
233
+ ~XdsConnectionManager() override {
234
+ fetcher_state_.reset(DEBUG_LOCATION, "XdsConnectionManager");
209
235
  }
210
236
 
237
+ void Start() ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer);
238
+
211
239
  absl::StatusOr<ChannelArgs> UpdateChannelArgsForConnection(
212
240
  const ChannelArgs& args, grpc_endpoint* tcp) override;
213
241
 
214
- // Invoked by ListenerWatcher to start fetching referenced RDS resources.
215
- void StartRdsWatch(RefCountedPtr<ListenerWatcher> listener_watcher)
216
- ABSL_EXCLUSIVE_LOCKS_REQUIRED(&ListenerWatcher::mu_);
217
-
218
- const XdsListenerResource::FilterChainMap& filter_chain_map() const {
219
- return filter_chain_map_;
220
- }
221
-
222
- const std::optional<XdsListenerResource::FilterChainData>&
223
- default_filter_chain() const {
224
- return default_filter_chain_;
242
+ const XdsListenerResource& listener_resource() const {
243
+ return *listener_resource_;
225
244
  }
226
245
 
227
246
  private:
228
- class RouteConfigWatcher;
229
- struct RdsUpdateState {
230
- RouteConfigWatcher* watcher;
231
- std::optional<absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>>
232
- rds_update;
233
- };
234
-
235
- class XdsServerConfigSelector;
236
- class StaticXdsServerConfigSelectorProvider;
237
- class DynamicXdsServerConfigSelectorProvider;
247
+ class L4FilterChain;
238
248
 
239
- absl::StatusOr<RefCountedPtr<XdsCertificateProvider>>
240
- CreateOrGetXdsCertificateProviderFromFilterChainData(
241
- const XdsListenerResource::FilterChainData* filter_chain);
242
249
  void Orphaned() override;
243
250
 
244
- // Helper functions invoked by RouteConfigWatcher when there are updates to
245
- // RDS resources.
246
- void OnRouteConfigChanged(
247
- const std::string& resource_name,
248
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
249
- route_config);
250
- void OnAmbientError(const std::string& resource_name, absl::Status status);
251
+ // Checks if all L4FilterChains have their RouteConfig. If so,
252
+ // promotes this XdsConnectionManager to be the current one.
253
+ void MaybeUpdateConnectionManager()
254
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer);
251
255
 
252
256
  // Executes cb once for each unique filter chain object in the LDS resource.
253
257
  void ForEachFilterChain(
254
- absl::FunctionRef<void(XdsListenerResource::FilterChainData&)> cb);
258
+ absl::FunctionRef<void(const XdsListenerResource::FilterChainData&)> cb)
259
+ const;
255
260
 
256
- RefCountedPtr<GrpcXdsClient> xds_client_;
257
- // This ref is only kept around till the FilterChainMatchManager becomes
258
- // ready.
259
- RefCountedPtr<ListenerWatcher> listener_watcher_;
260
- // TODO(roth): Consider holding a ref to the LDS resource and storing
261
- // a pointer to the filter chain data within that LDS resource, rather
262
- // than copying the filter chain data here.
263
- XdsListenerResource::FilterChainMap filter_chain_map_;
264
- std::optional<XdsListenerResource::FilterChainData> default_filter_chain_;
265
- Mutex mu_;
266
- size_t rds_resources_yet_to_fetch_ ABSL_GUARDED_BY(mu_) = 0;
267
- std::map<std::string /* resource_name */, RdsUpdateState> rds_map_
268
- ABSL_GUARDED_BY(mu_);
261
+ RefCountedPtr<FetcherState> fetcher_state_;
262
+
263
+ std::shared_ptr<const XdsListenerResource> listener_resource_;
264
+
265
+ // TODO(roth): Consider refactoring the FilterChainMap data structure
266
+ // such that we construct it here rather than at config parsing time,
267
+ // so that we don't need to maintain two different data structures
268
+ // here (first we find the FilterChainData object in FilterChainMap,
269
+ // and then we look up that FilterChainData object in this map).
269
270
  std::map<const XdsListenerResource::FilterChainData*,
270
- RefCountedPtr<XdsCertificateProvider>>
271
- certificate_providers_map_ ABSL_GUARDED_BY(mu_);
271
+ OrphanablePtr<L4FilterChain>>
272
+ l4_filter_chains_;
273
+
274
+ // This ref is only kept around until the XdsConnectionManager becomes
275
+ // ready.
276
+ RefCountedPtr<ListenerWatcher> listener_watcher_
277
+ ABSL_GUARDED_BY(&FetcherState::work_serializer);
278
+
279
+ RefCountedPtr<Blackboard> blackboard_
280
+ ABSL_GUARDED_BY(&FetcherState::work_serializer);
272
281
  };
273
282
 
274
- // A watcher implementation for listening on RDS updates referenced to by a
275
- // FilterChainMatchManager object. After all referenced RDS resources are
276
- // fetched (errors are allowed), the FilterChainMatchManager tries to replace
277
- // the current object. The watcher continues to update the referenced RDS
278
- // resources so that new XdsServerConfigSelectorProvider objects are created
279
- // with the latest updates and new connections do not need to wait for the RDS
280
- // resources to be fetched.
281
- class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
282
- RouteConfigWatcher final
283
- : public XdsRouteConfigResourceType::WatcherInterface {
283
+ class XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
284
+ L4FilterChain final : public InternallyRefCounted<L4FilterChain> {
284
285
  public:
285
- RouteConfigWatcher(
286
- std::string resource_name,
287
- WeakRefCountedPtr<FilterChainMatchManager> filter_chain_match_manager)
288
- : resource_name_(std::move(resource_name)),
289
- filter_chain_match_manager_(std::move(filter_chain_match_manager)) {}
286
+ L4FilterChain(RefCountedPtr<FetcherState> fetcher_state,
287
+ WeakRefCountedPtr<XdsConnectionManager> connection_manager,
288
+ const XdsListenerResource::FilterChainData& filter_chain_data);
290
289
 
291
- void OnResourceChanged(
290
+ void Orphan() override
291
+ // Always called within WorkSerializer, but the compiler can't tell.
292
+ ABSL_NO_THREAD_SAFETY_ANALYSIS;
293
+
294
+ bool HasRouteConfig() const
295
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer) {
296
+ return config_selector_provider_ != nullptr;
297
+ }
298
+
299
+ absl::StatusOr<ChannelArgs> UpdateChannelArgsForConnection(
300
+ const ChannelArgs& args) const;
301
+
302
+ private:
303
+ class XdsServerConfigSelector;
304
+ class XdsServerConfigSelectorProvider;
305
+ class RouteConfigWatcher;
306
+
307
+ void OnRouteConfigChanged(
292
308
  absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
293
- route_config,
294
- RefCountedPtr<ReadDelayHandle> /* read_delay_handle */) override {
295
- filter_chain_match_manager_->OnRouteConfigChanged(resource_name_,
296
- std::move(route_config));
309
+ route_config)
310
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer);
311
+ void OnAmbientError(absl::Status status)
312
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer);
313
+
314
+ void UpdateServerConfigSelector(
315
+ absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
316
+ route_config)
317
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer);
318
+
319
+ absl::StatusOr<RefCountedPtr<ServerConfigSelector>>
320
+ CreateServerConfigSelector(
321
+ absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
322
+ route_config)
323
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer);
324
+
325
+ RefCountedPtr<FetcherState> fetcher_state_;
326
+ WeakRefCountedPtr<XdsConnectionManager> connection_manager_;
327
+
328
+ // Reference into data owned by XdsConnectionManager.
329
+ const XdsListenerResource::FilterChainData& filter_chain_data_;
330
+
331
+ absl::StatusOr<RefCountedPtr<XdsCertificateProvider>> certificate_provider_;
332
+
333
+ RouteConfigWatcher* watcher_ = nullptr;
334
+
335
+ // Will be null until we get the initial RouteConfiguration.
336
+ //
337
+ // The lock annotation here is a little misleading: this is actually
338
+ // set only once inside of the WorkSerializer, but after that it gets
339
+ // accessed from outside of the WorkSerializer. We use the lock
340
+ // annotation just to make sure we don't accidentally modify this
341
+ // field anywhere else in the future, and we inhibit the lock
342
+ // annotation for the known-safe read from outside of the WorkSerializer.
343
+ RefCountedPtr<XdsServerConfigSelectorProvider> config_selector_provider_
344
+ ABSL_GUARDED_BY(&FetcherState::work_serializer);
345
+ };
346
+
347
+ using FilterInstance =
348
+ std::pair<const XdsHttpFilterFactory*, RefCountedPtr<const FilterConfig>>;
349
+
350
+ struct FilterList final : public FilterChain {
351
+ std::vector<FilterInstance> filters;
352
+ };
353
+
354
+ class FilterListBuilder final
355
+ : public XdsRouting::RouteConfigFilterChainBuilder::XdsFilterChainBuilder {
356
+ public:
357
+ void AddFilter(const XdsHttpFilterFactory* factory,
358
+ RefCountedPtr<const FilterConfig> config) override {
359
+ if (filters_ == nullptr) filters_ = MakeRefCounted<FilterList>();
360
+ filters_->filters.emplace_back(factory, std::move(config));
297
361
  }
298
362
 
299
- void OnAmbientError(
300
- absl::Status status,
301
- RefCountedPtr<ReadDelayHandle> /* read_delay_handle */) override {
302
- filter_chain_match_manager_->OnAmbientError(resource_name_,
303
- std::move(status));
363
+ absl::StatusOr<RefCountedPtr<FilterChain>> Build() override {
364
+ if (filters_ == nullptr) return MakeRefCounted<FilterList>();
365
+ return std::move(filters_);
304
366
  }
305
367
 
306
- private:
307
- std::string resource_name_;
308
- WeakRefCountedPtr<FilterChainMatchManager> filter_chain_match_manager_;
368
+ RefCountedPtr<FilterList> filters_;
309
369
  };
310
370
 
311
- // An implementation of ServerConfigSelector used by
312
- // StaticXdsServerConfigSelectorProvider and
313
- // DynamicXdsServerConfigSelectorProvider to parse the RDS update and get
314
- // per-call configuration based on incoming metadata.
315
- class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
316
- XdsServerConfigSelector final : public ServerConfigSelector {
371
+ // An implementation of ServerConfigSelector that stores parsed xDS filter
372
+ // configs for each route, constructs filter chains for each, and
373
+ // selects the appropriate filter chain for each RPC.
374
+ class XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
375
+ L4FilterChain::XdsServerConfigSelector final : public ServerConfigSelector {
317
376
  public:
318
377
  static absl::StatusOr<RefCountedPtr<XdsServerConfigSelector>> Create(
319
378
  const XdsHttpFilterRegistry& http_filter_registry,
320
- std::shared_ptr<const XdsRouteConfigResource> rds_update,
379
+ XdsTransportFactory& transport_factory,
321
380
  const std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>&
322
- http_filters);
323
- ~XdsServerConfigSelector() override = default;
381
+ http_filters,
382
+ std::shared_ptr<const XdsRouteConfigResource> route_config,
383
+ Blackboard& blackboard);
384
+
385
+ std::unique_ptr<ConnectionState> BuildFilterChains(
386
+ FilterChainBuilder& builder) override;
324
387
 
325
388
  absl::StatusOr<CallConfig> GetCallConfig(
326
- grpc_metadata_batch* metadata) override;
389
+ const ConnectionState* state, grpc_metadata_batch* metadata) override;
327
390
 
328
391
  private:
329
392
  struct VirtualHost {
330
393
  struct Route {
331
- // true if an action other than kNonForwardingAction is configured.
394
+ // True if an action other than kNonForwardingAction is configured.
332
395
  bool unsupported_action;
333
- // TODO(roth): Consider holding a ref to the RDS resource and storing
334
- // a pointer to the matchers within that RDS resource, rather than
335
- // copying the matchers here.
336
- XdsRouteConfigResource::Route::Matchers matchers;
337
- RefCountedPtr<ServiceConfig> method_config;
396
+ // Points inside of XdsServerConfigSelector::route_config_.
397
+ const XdsRouteConfigResource::Route::Matchers* matchers;
398
+ // The list of filter instances and configs to use for this route.
399
+ RefCountedPtr<const FilterList> filter_list;
338
400
  };
339
401
 
340
402
  class RouteListIterator final : public XdsRouting::RouteListIterator {
341
403
  public:
342
- explicit RouteListIterator(const std::vector<Route>* routes)
404
+ explicit RouteListIterator(const std::vector<Route>& routes)
343
405
  : routes_(routes) {}
344
406
 
345
- size_t Size() const override { return routes_->size(); }
407
+ size_t Size() const override { return routes_.size(); }
346
408
 
347
409
  const XdsRouteConfigResource::Route::Matchers& GetMatchersForRoute(
348
410
  size_t index) const override {
349
- return (*routes_)[index].matchers;
411
+ return *routes_[index].matchers;
350
412
  }
351
413
 
352
414
  private:
353
- const std::vector<Route>* routes_;
415
+ const std::vector<Route>& routes_;
354
416
  };
355
417
 
356
- std::vector<std::string> domains;
418
+ // Points inside of XdsServerConfigSelector::route_config_.
419
+ const std::vector<std::string>* domains;
357
420
  std::vector<Route> routes;
358
421
  };
359
422
 
@@ -361,144 +424,28 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
361
424
  : public XdsRouting::VirtualHostListIterator {
362
425
  public:
363
426
  explicit VirtualHostListIterator(
364
- const std::vector<VirtualHost>* virtual_hosts)
427
+ const std::vector<VirtualHost>& virtual_hosts)
365
428
  : virtual_hosts_(virtual_hosts) {}
366
429
 
367
- size_t Size() const override { return virtual_hosts_->size(); }
430
+ size_t Size() const override { return virtual_hosts_.size(); }
368
431
 
369
432
  const std::vector<std::string>& GetDomainsForVirtualHost(
370
433
  size_t index) const override {
371
- return (*virtual_hosts_)[index].domains;
434
+ return *virtual_hosts_[index].domains;
372
435
  }
373
436
 
374
437
  private:
375
- const std::vector<VirtualHost>* virtual_hosts_;
438
+ const std::vector<VirtualHost>& virtual_hosts_;
376
439
  };
377
440
 
378
- std::vector<VirtualHost> virtual_hosts_;
379
- };
380
-
381
- // An XdsServerConfigSelectorProvider implementation for when the
382
- // RouteConfiguration is available inline.
383
- class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
384
- StaticXdsServerConfigSelectorProvider final
385
- : public ServerConfigSelectorProvider {
386
- public:
387
- StaticXdsServerConfigSelectorProvider(
388
- RefCountedPtr<GrpcXdsClient> xds_client,
389
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
390
- static_resource,
391
- std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
392
- http_filters)
393
- : xds_client_(std::move(xds_client)),
394
- static_resource_(std::move(static_resource)),
395
- http_filters_(std::move(http_filters)) {}
396
-
397
- ~StaticXdsServerConfigSelectorProvider() override {
398
- xds_client_.reset(DEBUG_LOCATION, "StaticXdsServerConfigSelectorProvider");
399
- }
400
-
401
- absl::StatusOr<RefCountedPtr<ServerConfigSelector>> Watch(
402
- std::unique_ptr<ServerConfigSelectorProvider::ServerConfigSelectorWatcher>
403
- watcher) override {
404
- GRPC_CHECK(watcher_ == nullptr);
405
- watcher_ = std::move(watcher);
406
- if (!static_resource_.ok()) {
407
- return static_resource_.status();
408
- }
409
- return XdsServerConfigSelector::Create(
410
- DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
411
- .http_filter_registry(),
412
- static_resource_.value(), http_filters_);
413
- }
414
-
415
- void CancelWatch() override { watcher_.reset(); }
416
-
417
- private:
418
- void Orphaned() override {}
419
-
420
- RefCountedPtr<GrpcXdsClient> xds_client_;
421
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
422
- static_resource_;
423
- // TODO(roth): Consider holding a ref to the LDS resource and storing
424
- // a pointer to the HTTP filters within that LDS resource, rather than
425
- // copying the HTTP filters here.
426
- std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
427
- http_filters_;
428
- std::unique_ptr<ServerConfigSelectorProvider::ServerConfigSelectorWatcher>
429
- watcher_;
430
- };
431
-
432
- // An XdsServerConfigSelectorProvider implementation for when the
433
- // RouteConfiguration is to be fetched separately via RDS.
434
- class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
435
- DynamicXdsServerConfigSelectorProvider final
436
- : public ServerConfigSelectorProvider {
437
- public:
438
- DynamicXdsServerConfigSelectorProvider(
439
- RefCountedPtr<GrpcXdsClient> xds_client, std::string resource_name,
440
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
441
- initial_resource,
442
- std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
443
- http_filters);
444
-
445
- ~DynamicXdsServerConfigSelectorProvider() override {
446
- xds_client_.reset(DEBUG_LOCATION, "DynamicXdsServerConfigSelectorProvider");
447
- }
448
-
449
- absl::StatusOr<RefCountedPtr<ServerConfigSelector>> Watch(
450
- std::unique_ptr<ServerConfigSelectorProvider::ServerConfigSelectorWatcher>
451
- watcher) override;
452
- void CancelWatch() override;
453
-
454
- private:
455
- class RouteConfigWatcher;
456
-
457
- void Orphaned() override;
458
- void OnRouteConfigChanged(
459
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>> rds_update);
460
- void OnAmbientError(absl::Status status);
461
-
462
- RefCountedPtr<GrpcXdsClient> xds_client_;
463
- std::string resource_name_;
464
- // TODO(roth): Consider holding a ref to the LDS resource and storing
465
- // a pointer to the HTTP filters within that LDS resource, rather than
466
- // copying the HTTP filters here.
467
- std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
468
- http_filters_;
469
- RouteConfigWatcher* route_config_watcher_ = nullptr;
470
- Mutex mu_;
471
- std::unique_ptr<ServerConfigSelectorProvider::ServerConfigSelectorWatcher>
472
- watcher_ ABSL_GUARDED_BY(mu_);
473
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>> resource_
474
- ABSL_GUARDED_BY(mu_);
475
- };
476
-
477
- // A watcher implementation for updating the RDS resource used by
478
- // DynamicXdsServerConfigSelectorProvider
479
- class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
480
- DynamicXdsServerConfigSelectorProvider::RouteConfigWatcher final
481
- : public XdsRouteConfigResourceType::WatcherInterface {
482
- public:
483
- explicit RouteConfigWatcher(
484
- WeakRefCountedPtr<DynamicXdsServerConfigSelectorProvider> parent)
485
- : parent_(std::move(parent)) {}
486
-
487
- void OnResourceChanged(
488
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
489
- route_config,
490
- RefCountedPtr<ReadDelayHandle> /* read_delay_handle */) override {
491
- parent_->OnRouteConfigChanged(std::move(route_config));
492
- }
493
-
494
- void OnAmbientError(
495
- absl::Status status,
496
- RefCountedPtr<ReadDelayHandle> /* read_delay_handle */) override {
497
- parent_->OnAmbientError(std::move(status));
498
- }
441
+ struct XdsConnectionState final : public ConnectionState {
442
+ absl::flat_hash_map<const VirtualHost::Route*,
443
+ absl::StatusOr<RefCountedPtr<const FilterChain>>>
444
+ filter_chains;
445
+ };
499
446
 
500
- private:
501
- WeakRefCountedPtr<DynamicXdsServerConfigSelectorProvider> parent_;
447
+ std::shared_ptr<const XdsRouteConfigResource> route_config_;
448
+ std::vector<VirtualHost> virtual_hosts_;
502
449
  };
503
450
 
504
451
  //
@@ -507,56 +454,54 @@ class XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
507
454
 
508
455
  XdsServerConfigFetcher::XdsServerConfigFetcher(
509
456
  RefCountedPtr<GrpcXdsClient> xds_client,
510
- grpc_server_xds_status_notifier notifier)
511
- : xds_client_(std::move(xds_client)), serving_status_notifier_(notifier) {
512
- GRPC_CHECK(xds_client_ != nullptr);
513
- }
514
-
515
- std::string ListenerResourceName(absl::string_view resource_name_template,
516
- absl::string_view listening_address) {
517
- std::string tmp;
518
- if (absl::StartsWith(resource_name_template, "xdstp:")) {
519
- tmp = URI::PercentEncodePath(listening_address);
520
- listening_address = tmp;
521
- }
522
- return absl::StrReplaceAll(resource_name_template,
523
- {{"%s", listening_address}});
524
- }
457
+ grpc_server_xds_status_notifier notifier,
458
+ RefCountedPtr<XdsResourceNameGenerator> resource_name_generator)
459
+ : fetcher_state_(MakeRefCounted<FetcherState>(
460
+ std::move(xds_client), std::move(resource_name_generator))),
461
+ serving_status_notifier_(notifier) {}
525
462
 
526
463
  void XdsServerConfigFetcher::StartWatch(
527
464
  std::string listening_address,
528
465
  std::unique_ptr<ServerConfigFetcher::WatcherInterface> watcher) {
529
- ServerConfigFetcher::WatcherInterface* watcher_ptr = watcher.get();
530
- auto listener_watcher = MakeRefCounted<ListenerWatcher>(
531
- xds_client_.Ref(DEBUG_LOCATION, "ListenerWatcher"), std::move(watcher),
532
- serving_status_notifier_, listening_address);
533
- auto* listener_watcher_ptr = listener_watcher.get();
534
- XdsListenerResourceType::StartWatch(
535
- xds_client_.get(),
536
- ListenerResourceName(
537
- DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
538
- .server_listener_resource_name_template(),
539
- listening_address),
540
- std::move(listener_watcher));
541
- MutexLock lock(&mu_);
542
- listener_watchers_.emplace(watcher_ptr, listener_watcher_ptr);
466
+ fetcher_state_->work_serializer.Run(
467
+ [self = RefAsSubclass<XdsServerConfigFetcher>(),
468
+ listening_address = std::move(listening_address),
469
+ watcher = std::move(watcher)]()
470
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(
471
+ &FetcherState::work_serializer) mutable {
472
+ ServerConfigFetcher::WatcherInterface* watcher_ptr = watcher.get();
473
+ auto listener_watcher = MakeRefCounted<ListenerWatcher>(
474
+ self->fetcher_state_.Ref(DEBUG_LOCATION, "ListenerWatcher"),
475
+ std::move(watcher), self->serving_status_notifier_,
476
+ listening_address);
477
+ auto* listener_watcher_ptr = listener_watcher.get();
478
+ std::string resource_name = listener_watcher->ResourceName();
479
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
480
+ << "[XdsServerConfigFetcher " << self.get()
481
+ << "]: starting watch for LDS resource " << resource_name;
482
+ XdsListenerResourceType::StartWatch(
483
+ self->fetcher_state_->xds_client.get(), resource_name,
484
+ std::move(listener_watcher));
485
+ self->listener_watchers_.emplace(watcher_ptr, listener_watcher_ptr);
486
+ });
543
487
  }
544
488
 
545
489
  void XdsServerConfigFetcher::CancelWatch(
546
490
  ServerConfigFetcher::WatcherInterface* watcher) {
547
- MutexLock lock(&mu_);
548
- auto it = listener_watchers_.find(watcher);
549
- if (it != listener_watchers_.end()) {
550
- // Cancel the watch on the listener before erasing
551
- XdsListenerResourceType::CancelWatch(
552
- xds_client_.get(),
553
- ListenerResourceName(
554
- DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
555
- .server_listener_resource_name_template(),
556
- it->second->listening_address()),
557
- it->second, false /* delay_unsubscription */);
558
- listener_watchers_.erase(it);
559
- }
491
+ fetcher_state_->work_serializer.Run(
492
+ [self = RefAsSubclass<XdsServerConfigFetcher>(), watcher]()
493
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer) {
494
+ auto it = self->listener_watchers_.find(watcher);
495
+ if (it == self->listener_watchers_.end()) return;
496
+ std::string resource_name = it->second->ResourceName();
497
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
498
+ << "[XdsServerConfigFetcher " << self.get()
499
+ << "]: cancelling watch for LDS resource " << resource_name;
500
+ XdsListenerResourceType::CancelWatch(
501
+ self->fetcher_state_->xds_client.get(), resource_name,
502
+ it->second, /*delay_unsubscription=*/false);
503
+ self->listener_watchers_.erase(it);
504
+ });
560
505
  }
561
506
 
562
507
  //
@@ -564,75 +509,107 @@ void XdsServerConfigFetcher::CancelWatch(
564
509
  //
565
510
 
566
511
  XdsServerConfigFetcher::ListenerWatcher::ListenerWatcher(
567
- RefCountedPtr<GrpcXdsClient> xds_client,
512
+ RefCountedPtr<FetcherState> fetcher_state,
568
513
  std::unique_ptr<ServerConfigFetcher::WatcherInterface>
569
514
  server_config_watcher,
570
515
  grpc_server_xds_status_notifier serving_status_notifier,
571
516
  std::string listening_address)
572
- : xds_client_(std::move(xds_client)),
517
+ : fetcher_state_(std::move(fetcher_state)),
573
518
  server_config_watcher_(std::move(server_config_watcher)),
574
519
  serving_status_notifier_(serving_status_notifier),
575
- listening_address_(std::move(listening_address)) {}
520
+ listening_address_(std::move(listening_address)),
521
+ blackboard_(MakeRefCounted<Blackboard>()) {
522
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
523
+ << "[ListenerWatcher " << this << "]: created for address "
524
+ << listening_address_;
525
+ }
526
+
527
+ // Returns true if the listener address matches the address that the
528
+ // server is actually listening on.
529
+ bool ListenerAddressMatches(absl::string_view listener_address,
530
+ absl::string_view server_address) {
531
+ if (listener_address == server_address) return true;
532
+ absl::string_view listener_host;
533
+ absl::string_view listener_port;
534
+ if (!SplitHostPort(listener_address, &listener_host, &listener_port)) {
535
+ return false;
536
+ }
537
+ absl::string_view server_host;
538
+ absl::string_view server_port;
539
+ if (!SplitHostPort(server_address, &server_host, &server_port)) {
540
+ return false;
541
+ }
542
+ if (listener_host != server_host) return false;
543
+ return listener_port == "0" || listener_port == server_port;
544
+ }
576
545
 
577
546
  void XdsServerConfigFetcher::ListenerWatcher::OnResourceChanged(
578
547
  absl::StatusOr<std::shared_ptr<const XdsListenerResource>> listener,
579
- RefCountedPtr<ReadDelayHandle> /* read_delay_handle */) {
580
- if (!listener.ok()) {
581
- MutexLock lock(&mu_);
582
- OnFatalError(absl::Status(
583
- listener.status().code(),
584
- absl::StrCat("LDS resource: ", listener.status().message())));
585
- return;
586
- }
587
- GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
588
- << "[ListenerWatcher " << this << "] Received LDS update from xds client "
589
- << xds_client_.get() << ": " << (*listener)->ToString();
590
- auto* tcp_listener =
591
- std::get_if<XdsListenerResource::TcpListener>(&(*listener)->listener);
592
- if (tcp_listener == nullptr) {
593
- MutexLock lock(&mu_);
594
- OnFatalError(
595
- absl::FailedPreconditionError("LDS resource is not a TCP listener"));
596
- return;
597
- }
598
- if (tcp_listener->address != listening_address_) {
599
- MutexLock lock(&mu_);
600
- OnFatalError(absl::FailedPreconditionError(
601
- "Address in LDS update does not match listening address"));
602
- return;
603
- }
604
- auto new_filter_chain_match_manager = MakeRefCounted<FilterChainMatchManager>(
605
- xds_client_.Ref(DEBUG_LOCATION, "FilterChainMatchManager"),
606
- tcp_listener->filter_chain_map, tcp_listener->default_filter_chain);
607
- MutexLock lock(&mu_);
608
- if (filter_chain_match_manager_ == nullptr ||
609
- !(new_filter_chain_match_manager->filter_chain_map() ==
610
- filter_chain_match_manager_->filter_chain_map() &&
611
- new_filter_chain_match_manager->default_filter_chain() ==
612
- filter_chain_match_manager_->default_filter_chain())) {
613
- pending_filter_chain_match_manager_ =
614
- std::move(new_filter_chain_match_manager);
615
- pending_filter_chain_match_manager_->StartRdsWatch(
616
- RefAsSubclass<ListenerWatcher>());
617
- }
548
+ RefCountedPtr<ReadDelayHandle> read_delay_handle) {
549
+ fetcher_state_->work_serializer.Run(
550
+ [self = RefAsSubclass<ListenerWatcher>(), listener = std::move(listener),
551
+ read_delay_handle = std::move(read_delay_handle)]()
552
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(
553
+ &FetcherState::work_serializer) mutable {
554
+ if (!listener.ok()) {
555
+ self->OnFatalError(AddMessagePrefix(
556
+ absl::StrCat("LDS resource ", self->ResourceName()),
557
+ listener.status()));
558
+ return;
559
+ }
560
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
561
+ << "[ListenerWatcher " << self.get()
562
+ << "] Received LDS update from xds client "
563
+ << self->fetcher_state_->xds_client.get() << ": "
564
+ << (*listener)->ToString();
565
+ auto* tcp_listener = std::get_if<XdsListenerResource::TcpListener>(
566
+ &(*listener)->listener);
567
+ if (tcp_listener == nullptr) {
568
+ self->OnFatalError(absl::FailedPreconditionError(
569
+ absl::StrCat("LDS resource ", self->ResourceName(),
570
+ " is not a TCP listener")));
571
+ return;
572
+ }
573
+ if (!ListenerAddressMatches(tcp_listener->address,
574
+ self->listening_address_)) {
575
+ self->OnFatalError(absl::FailedPreconditionError(
576
+ absl::StrCat("LDS resource ", self->ResourceName(),
577
+ " address does not match listening address")));
578
+ return;
579
+ }
580
+ if (self->connection_manager_ != nullptr &&
581
+ **listener == self->connection_manager_->listener_resource()) {
582
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
583
+ << "[ListenerWatcher " << self.get()
584
+ << "]: ignoring unchanged LDS resource for "
585
+ << self->listening_address_;
586
+ return;
587
+ }
588
+ self->pending_connection_manager_ =
589
+ MakeRefCounted<XdsConnectionManager>(
590
+ self->fetcher_state_.Ref(DEBUG_LOCATION,
591
+ "XdsConnectionManager"),
592
+ std::move(*listener), self);
593
+ self->pending_connection_manager_->Start();
594
+ });
618
595
  }
619
596
 
620
597
  void XdsServerConfigFetcher::ListenerWatcher::OnAmbientError(
621
598
  absl::Status status, RefCountedPtr<ReadDelayHandle> /*read_delay_handle*/) {
622
- LOG(ERROR) << "ListenerWatcher:" << this
623
- << " XdsClient reports ambient error: " << status << " for "
624
- << listening_address_
625
- << "; ignoring in favor of existing resource";
599
+ LOG(ERROR)
600
+ << "[ListenerWatcher:" << this
601
+ << "] XdsClient reports ambient error for LDS resource for address "
602
+ << listening_address_ << ": " << status;
626
603
  }
627
604
 
628
605
  void XdsServerConfigFetcher::ListenerWatcher::OnFatalError(
629
606
  absl::Status status) {
630
- pending_filter_chain_match_manager_.reset();
631
- if (filter_chain_match_manager_ != nullptr) {
607
+ pending_connection_manager_.reset();
608
+ if (connection_manager_ != nullptr) {
632
609
  // The server has started listening already, so we need to gracefully
633
610
  // stop serving.
634
611
  server_config_watcher_->StopServing();
635
- filter_chain_match_manager_.reset();
612
+ connection_manager_.reset();
636
613
  }
637
614
  if (serving_status_notifier_.on_serving_status_update != nullptr) {
638
615
  serving_status_notifier_.on_serving_status_update(
@@ -640,28 +617,26 @@ void XdsServerConfigFetcher::ListenerWatcher::OnFatalError(
640
617
  {static_cast<grpc_status_code>(status.raw_code()),
641
618
  std::string(status.message()).c_str()});
642
619
  } else {
643
- LOG(ERROR) << "ListenerWatcher:" << this << " Encountered fatal error "
620
+ LOG(ERROR) << "[ListenerWatcher:" << this << "] Encountered fatal error "
644
621
  << status << "; not serving on " << listening_address_;
645
622
  }
646
623
  }
647
624
 
648
- void XdsServerConfigFetcher::ListenerWatcher::
649
- PendingFilterChainMatchManagerReadyLocked(
650
- XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager*
651
- filter_chain_match_manager) {
652
- if (pending_filter_chain_match_manager_ != filter_chain_match_manager) {
653
- // This FilterChainMatchManager is no longer the current pending resource.
625
+ void XdsServerConfigFetcher::ListenerWatcher::MaybeUpdateConnectionManager(
626
+ XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager*
627
+ connection_manager) {
628
+ if (pending_connection_manager_ != connection_manager) {
629
+ // This XdsConnectionManager is no longer the current pending resource.
654
630
  // It should get cleaned up eventually. Ignore this update.
655
631
  return;
656
632
  }
657
- bool first_good_update = filter_chain_match_manager_ == nullptr;
658
- // Promote the pending FilterChainMatchManager
659
- filter_chain_match_manager_ = std::move(pending_filter_chain_match_manager_);
660
- // TODO(yashykt): Right now, the server_config_watcher_ does not invoke
661
- // XdsServerConfigFetcher while holding a lock, but that might change in the
662
- // future in which case we would want to execute this update outside the
663
- // critical region through a WorkSerializer similar to XdsClient.
664
- server_config_watcher_->UpdateConnectionManager(filter_chain_match_manager_);
633
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
634
+ << "[ListenerWatcher " << this << "]: promoting XdsConnectionManager "
635
+ << connection_manager;
636
+ bool first_good_update = connection_manager_ == nullptr;
637
+ // Promote the pending XdsConnectionManager
638
+ connection_manager_ = std::move(pending_connection_manager_);
639
+ server_config_watcher_->UpdateConnectionManager(connection_manager_);
665
640
  // Let the logger know about the update if there was no previous good update.
666
641
  if (first_good_update) {
667
642
  if (serving_status_notifier_.on_serving_status_update != nullptr) {
@@ -675,29 +650,70 @@ void XdsServerConfigFetcher::ListenerWatcher::
675
650
  }
676
651
  }
677
652
 
653
+ std::string XdsServerConfigFetcher::ListenerWatcher::ResourceName() const {
654
+ if (fetcher_state_->resource_name_generator != nullptr) {
655
+ return fetcher_state_->resource_name_generator->GetResourceName(
656
+ listening_address_);
657
+ }
658
+ absl::string_view resource_name_template =
659
+ DownCast<const GrpcXdsBootstrap&>(fetcher_state_->xds_client->bootstrap())
660
+ .server_listener_resource_name_template();
661
+ absl::string_view listening_address = listening_address_;
662
+ std::string tmp;
663
+ if (absl::StartsWith(resource_name_template, "xdstp:")) {
664
+ tmp = URI::PercentEncodePath(listening_address);
665
+ listening_address = tmp;
666
+ }
667
+ return absl::StrReplaceAll(resource_name_template,
668
+ {{"%s", listening_address}});
669
+ }
670
+
678
671
  //
679
- // XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager
672
+ // XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager
680
673
  //
681
674
 
682
- XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
683
- FilterChainMatchManager(
684
- RefCountedPtr<GrpcXdsClient> xds_client,
685
- XdsListenerResource::FilterChainMap filter_chain_map,
686
- std::optional<XdsListenerResource::FilterChainData>
687
- default_filter_chain)
688
- : xds_client_(std::move(xds_client)),
689
- filter_chain_map_(std::move(filter_chain_map)),
690
- default_filter_chain_(std::move(default_filter_chain)) {}
691
-
692
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
675
+ XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
676
+ XdsConnectionManager(
677
+ RefCountedPtr<FetcherState> fetcher_state,
678
+ std::shared_ptr<const XdsListenerResource> listener_resource,
679
+ RefCountedPtr<ListenerWatcher> listener_watcher)
680
+ : fetcher_state_(std::move(fetcher_state)),
681
+ listener_resource_(std::move(listener_resource)),
682
+ listener_watcher_(std::move(listener_watcher)),
683
+ blackboard_(listener_watcher_->blackboard_) {
684
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
685
+ << "[XdsConnectionManager " << this << "]: created";
686
+ }
687
+
688
+ void XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::Start() {
689
+ // Create L4FilterChain object for each L4 filter chain.
690
+ ForEachFilterChain(
691
+ [&](const XdsListenerResource::FilterChainData& filter_chain_data)
692
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer) {
693
+ auto l4_filter_chain = MakeOrphanable<L4FilterChain>(
694
+ fetcher_state_.Ref(DEBUG_LOCATION, "L4FilterChain"),
695
+ WeakRefAsSubclass<XdsConnectionManager>(), filter_chain_data);
696
+ l4_filter_chains_.emplace(&filter_chain_data,
697
+ std::move(l4_filter_chain));
698
+ });
699
+ // If all L4 filter chains had inline RouteConfigs, then promote this
700
+ // XdsConnectionManager immediately.
701
+ MaybeUpdateConnectionManager();
702
+ }
703
+
704
+ void XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
693
705
  ForEachFilterChain(
694
- absl::FunctionRef<void(XdsListenerResource::FilterChainData&)> cb) {
706
+ absl::FunctionRef<void(const XdsListenerResource::FilterChainData&)> cb)
707
+ const {
708
+ const auto& tcp_listener =
709
+ std::get<XdsListenerResource::TcpListener>(listener_resource_->listener);
695
710
  // A given FilterChainData object may appear more than once in the map,
696
711
  // but we want to invoke the callback exactly once for each
697
712
  // FilterChainData object. Therefore, we start by constructing a set
698
713
  // of all FilterChainData objects by address, to weed out duplicates.
699
- std::set<XdsListenerResource::FilterChainData*> filter_chain_data_set;
700
- for (const auto& destination_ip : filter_chain_map_.destination_ip_vector) {
714
+ std::set<const XdsListenerResource::FilterChainData*> filter_chain_data_set;
715
+ for (const auto& destination_ip :
716
+ tcp_listener.filter_chain_map.destination_ip_vector) {
701
717
  for (const auto& source_type : destination_ip.source_types_array) {
702
718
  for (const auto& source_ip : source_type) {
703
719
  for (const auto& source_port_pair : source_ip.ports_map) {
@@ -712,156 +728,36 @@ void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
712
728
  cb(*filter_chain_data);
713
729
  }
714
730
  // Also invoke the callback for the default filter chain, if present.
715
- if (default_filter_chain_.has_value()) {
716
- cb(*default_filter_chain_);
717
- }
718
- }
719
-
720
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
721
- StartRdsWatch(RefCountedPtr<ListenerWatcher> listener_watcher) {
722
- // Get the set of RDS resources to watch on. Also reverse the list of
723
- // HTTP filters in each filter chain, since received data moves *up*
724
- // the stack on the server side.
725
- std::set<std::string> resource_names;
726
- ForEachFilterChain(
727
- [&](XdsListenerResource::FilterChainData& filter_chain_data) {
728
- auto& hcm = filter_chain_data.http_connection_manager;
729
- const auto* rds_name = std::get_if<std::string>(&hcm.route_config);
730
- if (rds_name != nullptr) resource_names.insert(*rds_name);
731
- std::reverse(hcm.http_filters.begin(), hcm.http_filters.end());
732
- });
733
- // Start watching referenced RDS resources.
734
- struct WatcherToStart {
735
- std::string resource_name;
736
- RefCountedPtr<RouteConfigWatcher> watcher;
737
- };
738
- std::vector<WatcherToStart> watchers_to_start;
739
- watchers_to_start.reserve(resource_names.size());
740
- {
741
- MutexLock lock(&mu_);
742
- for (const auto& resource_name : resource_names) {
743
- ++rds_resources_yet_to_fetch_;
744
- auto route_config_watcher = MakeRefCounted<RouteConfigWatcher>(
745
- resource_name, WeakRefAsSubclass<FilterChainMatchManager>());
746
- rds_map_.emplace(resource_name, RdsUpdateState{route_config_watcher.get(),
747
- std::nullopt});
748
- watchers_to_start.push_back(
749
- WatcherToStart{resource_name, std::move(route_config_watcher)});
750
- }
751
- if (rds_resources_yet_to_fetch_ != 0) {
752
- listener_watcher_ = std::move(listener_watcher);
753
- listener_watcher = nullptr;
754
- }
755
- }
756
- for (auto& watcher_to_start : watchers_to_start) {
757
- XdsRouteConfigResourceType::StartWatch(xds_client_.get(),
758
- watcher_to_start.resource_name,
759
- std::move(watcher_to_start.watcher));
760
- }
761
- // Promote this filter chain match manager if all referenced resources are
762
- // fetched.
763
- if (listener_watcher != nullptr) {
764
- listener_watcher->PendingFilterChainMatchManagerReadyLocked(this);
731
+ if (tcp_listener.default_filter_chain.has_value()) {
732
+ cb(*tcp_listener.default_filter_chain);
765
733
  }
766
734
  }
767
735
 
768
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
769
- Orphaned() {
770
- MutexLock lock(&mu_);
771
- // Cancel the RDS watches to clear up the weak refs
772
- for (const auto& entry : rds_map_) {
773
- XdsRouteConfigResourceType::CancelWatch(xds_client_.get(), entry.first,
774
- entry.second.watcher,
775
- false /* delay_unsubscription */);
776
- }
777
- // Also give up the ref on ListenerWatcher since it won't be needed anymore
778
- listener_watcher_.reset();
736
+ void XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::Orphaned() {
737
+ fetcher_state_->work_serializer.Run(
738
+ [self = WeakRefAsSubclass<XdsConnectionManager>()]()
739
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer) {
740
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
741
+ << "[XdsConnectionManager " << self.get() << "]: orphaned";
742
+ self->listener_watcher_.reset();
743
+ self->l4_filter_chains_.clear();
744
+ });
779
745
  }
780
746
 
781
- absl::StatusOr<RefCountedPtr<XdsCertificateProvider>>
782
- XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
783
- CreateOrGetXdsCertificateProviderFromFilterChainData(
784
- const XdsListenerResource::FilterChainData* filter_chain) {
785
- MutexLock lock(&mu_);
786
- auto it = certificate_providers_map_.find(filter_chain);
787
- if (it != certificate_providers_map_.end()) return it->second;
788
- // Configure root cert.
789
- auto* ca_cert_provider =
790
- std::get_if<CommonTlsContext::CertificateProviderPluginInstance>(
791
- &filter_chain->downstream_tls_context.common_tls_context
792
- .certificate_validation_context.ca_certs);
793
- absl::string_view root_provider_cert_name;
794
- RefCountedPtr<grpc_tls_certificate_provider> root_cert_provider;
795
- if (ca_cert_provider != nullptr) {
796
- root_provider_cert_name = ca_cert_provider->certificate_name;
797
- root_cert_provider =
798
- xds_client_->certificate_provider_store()
799
- .CreateOrGetCertificateProvider(ca_cert_provider->instance_name);
800
- if (root_cert_provider == nullptr) {
801
- return absl::NotFoundError(
802
- absl::StrCat("Certificate provider instance name: \"",
803
- ca_cert_provider->instance_name, "\" not recognized."));
804
- }
805
- }
806
- // Configure identity cert.
807
- absl::string_view identity_provider_instance_name =
808
- filter_chain->downstream_tls_context.common_tls_context
809
- .tls_certificate_provider_instance.instance_name;
810
- absl::string_view identity_provider_cert_name =
811
- filter_chain->downstream_tls_context.common_tls_context
812
- .tls_certificate_provider_instance.certificate_name;
813
- RefCountedPtr<grpc_tls_certificate_provider> identity_cert_provider;
814
- if (!identity_provider_instance_name.empty()) {
815
- identity_cert_provider =
816
- xds_client_->certificate_provider_store()
817
- .CreateOrGetCertificateProvider(identity_provider_instance_name);
818
- if (identity_cert_provider == nullptr) {
819
- return absl::NotFoundError(
820
- absl::StrCat("Certificate provider instance name: \"",
821
- identity_provider_instance_name, "\" not recognized."));
822
- }
823
- }
824
- auto xds_cert_provider = MakeRefCounted<XdsCertificateProvider>(
825
- std::move(root_cert_provider), root_provider_cert_name,
826
- std::move(identity_cert_provider), identity_provider_cert_name,
827
- filter_chain->downstream_tls_context.require_client_certificate);
828
- certificate_providers_map_.emplace(filter_chain, xds_cert_provider);
829
- return xds_cert_provider;
830
- }
831
-
832
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
833
- OnRouteConfigChanged(
834
- const std::string& resource_name,
835
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
836
- route_config) {
747
+ void XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
748
+ MaybeUpdateConnectionManager() {
749
+ if (listener_watcher_ == nullptr) return; // Already promoted.
837
750
  RefCountedPtr<ListenerWatcher> listener_watcher;
838
- {
839
- MutexLock lock(&mu_);
840
- auto& state = rds_map_[resource_name];
841
- if (!state.rds_update.has_value()) {
842
- if (--rds_resources_yet_to_fetch_ == 0) {
843
- listener_watcher = std::move(listener_watcher_);
844
- }
845
- }
846
- if (!route_config.ok()) {
847
- route_config = absl::UnavailableError(
848
- absl::StrCat("RDS resource ", resource_name, ": ",
849
- route_config.status().message()));
850
- }
851
- state.rds_update = std::move(route_config);
852
- }
853
- // Promote the filter chain match manager object if all the referenced
854
- // resources are fetched.
855
- if (listener_watcher != nullptr) {
856
- listener_watcher->PendingFilterChainMatchManagerReady(this);
751
+ // Check if all L4 filter chains have their route configs.
752
+ for (const auto& [_, l4_filter_chain] : l4_filter_chains_) {
753
+ if (!l4_filter_chain->HasRouteConfig()) return;
857
754
  }
858
- }
859
-
860
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
861
- OnAmbientError(const std::string& resource_name, absl::Status status) {
862
- LOG(ERROR) << "RouteConfigWatcher:" << this
863
- << " XdsClient reports ambient error: " << status << " for "
864
- << resource_name << "; ignoring in favor of existing resource";
755
+ // We have all route configs, so promote the XdsConnectionManager.
756
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
757
+ << "[XdsConnectionManager " << this
758
+ << "]: obtained all necessary RDS resources";
759
+ listener_watcher_->MaybeUpdateConnectionManager(this);
760
+ listener_watcher_.reset();
865
761
  }
866
762
 
867
763
  const XdsListenerResource::FilterChainData* FindFilterChainDataForSourcePort(
@@ -1023,147 +919,394 @@ const XdsListenerResource::FilterChainData* FindFilterChainDataForDestinationIp(
1023
919
  }
1024
920
 
1025
921
  absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
1026
- FilterChainMatchManager::UpdateChannelArgsForConnection(
1027
- const ChannelArgs& input_args, grpc_endpoint* tcp) {
1028
- ChannelArgs args = input_args;
922
+ XdsConnectionManager::UpdateChannelArgsForConnection(
923
+ const ChannelArgs& args, grpc_endpoint* tcp) {
924
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
925
+ << "[XdsConnectionManager " << this
926
+ << "]: choosing L4 filter chain for connection";
927
+ const auto& tcp_listener =
928
+ std::get<XdsListenerResource::TcpListener>(listener_resource_->listener);
1029
929
  const auto* filter_chain = FindFilterChainDataForDestinationIp(
1030
- filter_chain_map_.destination_ip_vector, tcp);
1031
- if (filter_chain == nullptr && default_filter_chain_.has_value()) {
1032
- filter_chain = &default_filter_chain_.value();
930
+ tcp_listener.filter_chain_map.destination_ip_vector, tcp);
931
+ if (filter_chain == nullptr &&
932
+ tcp_listener.default_filter_chain.has_value()) {
933
+ filter_chain = &*tcp_listener.default_filter_chain;
1033
934
  }
1034
935
  if (filter_chain == nullptr) {
1035
936
  return absl::UnavailableError("No matching filter chain found");
1036
937
  }
1037
- RefCountedPtr<ServerConfigSelectorProvider> server_config_selector_provider;
1038
- RefCountedPtr<XdsChannelStackModifier> channel_stack_modifier;
1039
- RefCountedPtr<XdsCertificateProvider> xds_certificate_provider;
1040
- // Iterate the list of HTTP filters in reverse since in Core, received data
1041
- // flows *up* the stack.
1042
- std::vector<const grpc_channel_filter*> filters;
1043
- const auto& http_filter_registry =
1044
- DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
1045
- .http_filter_registry();
1046
- for (const auto& http_filter :
1047
- filter_chain->http_connection_manager.http_filters) {
1048
- // Find filter. This is guaranteed to succeed, because it's checked
1049
- // at config validation time in the XdsApi code.
1050
- const XdsHttpFilterImpl* filter_impl =
1051
- http_filter_registry.GetFilterForTopLevelType(
1052
- http_filter.config_proto_type);
1053
- GRPC_CHECK_NE(filter_impl, nullptr);
1054
- // Some filters like the router filter are no-op filters and do not have
1055
- // an implementation.
1056
- if (filter_impl->channel_filter() != nullptr) {
1057
- filters.push_back(filter_impl->channel_filter());
938
+ // Find the corresponding L4FilterChain.
939
+ auto it = l4_filter_chains_.find(filter_chain);
940
+ if (it == l4_filter_chains_.end()) {
941
+ // Should never happen.
942
+ return absl::InternalError("could not find L4FilterChain");
943
+ }
944
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
945
+ << "[XdsConnectionManager " << this << "]: selected L4 filter chain "
946
+ << it->second.get();
947
+ return it->second->UpdateChannelArgsForConnection(args);
948
+ }
949
+
950
+ //
951
+ // XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain::XdsServerConfigSelectorProvider
952
+ //
953
+
954
+ class XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
955
+ L4FilterChain::XdsServerConfigSelectorProvider final
956
+ : public ServerConfigSelectorProvider {
957
+ public:
958
+ XdsServerConfigSelectorProvider(
959
+ RefCountedPtr<FetcherState> fetcher_state,
960
+ absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector)
961
+ : fetcher_state_(std::move(fetcher_state)),
962
+ config_selector_(std::move(config_selector)) {}
963
+
964
+ void SetServerConfigSelector(
965
+ absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector)
966
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer) {
967
+ if (GRPC_TRACE_FLAG_ENABLED(xds_server_config_fetcher)) {
968
+ if (config_selector.ok()) {
969
+ LOG(INFO) << "[XdsServerConfigSelectorProvider " << this
970
+ << "]: sending new XdsServerConfigSelector "
971
+ << config_selector->get();
972
+ } else {
973
+ LOG(INFO) << "[XdsServerConfigSelectorProvider " << this
974
+ << "]: sending new XdsServerConfigSelector "
975
+ << config_selector.status();
976
+ }
977
+ }
978
+ config_selector_ = std::move(config_selector);
979
+ for (const auto& watcher : watchers_) {
980
+ watcher->OnServerConfigSelectorUpdate(config_selector_);
981
+ }
982
+ }
983
+
984
+ absl::StatusOr<RefCountedPtr<ServerConfigSelector>> Watch(
985
+ std::shared_ptr<ServerConfigSelectorWatcher> watcher) override {
986
+ fetcher_state_->work_serializer.Run(
987
+ [self = WeakRefAsSubclass<XdsServerConfigSelectorProvider>(),
988
+ watcher = std::move(watcher)]()
989
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(
990
+ &FetcherState::work_serializer) mutable {
991
+ watcher->OnServerConfigSelectorUpdate(self->config_selector_);
992
+ self->watchers_.insert(std::move(watcher));
993
+ });
994
+ return nullptr;
995
+ }
996
+
997
+ void CancelWatch(
998
+ std::shared_ptr<ServerConfigSelectorWatcher> watcher) override {
999
+ fetcher_state_->work_serializer.Run(
1000
+ [self = WeakRefAsSubclass<XdsServerConfigSelectorProvider>(),
1001
+ watcher = std::move(watcher)]()
1002
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer) {
1003
+ self->watchers_.erase(watcher);
1004
+ });
1005
+ }
1006
+
1007
+ private:
1008
+ void Orphaned() override {
1009
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
1010
+ << "[XdsServerConfigSelectorProvider " << this << "]: orphaned";
1011
+ }
1012
+
1013
+ RefCountedPtr<FetcherState> fetcher_state_;
1014
+
1015
+ absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector_
1016
+ ABSL_GUARDED_BY(&FetcherState::work_serializer);
1017
+ absl::flat_hash_set<std::shared_ptr<ServerConfigSelectorWatcher>> watchers_
1018
+ ABSL_GUARDED_BY(&FetcherState::work_serializer);
1019
+ };
1020
+
1021
+ //
1022
+ // XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain::RouteConfigWatcher
1023
+ //
1024
+
1025
+ class XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
1026
+ L4FilterChain::RouteConfigWatcher final
1027
+ : public XdsRouteConfigResourceType::WatcherInterface {
1028
+ public:
1029
+ explicit RouteConfigWatcher(RefCountedPtr<L4FilterChain> l4_filter_chain)
1030
+ : l4_filter_chain_(std::move(l4_filter_chain)) {}
1031
+
1032
+ void OnResourceChanged(
1033
+ absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
1034
+ route_config,
1035
+ RefCountedPtr<ReadDelayHandle> read_delay_handle) override {
1036
+ l4_filter_chain_->fetcher_state_->work_serializer.Run(
1037
+ [l4_filter_chain = l4_filter_chain_,
1038
+ route_config = std::move(route_config),
1039
+ read_delay_handle = std::move(read_delay_handle)]()
1040
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(
1041
+ &FetcherState::work_serializer) mutable {
1042
+ l4_filter_chain->OnRouteConfigChanged(std::move(route_config));
1043
+ });
1044
+ }
1045
+
1046
+ void OnAmbientError(
1047
+ absl::Status status,
1048
+ RefCountedPtr<ReadDelayHandle> read_delay_handle) override {
1049
+ l4_filter_chain_->fetcher_state_->work_serializer.Run(
1050
+ [l4_filter_chain = l4_filter_chain_, status = std::move(status),
1051
+ read_delay_handle = std::move(read_delay_handle)]()
1052
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(
1053
+ &FetcherState::work_serializer) mutable {
1054
+ l4_filter_chain->OnAmbientError(std::move(status));
1055
+ });
1056
+ }
1057
+
1058
+ private:
1059
+ RefCountedPtr<L4FilterChain> l4_filter_chain_;
1060
+ };
1061
+
1062
+ //
1063
+ // XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain
1064
+ //
1065
+
1066
+ absl::StatusOr<RefCountedPtr<XdsCertificateProvider>>
1067
+ CreateCertificateProviderForFilterChain(
1068
+ const XdsListenerResource::FilterChainData& filter_chain,
1069
+ CertificateProviderStore& certificate_provider_store) {
1070
+ // Configure root cert.
1071
+ auto* ca_cert_provider =
1072
+ std::get_if<CommonTlsContext::CertificateProviderPluginInstance>(
1073
+ &filter_chain.downstream_tls_context.common_tls_context
1074
+ .certificate_validation_context.ca_certs);
1075
+ absl::string_view root_provider_cert_name;
1076
+ RefCountedPtr<grpc_tls_certificate_provider> root_cert_provider;
1077
+ if (ca_cert_provider != nullptr) {
1078
+ root_provider_cert_name = ca_cert_provider->certificate_name;
1079
+ root_cert_provider =
1080
+ certificate_provider_store.CreateOrGetCertificateProvider(
1081
+ ca_cert_provider->instance_name);
1082
+ if (root_cert_provider == nullptr) {
1083
+ return absl::NotFoundError(
1084
+ absl::StrCat("Certificate provider instance name: \"",
1085
+ ca_cert_provider->instance_name, "\" not recognized."));
1058
1086
  }
1059
1087
  }
1060
- // Add config selector filter.
1061
- filters.push_back(&kServerConfigSelectorFilter);
1062
- channel_stack_modifier =
1063
- MakeRefCounted<XdsChannelStackModifier>(std::move(filters));
1088
+ // Configure identity cert.
1089
+ absl::string_view identity_provider_instance_name =
1090
+ filter_chain.downstream_tls_context.common_tls_context
1091
+ .tls_certificate_provider_instance.instance_name;
1092
+ absl::string_view identity_provider_cert_name =
1093
+ filter_chain.downstream_tls_context.common_tls_context
1094
+ .tls_certificate_provider_instance.certificate_name;
1095
+ RefCountedPtr<grpc_tls_certificate_provider> identity_cert_provider;
1096
+ if (!identity_provider_instance_name.empty()) {
1097
+ identity_cert_provider =
1098
+ certificate_provider_store.CreateOrGetCertificateProvider(
1099
+ identity_provider_instance_name);
1100
+ if (identity_cert_provider == nullptr) {
1101
+ return absl::NotFoundError(
1102
+ absl::StrCat("Certificate provider instance name: \"",
1103
+ identity_provider_instance_name, "\" not recognized."));
1104
+ }
1105
+ }
1106
+ return MakeRefCounted<XdsCertificateProvider>(
1107
+ std::move(root_cert_provider), root_provider_cert_name,
1108
+ std::move(identity_cert_provider), identity_provider_cert_name,
1109
+ filter_chain.downstream_tls_context.require_client_certificate);
1110
+ }
1111
+
1112
+ XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain::
1113
+ L4FilterChain(RefCountedPtr<FetcherState> fetcher_state,
1114
+ WeakRefCountedPtr<XdsConnectionManager> connection_manager,
1115
+ const XdsListenerResource::FilterChainData& filter_chain_data)
1116
+ : fetcher_state_(std::move(fetcher_state)),
1117
+ connection_manager_(std::move(connection_manager)),
1118
+ filter_chain_data_(filter_chain_data),
1119
+ certificate_provider_(CreateCertificateProviderForFilterChain(
1120
+ filter_chain_data,
1121
+ fetcher_state_->xds_client->certificate_provider_store())) {
1122
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
1123
+ << "[L4FilterChain " << this << "]: created";
1124
+ auto& hcm = filter_chain_data_.http_connection_manager;
1064
1125
  Match(
1065
- filter_chain->http_connection_manager.route_config,
1066
- // RDS resource name
1067
- [&](const std::string& rds_name) {
1068
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
1069
- initial_resource;
1070
- {
1071
- MutexLock lock(&mu_);
1072
- initial_resource = rds_map_[rds_name].rds_update.value();
1073
- }
1074
- server_config_selector_provider =
1075
- MakeRefCounted<DynamicXdsServerConfigSelectorProvider>(
1076
- xds_client_.Ref(DEBUG_LOCATION,
1077
- "DynamicXdsServerConfigSelectorProvider"),
1078
- rds_name, std::move(initial_resource),
1079
- filter_chain->http_connection_manager.http_filters);
1126
+ hcm.route_config,
1127
+ [&](const std::string& rds_resource_name) {
1128
+ // Start RDS watch.
1129
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
1130
+ << "[L4FilterChain " << this << "]: starting RDS watch for "
1131
+ << rds_resource_name;
1132
+ auto watcher = MakeRefCounted<RouteConfigWatcher>(Ref());
1133
+ watcher_ = watcher.get();
1134
+ XdsRouteConfigResourceType::StartWatch(fetcher_state_->xds_client.get(),
1135
+ rds_resource_name,
1136
+ std::move(watcher));
1080
1137
  },
1081
- // inline RouteConfig
1082
- [&](const std::shared_ptr<const XdsRouteConfigResource>& route_config) {
1083
- server_config_selector_provider =
1084
- MakeRefCounted<StaticXdsServerConfigSelectorProvider>(
1085
- xds_client_.Ref(DEBUG_LOCATION,
1086
- "StaticXdsServerConfigSelectorProvider"),
1087
- route_config,
1088
- filter_chain->http_connection_manager.http_filters);
1089
- });
1090
- args = args.SetObject(server_config_selector_provider)
1091
- .SetObject(channel_stack_modifier);
1092
- // Add XdsCertificateProvider if credentials are xDS.
1093
- auto* server_creds = args.GetObject<grpc_server_credentials>();
1094
- if (server_creds != nullptr &&
1095
- server_creds->type() == XdsServerCredentials::Type()) {
1096
- absl::StatusOr<RefCountedPtr<XdsCertificateProvider>> result =
1097
- CreateOrGetXdsCertificateProviderFromFilterChainData(filter_chain);
1098
- if (!result.ok()) {
1099
- return result.status();
1100
- }
1101
- xds_certificate_provider = std::move(*result);
1102
- GRPC_CHECK(xds_certificate_provider != nullptr);
1103
- args = args.SetObject(xds_certificate_provider);
1138
+ [&](const std::shared_ptr<const XdsRouteConfigResource>& route_config)
1139
+ ABSL_EXCLUSIVE_LOCKS_REQUIRED(&FetcherState::work_serializer) {
1140
+ // RouteConfig was inlined in LDS.
1141
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
1142
+ << "[L4FilterChain " << this << "]: got RouteConfig from LDS";
1143
+ UpdateServerConfigSelector(route_config);
1144
+ });
1145
+ }
1146
+
1147
+ void XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
1148
+ L4FilterChain::Orphan() {
1149
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
1150
+ << "[L4FilterChain " << this << "]: orphaned";
1151
+ if (watcher_ != nullptr) {
1152
+ auto& hcm = filter_chain_data_.http_connection_manager;
1153
+ auto& rds_resource_name = std::get<std::string>(hcm.route_config);
1154
+ XdsRouteConfigResourceType::CancelWatch(fetcher_state_->xds_client.get(),
1155
+ rds_resource_name, watcher_);
1156
+ watcher_ = nullptr;
1157
+ }
1158
+ connection_manager_.reset();
1159
+ Unref();
1160
+ }
1161
+
1162
+ absl::StatusOr<ChannelArgs> XdsServerConfigFetcher::ListenerWatcher::
1163
+ XdsConnectionManager::L4FilterChain::UpdateChannelArgsForConnection(
1164
+ const ChannelArgs& args) const {
1165
+ if (!certificate_provider_.ok()) return certificate_provider_.status();
1166
+ return args.SetObject(*certificate_provider_)
1167
+ .SetObject(
1168
+ // This is the only place where the provider is accessed from outside
1169
+ // of the WorkSerializer, and it will always be set before this
1170
+ // happens, so this read is safe even though the compiler can't tell.
1171
+ ABSL_TS_UNCHECKED_READ(config_selector_provider_));
1172
+ }
1173
+
1174
+ absl::StatusOr<RefCountedPtr<ServerConfigSelector>>
1175
+ XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain::
1176
+ CreateServerConfigSelector(
1177
+ absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
1178
+ route_config) {
1179
+ if (!route_config.ok()) return route_config.status();
1180
+ return XdsServerConfigSelector::Create(
1181
+ DownCast<const GrpcXdsBootstrap&>(fetcher_state_->xds_client->bootstrap())
1182
+ .http_filter_registry(),
1183
+ *fetcher_state_->xds_client->transport_factory(),
1184
+ filter_chain_data_.http_connection_manager.http_filters,
1185
+ std::move(*route_config), *connection_manager_->blackboard_);
1186
+ }
1187
+
1188
+ void XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
1189
+ L4FilterChain::UpdateServerConfigSelector(
1190
+ absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
1191
+ route_config) {
1192
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
1193
+ << "[L4FilterChain " << this << "]: creating new XdsServerConfigSelector";
1194
+ absl::StatusOr<RefCountedPtr<ServerConfigSelector>> config_selector =
1195
+ CreateServerConfigSelector(std::move(route_config));
1196
+ if (config_selector_provider_ == nullptr) {
1197
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
1198
+ << "[L4FilterChain " << this
1199
+ << "]: initial update; creating new XdsServerConfigSelectorProvider";
1200
+ config_selector_provider_ = MakeRefCounted<XdsServerConfigSelectorProvider>(
1201
+ fetcher_state_, std::move(config_selector));
1202
+ } else {
1203
+ // Provider already exists, so just update it.
1204
+ config_selector_provider_->SetServerConfigSelector(
1205
+ std::move(config_selector));
1104
1206
  }
1105
- return args;
1207
+ }
1208
+
1209
+ void XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
1210
+ L4FilterChain::OnRouteConfigChanged(
1211
+ absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
1212
+ route_config) {
1213
+ GRPC_TRACE_LOG(xds_server_config_fetcher, INFO)
1214
+ << "[L4FilterChain " << this << "]: received RDS update";
1215
+ if (connection_manager_ == nullptr) return;
1216
+ if (!route_config.ok()) {
1217
+ auto& hcm = filter_chain_data_.http_connection_manager;
1218
+ auto& rds_resource_name = std::get<std::string>(hcm.route_config);
1219
+ route_config = absl::UnavailableError(
1220
+ absl::StrCat("RDS resource ", rds_resource_name, ": ",
1221
+ route_config.status().message()));
1222
+ }
1223
+ UpdateServerConfigSelector(std::move(route_config));
1224
+ connection_manager_->MaybeUpdateConnectionManager();
1225
+ }
1226
+
1227
+ void XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
1228
+ L4FilterChain::OnAmbientError(absl::Status status) {
1229
+ auto& hcm = filter_chain_data_.http_connection_manager;
1230
+ auto& rds_resource_name = std::get<std::string>(hcm.route_config);
1231
+ LOG(ERROR) << "XdsClient reports ambient error for RDS resource "
1232
+ << rds_resource_name << ": " << status;
1106
1233
  }
1107
1234
 
1108
1235
  //
1109
- // XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::XdsServerConfigSelector
1236
+ // XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain::XdsServerConfigSelector
1110
1237
  //
1111
1238
 
1112
- absl::StatusOr<
1113
- RefCountedPtr<XdsServerConfigFetcher::ListenerWatcher::
1114
- FilterChainMatchManager::XdsServerConfigSelector>>
1115
- XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1239
+ absl::StatusOr<RefCountedPtr<
1240
+ XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::
1241
+ L4FilterChain::XdsServerConfigSelector>>
1242
+ XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain::
1116
1243
  XdsServerConfigSelector::Create(
1117
1244
  const XdsHttpFilterRegistry& http_filter_registry,
1118
- std::shared_ptr<const XdsRouteConfigResource> rds_update,
1245
+ XdsTransportFactory& transport_factory,
1119
1246
  const std::vector<
1120
1247
  XdsListenerResource::HttpConnectionManager::HttpFilter>&
1121
- http_filters) {
1248
+ http_filters,
1249
+ std::shared_ptr<const XdsRouteConfigResource> route_config,
1250
+ Blackboard& blackboard) {
1122
1251
  auto config_selector = MakeRefCounted<XdsServerConfigSelector>();
1123
- for (auto& vhost : rds_update->virtual_hosts) {
1124
- config_selector->virtual_hosts_.emplace_back();
1125
- auto& virtual_host = config_selector->virtual_hosts_.back();
1126
- virtual_host.domains = vhost.domains;
1252
+ FilterListBuilder filter_list_builder;
1253
+ XdsRouting::RouteConfigFilterChainBuilder route_config_builder(
1254
+ http_filters, http_filter_registry, filter_list_builder,
1255
+ transport_factory, blackboard);
1256
+ for (auto& vhost : route_config->virtual_hosts) {
1257
+ auto vhost_builder =
1258
+ route_config_builder.MakeVirtualHostFilterChainBuilder(vhost);
1259
+ auto& virtual_host = config_selector->virtual_hosts_.emplace_back();
1260
+ virtual_host.domains = &vhost.domains;
1127
1261
  for (auto& route : vhost.routes) {
1128
- virtual_host.routes.emplace_back();
1129
- auto& config_selector_route = virtual_host.routes.back();
1130
- config_selector_route.matchers = route.matchers;
1262
+ auto& config_selector_route = virtual_host.routes.emplace_back();
1263
+ config_selector_route.matchers = &route.matchers;
1131
1264
  config_selector_route.unsupported_action =
1132
1265
  std::get_if<XdsRouteConfigResource::Route::NonForwardingAction>(
1133
1266
  &route.action) == nullptr;
1134
- auto result = XdsRouting::GeneratePerHTTPFilterConfigsForMethodConfig(
1135
- http_filter_registry, http_filters, vhost, route, nullptr,
1136
- ChannelArgs());
1137
- if (!result.ok()) return result.status();
1138
- std::vector<std::string> fields;
1139
- fields.reserve(result->per_filter_configs.size());
1140
- for (const auto& p : result->per_filter_configs) {
1141
- fields.emplace_back(absl::StrCat(" \"", p.first, "\": [\n",
1142
- absl::StrJoin(p.second, ",\n"),
1143
- "\n ]"));
1144
- }
1145
- if (!fields.empty()) {
1146
- std::string json = absl::StrCat(
1147
- "{\n"
1148
- " \"methodConfig\": [ {\n"
1149
- " \"name\": [\n"
1150
- " {}\n"
1151
- " ],\n"
1152
- " ",
1153
- absl::StrJoin(fields, ",\n"),
1154
- "\n } ]\n"
1155
- "}");
1156
- config_selector_route.method_config =
1157
- ServiceConfigImpl::Create(result->args, json.c_str()).value();
1158
- }
1267
+ auto filter_list = vhost_builder.BuildFilterChainForRoute(route);
1268
+ if (!filter_list.ok()) return filter_list.status();
1269
+ config_selector_route.filter_list =
1270
+ filter_list->TakeAsSubclass<const FilterList>();
1159
1271
  }
1160
1272
  }
1273
+ config_selector->route_config_ = std::move(route_config);
1161
1274
  return config_selector;
1162
1275
  }
1163
1276
 
1277
+ std::unique_ptr<ServerConfigSelector::ConnectionState>
1278
+ XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain::
1279
+ XdsServerConfigSelector::BuildFilterChains(FilterChainBuilder& builder) {
1280
+ auto connection_state = std::make_unique<XdsConnectionState>();
1281
+ // It's likely that multiple routes have the same filter list, so we
1282
+ // reuse filter chains if possible.
1283
+ absl::flat_hash_map<const FilterList*,
1284
+ absl::StatusOr<RefCountedPtr<const FilterChain>>>
1285
+ cache;
1286
+ for (const auto& vhost : virtual_hosts_) {
1287
+ for (const auto& route : vhost.routes) {
1288
+ absl::StatusOr<RefCountedPtr<const FilterChain>> filter_chain;
1289
+ auto it = cache.find(route.filter_list.get());
1290
+ if (it == cache.end()) {
1291
+ // Not found in cache, so construct a new filter chain.
1292
+ for (const auto& [factory, config] : route.filter_list->filters) {
1293
+ factory->AddFilter(builder, config);
1294
+ }
1295
+ filter_chain = builder.Build();
1296
+ cache.emplace(route.filter_list.get(), filter_chain);
1297
+ } else {
1298
+ filter_chain = it->second;
1299
+ }
1300
+ connection_state->filter_chains.emplace(&route, std::move(filter_chain));
1301
+ }
1302
+ }
1303
+ return connection_state;
1304
+ }
1305
+
1164
1306
  absl::StatusOr<ServerConfigSelector::CallConfig>
1165
- XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1166
- XdsServerConfigSelector::GetCallConfig(grpc_metadata_batch* metadata) {
1307
+ XdsServerConfigFetcher::ListenerWatcher::XdsConnectionManager::L4FilterChain::
1308
+ XdsServerConfigSelector::GetCallConfig(const ConnectionState* state,
1309
+ grpc_metadata_batch* metadata) {
1167
1310
  CallConfig call_config;
1168
1311
  if (metadata->get_pointer(HttpPathMetadata()) == nullptr) {
1169
1312
  return absl::InternalError("no path found");
@@ -1176,7 +1319,7 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1176
1319
  absl::string_view authority =
1177
1320
  metadata->get_pointer(HttpAuthorityMetadata())->as_string_view();
1178
1321
  auto vhost_index = XdsRouting::FindVirtualHostForDomain(
1179
- VirtualHostListIterator(&virtual_hosts_), authority);
1322
+ VirtualHostListIterator(virtual_hosts_), authority);
1180
1323
  if (!vhost_index.has_value()) {
1181
1324
  return absl::UnavailableError(
1182
1325
  absl::StrCat("could not find VirtualHost for ", authority,
@@ -1184,125 +1327,40 @@ XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1184
1327
  }
1185
1328
  auto& virtual_host = virtual_hosts_[vhost_index.value()];
1186
1329
  auto route_index = XdsRouting::GetRouteForRequest(
1187
- VirtualHost::RouteListIterator(&virtual_host.routes), path, metadata);
1188
- if (route_index.has_value()) {
1189
- auto& route = virtual_host.routes[route_index.value()];
1190
- // Found the matching route
1191
- if (route.unsupported_action) {
1192
- return absl::UnavailableError("matching route has unsupported action");
1193
- }
1194
- if (route.method_config != nullptr) {
1195
- call_config.method_configs =
1196
- route.method_config->GetMethodParsedConfigVector(grpc_empty_slice());
1197
- call_config.service_config = route.method_config;
1198
- }
1199
- return call_config;
1200
- }
1201
- return absl::UnavailableError("no route matched");
1202
- }
1203
-
1204
- //
1205
- // XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::DynamicXdsServerConfigSelectorProvider
1206
- //
1207
-
1208
- XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1209
- DynamicXdsServerConfigSelectorProvider::
1210
- DynamicXdsServerConfigSelectorProvider(
1211
- RefCountedPtr<GrpcXdsClient> xds_client, std::string resource_name,
1212
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
1213
- initial_resource,
1214
- std::vector<XdsListenerResource::HttpConnectionManager::HttpFilter>
1215
- http_filters)
1216
- : xds_client_(std::move(xds_client)),
1217
- resource_name_(std::move(resource_name)),
1218
- http_filters_(std::move(http_filters)),
1219
- resource_(std::move(initial_resource)) {
1220
- GRPC_CHECK(!resource_name_.empty());
1221
- // RouteConfigWatcher is being created here instead of in Watch() to avoid
1222
- // deadlocks from invoking XdsRouteConfigResourceType::StartWatch whilst in a
1223
- // critical region.
1224
- auto route_config_watcher = MakeRefCounted<RouteConfigWatcher>(
1225
- WeakRefAsSubclass<DynamicXdsServerConfigSelectorProvider>());
1226
- route_config_watcher_ = route_config_watcher.get();
1227
- XdsRouteConfigResourceType::StartWatch(xds_client_.get(), resource_name_,
1228
- std::move(route_config_watcher));
1229
- }
1230
-
1231
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1232
- DynamicXdsServerConfigSelectorProvider::Orphaned() {
1233
- XdsRouteConfigResourceType::CancelWatch(xds_client_.get(), resource_name_,
1234
- route_config_watcher_,
1235
- false /* delay_unsubscription */);
1236
- }
1237
-
1238
- absl::StatusOr<RefCountedPtr<ServerConfigSelector>>
1239
- XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1240
- DynamicXdsServerConfigSelectorProvider::Watch(
1241
- std::unique_ptr<
1242
- ServerConfigSelectorProvider::ServerConfigSelectorWatcher>
1243
- watcher) {
1244
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>> resource;
1245
- {
1246
- MutexLock lock(&mu_);
1247
- GRPC_CHECK(watcher_ == nullptr);
1248
- watcher_ = std::move(watcher);
1249
- resource = resource_;
1250
- }
1251
- if (!resource.ok()) {
1252
- return resource.status();
1253
- }
1254
- return XdsServerConfigSelector::Create(
1255
- DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
1256
- .http_filter_registry(),
1257
- resource.value(), http_filters_);
1258
- }
1259
-
1260
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1261
- DynamicXdsServerConfigSelectorProvider::CancelWatch() {
1262
- MutexLock lock(&mu_);
1263
- watcher_.reset();
1264
- }
1265
-
1266
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1267
- DynamicXdsServerConfigSelectorProvider::OnRouteConfigChanged(
1268
- absl::StatusOr<std::shared_ptr<const XdsRouteConfigResource>>
1269
- rds_update) {
1270
- MutexLock lock(&mu_);
1271
- if (!rds_update.ok()) {
1272
- rds_update = absl::UnavailableError(absl::StrCat(
1273
- "RDS resource ", resource_name_, ": ", rds_update.status().message()));
1274
- }
1275
- resource_ = std::move(rds_update);
1276
- if (watcher_ == nullptr) {
1277
- return;
1278
- }
1279
- // Currently server_config_selector_filter does not call into
1280
- // DynamicXdsServerConfigSelectorProvider while holding a lock, but if that
1281
- // ever changes, we would want to invoke the update outside the critical
1282
- // region with the use of a WorkSerializer.
1283
- if (!resource_.ok()) {
1284
- watcher_->OnServerConfigSelectorUpdate(resource_.status());
1330
+ VirtualHost::RouteListIterator(virtual_host.routes), path, metadata);
1331
+ if (!route_index.has_value()) {
1332
+ return absl::UnavailableError("no route matched");
1333
+ }
1334
+ auto& route = virtual_host.routes[*route_index];
1335
+ // Found the matching route
1336
+ if (route.unsupported_action) {
1337
+ return absl::UnavailableError("matching route has unsupported action");
1338
+ }
1339
+ // Find filter chain.
1340
+ const auto& filter_chains =
1341
+ DownCast<const XdsConnectionState*>(state)->filter_chains;
1342
+ auto it = filter_chains.find(&route);
1343
+ if (it == filter_chains.end()) {
1344
+ // Should never happen.
1345
+ call_config.filter_chain =
1346
+ absl::InternalError("no filter chain found for route");
1285
1347
  } else {
1286
- watcher_->OnServerConfigSelectorUpdate(XdsServerConfigSelector::Create(
1287
- DownCast<const GrpcXdsBootstrap&>(xds_client_->bootstrap())
1288
- .http_filter_registry(),
1289
- *resource_, http_filters_));
1348
+ call_config.filter_chain = it->second;
1290
1349
  }
1291
- }
1292
-
1293
- void XdsServerConfigFetcher::ListenerWatcher::FilterChainMatchManager::
1294
- DynamicXdsServerConfigSelectorProvider::OnAmbientError(
1295
- absl::Status status) {
1296
- LOG(ERROR) << "RouteConfigWatcher:" << this
1297
- << " XdsClient reports ambient error: " << status << " for "
1298
- << resource_name_ << "; ignoring in favor of existing resource";
1350
+ return call_config;
1299
1351
  }
1300
1352
 
1301
1353
  } // namespace
1302
1354
  } // namespace grpc_core
1303
1355
 
1356
+ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create_legacy(
1357
+ grpc_server_xds_status_notifier notifier, const grpc_channel_args* args);
1358
+
1304
1359
  grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
1305
1360
  grpc_server_xds_status_notifier notifier, const grpc_channel_args* args) {
1361
+ if (!grpc_core::IsXdsServerFilterChainPerRouteEnabled()) {
1362
+ return grpc_server_config_fetcher_xds_create_legacy(notifier, args);
1363
+ }
1306
1364
  grpc_core::ExecCtx exec_ctx;
1307
1365
  grpc_core::ChannelArgs channel_args = grpc_core::CoreConfiguration::Get()
1308
1366
  .channel_args_preconditioning()
@@ -1319,15 +1377,19 @@ grpc_server_config_fetcher* grpc_server_config_fetcher_xds_create(
1319
1377
  LOG(ERROR) << "Failed to create xds client: " << xds_client.status();
1320
1378
  return nullptr;
1321
1379
  }
1322
- if (grpc_core::DownCast<const grpc_core::GrpcXdsBootstrap&>(
1323
- (*xds_client)->bootstrap())
1324
- .server_listener_resource_name_template()
1325
- .empty()) {
1326
- LOG(ERROR) << "server_listener_resource_name_template not provided in "
1327
- "bootstrap file.";
1328
- return nullptr;
1380
+ auto generator =
1381
+ channel_args.GetObjectRef<grpc_core::XdsResourceNameGenerator>();
1382
+ if (generator == nullptr) {
1383
+ if (grpc_core::DownCast<const grpc_core::GrpcXdsBootstrap&>(
1384
+ (*xds_client)->bootstrap())
1385
+ .server_listener_resource_name_template()
1386
+ .empty()) {
1387
+ LOG(ERROR) << "server_listener_resource_name_template not provided in "
1388
+ "bootstrap file.";
1389
+ return nullptr;
1390
+ }
1329
1391
  }
1330
1392
  return (new grpc_core::XdsServerConfigFetcher(std::move(*xds_client),
1331
- notifier))
1393
+ notifier, std::move(generator)))
1332
1394
  ->c_ptr();
1333
1395
  }