grpc 1.81.1 → 1.82.0.pre1

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 (861) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +12 -9
  3. data/include/grpc/grpc.h +6 -7
  4. data/include/grpc/impl/channel_arg_names.h +3 -1
  5. data/src/core/call/call_filters.h +2 -2
  6. data/src/core/call/client_call.cc +1 -1
  7. data/src/core/call/interception_chain.h +6 -9
  8. data/src/core/call/metadata.h +1 -1
  9. data/src/core/call/metadata_batch.cc +1 -1
  10. data/src/core/call/metadata_batch.h +17 -1
  11. data/src/core/call/parsed_metadata.h +7 -2
  12. data/src/core/call/server_call.cc +4 -2
  13. data/src/core/call/server_call.h +9 -2
  14. data/src/core/call/status_util.cc +0 -4
  15. data/src/core/call/status_util.h +0 -3
  16. data/src/core/channelz/channel_trace.cc +3 -1
  17. data/src/core/client_channel/backup_poller.cc +1 -1
  18. data/src/core/client_channel/client_channel.cc +6 -14
  19. data/src/core/client_channel/client_channel.h +2 -2
  20. data/src/core/client_channel/client_channel_filter.cc +8 -17
  21. data/src/core/client_channel/client_channel_filter.h +2 -2
  22. data/src/core/client_channel/client_channel_plugin.cc +1 -1
  23. data/src/core/client_channel/config_selector.h +2 -7
  24. data/src/core/client_channel/dynamic_filters.cc +4 -7
  25. data/src/core/client_channel/dynamic_filters.h +1 -3
  26. data/src/core/client_channel/retry_filter.cc +2 -25
  27. data/src/core/client_channel/retry_filter.h +3 -7
  28. data/src/core/client_channel/retry_filter_legacy_call_data.cc +1 -1
  29. data/src/core/client_channel/retry_filter_legacy_call_data.h +2 -2
  30. data/src/core/client_channel/retry_interceptor.cc +7 -35
  31. data/src/core/client_channel/retry_interceptor.h +11 -14
  32. data/src/core/client_channel/retry_service_config.cc +0 -2
  33. data/src/core/client_channel/retry_service_config.h +0 -2
  34. data/src/core/client_channel/retry_throttle.cc +19 -7
  35. data/src/core/client_channel/retry_throttle.h +24 -7
  36. data/src/core/client_channel/subchannel.cc +1 -1
  37. data/src/core/credentials/call/external/external_account_credentials.cc +125 -12
  38. data/src/core/credentials/call/external/external_account_credentials.h +6 -1
  39. data/src/core/credentials/call/jwt/jwt_credentials.cc +11 -1
  40. data/src/core/credentials/call/jwt/jwt_credentials.h +3 -0
  41. data/src/core/credentials/call/oauth2/oauth2_credentials.cc +64 -11
  42. data/src/core/credentials/call/oauth2/oauth2_credentials.h +0 -1
  43. data/src/core/credentials/call/regional_access_boundary_fetcher.cc +411 -0
  44. data/src/core/credentials/call/regional_access_boundary_fetcher.h +158 -0
  45. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +1 -1
  46. data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.h +7 -1
  47. data/src/core/credentials/transport/insecure/insecure_security_connector.h +1 -1
  48. data/src/core/credentials/transport/local/local_security_connector.cc +1 -1
  49. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +6 -0
  50. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +28 -66
  51. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -8
  52. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +24 -58
  53. data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +24 -19
  54. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -81
  55. data/src/core/ext/filters/message_size/message_size_filter.h +1 -50
  56. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +13 -56
  57. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -14
  58. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +1 -1
  59. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +175 -51
  60. data/src/core/ext/transport/chttp2/server/chttp2_server.h +10 -1
  61. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +73 -6
  62. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  63. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -1
  64. data/src/core/ext/transport/chttp2/transport/flow_control.h +11 -0
  65. data/src/core/ext/transport/chttp2/transport/flow_control_manager.h +2 -4
  66. data/src/core/ext/transport/chttp2/transport/frame.cc +63 -13
  67. data/src/core/ext/transport/chttp2/transport/frame.h +45 -10
  68. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -1
  69. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +11 -3
  70. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -1
  71. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
  72. data/src/core/ext/transport/chttp2/transport/header_assembler.h +54 -22
  73. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +53 -5
  74. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +22 -0
  75. data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +20 -0
  76. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +33 -1
  77. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  78. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +118 -157
  79. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +6 -13
  80. data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +2187 -0
  81. data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +748 -0
  82. data/src/core/ext/transport/chttp2/transport/http2_settings.h +19 -4
  83. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +0 -2
  84. data/src/core/ext/transport/chttp2/transport/http2_settings_promises.h +50 -17
  85. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +13 -15
  86. data/src/core/ext/transport/chttp2/transport/http2_transport.h +16 -48
  87. data/src/core/ext/transport/chttp2/transport/internal.h +14 -0
  88. data/src/core/ext/transport/chttp2/transport/message_assembler.h +1 -2
  89. data/src/core/ext/transport/chttp2/transport/parsing.cc +82 -24
  90. data/src/core/ext/transport/chttp2/transport/read_context.h +452 -0
  91. data/src/core/ext/transport/chttp2/transport/security_frame.h +12 -3
  92. data/src/core/ext/transport/chttp2/transport/stream.h +25 -26
  93. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +6 -4
  94. data/src/core/ext/transport/chttp2/transport/write_cycle.h +9 -1
  95. data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +16 -2
  96. data/src/core/ext/upb-gen/cel/expr/checked.upb.h +621 -432
  97. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.c +264 -166
  98. data/src/core/ext/upb-gen/cel/expr/checked.upb_minitable.h +0 -13
  99. data/src/core/ext/upb-gen/cel/expr/syntax.upb.h +708 -497
  100. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.c +294 -176
  101. data/src/core/ext/upb-gen/cel/expr/syntax.upb_minitable.h +0 -15
  102. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb.h +262 -181
  103. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.c +84 -58
  104. data/src/core/ext/upb-gen/envoy/admin/v3/certs.upb_minitable.h +0 -5
  105. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb.h +254 -190
  106. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.c +107 -53
  107. data/src/core/ext/upb-gen/envoy/admin/v3/clusters.upb_minitable.h +0 -4
  108. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb.h +271 -190
  109. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.c +88 -64
  110. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump.upb_minitable.h +0 -5
  111. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb.h +1035 -730
  112. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.c +384 -260
  113. data/src/core/ext/upb-gen/envoy/admin/v3/config_dump_shared.upb_minitable.h +0 -19
  114. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb.h +87 -56
  115. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.c +26 -16
  116. data/src/core/ext/upb-gen/envoy/admin/v3/init_dump.upb_minitable.h +0 -2
  117. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb.h +105 -71
  118. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.c +30 -22
  119. data/src/core/ext/upb-gen/envoy/admin/v3/listeners.upb_minitable.h +0 -2
  120. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb.h +31 -29
  121. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.c +19 -7
  122. data/src/core/ext/upb-gen/envoy/admin/v3/memory.upb_minitable.h +0 -1
  123. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb.h +25 -23
  124. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.c +15 -7
  125. data/src/core/ext/upb-gen/envoy/admin/v3/metrics.upb_minitable.h +0 -1
  126. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb.h +25 -23
  127. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.c +15 -7
  128. data/src/core/ext/upb-gen/envoy/admin/v3/mutex_stats.upb_minitable.h +0 -1
  129. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb.h +201 -165
  130. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.c +79 -31
  131. data/src/core/ext/upb-gen/envoy/admin/v3/server_info.upb_minitable.h +0 -2
  132. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb.h +29 -26
  133. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.c +17 -11
  134. data/src/core/ext/upb-gen/envoy/admin/v3/tap.upb_minitable.h +0 -1
  135. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb.h +46 -29
  136. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.c +37 -19
  137. data/src/core/ext/upb-gen/envoy/annotations/deprecation.upb_minitable.h +4 -4
  138. data/src/core/ext/upb-gen/envoy/annotations/resource.upb.h +34 -27
  139. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.c +34 -13
  140. data/src/core/ext/upb-gen/envoy/annotations/resource.upb_minitable.h +1 -2
  141. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb.h +617 -452
  142. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.c +221 -163
  143. data/src/core/ext/upb-gen/envoy/config/accesslog/v3/accesslog.upb_minitable.h +0 -16
  144. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb.h +1339 -970
  145. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.c +484 -324
  146. data/src/core/ext/upb-gen/envoy/config/bootstrap/v3/bootstrap.upb_minitable.h +0 -23
  147. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb.h +181 -135
  148. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.c +59 -43
  149. data/src/core/ext/upb-gen/envoy/config/cluster/v3/circuit_breaker.upb_minitable.h +0 -3
  150. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb.h +1353 -1028
  151. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.c +535 -361
  152. data/src/core/ext/upb-gen/envoy/config/cluster/v3/cluster.upb_minitable.h +0 -25
  153. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb.h +37 -33
  154. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.c +19 -13
  155. data/src/core/ext/upb-gen/envoy/config/cluster/v3/filter.upb_minitable.h +0 -1
  156. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb.h +234 -196
  157. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.c +77 -57
  158. data/src/core/ext/upb-gen/envoy/config/cluster/v3/outlier_detection.upb_minitable.h +0 -1
  159. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb.h +695 -502
  160. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.c +246 -186
  161. data/src/core/ext/upb-gen/envoy/config/common/matcher/v3/matcher.upb_minitable.h +0 -15
  162. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb.h +140 -116
  163. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.c +53 -43
  164. data/src/core/ext/upb-gen/envoy/config/common/mutation_rules/v3/mutation_rules.upb_minitable.h +0 -3
  165. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb.h +363 -269
  166. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.c +131 -89
  167. data/src/core/ext/upb-gen/envoy/config/core/v3/address.upb_minitable.h +0 -8
  168. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb.h +35 -31
  169. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.c +15 -13
  170. data/src/core/ext/upb-gen/envoy/config/core/v3/backoff.upb_minitable.h +0 -1
  171. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb.h +1073 -769
  172. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.c +515 -293
  173. data/src/core/ext/upb-gen/envoy/config/core/v3/base.upb_minitable.h +0 -30
  174. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb.h +25 -23
  175. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.c +15 -7
  176. data/src/core/ext/upb-gen/envoy/config/core/v3/cel.upb_minitable.h +0 -1
  177. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb.h +375 -267
  178. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.c +142 -86
  179. data/src/core/ext/upb-gen/envoy/config/core/v3/config_source.upb_minitable.h +0 -7
  180. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb.h +32 -27
  181. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.c +13 -11
  182. data/src/core/ext/upb-gen/envoy/config/core/v3/event_service_config.upb_minitable.h +0 -1
  183. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb.h +29 -26
  184. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.c +17 -11
  185. data/src/core/ext/upb-gen/envoy/config/core/v3/extension.upb_minitable.h +0 -1
  186. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb.h +87 -56
  187. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.c +26 -16
  188. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_method_list.upb_minitable.h +0 -2
  189. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb.h +634 -468
  190. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.c +255 -161
  191. data/src/core/ext/upb-gen/envoy/config/core/v3/grpc_service.upb_minitable.h +0 -14
  192. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb.h +672 -474
  193. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.c +228 -130
  194. data/src/core/ext/upb-gen/envoy/config/core/v3/health_check.upb_minitable.h +0 -9
  195. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb.h +56 -40
  196. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.c +15 -13
  197. data/src/core/ext/upb-gen/envoy/config/core/v3/http_service.upb_minitable.h +0 -1
  198. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb.h +34 -29
  199. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.c +19 -11
  200. data/src/core/ext/upb-gen/envoy/config/core/v3/http_uri.upb_minitable.h +0 -1
  201. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb.h +811 -635
  202. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.c +347 -221
  203. data/src/core/ext/upb-gen/envoy/config/core/v3/protocol.upb_minitable.h +0 -16
  204. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb.h +174 -118
  205. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.c +62 -38
  206. data/src/core/ext/upb-gen/envoy/config/core/v3/proxy_protocol.upb_minitable.h +0 -4
  207. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb.h +78 -57
  208. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.c +28 -18
  209. data/src/core/ext/upb-gen/envoy/config/core/v3/resolver.upb_minitable.h +0 -2
  210. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb.h +37 -33
  211. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.c +22 -14
  212. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_cmsg_headers.upb_minitable.h +0 -1
  213. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb.h +159 -119
  214. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.c +47 -35
  215. data/src/core/ext/upb-gen/envoy/config/core/v3/socket_option.upb_minitable.h +0 -5
  216. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb.h +101 -76
  217. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.c +41 -23
  218. data/src/core/ext/upb-gen/envoy/config/core/v3/substitution_format_string.upb_minitable.h +0 -2
  219. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb.h +35 -31
  220. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.c +15 -13
  221. data/src/core/ext/upb-gen/envoy/config/core/v3/udp_socket_config.upb_minitable.h +0 -1
  222. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb.h +189 -127
  223. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.c +79 -49
  224. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint.upb_minitable.h +0 -4
  225. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb.h +378 -283
  226. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.c +156 -98
  227. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/endpoint_components.upb_minitable.h +0 -8
  228. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb.h +354 -255
  229. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.c +125 -69
  230. data/src/core/ext/upb-gen/envoy/config/endpoint/v3/load_report.upb_minitable.h +0 -6
  231. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb.h +27 -24
  232. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.c +13 -11
  233. data/src/core/ext/upb-gen/envoy/config/listener/v3/api_listener.upb_minitable.h +0 -1
  234. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb.h +611 -451
  235. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.c +159 -119
  236. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener.upb_minitable.h +0 -11
  237. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb.h +468 -321
  238. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.c +157 -99
  239. data/src/core/ext/upb-gen/envoy/config/listener/v3/listener_components.upb_minitable.h +0 -6
  240. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb.h +146 -119
  241. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.c +55 -35
  242. data/src/core/ext/upb-gen/envoy/config/listener/v3/quic_config.upb_minitable.h +0 -1
  243. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb.h +61 -51
  244. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.c +16 -16
  245. data/src/core/ext/upb-gen/envoy/config/listener/v3/udp_listener_config.upb_minitable.h +0 -2
  246. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb.h +43 -39
  247. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.c +25 -13
  248. data/src/core/ext/upb-gen/envoy/config/metrics/v3/metrics_service.upb_minitable.h +0 -1
  249. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb.h +341 -247
  250. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.c +130 -84
  251. data/src/core/ext/upb-gen/envoy/config/metrics/v3/stats.upb_minitable.h +0 -8
  252. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb.h +452 -313
  253. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.c +144 -100
  254. data/src/core/ext/upb-gen/envoy/config/overload/v3/overload.upb_minitable.h +0 -10
  255. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb.h +666 -493
  256. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.c +251 -181
  257. data/src/core/ext/upb-gen/envoy/config/rbac/v3/rbac.upb_minitable.h +0 -12
  258. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb.h +327 -197
  259. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.c +92 -48
  260. data/src/core/ext/upb-gen/envoy/config/route/v3/route.upb_minitable.h +0 -3
  261. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb.h +3583 -2532
  262. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.c +1340 -816
  263. data/src/core/ext/upb-gen/envoy/config/route/v3/route_components.upb_minitable.h +0 -60
  264. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb.h +111 -82
  265. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.c +48 -28
  266. data/src/core/ext/upb-gen/envoy/config/route/v3/scoped_route.upb_minitable.h +0 -3
  267. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb.h +548 -410
  268. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.c +214 -148
  269. data/src/core/ext/upb-gen/envoy/config/tap/v3/common.upb_minitable.h +0 -12
  270. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb.h +59 -50
  271. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.c +30 -20
  272. data/src/core/ext/upb-gen/envoy/config/trace/v3/datadog.upb_minitable.h +0 -2
  273. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb.h +29 -26
  274. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.c +17 -11
  275. data/src/core/ext/upb-gen/envoy/config/trace/v3/dynamic_ot.upb_minitable.h +0 -1
  276. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb.h +60 -49
  277. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.c +28 -20
  278. data/src/core/ext/upb-gen/envoy/config/trace/v3/http_tracer.upb_minitable.h +0 -2
  279. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb.h +50 -36
  280. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.c +19 -11
  281. data/src/core/ext/upb-gen/envoy/config/trace/v3/lightstep.upb_minitable.h +0 -1
  282. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb.h +82 -63
  283. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.c +27 -19
  284. data/src/core/ext/upb-gen/envoy/config/trace/v3/opentelemetry.upb_minitable.h +0 -1
  285. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb.h +27 -24
  286. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.c +13 -11
  287. data/src/core/ext/upb-gen/envoy/config/trace/v3/service.upb_minitable.h +0 -1
  288. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb.h +70 -58
  289. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.c +32 -22
  290. data/src/core/ext/upb-gen/envoy/config/trace/v3/skywalking.upb_minitable.h +0 -2
  291. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb.h +2 -5
  292. data/src/core/ext/upb-gen/envoy/config/trace/v3/trace.upb_minitable.c +1 -1
  293. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb.h +73 -62
  294. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.c +39 -25
  295. data/src/core/ext/upb-gen/envoy/config/trace/v3/xray.upb_minitable.h +0 -2
  296. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb.h +49 -45
  297. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.c +33 -13
  298. data/src/core/ext/upb-gen/envoy/config/trace/v3/zipkin.upb_minitable.h +0 -1
  299. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb.h +771 -588
  300. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.c +383 -185
  301. data/src/core/ext/upb-gen/envoy/data/accesslog/v3/accesslog.upb_minitable.h +0 -16
  302. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +66 -47
  303. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.c +31 -17
  304. data/src/core/ext/upb-gen/envoy/extensions/clusters/aggregate/v3/cluster.upb_minitable.h +0 -2
  305. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb.h +69 -58
  306. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.c +27 -23
  307. data/src/core/ext/upb-gen/envoy/extensions/common/matching/v3/extension_matcher.upb_minitable.h +0 -2
  308. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb.h +151 -119
  309. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.c +45 -39
  310. data/src/core/ext/upb-gen/envoy/extensions/filters/common/fault/v3/fault.upb_minitable.h +0 -5
  311. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb.h +19 -17
  312. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.c +1 -3
  313. data/src/core/ext/upb-gen/envoy/extensions/filters/common/matcher/action/v3/skip_action.upb_minitable.h +0 -1
  314. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb.h +144 -109
  315. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.c +46 -38
  316. data/src/core/ext/upb-gen/envoy/extensions/filters/http/composite/v3/composite.upb_minitable.h +0 -4
  317. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb.h +184 -139
  318. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.c +65 -35
  319. data/src/core/ext/upb-gen/envoy/extensions/filters/http/fault/v3/fault.upb_minitable.h +0 -3
  320. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb.h +129 -106
  321. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.c +69 -41
  322. data/src/core/ext/upb-gen/envoy/extensions/filters/http/gcp_authn/v3/gcp_authn.upb_minitable.h +0 -4
  323. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +83 -71
  324. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.c +40 -26
  325. data/src/core/ext/upb-gen/envoy/extensions/filters/http/rbac/v3/rbac.upb_minitable.h +0 -2
  326. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb.h +148 -101
  327. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.c +45 -27
  328. data/src/core/ext/upb-gen/envoy/extensions/filters/http/router/v3/router.upb_minitable.h +0 -2
  329. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +62 -51
  330. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.c +35 -21
  331. data/src/core/ext/upb-gen/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb_minitable.h +0 -2
  332. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1362 -1024
  333. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.c +508 -336
  334. data/src/core/ext/upb-gen/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb_minitable.h +0 -22
  335. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb.h +21 -19
  336. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.c +13 -7
  337. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/call_credentials/access_token/v3/access_token_credentials.upb_minitable.h +0 -1
  338. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb.h +35 -31
  339. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.c +15 -13
  340. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/tls/v3/tls_credentials.upb_minitable.h +0 -1
  341. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb.h +27 -24
  342. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.c +13 -11
  343. data/src/core/ext/upb-gen/envoy/extensions/grpc_service/channel_credentials/xds/v3/xds_credentials.upb_minitable.h +0 -1
  344. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +27 -24
  345. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.c +13 -11
  346. data/src/core/ext/upb-gen/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb_minitable.h +0 -1
  347. 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
  348. 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
  349. 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
  350. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +231 -179
  351. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.c +88 -66
  352. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/common/v3/common.upb_minitable.h +0 -6
  353. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +21 -19
  354. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.c +13 -7
  355. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb_minitable.h +0 -1
  356. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +63 -56
  357. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.c +31 -19
  358. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb_minitable.h +0 -1
  359. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +27 -24
  360. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.c +13 -11
  361. data/src/core/ext/upb-gen/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb_minitable.h +0 -1
  362. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb.h +27 -24
  363. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.c +13 -11
  364. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/http_11_proxy/v3/upstream_http_11_connect.upb_minitable.h +0 -1
  365. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -5
  366. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/cert.upb_minitable.c +1 -1
  367. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb.h +538 -364
  368. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.c +157 -95
  369. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/common.upb_minitable.h +0 -8
  370. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +150 -110
  371. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.c +69 -49
  372. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/secret.upb_minitable.h +0 -4
  373. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +517 -389
  374. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.c +182 -116
  375. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls.upb_minitable.h +0 -7
  376. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +84 -62
  377. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.c +30 -22
  378. data/src/core/ext/upb-gen/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb_minitable.h +0 -2
  379. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb.h +340 -256
  380. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.c +92 -82
  381. data/src/core/ext/upb-gen/envoy/extensions/upstreams/http/v3/http_protocol_options.upb_minitable.h +0 -5
  382. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb.h +19 -17
  383. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.c +1 -3
  384. data/src/core/ext/upb-gen/envoy/service/discovery/v3/ads.upb_minitable.h +0 -1
  385. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb.h +857 -566
  386. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.c +288 -182
  387. data/src/core/ext/upb-gen/envoy/service/discovery/v3/discovery.upb_minitable.h +0 -15
  388. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb.h +105 -72
  389. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.c +36 -22
  390. data/src/core/ext/upb-gen/envoy/service/load_stats/v3/lrs.upb_minitable.h +0 -2
  391. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb.h +312 -226
  392. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.c +132 -78
  393. data/src/core/ext/upb-gen/envoy/service/status/v3/csds.upb_minitable.h +0 -5
  394. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb.h +82 -61
  395. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.c +35 -19
  396. data/src/core/ext/upb-gen/envoy/type/http/v3/cookie.upb_minitable.h +0 -2
  397. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb.h +123 -89
  398. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.c +25 -25
  399. data/src/core/ext/upb-gen/envoy/type/http/v3/path_transformation.upb_minitable.h +0 -4
  400. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb.h +48 -33
  401. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.c +13 -11
  402. data/src/core/ext/upb-gen/envoy/type/matcher/v3/address.upb_minitable.h +0 -1
  403. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb.h +42 -36
  404. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.c +19 -13
  405. data/src/core/ext/upb-gen/envoy/type/matcher/v3/filter_state.upb_minitable.h +0 -1
  406. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb.h +101 -79
  407. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.c +61 -31
  408. data/src/core/ext/upb-gen/envoy/type/matcher/v3/http_inputs.upb_minitable.h +0 -5
  409. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb.h +83 -60
  410. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.c +37 -19
  411. data/src/core/ext/upb-gen/envoy/type/matcher/v3/metadata.upb_minitable.h +0 -2
  412. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb.h +56 -40
  413. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.c +15 -13
  414. data/src/core/ext/upb-gen/envoy/type/matcher/v3/node.upb_minitable.h +0 -1
  415. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb.h +34 -29
  416. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.c +13 -11
  417. data/src/core/ext/upb-gen/envoy/type/matcher/v3/number.upb_minitable.h +0 -1
  418. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb.h +32 -27
  419. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.c +13 -11
  420. data/src/core/ext/upb-gen/envoy/type/matcher/v3/path.upb_minitable.h +0 -1
  421. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb.h +88 -71
  422. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.c +48 -30
  423. data/src/core/ext/upb-gen/envoy/type/matcher/v3/regex.upb_minitable.h +0 -3
  424. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb.h +37 -30
  425. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.c +1 -5
  426. data/src/core/ext/upb-gen/envoy/type/matcher/v3/status_code_input.upb_minitable.h +0 -2
  427. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb.h +95 -71
  428. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.c +36 -22
  429. data/src/core/ext/upb-gen/envoy/type/matcher/v3/string.upb_minitable.h +0 -2
  430. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb.h +79 -56
  431. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.c +26 -18
  432. data/src/core/ext/upb-gen/envoy/type/matcher/v3/struct.upb_minitable.h +0 -2
  433. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb.h +164 -124
  434. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.c +54 -40
  435. data/src/core/ext/upb-gen/envoy/type/matcher/v3/value.upb_minitable.h +0 -4
  436. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb.h +200 -147
  437. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.c +47 -41
  438. data/src/core/ext/upb-gen/envoy/type/metadata/v3/metadata.upb_minitable.h +0 -7
  439. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb.h +160 -130
  440. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.c +89 -47
  441. data/src/core/ext/upb-gen/envoy/type/tracing/v3/custom_tag.upb_minitable.h +0 -5
  442. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb.h +78 -62
  443. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.c +26 -20
  444. data/src/core/ext/upb-gen/envoy/type/v3/hash_policy.upb_minitable.h +0 -3
  445. data/src/core/ext/upb-gen/envoy/type/v3/http.upb.h +2 -5
  446. data/src/core/ext/upb-gen/envoy/type/v3/http.upb_minitable.c +1 -1
  447. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb.h +21 -19
  448. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.c +13 -7
  449. data/src/core/ext/upb-gen/envoy/type/v3/http_status.upb_minitable.h +0 -1
  450. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb.h +43 -36
  451. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.c +22 -12
  452. data/src/core/ext/upb-gen/envoy/type/v3/percent.upb_minitable.h +0 -2
  453. data/src/core/ext/upb-gen/envoy/type/v3/range.upb.h +67 -55
  454. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.c +36 -18
  455. data/src/core/ext/upb-gen/envoy/type/v3/range.upb_minitable.h +0 -3
  456. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb.h +62 -51
  457. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.c +33 -19
  458. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_strategy.upb_minitable.h +0 -2
  459. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb.h +2 -5
  460. data/src/core/ext/upb-gen/envoy/type/v3/ratelimit_unit.upb_minitable.c +1 -1
  461. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb.h +25 -23
  462. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.c +15 -7
  463. data/src/core/ext/upb-gen/envoy/type/v3/semantic_version.upb_minitable.h +0 -1
  464. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb.h +37 -33
  465. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.c +19 -13
  466. data/src/core/ext/upb-gen/envoy/type/v3/token_bucket.upb_minitable.h +0 -1
  467. data/src/core/ext/upb-gen/google/api/annotations.upb.h +15 -13
  468. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.c +22 -7
  469. data/src/core/ext/upb-gen/google/api/annotations.upb_minitable.h +1 -1
  470. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb.h +619 -430
  471. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.c +260 -168
  472. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/checked.upb_minitable.h +0 -13
  473. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb.h +734 -518
  474. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.c +312 -182
  475. data/src/core/ext/upb-gen/google/api/expr/v1alpha1/syntax.upb_minitable.h +0 -16
  476. data/src/core/ext/upb-gen/google/api/http.upb.h +146 -105
  477. data/src/core/ext/upb-gen/google/api/http.upb_minitable.c +65 -29
  478. data/src/core/ext/upb-gen/google/api/http.upb_minitable.h +0 -3
  479. data/src/core/ext/upb-gen/google/api/httpbody.upb.h +52 -37
  480. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.c +19 -11
  481. data/src/core/ext/upb-gen/google/api/httpbody.upb_minitable.h +0 -1
  482. data/src/core/ext/upb-gen/google/protobuf/any.upb.h +23 -21
  483. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.c +15 -7
  484. data/src/core/ext/upb-gen/google/protobuf/any.upb_minitable.h +0 -1
  485. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb.h +2236 -1514
  486. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.c +824 -406
  487. data/src/core/ext/upb-gen/google/protobuf/descriptor.upb_minitable.h +0 -34
  488. data/src/core/ext/upb-gen/google/protobuf/duration.upb.h +23 -21
  489. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.c +15 -7
  490. data/src/core/ext/upb-gen/google/protobuf/duration.upb_minitable.h +0 -1
  491. data/src/core/ext/upb-gen/google/protobuf/empty.upb.h +19 -17
  492. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.c +1 -3
  493. data/src/core/ext/upb-gen/google/protobuf/empty.upb_minitable.h +0 -1
  494. data/src/core/ext/upb-gen/google/protobuf/struct.upb.h +149 -100
  495. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.c +59 -43
  496. data/src/core/ext/upb-gen/google/protobuf/struct.upb_minitable.h +0 -4
  497. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb.h +23 -21
  498. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.c +15 -7
  499. data/src/core/ext/upb-gen/google/protobuf/timestamp.upb_minitable.h +0 -1
  500. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb.h +181 -139
  501. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.c +99 -53
  502. data/src/core/ext/upb-gen/google/protobuf/wrappers.upb_minitable.h +0 -9
  503. data/src/core/ext/upb-gen/google/rpc/status.upb.h +52 -37
  504. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.c +19 -11
  505. data/src/core/ext/upb-gen/google/rpc/status.upb_minitable.h +0 -1
  506. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +1553 -1157
  507. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +712 -410
  508. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +0 -39
  509. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb.h +189 -125
  510. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.c +59 -35
  511. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/channelz.upb_minitable.h +0 -3
  512. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb.h +454 -343
  513. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.c +204 -130
  514. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/promise.upb_minitable.h +0 -11
  515. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +369 -243
  516. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +109 -79
  517. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +0 -7
  518. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb.h +256 -175
  519. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.c +122 -68
  520. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/service.upb_minitable.h +0 -8
  521. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb.h +71 -51
  522. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.c +39 -19
  523. data/src/core/ext/upb-gen/src/proto/grpc/gcp/altscontext.upb_minitable.h +0 -2
  524. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb.h +583 -407
  525. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.c +259 -145
  526. data/src/core/ext/upb-gen/src/proto/grpc/gcp/handshaker.upb_minitable.h +0 -12
  527. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb.h +114 -84
  528. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.c +52 -30
  529. data/src/core/ext/upb-gen/src/proto/grpc/gcp/transport_security_common.upb_minitable.h +0 -4
  530. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +41 -34
  531. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +25 -13
  532. data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.h +0 -2
  533. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb.h +309 -230
  534. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.c +123 -79
  535. data/src/core/ext/upb-gen/src/proto/grpc/lb/v1/load_balancer.upb_minitable.h +0 -9
  536. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb.h +98 -63
  537. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.c +51 -23
  538. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls.upb_minitable.h +0 -3
  539. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb.h +505 -312
  540. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.c +159 -87
  541. data/src/core/ext/upb-gen/src/proto/grpc/lookup/v1/rls_config.upb_minitable.h +0 -9
  542. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb.h +128 -91
  543. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.c +82 -41
  544. data/src/core/ext/upb-gen/udpa/annotations/migrate.upb_minitable.h +5 -8
  545. data/src/core/ext/upb-gen/udpa/annotations/security.upb.h +36 -29
  546. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.c +36 -13
  547. data/src/core/ext/upb-gen/udpa/annotations/security.upb_minitable.h +1 -2
  548. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb.h +13 -11
  549. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.c +22 -7
  550. data/src/core/ext/upb-gen/udpa/annotations/sensitive.upb_minitable.h +1 -1
  551. data/src/core/ext/upb-gen/udpa/annotations/status.upb.h +36 -29
  552. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.c +36 -13
  553. data/src/core/ext/upb-gen/udpa/annotations/status.upb_minitable.h +1 -2
  554. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb.h +34 -27
  555. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.c +34 -13
  556. data/src/core/ext/upb-gen/udpa/annotations/versioning.upb_minitable.h +1 -2
  557. data/src/core/ext/upb-gen/validate/validate.upb.h +1682 -1130
  558. data/src/core/ext/upb-gen/validate/validate.upb_minitable.c +587 -247
  559. data/src/core/ext/upb-gen/validate/validate.upb_minitable.h +4 -27
  560. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb.h +128 -91
  561. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.c +82 -41
  562. data/src/core/ext/upb-gen/xds/annotations/v3/migrate.upb_minitable.h +5 -8
  563. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb.h +36 -29
  564. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.c +36 -13
  565. data/src/core/ext/upb-gen/xds/annotations/v3/security.upb_minitable.h +1 -2
  566. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb.h +13 -11
  567. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.c +22 -7
  568. data/src/core/ext/upb-gen/xds/annotations/v3/sensitive.upb_minitable.h +1 -1
  569. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb.h +122 -90
  570. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.c +82 -39
  571. data/src/core/ext/upb-gen/xds/annotations/v3/status.upb_minitable.h +3 -7
  572. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb.h +34 -27
  573. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.c +34 -13
  574. data/src/core/ext/upb-gen/xds/annotations/v3/versioning.upb_minitable.h +1 -2
  575. data/src/core/ext/upb-gen/xds/core/v3/authority.upb.h +21 -19
  576. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.c +13 -7
  577. data/src/core/ext/upb-gen/xds/core/v3/authority.upb_minitable.h +0 -1
  578. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb.h +29 -26
  579. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.c +17 -11
  580. data/src/core/ext/upb-gen/xds/core/v3/cidr.upb_minitable.h +0 -1
  581. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb.h +70 -58
  582. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.c +32 -22
  583. data/src/core/ext/upb-gen/xds/core/v3/collection_entry.upb_minitable.h +0 -2
  584. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb.h +53 -34
  585. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.c +26 -16
  586. data/src/core/ext/upb-gen/xds/core/v3/context_params.upb_minitable.h +0 -2
  587. data/src/core/ext/upb-gen/xds/core/v3/extension.upb.h +29 -26
  588. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.c +17 -11
  589. data/src/core/ext/upb-gen/xds/core/v3/extension.upb_minitable.h +0 -1
  590. data/src/core/ext/upb-gen/xds/core/v3/resource.upb.h +37 -33
  591. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.c +22 -14
  592. data/src/core/ext/upb-gen/xds/core/v3/resource.upb_minitable.h +0 -1
  593. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb.h +102 -76
  594. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.c +43 -23
  595. data/src/core/ext/upb-gen/xds/core/v3/resource_locator.upb_minitable.h +0 -2
  596. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb.h +33 -30
  597. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.c +19 -11
  598. data/src/core/ext/upb-gen/xds/core/v3/resource_name.upb_minitable.h +0 -1
  599. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb.h +136 -83
  600. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.c +41 -33
  601. data/src/core/ext/upb-gen/xds/data/orca/v3/orca_load_report.upb_minitable.h +0 -4
  602. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb.h +46 -32
  603. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.c +20 -12
  604. data/src/core/ext/upb-gen/xds/service/orca/v3/orca.upb_minitable.h +0 -1
  605. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb.h +29 -26
  606. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.c +20 -12
  607. data/src/core/ext/upb-gen/xds/type/matcher/v3/cel.upb_minitable.h +0 -1
  608. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb.h +93 -61
  609. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.c +28 -20
  610. data/src/core/ext/upb-gen/xds/type/matcher/v3/domain.upb_minitable.h +0 -2
  611. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb.h +19 -17
  612. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.c +1 -3
  613. data/src/core/ext/upb-gen/xds/type/matcher/v3/http_inputs.upb_minitable.h +0 -1
  614. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb.h +105 -71
  615. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.c +32 -22
  616. data/src/core/ext/upb-gen/xds/type/matcher/v3/ip.upb_minitable.h +0 -2
  617. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb.h +430 -314
  618. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.c +153 -123
  619. data/src/core/ext/upb-gen/xds/type/matcher/v3/matcher.upb_minitable.h +0 -10
  620. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb.h +307 -199
  621. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.c +74 -62
  622. data/src/core/ext/upb-gen/xds/type/matcher/v3/range.upb_minitable.h +0 -6
  623. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb.h +52 -42
  624. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.c +19 -13
  625. data/src/core/ext/upb-gen/xds/type/matcher/v3/regex.upb_minitable.h +0 -2
  626. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb.h +95 -71
  627. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.c +36 -22
  628. data/src/core/ext/upb-gen/xds/type/matcher/v3/string.upb_minitable.h +0 -2
  629. data/src/core/ext/upb-gen/xds/type/v3/cel.upb.h +92 -77
  630. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.c +42 -28
  631. data/src/core/ext/upb-gen/xds/type/v3/cel.upb_minitable.h +0 -2
  632. data/src/core/ext/upb-gen/xds/type/v3/range.upb.h +67 -55
  633. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.c +36 -18
  634. data/src/core/ext/upb-gen/xds/type/v3/range.upb_minitable.h +0 -3
  635. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb.h +29 -26
  636. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.c +17 -11
  637. data/src/core/ext/upb-gen/xds/type/v3/typed_struct.upb_minitable.h +0 -1
  638. data/src/core/ext/upbdefs-gen/google/protobuf/descriptor.upbdefs.c +885 -855
  639. data/src/core/filter/composite/composite_filter.cc +10 -3
  640. data/src/core/filter/composite/composite_filter.h +11 -1
  641. data/src/core/filter/filter_args.h +4 -22
  642. data/src/core/handshaker/handshaker.cc +10 -2
  643. data/src/core/handshaker/security/secure_endpoint.cc +73 -5
  644. data/src/core/lib/channel/channel_args.h +12 -6
  645. data/src/core/lib/channel/channel_stack.cc +1 -2
  646. data/src/core/lib/channel/channel_stack.h +1 -7
  647. data/src/core/lib/channel/channel_stack_builder_impl.cc +1 -1
  648. data/src/core/lib/channel/channel_stack_builder_impl.h +0 -7
  649. data/src/core/lib/channel/promise_based_filter.cc +13 -1
  650. data/src/core/lib/channel/promise_based_filter.h +4 -5
  651. data/src/core/lib/event_engine/extensions/chaotic_good_extension.h +0 -13
  652. data/src/core/lib/event_engine/extensions/receive_coalescing_extension.h +48 -0
  653. data/src/core/lib/event_engine/posix.h +2 -0
  654. data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +2 -1
  655. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +11 -8
  656. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +7 -6
  657. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
  658. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +2 -1
  659. data/src/core/lib/event_engine/posix_engine/posix_interface_posix.cc +10 -10
  660. data/src/core/lib/event_engine/posix_engine/posix_write_event_sink.h +1 -1
  661. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +1 -1
  662. data/src/core/lib/event_engine/windows/native_windows_dns_resolver.cc +5 -4
  663. data/src/core/lib/experiments/experiments.cc +261 -90
  664. data/src/core/lib/experiments/experiments.h +136 -35
  665. data/src/core/lib/iomgr/buffer_list.h +1 -1
  666. data/src/core/lib/iomgr/ev_epoll1_linux.cc +1 -1
  667. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
  668. data/src/core/lib/iomgr/tcp_posix.cc +2 -1
  669. data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
  670. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
  671. data/src/core/lib/promise/detail/promise_factory.h +8 -8
  672. data/src/core/lib/promise/interceptor_list.h +1 -1
  673. data/src/core/lib/promise/try_seq.h +2 -2
  674. data/src/core/lib/resource_quota/telemetry.cc +54 -0
  675. data/src/core/lib/resource_quota/telemetry.h +5 -23
  676. data/src/core/lib/surface/call.cc +6 -1
  677. data/src/core/lib/surface/call.h +9 -0
  678. data/src/core/lib/surface/version.cc +2 -2
  679. data/src/core/lib/transport/promise_endpoint.h +7 -5
  680. data/src/core/lib/transport/transport.h +31 -4
  681. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +146 -74
  682. data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.h +88 -0
  683. data/src/core/mitigation_engine/mitigation_engine.h +81 -0
  684. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  685. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +0 -5
  686. data/src/core/resolver/xds/xds_resolver.cc +23 -133
  687. data/src/core/server/server.cc +40 -18
  688. data/src/core/server/server.h +25 -14
  689. data/src/core/server/server_config_selector_filter.cc +122 -0
  690. data/src/core/server/server_config_selector_filter.h +1 -0
  691. data/src/core/server/xds_server_config_fetcher.cc +6 -0
  692. data/src/core/server/xds_server_config_fetcher_legacy.cc +1333 -0
  693. data/src/core/telemetry/histogram.h +10 -89
  694. data/src/core/telemetry/instrument.h +42 -28
  695. data/src/core/transport/message_size_service_config.cc +123 -0
  696. data/src/core/transport/message_size_service_config.h +85 -0
  697. data/src/core/transport/session_endpoint.cc +29 -4
  698. data/src/core/transport/session_endpoint.h +4 -0
  699. data/src/core/tsi/alts/crypt/gsec.h +4 -2
  700. data/src/core/tsi/ssl_transport_security.cc +6 -4
  701. data/src/core/util/http_client/parser.cc +1 -1
  702. data/src/core/util/lru_cache.h +2 -0
  703. data/src/core/util/ref_counted_string.h +1 -1
  704. data/src/core/util/tchar.cc +13 -7
  705. data/src/core/util/trie_lookup.h +1 -1
  706. data/src/core/xds/grpc/blackboard.cc +58 -0
  707. data/src/core/{filter → xds/grpc}/blackboard.h +30 -11
  708. data/src/core/xds/grpc/xds_common_types.cc +40 -0
  709. data/src/core/xds/grpc/xds_common_types.h +13 -0
  710. data/src/core/xds/grpc/xds_common_types_parser.cc +37 -34
  711. data/src/core/xds/grpc/xds_endpoint_parser.cc +1 -1
  712. data/src/core/xds/grpc/xds_http_composite_filter.cc +34 -18
  713. data/src/core/xds/grpc/xds_http_composite_filter.h +6 -3
  714. data/src/core/xds/grpc/xds_http_fault_filter.cc +0 -149
  715. data/src/core/xds/grpc/xds_http_fault_filter.h +19 -8
  716. data/src/core/xds/grpc/xds_http_filter.cc +2 -1
  717. data/src/core/xds/grpc/xds_http_filter.h +6 -16
  718. data/src/core/xds/grpc/xds_http_filter_registry.cc +0 -2
  719. data/src/core/xds/grpc/xds_http_gcp_authn_filter.cc +25 -119
  720. data/src/core/xds/grpc/xds_http_gcp_authn_filter.h +27 -15
  721. data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +0 -149
  722. data/src/core/xds/grpc/xds_http_stateful_session_filter.h +19 -8
  723. data/src/core/xds/grpc/xds_lb_policy_registry.cc +18 -0
  724. data/src/core/xds/grpc/xds_listener_parser.cc +13 -9
  725. data/src/core/xds/grpc/xds_route_config.h +1 -1
  726. data/src/core/xds/grpc/xds_route_config_parser.cc +3 -5
  727. data/src/core/xds/grpc/xds_routing.cc +5 -11
  728. data/src/core/xds/grpc/xds_routing.h +2 -3
  729. data/src/core/xds/xds_client/lrs_client.cc +2 -2
  730. data/src/ruby/ext/grpc/rb_byte_buffer.c +1 -0
  731. data/src/ruby/ext/grpc/rb_call.c +3 -0
  732. data/src/ruby/ext/grpc/rb_call_credentials.c +1 -0
  733. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  734. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  735. data/src/ruby/ext/grpc/rb_channel_credentials.c +1 -0
  736. data/src/ruby/ext/grpc/rb_completion_queue.c +1 -0
  737. data/src/ruby/ext/grpc/rb_compression_options.c +1 -0
  738. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -4
  739. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -6
  740. data/src/ruby/ext/grpc/rb_server.c +1 -0
  741. data/src/ruby/ext/grpc/rb_server_credentials.c +1 -0
  742. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +1 -0
  743. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +1 -0
  744. data/src/ruby/lib/grpc/core/call_credentials.rb +86 -0
  745. data/src/ruby/lib/grpc/core/channel_credentials.rb +69 -0
  746. data/src/ruby/lib/grpc/core/credentials_helper.rb +126 -0
  747. data/src/ruby/lib/grpc/generic/client_stub.rb +86 -73
  748. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  749. data/src/ruby/lib/grpc/version.rb +1 -1
  750. data/src/ruby/lib/grpc.rb +25 -0
  751. data/src/ruby/spec/call_credentials_spec.rb +52 -2
  752. data/src/ruby/spec/credentials_helper_spec.rb +80 -0
  753. data/src/ruby/spec/generic/client_stub_spec.rb +27 -4
  754. data/src/ruby/spec/generic/server_interceptors_spec.rb +17 -3
  755. data/third_party/upb/upb/base/error_handler.h +79 -0
  756. data/third_party/upb/upb/base/internal/log2.h +29 -5
  757. data/third_party/upb/upb/generated_code_support.h +1 -0
  758. data/third_party/upb/upb/hash/common.c +129 -14
  759. data/third_party/upb/upb/hash/common.h +1 -1
  760. data/third_party/upb/upb/hash/ext_table.h +65 -0
  761. data/third_party/upb/upb/lex/strtod.c +14 -5
  762. data/third_party/upb/upb/mem/arena.c +113 -95
  763. data/third_party/upb/upb/mem/internal/arena.h +13 -8
  764. data/third_party/upb/upb/message/accessors.c +2 -3
  765. data/third_party/upb/upb/message/accessors.h +32 -12
  766. data/third_party/upb/upb/message/array.c +51 -2
  767. data/third_party/upb/upb/message/array.h +10 -0
  768. data/third_party/upb/upb/message/copy.c +18 -34
  769. data/third_party/upb/upb/message/internal/accessors.h +15 -49
  770. data/third_party/upb/upb/message/internal/array.h +1 -1
  771. data/third_party/upb/upb/message/internal/map.h +1 -1
  772. data/third_party/upb/upb/message/internal/message.c +8 -1
  773. data/third_party/upb/upb/message/internal/message.h +40 -10
  774. data/third_party/upb/upb/message/message.c +3 -2
  775. data/third_party/upb/upb/message/value.h +0 -6
  776. data/third_party/upb/upb/mini_descriptor/decode.c +78 -59
  777. data/third_party/upb/upb/mini_descriptor/link.c +8 -6
  778. data/third_party/upb/upb/mini_table/extension_registry.c +17 -49
  779. data/third_party/upb/upb/mini_table/extension_registry.h +5 -17
  780. data/third_party/upb/upb/mini_table/generated_registry.c +180 -0
  781. data/third_party/upb/upb/mini_table/generated_registry.h +66 -0
  782. data/third_party/upb/upb/mini_table/internal/extension.h +5 -3
  783. data/third_party/upb/upb/mini_table/internal/field.h +7 -5
  784. data/third_party/upb/upb/mini_table/internal/generated_registry.h +37 -0
  785. data/third_party/upb/upb/mini_table/internal/message.c +0 -18
  786. data/third_party/upb/upb/mini_table/internal/message.h +24 -41
  787. data/third_party/upb/upb/mini_table/internal/size_log2.h +2 -1
  788. data/third_party/upb/upb/mini_table/internal/sub.h +2 -5
  789. data/third_party/upb/upb/mini_table/message.h +34 -13
  790. data/third_party/upb/upb/port/atomic.h +180 -74
  791. data/third_party/upb/upb/port/def.inc +194 -29
  792. data/third_party/upb/upb/port/sanitizers.h +15 -0
  793. data/third_party/upb/upb/port/undef.inc +6 -2
  794. data/third_party/upb/upb/reflection/common.h +0 -6
  795. data/third_party/upb/upb/reflection/def.hpp +8 -12
  796. data/third_party/upb/upb/reflection/def_pool.c +85 -33
  797. data/third_party/upb/upb/reflection/def_pool.h +38 -8
  798. data/third_party/upb/upb/reflection/def_type.h +3 -0
  799. data/third_party/upb/upb/reflection/enum_def.c +45 -33
  800. data/third_party/upb/upb/reflection/enum_def.h +8 -4
  801. data/third_party/upb/upb/reflection/enum_reserved_range.c +7 -3
  802. data/third_party/upb/upb/reflection/enum_value_def.c +14 -29
  803. data/third_party/upb/upb/reflection/enum_value_def.h +5 -4
  804. data/third_party/upb/upb/reflection/extension_range.c +15 -14
  805. data/third_party/upb/upb/reflection/extension_range.h +7 -4
  806. data/third_party/upb/upb/reflection/field_def.c +114 -96
  807. data/third_party/upb/upb/reflection/field_def.h +3 -3
  808. data/third_party/upb/upb/reflection/file_def.c +71 -65
  809. data/third_party/upb/upb/reflection/file_def.h +4 -5
  810. data/third_party/upb/upb/reflection/internal/def_builder.c +22 -14
  811. data/third_party/upb/upb/reflection/internal/def_builder.h +44 -38
  812. data/third_party/upb/upb/reflection/internal/def_pool.h +5 -1
  813. data/third_party/upb/upb/reflection/internal/enum_def.h +6 -4
  814. data/third_party/upb/upb/reflection/internal/enum_reserved_range.h +3 -2
  815. data/third_party/upb/upb/reflection/internal/enum_value_def.h +7 -4
  816. data/third_party/upb/upb/reflection/internal/extension_range.h +4 -3
  817. data/third_party/upb/upb/reflection/internal/field_def.h +15 -12
  818. data/third_party/upb/upb/reflection/internal/file_def.h +8 -1
  819. data/third_party/upb/upb/reflection/internal/message_def.h +10 -7
  820. data/third_party/upb/upb/reflection/internal/message_reserved_range.h +3 -1
  821. data/third_party/upb/upb/reflection/internal/method_def.h +6 -6
  822. data/third_party/upb/upb/reflection/internal/oneof_def.h +6 -6
  823. data/third_party/upb/upb/reflection/internal/service_def.h +9 -6
  824. data/third_party/upb/upb/reflection/internal/upb_edition_defaults.h +1 -1
  825. data/third_party/upb/upb/reflection/message_def.c +46 -53
  826. data/third_party/upb/upb/reflection/message_def.h +6 -7
  827. data/third_party/upb/upb/reflection/message_reserved_range.c +7 -6
  828. data/third_party/upb/upb/reflection/method_def.c +22 -20
  829. data/third_party/upb/upb/reflection/method_def.h +4 -4
  830. data/third_party/upb/upb/reflection/oneof_def.c +17 -15
  831. data/third_party/upb/upb/reflection/oneof_def.h +6 -3
  832. data/third_party/upb/upb/reflection/service_def.c +50 -23
  833. data/third_party/upb/upb/reflection/service_def.h +7 -4
  834. data/third_party/upb/upb/text/internal/encode.c +7 -10
  835. data/third_party/upb/upb/wire/decode.c +269 -430
  836. data/third_party/upb/upb/wire/decode.h +6 -45
  837. data/third_party/upb/upb/wire/decode_fast/combinations.h +7 -3
  838. data/third_party/upb/upb/wire/decode_fast/select.c +7 -2
  839. data/third_party/upb/upb/wire/encode.c +144 -106
  840. data/third_party/upb/upb/wire/encode.h +6 -2
  841. data/third_party/upb/upb/wire/eps_copy_input_stream.c +36 -7
  842. data/third_party/upb/upb/wire/eps_copy_input_stream.h +94 -380
  843. data/third_party/upb/upb/wire/internal/decoder.c +1 -14
  844. data/third_party/upb/upb/wire/internal/decoder.h +84 -24
  845. data/third_party/upb/upb/wire/internal/eps_copy_input_stream.h +339 -0
  846. data/third_party/upb/upb/wire/internal/reader.h +29 -12
  847. data/third_party/upb/upb/wire/reader.c +35 -22
  848. data/third_party/upb/upb/wire/reader.h +11 -18
  849. data/third_party/utf8_range/utf8_range.c +1 -1
  850. data/third_party/utf8_range/utf8_range.h +2 -1
  851. metadata +27 -13
  852. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +0 -117
  853. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +0 -109
  854. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.cc +0 -80
  855. data/src/core/ext/filters/gcp_authentication/gcp_authentication_service_config_parser.h +0 -86
  856. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +0 -83
  857. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +0 -91
  858. data/src/core/ext/transport/chttp2/transport/incoming_metadata_tracker.h +0 -217
  859. data/src/core/filter/blackboard.cc +0 -33
  860. data/third_party/upb/upb/message/internal/tagged_ptr.h +0 -56
  861. data/third_party/upb/upb/message/tagged_ptr.h +0 -48
@@ -23,6 +23,7 @@
23
23
 
24
24
  #include <cstddef>
25
25
  #include <cstdint>
26
+ #include <optional>
26
27
  #include <string>
27
28
  #include <utility>
28
29
 
@@ -41,7 +42,7 @@
41
42
  #include "absl/status/status.h"
42
43
  #include "absl/strings/str_cat.h"
43
44
 
44
- // TODO(tjagtap) TODO(akshitpatel): [PH2][P3] : Write micro benchmarks for
45
+ // TODO(akshitpatel): [PH2][P4] : Write micro benchmarks for
45
46
  // assembler and disassembler code
46
47
 
47
48
  namespace grpc_core {
@@ -100,6 +101,8 @@ class HeaderAssembler {
100
101
 
101
102
  // Start header workflow
102
103
  header_in_progress_ = true;
104
+ GRPC_DCHECK_GT(stream_id_, 0u);
105
+ GRPC_DCHECK_EQ(stream_id_, frame.stream_id);
103
106
 
104
107
  // Manage payload
105
108
  frame.payload.MoveFirstNBytesIntoSliceBuffer(current_len, buffer_);
@@ -121,6 +124,8 @@ class HeaderAssembler {
121
124
  Http2Status AppendFrame(Http2ContinuationFrame& frame) {
122
125
  // Validate Assembler state
123
126
  GRPC_DCHECK(header_in_progress_);
127
+ GRPC_DCHECK_GT(stream_id_, 0u);
128
+ GRPC_DCHECK_EQ(stream_id_, frame.stream_id);
124
129
 
125
130
  // Manage payload
126
131
  const size_t current_len = frame.payload.Length();
@@ -195,18 +200,27 @@ class HeaderAssembler {
195
200
  << max_header_list_size_soft_limit
196
201
  << "max_header_list_size_hard_limit: "
197
202
  << max_header_list_size_hard_limit;
198
- Http2Status status = ParseHeader(
199
- parser, std::move(buffer_), /*grpc_metadata_batch=*/nullptr,
200
- ParseHeaderArgs{
201
- /*is_initial_metadata=*/is_initial_metadata,
202
- /*is_end_headers=*/is_ready_,
203
- /*is_client=*/is_client_,
204
- /*max_header_list_size_soft_limit=*/max_header_list_size_soft_limit,
205
- /*max_header_list_size_hard_limit=*/max_header_list_size_hard_limit,
206
- /*stream_id=*/stream_id_,
207
- });
208
- Cleanup();
209
- return status;
203
+ if (buffer_.Length() > 0) {
204
+ Http2Status status = ParseHeader(
205
+ parser, std::move(buffer_), /*grpc_metadata_batch=*/nullptr,
206
+ ParseHeaderArgs{
207
+ /*is_initial_metadata=*/is_initial_metadata,
208
+ /*is_end_headers=*/is_ready_,
209
+ /*is_client=*/is_client_,
210
+ /*max_header_list_size_soft_limit=*/
211
+ max_header_list_size_soft_limit,
212
+ /*max_header_list_size_hard_limit=*/
213
+ max_header_list_size_hard_limit,
214
+ /*stream_id=*/stream_id_,
215
+ });
216
+ Cleanup();
217
+ return status;
218
+ }
219
+
220
+ GRPC_DCHECK(!is_ready_);
221
+ GRPC_DCHECK(buffer_.Length() == 0);
222
+ GRPC_DCHECK(!header_in_progress_);
223
+ return Http2Status::Ok();
210
224
  }
211
225
 
212
226
  size_t GetBufferedHeadersLength() const { return buffer_.Length(); }
@@ -217,7 +231,6 @@ class HeaderAssembler {
217
231
  explicit HeaderAssembler(const bool is_client)
218
232
  : header_in_progress_(false),
219
233
  is_ready_(false),
220
- allow_true_binary_metadata_acked_(true),
221
234
  is_client_(is_client),
222
235
  stream_id_(0) {}
223
236
 
@@ -228,12 +241,24 @@ class HeaderAssembler {
228
241
  HeaderAssembler(const HeaderAssembler&) = delete;
229
242
  HeaderAssembler& operator=(const HeaderAssembler&) = delete;
230
243
 
231
- void InitializeStream(const uint32_t stream_id,
232
- const bool allow_true_binary_metadata_acked) {
233
- GRPC_DCHECK_EQ(stream_id_, 0u);
244
+ // This is set only once in the lifetime of a transport.
245
+ // TODO(tjagtap) [PH2][P3] : This value in settings can only be set once as
246
+ // the allow_true_binary_metadata setting is sent only once. Re-think this
247
+ // once we add actual use of this value.
248
+ void MaybeSetAllowTrueBinaryMetadataAcked(
249
+ const bool allow_true_binary_metadata_acked) {
250
+ if (allow_true_binary_metadata_acked_.has_value()) {
251
+ return;
252
+ }
253
+ allow_true_binary_metadata_acked_ = allow_true_binary_metadata_acked;
254
+ }
255
+
256
+ void SetStreamId(uint32_t stream_id) {
234
257
  GRPC_DCHECK_NE(stream_id, 0u);
258
+ GRPC_DCHECK(!header_in_progress_);
259
+ GRPC_DCHECK_EQ(is_ready_, false);
260
+ GRPC_DCHECK(buffer_.Length() == 0);
235
261
  stream_id_ = stream_id;
236
- allow_true_binary_metadata_acked_ = allow_true_binary_metadata_acked;
237
262
  }
238
263
 
239
264
  // HPACK parser helpers
@@ -250,14 +275,15 @@ class HeaderAssembler {
250
275
  "is_initial_metadata: ", is_initial_metadata,
251
276
  " is_end_headers: ", is_end_headers, " is_client: ", is_client,
252
277
  " max_header_list_size_soft_limit: ", max_header_list_size_soft_limit,
253
- " max_header_list_size_hard_limit: ",
254
- max_header_list_size_hard_limit);
278
+ " max_header_list_size_hard_limit: ", max_header_list_size_hard_limit,
279
+ " stream_id:", stream_id);
255
280
  }
256
281
  };
257
282
 
258
283
  static Http2Status ParseHeader(HPackParser& parser, SliceBuffer&& buffer,
259
284
  grpc_metadata_batch* grpc_metadata_batch,
260
285
  const ParseHeaderArgs args) {
286
+ // TODO(alishananda): Propagate mitigation engine here.
261
287
  parser.BeginFrame(
262
288
  /*grpc_metadata_batch*/ grpc_metadata_batch,
263
289
  args.max_header_list_size_soft_limit,
@@ -268,7 +294,8 @@ class HeaderAssembler {
268
294
  args.is_initial_metadata
269
295
  ? HPackParser::LogInfo::Type::kHeaders
270
296
  : HPackParser::LogInfo::Type::kTrailers,
271
- args.is_client});
297
+ args.is_client},
298
+ /*mitigation_engine=*/nullptr);
272
299
  // TODO(tjagtap) [PH2][P5] Bug fix : Check if the received metadata honours
273
300
  // allow_true_binary_metadata or not. Will need changes to HPack code.
274
301
  absl::Status stream_error = absl::OkStatus();
@@ -314,16 +341,21 @@ class HeaderAssembler {
314
341
  return boundary;
315
342
  }
316
343
 
344
+ std::optional<bool> TestOnlyAllowTrueBinaryMetadataAcked() const {
345
+ return allow_true_binary_metadata_acked_;
346
+ }
347
+
317
348
  private:
318
349
  void Cleanup() {
319
350
  buffer_.Clear();
320
351
  header_in_progress_ = false;
321
352
  is_ready_ = false;
353
+ stream_id_ = 0;
322
354
  }
323
355
 
324
356
  bool header_in_progress_;
325
357
  bool is_ready_;
326
- bool allow_true_binary_metadata_acked_;
358
+ std::optional<bool> allow_true_binary_metadata_acked_;
327
359
  const bool is_client_;
328
360
  uint32_t stream_id_;
329
361
  SliceBuffer buffer_;
@@ -46,6 +46,21 @@ namespace {
46
46
 
47
47
  constexpr size_t kHeadersFrameHeaderSize = 9;
48
48
 
49
+ std::optional<size_t> CheckIndexSize(size_t key_len, size_t value_len) {
50
+ constexpr size_t max_size = HPackEncoderTable::MaxEntrySize();
51
+
52
+ if (key_len > max_size - hpack_constants::kEntryOverhead) {
53
+ // Too large to index or overflow.
54
+ return std::nullopt;
55
+ }
56
+ size_t sum = key_len + hpack_constants::kEntryOverhead;
57
+ if (value_len > max_size - sum) {
58
+ // Too large to index or overflow.
59
+ return std::nullopt;
60
+ }
61
+ return sum + value_len;
62
+ }
63
+
49
64
  } // namespace
50
65
 
51
66
  // fills p (which is expected to be kHeadersFrameHeaderSize bytes long)
@@ -254,6 +269,21 @@ uint32_t HPackWriter::EmitLitHdrWithNonBinaryStringKeyIncIdx(
254
269
  HPackEncoderTable& table) {
255
270
  auto key_len = key_slice.length();
256
271
  auto value_len = value_slice.length();
272
+
273
+ size_t size_to_allocate;
274
+ if (IsOptimization03Enabled()) {
275
+ auto size = CheckIndexSize(key_len, value_len);
276
+ if (!size.has_value()) {
277
+ // Fall back to not indexing.
278
+ EmitLitHdrWithNonBinaryStringKeyNotIdx(std::move(key_slice),
279
+ std::move(value_slice), output);
280
+ return 0;
281
+ }
282
+ size_to_allocate = *size;
283
+ } else {
284
+ size_to_allocate = key_len + value_len + hpack_constants::kEntryOverhead;
285
+ }
286
+
257
287
  StringKey key(std::move(key_slice));
258
288
  key.WritePrefix(0x40, output.AddTiny(key.prefix_length()));
259
289
  output.Append(key.key());
@@ -261,8 +291,7 @@ uint32_t HPackWriter::EmitLitHdrWithNonBinaryStringKeyIncIdx(
261
291
  emit.WritePrefix(output.AddTiny(emit.prefix_length()));
262
292
  // Allocate an index in the hpack table for this newly emitted entry.
263
293
  // (we do so here because we know the length of the key and value)
264
- uint32_t index = table.AllocateIndex(key_len + value_len +
265
- hpack_constants::kEntryOverhead);
294
+ uint32_t index = table.AllocateIndex(size_to_allocate);
266
295
  output.Append(emit.data());
267
296
  return index;
268
297
  }
@@ -282,15 +311,34 @@ uint32_t HPackWriter::EmitLitHdrWithBinaryStringKeyIncIdx(
282
311
  Slice key_slice, Slice value_slice, SliceBuffer& output,
283
312
  HPackEncoderTable& table, bool use_true_binary_metadata) {
284
313
  auto key_len = key_slice.length();
314
+ BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata);
315
+
316
+ size_t size_to_allocate;
317
+
318
+ if (IsOptimization03Enabled()) {
319
+ auto size = CheckIndexSize(key_len, emit.hpack_length());
320
+ if (!size.has_value()) {
321
+ // Fall back to not indexing.
322
+ StringKey key(std::move(key_slice));
323
+ key.WritePrefix(0x00, output.AddTiny(key.prefix_length()));
324
+ output.Append(key.key());
325
+ emit.WritePrefix(output.AddTiny(emit.prefix_length()));
326
+ output.Append(emit.data());
327
+ return 0;
328
+ }
329
+ size_to_allocate = *size;
330
+ } else {
331
+ size_to_allocate =
332
+ key_len + emit.hpack_length() + hpack_constants::kEntryOverhead;
333
+ }
334
+
285
335
  StringKey key(std::move(key_slice));
286
336
  key.WritePrefix(0x40, output.AddTiny(key.prefix_length()));
287
337
  output.Append(key.key());
288
- BinaryStringValue emit(std::move(value_slice), use_true_binary_metadata);
289
338
  emit.WritePrefix(output.AddTiny(emit.prefix_length()));
290
339
  // Allocate an index in the hpack table for this newly emitted entry.
291
340
  // (we do so here because we know the length of the key and value)
292
- uint32_t index = table.AllocateIndex(key_len + emit.hpack_length() +
293
- hpack_constants::kEntryOverhead);
341
+ uint32_t index = table.AllocateIndex(size_to_allocate);
294
342
  output.Append(emit.data());
295
343
  return index;
296
344
  }
@@ -176,6 +176,28 @@ absl::Status HpackParseResult::BuildMaterialized() const {
176
176
  "Invalid HPACK index received (%d)", state_->invalid_hpack_index));
177
177
  case HpackParseStatus::kIllegalHpackOpCode:
178
178
  return absl::InternalError("Illegal hpack op code");
179
+ case HpackParseStatus::kMitigationEngineConnectionError:
180
+ if (state_->key.empty()) {
181
+ return absl::InternalError(
182
+ absl::StrCat("Mitigation engine triggered action ",
183
+ MitigationEngine::ActionToString(state_->action)));
184
+ } else {
185
+ return absl::InternalError(
186
+ absl::StrCat("Mitigation engine triggered action ",
187
+ MitigationEngine::ActionToString(state_->action),
188
+ " for key: ", state_->key));
189
+ }
190
+ case HpackParseStatus::kMitigationEngineStreamError:
191
+ if (state_->key.empty()) {
192
+ return MakeStreamError(absl::InternalError(
193
+ absl::StrCat("Mitigation engine triggered action ",
194
+ MitigationEngine::ActionToString(state_->action))));
195
+ } else {
196
+ return MakeStreamError(absl::InternalError(
197
+ absl::StrCat("Mitigation engine triggered action ",
198
+ MitigationEngine::ActionToString(state_->action),
199
+ " for key: ", state_->key)));
200
+ }
179
201
  }
180
202
  GPR_UNREACHABLE_CODE(return absl::UnknownError("Should never reach here"));
181
203
  }
@@ -25,6 +25,7 @@
25
25
 
26
26
  #include "src/core/call/metadata_batch.h"
27
27
  #include "src/core/lib/surface/validate_metadata.h"
28
+ #include "src/core/mitigation_engine/mitigation_engine.h"
28
29
  #include "src/core/util/crash.h"
29
30
  #include "src/core/util/grpc_check.h"
30
31
  #include "src/core/util/ref_counted.h"
@@ -69,6 +70,8 @@ enum class HpackParseStatus : uint8_t {
69
70
  kMetadataParseError,
70
71
  // Parse failed due to a base64 decode error
71
72
  kUnbase64Failed,
73
+ // Error triggered by the mitigation engine (stream error)
74
+ kMitigationEngineStreamError,
72
75
 
73
76
  ///////////////////////////////////////////////////////////////////
74
77
  // Connection Errors - result in the tcp connection closing
@@ -102,6 +105,8 @@ enum class HpackParseStatus : uint8_t {
102
105
  kMaliciousVarintEncoding,
103
106
  // Illegal hpack op code
104
107
  kIllegalHpackOpCode,
108
+ // Error triggered by the mitigation engine
109
+ kMitigationEngineConnectionError,
105
110
  };
106
111
 
107
112
  inline bool IsStreamError(HpackParseStatus status) {
@@ -260,6 +265,18 @@ class HpackParseResult {
260
265
  return p;
261
266
  }
262
267
 
268
+ static HpackParseResult MitigationEngineError(
269
+ absl::string_view key, MitigationEngine::Action action) {
270
+ HpackParseStatus status =
271
+ action == MitigationEngine::Action::kCloseConnection
272
+ ? HpackParseStatus::kMitigationEngineConnectionError
273
+ : HpackParseStatus::kMitigationEngineStreamError;
274
+ HpackParseResult p{status};
275
+ p.state_->key = std::string(key);
276
+ p.state_->action = action;
277
+ return p;
278
+ }
279
+
263
280
  // Compute the absl::Status that goes along with this HpackParseResult.
264
281
  // (may be cached, so this is not thread safe)
265
282
  absl::Status Materialize() const;
@@ -335,6 +352,9 @@ class HpackParseResult {
335
352
  MetadataLimitExceededByAtom metadata_limit_exceeded_by_atom;
336
353
  // Set if status == kIllegalTableSizeChange
337
354
  IllegalTableSizeChange illegal_table_size_change;
355
+ // Set if status == kMitigationEngineConnectionError or
356
+ // kMitigationEngineStreamError
357
+ MitigationEngine::Action action;
338
358
  };
339
359
  std::string key;
340
360
  mutable std::optional<absl::Status> materialized_status;
@@ -40,6 +40,7 @@
40
40
  #include "src/core/lib/slice/slice.h"
41
41
  #include "src/core/lib/slice/slice_refcount.h"
42
42
  #include "src/core/lib/surface/validate_metadata.h"
43
+ #include "src/core/mitigation_engine/mitigation_engine.h"
43
44
  #include "src/core/telemetry/call_tracer.h"
44
45
  #include "src/core/telemetry/stats.h"
45
46
  #include "src/core/telemetry/stats_data.h"
@@ -997,6 +998,21 @@ class HPackParser::Parser {
997
998
  auto value_slice = value.value.Take();
998
999
  const auto transport_size =
999
1000
  key_string.size() + value.wire_size + hpack_constants::kEntryOverhead;
1001
+ if (state_.mitigation_engine != nullptr) {
1002
+ auto action = state_.mitigation_engine->EvaluateIncomingMetadata(
1003
+ key_string, value_slice.as_string_view());
1004
+ if (action.has_value()) {
1005
+ if (action.value() == MitigationEngine::Action::kCloseConnection) {
1006
+ input_->SetErrorAndStopParsing(
1007
+ HpackParseResult::MitigationEngineError(
1008
+ key_string, MitigationEngine::Action::kCloseConnection));
1009
+ } else if (action.value() == MitigationEngine::Action::kRejectRpc) {
1010
+ input_->SetErrorAndContinueParsing(
1011
+ HpackParseResult::MitigationEngineError(
1012
+ key_string, MitigationEngine::Action::kRejectRpc));
1013
+ }
1014
+ }
1015
+ }
1000
1016
  auto md = grpc_metadata_batch::Parse(
1001
1017
  key_string, std::move(value_slice), state_.add_to_table, transport_size,
1002
1018
  [key_string, this](absl::string_view message, const Slice&) {
@@ -1092,13 +1108,15 @@ void HPackParser::BeginFrame(grpc_metadata_batch* metadata_buffer,
1092
1108
  uint32_t metadata_size_soft_limit,
1093
1109
  uint32_t metadata_size_hard_limit,
1094
1110
  Boundary boundary, Priority priority,
1095
- LogInfo log_info) {
1111
+ LogInfo log_info,
1112
+ MitigationEngine* mitigation_engine) {
1096
1113
  metadata_buffer_ = metadata_buffer;
1097
1114
  if (metadata_buffer != nullptr) {
1098
1115
  metadata_buffer->Set(GrpcStatusFromWire(), true);
1099
1116
  }
1100
1117
  boundary_ = boundary;
1101
1118
  priority_ = priority;
1119
+ state_.mitigation_engine = mitigation_engine;
1102
1120
  state_.dynamic_table_updates_allowed = 2;
1103
1121
  state_.metadata_early_detection.SetLimits(
1104
1122
  /*soft_limit=*/metadata_size_soft_limit,
@@ -1133,6 +1151,20 @@ grpc_error_handle HPackParser::ParseInput(Input input, bool is_last,
1133
1151
  CallSpan* call_tracer) {
1134
1152
  ParseInputInner(&input);
1135
1153
  if (is_last && is_boundary()) {
1154
+ if (state_.mitigation_engine != nullptr && metadata_buffer_ != nullptr) {
1155
+ auto action = state_.mitigation_engine->EvaluateAllIncomingMetadata(
1156
+ *metadata_buffer_);
1157
+ if (action.has_value()) {
1158
+ if (action.value() == MitigationEngine::Action::kCloseConnection) {
1159
+ input.SetErrorAndStopParsing(HpackParseResult::MitigationEngineError(
1160
+ /*key=*/"", MitigationEngine::Action::kCloseConnection));
1161
+ } else if (action.value() == MitigationEngine::Action::kRejectRpc) {
1162
+ input.SetErrorAndContinueParsing(
1163
+ HpackParseResult::MitigationEngineError(
1164
+ /*key=*/"", MitigationEngine::Action::kRejectRpc));
1165
+ }
1166
+ }
1167
+ }
1136
1168
  if (state_.metadata_early_detection.Reject(state_.frame_length,
1137
1169
  input.bitsrc())) {
1138
1170
  HandleMetadataSoftSizeLimitExceeded(&input);
@@ -37,6 +37,7 @@
37
37
  #include "src/core/lib/iomgr/error.h"
38
38
  #include "src/core/lib/slice/slice.h"
39
39
  #include "src/core/lib/slice/slice_refcount.h"
40
+ #include "src/core/mitigation_engine/mitigation_engine.h"
40
41
  #include "src/core/telemetry/call_tracer.h"
41
42
  #include "src/core/util/random_early_detection.h"
42
43
  #include "absl/random/bit_gen_ref.h"
@@ -99,7 +100,8 @@ class HPackParser {
99
100
  void BeginFrame(grpc_metadata_batch* metadata_buffer,
100
101
  uint32_t metadata_size_soft_limit,
101
102
  uint32_t metadata_size_hard_limit, Boundary boundary,
102
- Priority priority, LogInfo log_info);
103
+ Priority priority, LogInfo log_info,
104
+ MitigationEngine* mitigation_engine);
103
105
  // Start throwing away any received headers after parsing them.
104
106
  void StopBufferingFrame() { metadata_buffer_ = nullptr; }
105
107
  // Parse one slice worth of data
@@ -252,6 +254,7 @@ class HPackParser {
252
254
  uint8_t dynamic_table_updates_allowed;
253
255
  // Current parse state
254
256
  ParseState parse_state = ParseState::kTop;
257
+ MitigationEngine* mitigation_engine = nullptr;
255
258
  std::variant<const HPackTable::Memento*, Slice> key;
256
259
  };
257
260