grpc 1.35.0 → 1.47.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (2272) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +617 -386
  3. data/etc/roots.pem +335 -326
  4. data/include/grpc/byte_buffer.h +1 -1
  5. data/include/grpc/byte_buffer_reader.h +1 -1
  6. data/include/grpc/event_engine/README.md +38 -0
  7. data/include/grpc/event_engine/endpoint_config.h +43 -0
  8. data/include/grpc/event_engine/event_engine.h +434 -0
  9. data/include/grpc/event_engine/internal/memory_allocator_impl.h +68 -0
  10. data/include/grpc/event_engine/memory_allocator.h +211 -0
  11. data/include/grpc/event_engine/memory_request.h +57 -0
  12. data/include/grpc/event_engine/port.h +39 -0
  13. data/include/grpc/event_engine/slice.h +286 -0
  14. data/include/grpc/event_engine/slice_buffer.h +112 -0
  15. data/include/grpc/fork.h +1 -1
  16. data/include/grpc/grpc.h +76 -19
  17. data/include/grpc/grpc_posix.h +22 -18
  18. data/include/grpc/grpc_security.h +378 -195
  19. data/include/grpc/grpc_security_constants.h +17 -14
  20. data/include/grpc/impl/codegen/atm.h +5 -3
  21. data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
  22. data/include/grpc/impl/codegen/atm_gcc_sync.h +2 -0
  23. data/include/grpc/impl/codegen/atm_windows.h +2 -0
  24. data/include/grpc/impl/codegen/byte_buffer.h +2 -0
  25. data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -0
  26. data/include/grpc/impl/codegen/compression_types.h +2 -2
  27. data/include/grpc/impl/codegen/connectivity_state.h +2 -0
  28. data/include/grpc/impl/codegen/fork.h +2 -0
  29. data/include/grpc/impl/codegen/gpr_slice.h +2 -0
  30. data/include/grpc/impl/codegen/gpr_types.h +2 -0
  31. data/include/grpc/impl/codegen/grpc_types.h +68 -41
  32. data/include/grpc/impl/codegen/log.h +2 -0
  33. data/include/grpc/impl/codegen/port_platform.h +162 -35
  34. data/include/grpc/impl/codegen/propagation_bits.h +2 -0
  35. data/include/grpc/impl/codegen/slice.h +6 -1
  36. data/include/grpc/impl/codegen/status.h +2 -0
  37. data/include/grpc/impl/codegen/sync.h +8 -5
  38. data/include/grpc/impl/codegen/sync_abseil.h +2 -0
  39. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  40. data/include/grpc/impl/codegen/sync_generic.h +3 -0
  41. data/include/grpc/impl/codegen/sync_posix.h +4 -2
  42. data/include/grpc/impl/codegen/sync_windows.h +2 -0
  43. data/include/grpc/module.modulemap +14 -14
  44. data/include/grpc/slice.h +1 -12
  45. data/include/grpc/status.h +1 -1
  46. data/include/grpc/support/atm.h +1 -1
  47. data/include/grpc/support/atm_gcc_atomic.h +1 -1
  48. data/include/grpc/support/atm_gcc_sync.h +1 -1
  49. data/include/grpc/support/atm_windows.h +1 -1
  50. data/include/grpc/support/log.h +1 -1
  51. data/include/grpc/support/port_platform.h +1 -1
  52. data/include/grpc/support/sync.h +1 -1
  53. data/include/grpc/support/sync_abseil.h +1 -1
  54. data/include/grpc/support/sync_custom.h +1 -1
  55. data/include/grpc/support/sync_generic.h +1 -1
  56. data/include/grpc/support/sync_posix.h +1 -1
  57. data/include/grpc/support/sync_windows.h +1 -1
  58. data/include/grpc/support/time.h +2 -2
  59. data/src/core/ext/filters/census/grpc_context.cc +1 -0
  60. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +297 -0
  61. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +125 -0
  62. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  63. data/src/core/ext/filters/channel_idle/idle_filter_state.h +66 -0
  64. data/src/core/ext/filters/client_channel/backend_metric.cc +32 -30
  65. data/src/core/ext/filters/client_channel/backend_metric.h +19 -8
  66. data/src/core/ext/filters/client_channel/backup_poller.cc +22 -17
  67. data/src/core/ext/filters/client_channel/backup_poller.h +2 -3
  68. data/src/core/ext/filters/client_channel/channel_connectivity.cc +181 -203
  69. data/src/core/ext/filters/client_channel/client_channel.cc +1429 -3634
  70. data/src/core/ext/filters/client_channel/client_channel.h +583 -56
  71. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +6 -7
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.h +14 -4
  73. data/src/core/ext/filters/client_channel/client_channel_factory.cc +7 -1
  74. data/src/core/ext/filters/client_channel/client_channel_factory.h +26 -19
  75. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +19 -31
  76. data/src/core/ext/filters/client_channel/config_selector.cc +3 -1
  77. data/src/core/ext/filters/client_channel/config_selector.h +37 -15
  78. data/src/core/ext/filters/client_channel/connector.h +28 -22
  79. data/src/core/ext/filters/client_channel/dynamic_filters.cc +35 -21
  80. data/src/core/ext/filters/client_channel/dynamic_filters.h +16 -6
  81. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +27 -163
  82. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +19 -24
  83. data/src/core/ext/filters/client_channel/health/health_check_client.cc +141 -581
  84. data/src/core/ext/filters/client_channel/health/health_check_client.h +26 -158
  85. data/src/core/ext/filters/client_channel/http_proxy.cc +110 -109
  86. data/src/core/ext/filters/client_channel/http_proxy.h +20 -0
  87. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +10 -5
  88. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +7 -5
  89. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  90. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +18 -2
  91. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +5 -0
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +21 -27
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +350 -213
  94. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +3 -6
  95. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +5 -1
  96. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
  97. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -4
  98. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +11 -4
  99. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -19
  100. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +10 -7
  101. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +408 -0
  102. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  103. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1038 -0
  104. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +54 -0
  105. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +144 -111
  106. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +334 -245
  107. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +865 -0
  108. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +39 -0
  109. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2577 -0
  110. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +205 -195
  111. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +55 -47
  112. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +146 -89
  113. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +418 -275
  114. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +7 -1
  115. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +219 -133
  117. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +84 -76
  118. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +532 -515
  119. data/src/core/ext/filters/client_channel/lb_policy.cc +21 -29
  120. data/src/core/ext/filters/client_channel/lb_policy.h +168 -141
  121. data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -1
  122. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +16 -12
  123. data/src/core/ext/filters/client_channel/lb_policy_registry.h +7 -2
  124. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +31 -67
  125. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +11 -9
  126. data/src/core/ext/filters/client_channel/proxy_mapper.h +1 -1
  127. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
  128. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +5 -0
  129. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +151 -0
  130. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +396 -336
  131. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +31 -13
  132. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +33 -26
  133. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +55 -71
  134. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +220 -332
  135. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +52 -30
  136. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +4 -3
  137. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  138. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +2 -1
  139. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +118 -245
  140. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +70 -73
  141. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +14 -8
  142. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +446 -0
  143. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +213 -0
  144. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +113 -0
  145. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +59 -54
  146. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +786 -452
  147. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +46 -263
  148. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +43 -60
  149. data/src/core/ext/filters/client_channel/retry_filter.cc +2695 -0
  150. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  151. data/src/core/ext/filters/client_channel/retry_service_config.cc +313 -0
  152. data/src/core/ext/filters/client_channel/retry_service_config.h +111 -0
  153. data/src/core/ext/filters/client_channel/retry_throttle.cc +14 -66
  154. data/src/core/ext/filters/client_channel/retry_throttle.h +18 -6
  155. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +72 -40
  156. data/src/core/ext/filters/client_channel/subchannel.cc +319 -464
  157. data/src/core/ext/filters/client_channel/subchannel.h +163 -154
  158. data/src/core/ext/filters/client_channel/subchannel_interface.h +41 -23
  159. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  160. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +48 -9
  161. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +26 -12
  162. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +558 -0
  163. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +226 -0
  164. data/src/core/ext/filters/deadline/deadline_filter.cc +45 -43
  165. data/src/core/ext/filters/deadline/deadline_filter.h +3 -2
  166. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +255 -0
  167. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +62 -0
  168. data/src/core/ext/filters/fault_injection/service_config_parser.cc +179 -0
  169. data/src/core/ext/filters/fault_injection/service_config_parser.h +91 -0
  170. data/src/core/ext/filters/http/client/http_client_filter.cc +92 -538
  171. data/src/core/ext/filters/http/client/http_client_filter.h +27 -4
  172. data/src/core/ext/filters/http/client_authority_filter.cc +42 -111
  173. data/src/core/ext/filters/http/client_authority_filter.h +24 -5
  174. data/src/core/ext/filters/http/http_filters_plugin.cc +54 -73
  175. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +68 -157
  176. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +45 -56
  177. data/src/core/ext/filters/http/server/http_server_filter.cc +91 -464
  178. data/src/core/ext/filters/http/server/http_server_filter.h +31 -2
  179. data/src/core/ext/filters/message_size/message_size_filter.cc +78 -90
  180. data/src/core/ext/filters/message_size/message_size_filter.h +13 -6
  181. data/src/core/ext/filters/rbac/rbac_filter.cc +163 -0
  182. data/src/core/ext/filters/rbac/rbac_filter.h +76 -0
  183. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +606 -0
  184. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +75 -0
  185. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +61 -0
  186. data/src/core/ext/filters/server_config_selector/server_config_selector.h +71 -0
  187. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +143 -0
  188. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
  189. data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
  190. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +285 -86
  191. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +15 -13
  192. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +778 -235
  193. data/src/core/ext/transport/chttp2/server/chttp2_server.h +13 -2
  194. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -5
  195. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -1
  196. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +2 -0
  197. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +604 -489
  198. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +29 -5
  199. data/src/core/ext/transport/chttp2/transport/context_list.cc +8 -6
  200. data/src/core/ext/transport/chttp2/transport/context_list.h +7 -6
  201. data/src/core/ext/transport/chttp2/transport/flow_control.cc +72 -49
  202. data/src/core/ext/transport/chttp2/transport/flow_control.h +33 -23
  203. data/src/core/ext/transport/chttp2/transport/frame.h +0 -4
  204. data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -26
  205. data/src/core/ext/transport/chttp2/transport/frame_data.h +15 -11
  206. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +24 -20
  207. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +10 -7
  208. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +22 -17
  209. data/src/core/ext/transport/chttp2/transport/frame_ping.h +11 -6
  210. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +23 -17
  211. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +10 -6
  212. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +63 -20
  213. data/src/core/ext/transport/chttp2/transport/frame_settings.h +11 -6
  214. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +20 -14
  215. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +8 -6
  216. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +41 -0
  217. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +526 -757
  218. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +198 -73
  219. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +89 -0
  220. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +74 -0
  221. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +836 -1200
  222. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +109 -84
  223. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +257 -0
  224. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +132 -0
  225. data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -1
  226. data/src/core/ext/transport/chttp2/transport/internal.h +80 -79
  227. data/src/core/ext/transport/chttp2/transport/parsing.cc +192 -299
  228. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +15 -11
  229. data/src/core/ext/transport/chttp2/transport/stream_map.cc +1 -1
  230. data/src/core/ext/transport/chttp2/transport/stream_map.h +1 -0
  231. data/src/core/ext/transport/chttp2/transport/varint.cc +13 -7
  232. data/src/core/ext/transport/chttp2/transport/varint.h +41 -28
  233. data/src/core/ext/transport/chttp2/transport/writing.cc +169 -173
  234. data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
  235. data/src/core/ext/transport/inproc/inproc_transport.cc +190 -216
  236. data/src/core/ext/transport/inproc/inproc_transport.h +1 -4
  237. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  238. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +482 -0
  239. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +121 -0
  240. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +553 -0
  241. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +444 -0
  242. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2156 -0
  243. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  244. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +151 -0
  245. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +62 -0
  246. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +160 -0
  247. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  248. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +124 -0
  249. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  250. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +102 -0
  251. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  252. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +97 -0
  253. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  254. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +605 -0
  255. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  256. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +103 -0
  257. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +44 -1
  258. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +52 -1
  259. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +31 -5
  260. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +57 -18
  261. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +144 -118
  262. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +761 -386
  263. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +411 -0
  264. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2161 -0
  265. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +50 -29
  266. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +224 -95
  267. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +341 -256
  268. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1943 -800
  269. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +21 -8
  270. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +50 -24
  271. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +61 -27
  272. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +291 -95
  273. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  274. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1381 -0
  275. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +75 -54
  276. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +398 -190
  277. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +22 -8
  278. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +53 -25
  279. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +252 -143
  280. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1285 -493
  281. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +107 -47
  282. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +562 -172
  283. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +20 -7
  284. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +46 -24
  285. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +17 -23
  286. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +49 -95
  287. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  288. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +151 -0
  289. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +146 -118
  290. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +853 -415
  291. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +142 -92
  292. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +807 -340
  293. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +22 -9
  294. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +65 -31
  295. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +235 -89
  296. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1244 -288
  297. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +18 -6
  298. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +36 -17
  299. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +60 -0
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +169 -0
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +23 -10
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +83 -34
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +30 -10
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +118 -32
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +48 -0
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +118 -0
  307. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +52 -37
  308. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +214 -109
  309. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +92 -39
  310. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +449 -131
  311. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +71 -54
  312. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +389 -188
  313. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +20 -7
  314. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +42 -21
  315. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +105 -68
  316. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +616 -242
  317. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +106 -75
  318. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +637 -287
  319. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +63 -0
  320. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +234 -0
  321. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +27 -12
  322. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +96 -49
  323. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  324. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +136 -0
  325. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +165 -0
  326. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +716 -0
  327. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +174 -0
  328. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +721 -0
  329. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +131 -100
  330. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +628 -282
  331. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -25
  332. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +338 -115
  333. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +688 -537
  334. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4135 -1819
  335. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +39 -20
  336. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +168 -72
  337. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +222 -0
  338. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1052 -0
  339. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +44 -0
  340. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +88 -0
  341. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  342. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +103 -0
  343. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +28 -15
  344. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +91 -46
  345. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  346. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +134 -0
  347. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  348. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +250 -0
  349. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  350. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +94 -0
  351. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  352. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +213 -0
  353. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +32 -0
  354. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +42 -0
  355. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  356. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +218 -0
  357. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +54 -0
  358. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +146 -0
  359. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +42 -0
  360. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +85 -0
  361. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +96 -0
  362. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +375 -0
  363. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +94 -0
  364. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +433 -0
  365. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +64 -0
  366. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +183 -0
  367. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +55 -0
  368. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +168 -0
  369. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +301 -202
  370. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1794 -663
  371. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +10 -2
  372. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +7 -4
  373. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +114 -49
  374. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +652 -198
  375. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +43 -31
  376. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +176 -104
  377. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +128 -84
  378. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +673 -259
  379. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  380. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +160 -0
  381. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +16 -3
  382. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +29 -15
  383. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +99 -73
  384. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +550 -282
  385. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +32 -19
  386. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +121 -62
  387. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +138 -0
  388. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +631 -0
  389. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  390. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +112 -0
  391. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +76 -0
  392. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +249 -0
  393. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  394. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +214 -0
  395. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +29 -14
  396. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +116 -56
  397. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +49 -0
  398. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +117 -0
  399. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +21 -8
  400. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +56 -27
  401. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +20 -7
  402. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +46 -24
  403. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +37 -21
  404. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +137 -69
  405. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +32 -19
  406. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +137 -65
  407. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +60 -0
  408. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +170 -0
  409. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +38 -23
  410. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +170 -83
  411. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +51 -32
  412. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +273 -145
  413. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +54 -37
  414. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +268 -132
  415. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  416. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +201 -0
  417. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +10 -1
  418. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +4 -1
  419. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  420. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +139 -0
  421. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +24 -10
  422. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +76 -36
  423. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +31 -16
  424. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +118 -52
  425. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  426. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +41 -0
  427. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +20 -7
  428. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +48 -19
  429. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  430. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +127 -0
  431. data/src/core/ext/upb-generated/google/api/annotations.upb.c +23 -1
  432. data/src/core/ext/upb-generated/google/api/annotations.upb.h +24 -1
  433. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +155 -126
  434. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +791 -385
  435. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +167 -118
  436. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +886 -390
  437. data/src/core/ext/upb-generated/google/api/http.upb.c +44 -29
  438. data/src/core/ext/upb-generated/google/api/http.upb.h +236 -115
  439. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  440. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +111 -0
  441. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +19 -6
  442. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +46 -22
  443. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +374 -283
  444. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2263 -1053
  445. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +19 -6
  446. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +44 -20
  447. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +16 -3
  448. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +29 -15
  449. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +48 -32
  450. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +197 -93
  451. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +19 -6
  452. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +44 -20
  453. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +58 -37
  454. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +296 -149
  455. data/src/core/ext/upb-generated/google/rpc/status.upb.c +22 -9
  456. data/src/core/ext/upb-generated/google/rpc/status.upb.h +60 -30
  457. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  458. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +319 -0
  459. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +33 -19
  460. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +111 -48
  461. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +136 -108
  462. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +753 -365
  463. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +28 -13
  464. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +90 -41
  465. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +23 -9
  466. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +70 -35
  467. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +82 -62
  468. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +448 -232
  469. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +70 -0
  470. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +208 -0
  471. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  472. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +764 -0
  473. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +76 -14
  474. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +213 -57
  475. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +32 -8
  476. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +62 -18
  477. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +22 -1
  478. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +17 -1
  479. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +32 -6
  480. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -20
  481. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +31 -5
  482. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +57 -18
  483. data/src/core/ext/upb-generated/validate/validate.upb.c +407 -295
  484. data/src/core/ext/upb-generated/validate/validate.upb.h +3021 -1221
  485. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  486. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +278 -0
  487. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  488. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +108 -0
  489. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  490. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  491. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +105 -0
  492. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +290 -0
  493. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  494. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +99 -0
  495. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +41 -0
  496. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +79 -0
  497. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +66 -0
  498. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +200 -0
  499. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +56 -0
  500. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +115 -0
  501. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  502. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +103 -0
  503. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +49 -0
  504. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +127 -0
  505. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +68 -0
  506. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +240 -0
  507. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +49 -0
  508. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +121 -0
  509. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +73 -0
  510. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +187 -0
  511. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +47 -0
  512. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +109 -0
  513. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  514. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +878 -0
  515. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  516. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +143 -0
  517. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  518. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +218 -0
  519. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +46 -0
  520. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +103 -0
  521. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  522. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  523. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +127 -0
  524. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  525. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +309 -0
  526. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
  527. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  528. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  529. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +53 -0
  530. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  531. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  532. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  533. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  534. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  535. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  536. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  537. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  538. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  539. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  540. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  541. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +22 -12
  542. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  543. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +10 -13
  544. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  545. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +183 -215
  546. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  547. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +393 -0
  548. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +120 -0
  549. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +60 -62
  550. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  551. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +497 -498
  552. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +80 -70
  553. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +16 -18
  554. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  555. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +28 -23
  556. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  557. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  558. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  559. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +17 -32
  560. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +22 -22
  561. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +17 -19
  562. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  563. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +225 -224
  564. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +83 -58
  565. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +140 -115
  566. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  567. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +16 -19
  568. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  569. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +24 -43
  570. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  571. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  572. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  573. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +23 -51
  574. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  575. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +182 -187
  576. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  577. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +16 -19
  578. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  579. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +267 -197
  580. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +61 -31
  581. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +15 -20
  582. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  583. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +55 -0
  584. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  585. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +16 -18
  586. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +4 -4
  587. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +46 -31
  588. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  589. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +49 -0
  590. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  591. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +69 -80
  592. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  593. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +98 -83
  594. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +23 -13
  595. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +20 -30
  596. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  597. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +16 -18
  598. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  599. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +157 -150
  600. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +21 -16
  601. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +155 -150
  602. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  603. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +88 -0
  604. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  605. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +40 -39
  606. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  607. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  608. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  609. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +125 -0
  610. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
  611. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +134 -0
  612. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +75 -0
  613. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +190 -0
  614. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
  615. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +85 -67
  616. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +12 -7
  617. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +826 -845
  618. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +166 -151
  619. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +54 -48
  620. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  621. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +188 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +85 -0
  623. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +54 -0
  624. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  625. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  626. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  627. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +32 -39
  628. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  629. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  630. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  631. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  632. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  633. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  634. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  635. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  636. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  637. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +57 -0
  638. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  639. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  640. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  641. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +77 -0
  642. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  643. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +50 -0
  644. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
  645. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +92 -0
  646. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
  647. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +117 -0
  648. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
  649. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +59 -0
  650. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  651. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +78 -0
  652. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
  653. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +428 -388
  654. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +67 -52
  655. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +22 -22
  656. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  657. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +174 -130
  658. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +26 -16
  659. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +57 -71
  660. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  661. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +217 -212
  662. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  663. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  664. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  665. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +16 -18
  666. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  667. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +99 -123
  668. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +24 -19
  669. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +19 -26
  670. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  671. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +153 -0
  672. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +55 -0
  673. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  674. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  675. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +56 -0
  676. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  677. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  678. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  679. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +24 -27
  680. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  681. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +54 -0
  682. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
  683. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +17 -19
  684. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  685. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +17 -19
  686. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  687. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +45 -48
  688. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  689. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +40 -47
  690. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  691. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +58 -0
  692. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
  693. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +18 -24
  694. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  695. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +15 -29
  696. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  697. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +16 -26
  698. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  699. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  700. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  701. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +12 -10
  702. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  703. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  704. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  705. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +14 -19
  706. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  707. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +13 -19
  708. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  709. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +38 -0
  710. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  711. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +13 -16
  712. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  713. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  714. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  715. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +7 -7
  716. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  717. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  718. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  719. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  720. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  721. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +5 -14
  722. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  723. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  724. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  725. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +5 -10
  726. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  727. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +107 -164
  728. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  729. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +5 -10
  730. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  731. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +5 -10
  732. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  733. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +5 -16
  734. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  735. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +5 -10
  736. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  737. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +5 -26
  738. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  739. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +9 -14
  740. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  741. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  742. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  743. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  744. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  745. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +10 -18
  746. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  747. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +24 -33
  748. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  749. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +9 -8
  750. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  751. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +10 -13
  752. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  753. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +10 -14
  754. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  755. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +189 -213
  756. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  757. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  758. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  759. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  760. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  761. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  762. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  763. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +64 -0
  764. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
  765. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  766. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  767. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +38 -0
  768. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
  769. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +56 -0
  770. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
  771. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +39 -0
  772. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
  773. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  774. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  775. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +45 -0
  776. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
  777. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +61 -0
  778. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
  779. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +46 -0
  780. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
  781. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  782. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  783. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  784. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  785. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  786. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  787. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +40 -0
  788. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
  789. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  790. data/src/core/ext/xds/certificate_provider_registry.cc +3 -3
  791. data/src/core/ext/xds/certificate_provider_store.cc +10 -0
  792. data/src/core/ext/xds/certificate_provider_store.h +13 -4
  793. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +7 -7
  794. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +4 -4
  795. data/src/core/ext/xds/upb_utils.h +67 -0
  796. data/src/core/ext/xds/xds_api.cc +347 -1925
  797. data/src/core/ext/xds/xds_api.h +127 -405
  798. data/src/core/ext/xds/xds_bootstrap.cc +324 -274
  799. data/src/core/ext/xds/xds_bootstrap.h +61 -26
  800. data/src/core/ext/xds/xds_certificate_provider.cc +192 -81
  801. data/src/core/ext/xds/xds_certificate_provider.h +92 -45
  802. data/src/core/ext/xds/xds_channel_args.h +5 -2
  803. data/src/core/ext/xds/xds_channel_stack_modifier.cc +109 -0
  804. data/src/core/ext/xds/xds_channel_stack_modifier.h +53 -0
  805. data/src/core/ext/xds/xds_client.cc +1166 -867
  806. data/src/core/ext/xds/xds_client.h +172 -160
  807. data/src/core/ext/xds/xds_client_stats.cc +31 -29
  808. data/src/core/ext/xds/xds_client_stats.h +17 -15
  809. data/src/core/ext/xds/xds_cluster.cc +543 -0
  810. data/src/core/ext/xds/xds_cluster.h +111 -0
  811. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +142 -0
  812. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +79 -0
  813. data/src/core/ext/xds/xds_common_types.cc +388 -0
  814. data/src/core/ext/xds/xds_common_types.h +95 -0
  815. data/src/core/ext/xds/xds_endpoint.cc +371 -0
  816. data/src/core/ext/xds/xds_endpoint.h +135 -0
  817. data/src/core/ext/xds/xds_http_fault_filter.cc +227 -0
  818. data/src/core/ext/xds/xds_http_fault_filter.h +64 -0
  819. data/src/core/ext/xds/xds_http_filters.cc +122 -0
  820. data/src/core/ext/xds/xds_http_filters.h +133 -0
  821. data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
  822. data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
  823. data/src/core/ext/xds/xds_listener.cc +1049 -0
  824. data/src/core/ext/xds/xds_listener.h +220 -0
  825. data/src/core/ext/xds/xds_resource_type.cc +33 -0
  826. data/src/core/ext/xds/xds_resource_type.h +98 -0
  827. data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
  828. data/src/core/ext/xds/xds_route_config.cc +1122 -0
  829. data/src/core/ext/xds/xds_route_config.h +218 -0
  830. data/src/core/ext/xds/xds_routing.cc +250 -0
  831. data/src/core/ext/xds/xds_routing.h +101 -0
  832. data/src/core/ext/xds/xds_server_config_fetcher.cc +1250 -66
  833. data/src/core/lib/address_utils/parse_address.cc +340 -0
  834. data/src/core/lib/address_utils/parse_address.h +82 -0
  835. data/src/core/lib/address_utils/sockaddr_utils.cc +442 -0
  836. data/src/core/lib/address_utils/sockaddr_utils.h +98 -0
  837. data/src/core/lib/avl/avl.h +454 -88
  838. data/src/core/lib/backoff/backoff.cc +9 -38
  839. data/src/core/lib/backoff/backoff.h +11 -11
  840. data/src/core/lib/channel/call_finalization.h +90 -0
  841. data/src/core/lib/channel/call_tracer.h +94 -0
  842. data/src/core/lib/channel/channel_args.cc +212 -36
  843. data/src/core/lib/channel/channel_args.h +246 -3
  844. data/src/core/lib/channel/channel_args_preconditioning.cc +42 -0
  845. data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
  846. data/src/core/lib/channel/channel_stack.cc +77 -17
  847. data/src/core/lib/channel/channel_stack.h +105 -18
  848. data/src/core/lib/channel/channel_stack_builder.cc +19 -288
  849. data/src/core/lib/channel/channel_stack_builder.h +107 -158
  850. data/src/core/lib/channel/channel_stack_builder_impl.cc +97 -0
  851. data/src/core/lib/channel/channel_stack_builder_impl.h +45 -0
  852. data/src/core/lib/channel/channel_trace.cc +13 -20
  853. data/src/core/lib/channel/channel_trace.h +8 -4
  854. data/src/core/lib/channel/channelz.cc +156 -60
  855. data/src/core/lib/channel/channelz.h +73 -32
  856. data/src/core/lib/channel/channelz_registry.cc +27 -19
  857. data/src/core/lib/channel/channelz_registry.h +11 -10
  858. data/src/core/lib/channel/connected_channel.cc +30 -36
  859. data/src/core/lib/channel/connected_channel.h +3 -2
  860. data/src/core/lib/channel/context.h +14 -0
  861. data/src/core/lib/channel/promise_based_filter.cc +1257 -0
  862. data/src/core/lib/channel/promise_based_filter.h +570 -0
  863. data/src/core/lib/channel/status_util.cc +14 -2
  864. data/src/core/lib/channel/status_util.h +9 -3
  865. data/src/core/lib/compression/compression.cc +22 -114
  866. data/src/core/lib/compression/compression_internal.cc +173 -206
  867. data/src/core/lib/compression/compression_internal.h +64 -69
  868. data/src/core/lib/compression/message_compress.cc +13 -13
  869. data/src/core/lib/compression/message_compress.h +2 -2
  870. data/src/core/lib/config/core_configuration.cc +107 -0
  871. data/src/core/lib/config/core_configuration.h +197 -0
  872. data/src/core/lib/debug/stats.cc +1 -1
  873. data/src/core/lib/debug/stats.h +2 -1
  874. data/src/core/lib/debug/stats_data.cc +17 -20
  875. data/src/core/lib/debug/stats_data.h +19 -21
  876. data/src/core/lib/debug/trace.cc +1 -0
  877. data/src/core/lib/debug/trace.h +4 -3
  878. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +48 -0
  879. data/src/core/lib/event_engine/channel_args_endpoint_config.h +43 -0
  880. data/src/core/lib/event_engine/default_event_engine_factory.cc +33 -0
  881. data/src/core/lib/event_engine/event_engine.cc +62 -0
  882. data/src/core/lib/event_engine/event_engine_factory.h +41 -0
  883. data/src/core/lib/event_engine/handle_containers.h +67 -0
  884. data/src/core/lib/event_engine/iomgr_engine.cc +206 -0
  885. data/src/core/lib/event_engine/iomgr_engine.h +118 -0
  886. data/src/core/lib/event_engine/memory_allocator.cc +74 -0
  887. data/src/core/lib/event_engine/resolved_address.cc +41 -0
  888. data/src/core/lib/event_engine/slice.cc +102 -0
  889. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  890. data/src/core/lib/event_engine/trace.cc +18 -0
  891. data/src/core/lib/event_engine/trace.h +30 -0
  892. data/src/core/lib/gpr/alloc.cc +4 -3
  893. data/src/core/lib/gpr/atm.cc +1 -1
  894. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  895. data/src/core/lib/gpr/env_linux.cc +1 -2
  896. data/src/core/lib/gpr/env_posix.cc +2 -3
  897. data/src/core/lib/gpr/log.cc +13 -3
  898. data/src/core/lib/gpr/log_android.cc +3 -2
  899. data/src/core/lib/gpr/log_linux.cc +7 -4
  900. data/src/core/lib/gpr/log_posix.cc +6 -3
  901. data/src/core/lib/gpr/murmur_hash.cc +4 -2
  902. data/src/core/lib/gpr/string.cc +2 -2
  903. data/src/core/lib/gpr/string.h +2 -2
  904. data/src/core/lib/gpr/sync.cc +2 -2
  905. data/src/core/lib/gpr/sync_abseil.cc +10 -12
  906. data/src/core/lib/gpr/sync_posix.cc +4 -3
  907. data/src/core/lib/gpr/sync_windows.cc +2 -2
  908. data/src/core/lib/gpr/time.cc +5 -3
  909. data/src/core/lib/gpr/time_windows.cc +3 -2
  910. data/src/core/lib/gpr/tls.h +124 -40
  911. data/src/core/lib/gpr/tmpfile_posix.cc +1 -2
  912. data/src/core/lib/gpr/useful.h +97 -32
  913. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  914. data/src/core/lib/gprpp/atomic_utils.h +47 -0
  915. data/src/core/lib/gprpp/bitset.h +211 -0
  916. data/src/core/lib/gprpp/chunked_vector.h +257 -0
  917. data/src/core/lib/gprpp/construct_destruct.h +40 -0
  918. data/src/core/lib/gprpp/cpp_impl_of.h +49 -0
  919. data/src/core/lib/gprpp/debug_location.h +2 -0
  920. data/src/core/lib/gprpp/dual_ref_counted.h +27 -31
  921. data/src/core/lib/gprpp/examine_stack.h +0 -1
  922. data/src/core/lib/gprpp/fork.cc +17 -18
  923. data/src/core/lib/gprpp/fork.h +4 -4
  924. data/src/core/lib/gprpp/global_config.h +2 -5
  925. data/src/core/lib/gprpp/global_config_env.cc +16 -15
  926. data/src/core/lib/gprpp/global_config_env.h +5 -3
  927. data/src/core/lib/gprpp/global_config_generic.h +0 -4
  928. data/src/core/lib/gprpp/host_port.cc +2 -0
  929. data/src/core/lib/gprpp/manual_constructor.h +11 -10
  930. data/src/core/lib/gprpp/match.h +75 -0
  931. data/src/core/lib/gprpp/memory.h +8 -6
  932. data/src/core/lib/gprpp/mpscq.cc +9 -9
  933. data/src/core/lib/gprpp/mpscq.h +6 -5
  934. data/src/core/lib/gprpp/orphanable.h +5 -8
  935. data/src/core/lib/gprpp/overload.h +59 -0
  936. data/src/core/lib/gprpp/ref_counted.h +49 -35
  937. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -5
  938. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  939. data/src/core/lib/gprpp/stat.h +0 -2
  940. data/src/core/lib/gprpp/stat_posix.cc +7 -2
  941. data/src/core/lib/gprpp/status_helper.cc +439 -0
  942. data/src/core/lib/gprpp/status_helper.h +185 -0
  943. data/src/core/lib/gprpp/sync.h +109 -44
  944. data/src/core/lib/gprpp/table.h +444 -0
  945. data/src/core/lib/gprpp/thd.h +3 -6
  946. data/src/core/lib/gprpp/thd_posix.cc +9 -7
  947. data/src/core/lib/gprpp/thd_windows.cc +6 -11
  948. data/src/core/lib/gprpp/time.cc +206 -0
  949. data/src/core/lib/gprpp/time.h +297 -0
  950. data/src/core/lib/gprpp/time_util.cc +81 -0
  951. data/src/core/lib/gprpp/time_util.h +42 -0
  952. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  953. data/src/core/lib/http/format_request.cc +58 -25
  954. data/src/core/lib/http/format_request.h +10 -6
  955. data/src/core/lib/http/httpcli.cc +306 -209
  956. data/src/core/lib/http/httpcli.h +215 -85
  957. data/src/core/lib/http/httpcli_security_connector.cc +72 -83
  958. data/src/core/lib/http/httpcli_ssl_credentials.h +37 -0
  959. data/src/core/lib/http/parser.cc +98 -27
  960. data/src/core/lib/http/parser.h +20 -6
  961. data/src/core/lib/iomgr/buffer_list.cc +16 -17
  962. data/src/core/lib/iomgr/buffer_list.h +23 -25
  963. data/src/core/lib/iomgr/call_combiner.cc +55 -23
  964. data/src/core/lib/iomgr/call_combiner.h +12 -14
  965. data/src/core/lib/iomgr/cfstream_handle.cc +6 -6
  966. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  967. data/src/core/lib/iomgr/closure.h +33 -12
  968. data/src/core/lib/iomgr/combiner.cc +46 -36
  969. data/src/core/lib/iomgr/combiner.h +3 -2
  970. data/src/core/lib/iomgr/dualstack_socket_posix.cc +1 -0
  971. data/src/core/lib/iomgr/endpoint.cc +5 -9
  972. data/src/core/lib/iomgr/endpoint.h +9 -10
  973. data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -58
  974. data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
  975. data/src/core/lib/iomgr/endpoint_pair.h +1 -0
  976. data/src/core/lib/iomgr/endpoint_pair_posix.cc +12 -9
  977. data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
  978. data/src/core/lib/iomgr/error.cc +270 -99
  979. data/src/core/lib/iomgr/error.h +278 -114
  980. data/src/core/lib/iomgr/error_cfstream.cc +10 -4
  981. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  982. data/src/core/lib/iomgr/error_internal.h +6 -1
  983. data/src/core/lib/iomgr/ev_apple.cc +19 -15
  984. data/src/core/lib/iomgr/ev_apple.h +1 -1
  985. data/src/core/lib/iomgr/ev_epoll1_linux.cc +45 -51
  986. data/src/core/lib/iomgr/ev_poll_posix.cc +73 -73
  987. data/src/core/lib/iomgr/ev_posix.cc +22 -26
  988. data/src/core/lib/iomgr/ev_posix.h +9 -9
  989. data/src/core/lib/iomgr/exec_ctx.cc +29 -98
  990. data/src/core/lib/iomgr/exec_ctx.h +32 -58
  991. data/src/core/lib/iomgr/executor/mpmcqueue.cc +15 -16
  992. data/src/core/lib/iomgr/executor/mpmcqueue.h +7 -11
  993. data/src/core/lib/iomgr/executor/threadpool.cc +4 -5
  994. data/src/core/lib/iomgr/executor/threadpool.h +4 -3
  995. data/src/core/lib/iomgr/executor.cc +37 -46
  996. data/src/core/lib/iomgr/executor.h +3 -3
  997. data/src/core/lib/iomgr/fork_posix.cc +2 -1
  998. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -2
  999. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +2 -2
  1000. data/src/core/lib/iomgr/internal_errqueue.cc +41 -49
  1001. data/src/core/lib/iomgr/internal_errqueue.h +1 -6
  1002. data/src/core/lib/iomgr/iocp_windows.cc +10 -9
  1003. data/src/core/lib/iomgr/iocp_windows.h +1 -1
  1004. data/src/core/lib/iomgr/iomgr.cc +5 -4
  1005. data/src/core/lib/iomgr/iomgr.h +3 -3
  1006. data/src/core/lib/iomgr/iomgr_fwd.h +25 -0
  1007. data/src/core/lib/iomgr/iomgr_internal.cc +8 -12
  1008. data/src/core/lib/iomgr/iomgr_internal.h +6 -5
  1009. data/src/core/lib/iomgr/iomgr_posix.cc +5 -4
  1010. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +44 -15
  1011. data/src/core/lib/iomgr/iomgr_windows.cc +4 -5
  1012. data/src/core/lib/iomgr/load_file.cc +6 -6
  1013. data/src/core/lib/iomgr/load_file.h +2 -2
  1014. data/src/core/lib/iomgr/lockfree_event.cc +23 -5
  1015. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  1016. data/src/core/lib/iomgr/polling_entity.cc +2 -2
  1017. data/src/core/lib/iomgr/polling_entity.h +6 -0
  1018. data/src/core/lib/iomgr/pollset.cc +5 -5
  1019. data/src/core/lib/iomgr/pollset.h +9 -9
  1020. data/src/core/lib/iomgr/pollset_set.h +1 -2
  1021. data/src/core/lib/iomgr/pollset_set_windows.cc +1 -0
  1022. data/src/core/lib/iomgr/pollset_windows.cc +6 -6
  1023. data/src/core/lib/iomgr/port.h +28 -17
  1024. data/src/core/lib/iomgr/python_util.h +3 -2
  1025. data/src/core/lib/iomgr/resolve_address.cc +17 -23
  1026. data/src/core/lib/iomgr/resolve_address.h +58 -46
  1027. data/src/core/lib/iomgr/resolve_address_impl.h +58 -0
  1028. data/src/core/lib/iomgr/resolve_address_posix.cc +84 -78
  1029. data/src/core/lib/iomgr/resolve_address_posix.h +50 -0
  1030. data/src/core/lib/iomgr/resolve_address_windows.cc +95 -85
  1031. data/src/core/lib/iomgr/resolve_address_windows.h +50 -0
  1032. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1033. data/src/core/lib/iomgr/sockaddr.h +3 -3
  1034. data/src/core/lib/iomgr/sockaddr_posix.h +2 -0
  1035. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +62 -0
  1036. data/src/core/lib/iomgr/sockaddr_windows.h +2 -0
  1037. data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
  1038. data/src/core/lib/iomgr/socket_factory_posix.h +1 -0
  1039. data/src/core/lib/iomgr/socket_mutator.cc +17 -4
  1040. data/src/core/lib/iomgr/socket_mutator.h +27 -3
  1041. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -44
  1042. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  1043. data/src/core/lib/iomgr/socket_utils_posix.cc +2 -2
  1044. data/src/core/lib/iomgr/socket_utils_posix.h +22 -22
  1045. data/src/core/lib/iomgr/socket_utils_windows.cc +2 -2
  1046. data/src/core/lib/iomgr/tcp_client.cc +1 -1
  1047. data/src/core/lib/iomgr/tcp_client.h +5 -2
  1048. data/src/core/lib/iomgr/tcp_client_cfstream.cc +22 -30
  1049. data/src/core/lib/iomgr/tcp_client_posix.cc +50 -50
  1050. data/src/core/lib/iomgr/tcp_client_posix.h +7 -6
  1051. data/src/core/lib/iomgr/tcp_client_windows.cc +26 -19
  1052. data/src/core/lib/iomgr/tcp_posix.cc +211 -204
  1053. data/src/core/lib/iomgr/tcp_posix.h +17 -12
  1054. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  1055. data/src/core/lib/iomgr/tcp_server.h +16 -14
  1056. data/src/core/lib/iomgr/tcp_server_posix.cc +91 -58
  1057. data/src/core/lib/iomgr/tcp_server_utils_posix.h +34 -29
  1058. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +53 -47
  1059. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +18 -15
  1060. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  1061. data/src/core/lib/iomgr/tcp_server_windows.cc +37 -32
  1062. data/src/core/lib/iomgr/tcp_windows.cc +42 -56
  1063. data/src/core/lib/iomgr/tcp_windows.h +3 -3
  1064. data/src/core/lib/iomgr/timer.cc +3 -2
  1065. data/src/core/lib/iomgr/timer.h +17 -8
  1066. data/src/core/lib/iomgr/timer_generic.cc +118 -129
  1067. data/src/core/lib/iomgr/timer_generic.h +1 -0
  1068. data/src/core/lib/iomgr/timer_heap.cc +2 -3
  1069. data/src/core/lib/iomgr/timer_manager.cc +17 -16
  1070. data/src/core/lib/iomgr/unix_sockets_posix.cc +25 -39
  1071. data/src/core/lib/iomgr/unix_sockets_posix.h +6 -10
  1072. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +12 -18
  1073. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  1074. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -1
  1075. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +6 -7
  1076. data/src/core/lib/iomgr/wakeup_fd_posix.cc +4 -3
  1077. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  1078. data/src/core/lib/iomgr/work_serializer.cc +120 -44
  1079. data/src/core/lib/iomgr/work_serializer.h +33 -5
  1080. data/src/core/lib/json/json.h +2 -3
  1081. data/src/core/lib/json/json_reader.cc +106 -59
  1082. data/src/core/lib/json/json_util.cc +78 -3
  1083. data/src/core/lib/json/json_util.h +77 -118
  1084. data/src/core/lib/json/json_writer.cc +6 -4
  1085. data/src/core/lib/matchers/matchers.cc +327 -0
  1086. data/src/core/lib/matchers/matchers.h +160 -0
  1087. data/src/core/lib/profiling/basic_timers.cc +8 -6
  1088. data/src/core/lib/profiling/stap_timers.cc +2 -2
  1089. data/src/core/lib/promise/activity.cc +121 -0
  1090. data/src/core/lib/promise/activity.h +540 -0
  1091. data/src/core/lib/promise/arena_promise.h +198 -0
  1092. data/src/core/lib/promise/call_push_pull.h +148 -0
  1093. data/src/core/lib/promise/context.h +86 -0
  1094. data/src/core/lib/promise/detail/basic_seq.h +496 -0
  1095. data/src/core/lib/promise/detail/promise_factory.h +188 -0
  1096. data/src/core/lib/promise/detail/promise_like.h +85 -0
  1097. data/src/core/lib/promise/detail/status.h +50 -0
  1098. data/src/core/lib/promise/detail/switch.h +1455 -0
  1099. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
  1100. data/src/core/lib/promise/intra_activity_waiter.h +49 -0
  1101. data/src/core/lib/promise/latch.h +103 -0
  1102. data/src/core/lib/promise/loop.h +135 -0
  1103. data/src/core/lib/promise/map.h +88 -0
  1104. data/src/core/lib/promise/poll.h +66 -0
  1105. data/src/core/lib/promise/promise.h +95 -0
  1106. data/src/core/lib/promise/race.h +83 -0
  1107. data/src/core/lib/promise/seq.h +87 -0
  1108. data/src/core/lib/promise/sleep.cc +76 -0
  1109. data/src/core/lib/promise/sleep.h +76 -0
  1110. data/src/core/lib/promise/try_seq.h +157 -0
  1111. data/src/core/lib/resolver/resolver.cc +79 -0
  1112. data/src/core/lib/resolver/resolver.h +135 -0
  1113. data/src/core/lib/resolver/resolver_factory.h +75 -0
  1114. data/src/core/lib/resolver/resolver_registry.cc +156 -0
  1115. data/src/core/lib/resolver/resolver_registry.h +113 -0
  1116. data/src/core/lib/resolver/server_address.cc +176 -0
  1117. data/src/core/lib/resolver/server_address.h +144 -0
  1118. data/src/core/lib/resource_quota/api.cc +96 -0
  1119. data/src/core/lib/resource_quota/api.h +43 -0
  1120. data/src/core/lib/resource_quota/arena.cc +101 -0
  1121. data/src/core/lib/resource_quota/arena.h +141 -0
  1122. data/src/core/lib/resource_quota/memory_quota.cc +520 -0
  1123. data/src/core/lib/resource_quota/memory_quota.h +476 -0
  1124. data/src/core/lib/resource_quota/resource_quota.cc +33 -0
  1125. data/src/core/lib/resource_quota/resource_quota.h +74 -0
  1126. data/src/core/lib/resource_quota/thread_quota.cc +45 -0
  1127. data/src/core/lib/resource_quota/thread_quota.h +61 -0
  1128. data/src/core/lib/resource_quota/trace.cc +19 -0
  1129. data/src/core/lib/resource_quota/trace.h +24 -0
  1130. data/src/core/lib/security/authorization/authorization_engine.h +13 -53
  1131. data/src/core/lib/security/authorization/authorization_policy_provider.h +40 -0
  1132. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  1133. data/src/core/lib/security/authorization/evaluate_args.cc +143 -79
  1134. data/src/core/lib/security/authorization/evaluate_args.h +50 -17
  1135. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
  1136. data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
  1137. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +109 -0
  1138. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +50 -0
  1139. data/src/core/lib/security/authorization/matchers.cc +227 -0
  1140. data/src/core/lib/security/authorization/matchers.h +211 -0
  1141. data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
  1142. data/src/core/lib/security/authorization/rbac_policy.h +171 -0
  1143. data/src/core/lib/security/context/security_context.cc +15 -10
  1144. data/src/core/lib/security/context/security_context.h +9 -2
  1145. data/src/core/lib/security/credentials/alts/alts_credentials.cc +14 -6
  1146. data/src/core/lib/security/credentials/alts/alts_credentials.h +11 -1
  1147. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +2 -2
  1148. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -2
  1149. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +2 -2
  1150. data/src/core/lib/security/credentials/call_creds_util.cc +89 -0
  1151. data/src/core/lib/security/credentials/call_creds_util.h +42 -0
  1152. data/src/core/lib/security/credentials/channel_creds_registry.h +98 -0
  1153. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +70 -0
  1154. data/src/core/lib/security/credentials/composite/composite_credentials.cc +31 -85
  1155. data/src/core/lib/security/credentials/composite/composite_credentials.h +25 -11
  1156. data/src/core/lib/security/credentials/credentials.cc +11 -10
  1157. data/src/core/lib/security/credentials/credentials.h +90 -83
  1158. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +160 -73
  1159. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +23 -13
  1160. data/src/core/lib/security/credentials/external/aws_request_signer.cc +5 -4
  1161. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  1162. data/src/core/lib/security/credentials/external/external_account_credentials.cc +132 -82
  1163. data/src/core/lib/security/credentials/external/external_account_credentials.h +15 -17
  1164. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -6
  1165. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  1166. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +46 -27
  1167. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +10 -7
  1168. data/src/core/lib/security/credentials/fake/fake_credentials.cc +33 -27
  1169. data/src/core/lib/security/credentials/fake/fake_credentials.h +22 -21
  1170. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +1 -2
  1171. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +117 -47
  1172. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +10 -4
  1173. data/src/core/lib/security/credentials/iam/iam_credentials.cc +25 -28
  1174. data/src/core/lib/security/credentials/iam/iam_credentials.h +15 -9
  1175. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +31 -26
  1176. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +57 -0
  1177. data/src/core/lib/security/credentials/jwt/json_token.cc +7 -12
  1178. data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
  1179. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +58 -52
  1180. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +27 -15
  1181. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +66 -62
  1182. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +4 -4
  1183. data/src/core/lib/security/credentials/local/local_credentials.cc +14 -7
  1184. data/src/core/lib/security/credentials/local/local_credentials.h +11 -1
  1185. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +178 -193
  1186. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +62 -34
  1187. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +100 -155
  1188. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +56 -27
  1189. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -19
  1190. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +15 -5
  1191. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +11 -9
  1192. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +19 -15
  1193. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +90 -25
  1194. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +67 -12
  1195. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +234 -0
  1196. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +169 -0
  1197. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +35 -85
  1198. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +75 -151
  1199. data/src/core/lib/security/credentials/tls/tls_credentials.cc +42 -17
  1200. data/src/core/lib/security/credentials/tls/tls_credentials.h +7 -1
  1201. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  1202. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  1203. data/src/core/lib/security/credentials/xds/xds_credentials.cc +134 -63
  1204. data/src/core/lib/security/credentials/xds/xds_credentials.h +40 -9
  1205. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +22 -18
  1206. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +3 -3
  1207. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +25 -26
  1208. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +1 -3
  1209. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +10 -20
  1210. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +21 -16
  1211. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +1 -0
  1212. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +5 -6
  1213. data/src/core/lib/security/security_connector/local/local_security_connector.cc +34 -26
  1214. data/src/core/lib/security/security_connector/security_connector.cc +9 -16
  1215. data/src/core/lib/security/security_connector/security_connector.h +34 -25
  1216. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +29 -25
  1217. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +1 -2
  1218. data/src/core/lib/security/security_connector/ssl_utils.cc +76 -43
  1219. data/src/core/lib/security/security_connector/ssl_utils.h +17 -21
  1220. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +440 -283
  1221. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +118 -79
  1222. data/src/core/lib/security/transport/auth_filters.h +39 -5
  1223. data/src/core/lib/security/transport/client_auth_filter.cc +96 -355
  1224. data/src/core/lib/security/transport/secure_endpoint.cc +221 -151
  1225. data/src/core/lib/security/transport/secure_endpoint.h +2 -1
  1226. data/src/core/lib/security/transport/security_handshaker.cc +174 -96
  1227. data/src/core/lib/security/transport/security_handshaker.h +3 -2
  1228. data/src/core/lib/security/transport/server_auth_filter.cc +61 -50
  1229. data/src/core/lib/security/transport/tsi_error.cc +5 -6
  1230. data/src/core/lib/security/transport/tsi_error.h +2 -1
  1231. data/src/core/lib/security/util/json_util.cc +8 -10
  1232. data/src/core/lib/security/util/json_util.h +1 -1
  1233. data/src/core/lib/service_config/service_config.h +78 -0
  1234. data/src/core/lib/service_config/service_config_call_data.h +75 -0
  1235. data/src/core/lib/service_config/service_config_impl.cc +237 -0
  1236. data/src/core/lib/service_config/service_config_impl.h +132 -0
  1237. data/src/core/lib/service_config/service_config_parser.cc +101 -0
  1238. data/src/core/lib/service_config/service_config_parser.h +113 -0
  1239. data/src/core/lib/slice/b64.cc +1 -1
  1240. data/src/core/lib/slice/b64.h +2 -0
  1241. data/src/core/lib/slice/percent_encoding.cc +87 -97
  1242. data/src/core/lib/slice/percent_encoding.h +22 -33
  1243. data/src/core/lib/slice/slice.cc +83 -192
  1244. data/src/core/lib/slice/slice.h +389 -0
  1245. data/src/core/lib/slice/slice_api.cc +39 -0
  1246. data/src/core/lib/slice/slice_buffer.cc +59 -29
  1247. data/src/core/lib/slice/slice_buffer.h +106 -0
  1248. data/src/core/lib/slice/slice_buffer_api.cc +35 -0
  1249. data/src/core/lib/slice/slice_internal.h +18 -278
  1250. data/src/core/lib/slice/slice_refcount.cc +35 -0
  1251. data/src/core/lib/slice/slice_refcount.h +45 -0
  1252. data/src/core/lib/slice/slice_refcount_base.h +60 -0
  1253. data/src/core/lib/slice/slice_split.cc +103 -0
  1254. data/src/core/lib/slice/slice_split.h +36 -0
  1255. data/src/core/lib/slice/slice_string_helpers.cc +2 -81
  1256. data/src/core/lib/slice/slice_string_helpers.h +1 -15
  1257. data/src/core/lib/surface/api_trace.cc +2 -1
  1258. data/src/core/lib/surface/api_trace.h +1 -0
  1259. data/src/core/lib/surface/builtins.cc +54 -0
  1260. data/src/core/lib/surface/builtins.h +26 -0
  1261. data/src/core/lib/surface/byte_buffer.cc +7 -1
  1262. data/src/core/lib/surface/byte_buffer_reader.cc +5 -5
  1263. data/src/core/lib/surface/call.cc +1186 -1256
  1264. data/src/core/lib/surface/call.h +29 -24
  1265. data/src/core/lib/surface/call_details.cc +4 -4
  1266. data/src/core/lib/surface/call_log_batch.cc +9 -3
  1267. data/src/core/lib/surface/call_test_only.h +4 -1
  1268. data/src/core/lib/surface/channel.cc +221 -315
  1269. data/src/core/lib/surface/channel.h +102 -72
  1270. data/src/core/lib/surface/channel_init.cc +22 -76
  1271. data/src/core/lib/surface/channel_init.h +45 -39
  1272. data/src/core/lib/surface/channel_ping.cc +10 -5
  1273. data/src/core/lib/surface/channel_stack_type.cc +0 -1
  1274. data/src/core/lib/surface/channel_stack_type.h +0 -2
  1275. data/src/core/lib/surface/completion_queue.cc +150 -151
  1276. data/src/core/lib/surface/completion_queue.h +8 -3
  1277. data/src/core/lib/surface/completion_queue_factory.cc +4 -3
  1278. data/src/core/lib/surface/completion_queue_factory.h +1 -2
  1279. data/src/core/lib/surface/event_string.cc +1 -6
  1280. data/src/core/lib/surface/event_string.h +1 -1
  1281. data/src/core/lib/surface/init.cc +82 -90
  1282. data/src/core/lib/surface/init.h +2 -4
  1283. data/src/core/lib/surface/lame_client.cc +80 -92
  1284. data/src/core/lib/surface/lame_client.h +42 -3
  1285. data/src/core/lib/surface/metadata_array.cc +4 -2
  1286. data/src/core/lib/surface/server.cc +201 -220
  1287. data/src/core/lib/surface/server.h +160 -64
  1288. data/src/core/lib/surface/validate_metadata.cc +57 -29
  1289. data/src/core/lib/surface/validate_metadata.h +6 -2
  1290. data/src/core/lib/surface/version.cc +2 -2
  1291. data/src/core/lib/transport/bdp_estimator.cc +14 -13
  1292. data/src/core/lib/transport/bdp_estimator.h +4 -5
  1293. data/src/core/lib/transport/byte_stream.cc +15 -8
  1294. data/src/core/lib/transport/byte_stream.h +14 -9
  1295. data/src/core/lib/transport/connectivity_state.cc +15 -10
  1296. data/src/core/lib/transport/connectivity_state.h +4 -5
  1297. data/src/core/lib/transport/error_utils.cc +71 -30
  1298. data/src/core/lib/transport/error_utils.h +18 -7
  1299. data/src/core/lib/transport/handshaker.cc +227 -0
  1300. data/src/core/lib/transport/handshaker.h +168 -0
  1301. data/src/core/lib/transport/handshaker_factory.h +49 -0
  1302. data/src/core/lib/transport/handshaker_registry.cc +54 -0
  1303. data/src/core/lib/transport/handshaker_registry.h +72 -0
  1304. data/src/core/lib/transport/http_connect_handshaker.cc +401 -0
  1305. data/src/core/lib/transport/http_connect_handshaker.h +42 -0
  1306. data/src/core/lib/transport/metadata_batch.cc +213 -318
  1307. data/src/core/lib/transport/metadata_batch.h +1230 -158
  1308. data/src/core/lib/transport/parsed_metadata.cc +39 -0
  1309. data/src/core/lib/transport/parsed_metadata.h +408 -0
  1310. data/src/core/lib/transport/pid_controller.cc +4 -4
  1311. data/src/core/lib/transport/status_conversion.cc +4 -2
  1312. data/src/core/lib/transport/status_conversion.h +3 -3
  1313. data/src/core/lib/transport/tcp_connect_handshaker.cc +253 -0
  1314. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1315. data/src/core/lib/transport/timeout_encoding.cc +203 -70
  1316. data/src/core/lib/transport/timeout_encoding.h +44 -10
  1317. data/src/core/lib/transport/transport.cc +33 -52
  1318. data/src/core/lib/transport/transport.h +137 -10
  1319. data/src/core/lib/transport/transport_impl.h +24 -0
  1320. data/src/core/lib/transport/transport_op_string.cc +21 -44
  1321. data/src/core/lib/uri/uri_parser.cc +248 -66
  1322. data/src/core/lib/uri/uri_parser.h +39 -25
  1323. data/src/core/plugin_registry/grpc_plugin_registry.cc +84 -90
  1324. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +85 -0
  1325. data/src/core/tsi/alts/crypt/aes_gcm.cc +6 -3
  1326. data/src/core/tsi/alts/crypt/gsec.h +5 -0
  1327. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
  1328. data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
  1329. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +54 -55
  1330. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +2 -3
  1331. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +9 -1
  1332. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +56 -42
  1333. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
  1334. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  1335. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -2
  1336. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
  1337. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +3 -5
  1338. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +2 -2
  1339. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +2 -2
  1340. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  1341. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
  1342. data/src/core/tsi/fake_transport_security.cc +26 -9
  1343. data/src/core/tsi/local_transport_security.cc +42 -87
  1344. data/src/core/tsi/local_transport_security.h +1 -4
  1345. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +141 -0
  1346. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1347. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -6
  1348. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +2 -0
  1349. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +20 -55
  1350. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +8 -11
  1351. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +4 -2
  1352. data/src/core/tsi/ssl_transport_security.cc +261 -79
  1353. data/src/core/tsi/ssl_transport_security.h +53 -16
  1354. data/src/core/tsi/transport_security.cc +15 -3
  1355. data/src/core/tsi/transport_security.h +16 -1
  1356. data/src/core/tsi/transport_security_grpc.h +1 -0
  1357. data/src/core/tsi/transport_security_interface.h +28 -0
  1358. data/src/ruby/bin/math_services_pb.rb +1 -1
  1359. data/src/ruby/ext/grpc/extconf.rb +31 -11
  1360. data/src/ruby/ext/grpc/rb_byte_buffer.c +2 -1
  1361. data/src/ruby/ext/grpc/rb_call.c +5 -5
  1362. data/src/ruby/ext/grpc/rb_call_credentials.c +5 -5
  1363. data/src/ruby/ext/grpc/rb_channel.c +24 -10
  1364. data/src/ruby/ext/grpc/rb_channel_args.c +2 -2
  1365. data/src/ruby/ext/grpc/rb_channel_credentials.c +15 -5
  1366. data/src/ruby/ext/grpc/rb_channel_credentials.h +5 -0
  1367. data/src/ruby/ext/grpc/rb_completion_queue.c +3 -2
  1368. data/src/ruby/ext/grpc/rb_compression_options.c +6 -5
  1369. data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
  1370. data/src/ruby/ext/grpc/rb_event_thread.c +4 -4
  1371. data/src/ruby/ext/grpc/rb_grpc.c +9 -4
  1372. data/src/ruby/ext/grpc/rb_grpc.h +1 -0
  1373. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -34
  1374. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -53
  1375. data/src/ruby/ext/grpc/rb_server.c +26 -10
  1376. data/src/ruby/ext/grpc/rb_server_credentials.c +22 -6
  1377. data/src/ruby/ext/grpc/rb_server_credentials.h +5 -0
  1378. data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +218 -0
  1379. data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +37 -0
  1380. data/src/ruby/ext/grpc/rb_xds_server_credentials.c +170 -0
  1381. data/src/ruby/ext/grpc/rb_xds_server_credentials.h +37 -0
  1382. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1383. data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
  1384. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1385. data/src/ruby/lib/grpc/version.rb +1 -1
  1386. data/src/ruby/pb/generate_proto_ruby.sh +1 -0
  1387. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  1388. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
  1389. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -0
  1390. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  1391. data/src/ruby/pb/test/client.rb +769 -0
  1392. data/src/ruby/pb/test/server.rb +252 -0
  1393. data/src/ruby/pb/test/xds_client.rb +415 -0
  1394. data/src/ruby/spec/call_spec.rb +1 -1
  1395. data/src/ruby/spec/channel_credentials_spec.rb +32 -0
  1396. data/src/ruby/spec/channel_spec.rb +17 -6
  1397. data/src/ruby/spec/client_auth_spec.rb +27 -1
  1398. data/src/ruby/spec/client_server_spec.rb +1 -1
  1399. data/src/ruby/spec/errors_spec.rb +1 -1
  1400. data/src/ruby/spec/generic/active_call_spec.rb +2 -2
  1401. data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
  1402. data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
  1403. data/src/ruby/spec/server_credentials_spec.rb +25 -0
  1404. data/src/ruby/spec/server_spec.rb +22 -0
  1405. data/third_party/abseil-cpp/absl/algorithm/container.h +104 -94
  1406. data/third_party/abseil-cpp/absl/base/attributes.h +88 -35
  1407. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  1408. data/third_party/abseil-cpp/absl/base/config.h +102 -44
  1409. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +25 -36
  1410. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  1411. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  1412. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
  1413. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  1414. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  1415. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  1416. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  1417. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +17 -6
  1418. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  1419. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  1420. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  1421. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +13 -11
  1422. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  1423. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +70 -1
  1424. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +9 -6
  1425. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +58 -52
  1426. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  1427. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  1428. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +17 -3
  1429. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
  1430. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  1431. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  1432. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  1433. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  1434. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  1435. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  1436. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1437. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1438. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -7
  1439. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +1 -1
  1440. data/third_party/abseil-cpp/absl/container/inlined_vector.h +110 -100
  1441. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  1442. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
  1443. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +23 -103
  1444. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +39 -79
  1445. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  1446. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +469 -429
  1447. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  1448. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
  1449. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +21 -2
  1450. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +374 -243
  1451. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +27 -13
  1452. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
  1453. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
  1454. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  1455. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +15 -17
  1456. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
  1457. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  1458. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
  1459. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
  1460. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +11 -7
  1461. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
  1462. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
  1463. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
  1464. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  1465. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +16 -2
  1466. data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
  1467. data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
  1468. data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
  1469. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  1470. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  1471. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +27 -13
  1472. data/third_party/abseil-cpp/absl/hash/internal/hash.h +145 -45
  1473. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +123 -0
  1474. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +50 -0
  1475. data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
  1476. data/third_party/abseil-cpp/absl/meta/type_traits.h +47 -3
  1477. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  1478. data/third_party/abseil-cpp/absl/numeric/int128.cc +6 -13
  1479. data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
  1480. data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
  1481. data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
  1482. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  1483. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  1484. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc +93 -0
  1485. data/third_party/abseil-cpp/absl/profiling/internal/exponential_biased.h +130 -0
  1486. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
  1487. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1488. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1489. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1490. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1491. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1492. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1493. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1494. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1495. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
  1496. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
  1497. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1498. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1499. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1500. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
  1501. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
  1502. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1503. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1504. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1505. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1506. data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
  1507. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
  1508. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1509. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
  1510. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1511. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1512. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1513. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1514. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1515. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1516. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
  1517. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1518. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1519. data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
  1520. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1521. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
  1522. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
  1523. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
  1524. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1525. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1526. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1527. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1528. data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
  1529. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1530. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1531. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
  1532. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1533. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  1534. data/third_party/abseil-cpp/absl/status/status.cc +27 -28
  1535. data/third_party/abseil-cpp/absl/status/status.h +98 -33
  1536. data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
  1537. data/third_party/abseil-cpp/absl/status/statusor.h +34 -24
  1538. data/third_party/abseil-cpp/absl/strings/charconv.cc +8 -8
  1539. data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
  1540. data/third_party/abseil-cpp/absl/strings/cord.cc +619 -570
  1541. data/third_party/abseil-cpp/absl/strings/cord.h +346 -101
  1542. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  1543. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +7 -7
  1544. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +89 -0
  1545. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +478 -31
  1546. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
  1547. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
  1548. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
  1549. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
  1550. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
  1551. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
  1552. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
  1553. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
  1554. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  1555. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +771 -0
  1556. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +607 -0
  1557. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +118 -0
  1558. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
  1559. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
  1560. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
  1561. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
  1562. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
  1563. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
  1564. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
  1565. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
  1566. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
  1567. data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
  1568. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  1569. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +22 -0
  1570. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +18 -5
  1571. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +20 -5
  1572. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  1573. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1574. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
  1575. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  1576. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  1577. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +76 -73
  1578. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +38 -16
  1579. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +49 -74
  1580. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  1581. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  1582. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  1583. data/third_party/abseil-cpp/absl/strings/numbers.cc +133 -5
  1584. data/third_party/abseil-cpp/absl/strings/numbers.h +44 -10
  1585. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  1586. data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
  1587. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  1588. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  1589. data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
  1590. data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
  1591. data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
  1592. data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
  1593. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
  1594. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
  1595. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  1596. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
  1597. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  1598. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  1599. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  1600. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +2 -66
  1601. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  1602. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  1603. data/third_party/abseil-cpp/absl/synchronization/mutex.h +82 -65
  1604. data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
  1605. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  1606. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  1607. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  1608. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  1609. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
  1610. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
  1611. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
  1612. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
  1613. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  1614. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
  1615. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +5 -5
  1616. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
  1617. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  1618. data/third_party/abseil-cpp/absl/time/time.h +93 -60
  1619. data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
  1620. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
  1621. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  1622. data/third_party/abseil-cpp/absl/types/span.h +3 -3
  1623. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  1624. data/third_party/address_sorting/address_sorting_posix.c +1 -0
  1625. data/third_party/boringssl-with-bazel/err_data.c +760 -724
  1626. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +70 -57
  1627. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +22 -23
  1628. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
  1629. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
  1630. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +6 -1
  1631. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
  1632. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +16 -23
  1633. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +67 -54
  1634. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
  1635. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
  1636. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +650 -0
  1637. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
  1638. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +4 -4
  1639. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
  1640. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +3 -42
  1641. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +1 -1
  1642. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +75 -63
  1643. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
  1644. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
  1645. data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
  1646. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
  1647. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +224 -0
  1648. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +79 -354
  1649. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +327 -281
  1650. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +15 -26
  1651. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +20 -75
  1652. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -8
  1653. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +3 -2
  1654. data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +1 -1
  1655. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +24 -8
  1656. data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
  1657. data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
  1658. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
  1659. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
  1660. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
  1661. data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
  1662. data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
  1663. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +156 -0
  1664. data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
  1665. data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +11 -10
  1666. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
  1667. data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +68 -45
  1668. data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
  1669. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +49 -65
  1670. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
  1671. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  1672. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
  1673. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  1674. data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +14 -3
  1675. data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
  1676. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
  1677. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
  1678. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  1679. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  1680. data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
  1681. data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +272 -0
  1682. data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +31 -3
  1683. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1684. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
  1685. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  1686. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  1687. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
  1688. data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
  1689. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
  1690. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
  1691. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +28 -12
  1692. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
  1693. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +15 -4
  1694. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  1695. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
  1696. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +44 -16
  1697. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +35 -2
  1698. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
  1699. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
  1700. data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
  1701. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +456 -0
  1702. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +9 -0
  1703. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  1704. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -160
  1705. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
  1706. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
  1707. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  1708. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +105 -95
  1709. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  1710. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +56 -72
  1711. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +56 -73
  1712. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  1713. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  1714. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  1715. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  1716. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
  1717. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  1718. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  1719. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +30 -9
  1720. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +123 -44
  1721. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +30 -20
  1722. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +50 -33
  1723. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +65 -41
  1724. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  1725. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +168 -16
  1726. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +93 -107
  1727. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +91 -113
  1728. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +50 -86
  1729. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +400 -325
  1730. data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +219 -121
  1731. data/third_party/boringssl-with-bazel/src/crypto/hrss/internal.h +9 -2
  1732. data/third_party/boringssl-with-bazel/src/crypto/internal.h +125 -0
  1733. data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +253 -0
  1734. data/third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c +28 -23
  1735. data/third_party/boringssl-with-bazel/src/crypto/mem.c +46 -9
  1736. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +10 -6
  1737. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
  1738. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
  1739. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
  1740. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
  1741. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
  1742. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
  1743. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +38 -4
  1744. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +156 -15
  1745. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1746. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1747. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +96 -49
  1748. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +11 -8
  1749. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
  1750. data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
  1751. data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
  1752. data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -22
  1753. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +4 -0
  1754. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c +4 -0
  1755. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +34 -0
  1756. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
  1757. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +4 -0
  1758. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  1759. data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
  1760. data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
  1761. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  1762. data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +15 -11
  1763. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +1 -1
  1764. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
  1765. data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +1 -0
  1766. data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
  1767. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +351 -13
  1768. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
  1769. data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +20 -5
  1770. data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +10 -5
  1771. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  1772. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
  1773. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +7 -2
  1774. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +24 -47
  1775. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
  1776. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +12 -9
  1777. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +1 -5
  1778. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
  1779. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +42 -89
  1780. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
  1781. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  1782. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +26 -23
  1783. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +25 -69
  1784. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +54 -74
  1785. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +61 -23
  1786. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
  1787. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  1788. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -19
  1789. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -16
  1790. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
  1791. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +15 -13
  1792. data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +2 -0
  1793. data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +23 -21
  1794. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
  1795. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  1796. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  1797. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  1798. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  1799. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +50 -14
  1800. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +5 -2
  1801. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +239 -11
  1802. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +2 -1
  1803. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +2 -2
  1804. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
  1805. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +2 -1
  1806. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
  1807. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +5 -4
  1808. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +27 -8
  1809. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +29 -18
  1810. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +6 -3
  1811. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +26 -25
  1812. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +10 -13
  1813. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -2
  1814. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +7 -1
  1815. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
  1816. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
  1817. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +48 -40
  1818. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
  1819. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
  1820. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -13
  1821. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +2 -2
  1822. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
  1823. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +86 -44
  1824. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -4
  1825. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +69 -4
  1826. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +1794 -665
  1827. data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +5 -179
  1828. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +63 -14
  1829. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1830. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
  1831. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
  1832. data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
  1833. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +32 -7
  1834. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  1835. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +36 -7
  1836. data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +8 -5
  1837. data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
  1838. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  1839. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +60 -38
  1840. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +10 -2
  1841. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +27 -41
  1842. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
  1843. data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
  1844. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +41 -10
  1845. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  1846. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +67 -106
  1847. data/third_party/boringssl-with-bazel/src/include/openssl/evp_errors.h +99 -0
  1848. data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
  1849. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +350 -0
  1850. data/third_party/boringssl-with-bazel/src/include/openssl/hrss.h +14 -12
  1851. data/third_party/boringssl-with-bazel/src/include/openssl/lhash.h +4 -205
  1852. data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +12 -3
  1853. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +26 -6
  1854. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
  1855. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +42 -18
  1856. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +15 -2
  1857. data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
  1858. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
  1859. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +128 -91
  1860. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +39 -16
  1861. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +435 -119
  1862. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +48 -36
  1863. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1397 -380
  1864. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -679
  1865. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +192 -52
  1866. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +16 -18
  1867. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  1868. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +1084 -0
  1869. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +4325 -0
  1870. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +298 -22
  1871. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +92 -44
  1872. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +314 -217
  1873. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +177 -35
  1874. data/third_party/boringssl-with-bazel/src/ssl/internal.h +493 -154
  1875. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +9 -3
  1876. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -2
  1877. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  1878. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
  1879. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  1880. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
  1881. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +34 -31
  1882. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +64 -112
  1883. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  1884. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +136 -104
  1885. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  1886. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +12 -17
  1887. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +11 -3
  1888. data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +28 -23
  1889. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
  1890. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +79 -34
  1891. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +235 -178
  1892. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +160 -91
  1893. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +269 -118
  1894. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  1895. data/third_party/cares/cares/include/ares.h +742 -0
  1896. data/third_party/cares/cares/include/ares_dns.h +112 -0
  1897. data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  1898. data/third_party/cares/cares/include/ares_version.h +24 -0
  1899. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  1900. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  1901. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1902. data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  1903. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1904. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1905. data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  1906. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1907. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1908. data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  1909. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  1910. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  1911. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  1912. data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  1913. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  1914. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  1915. data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  1916. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  1917. data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  1918. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1919. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1920. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  1921. data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  1922. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  1923. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  1924. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  1925. data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  1926. data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  1927. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  1928. data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  1929. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  1930. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  1931. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  1932. data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  1933. data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  1934. data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  1935. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1936. data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  1937. data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  1938. data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  1939. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1940. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1941. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1942. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  1943. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  1944. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  1945. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  1946. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1947. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  1948. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  1949. data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  1950. data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  1951. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  1952. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  1953. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  1954. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  1955. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  1956. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  1957. data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  1958. data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  1959. data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  1960. data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  1961. data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  1962. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  1963. data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  1964. data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  1965. data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  1966. data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  1967. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  1968. data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  1969. data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  1970. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  1971. data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  1972. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  1973. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  1974. data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  1975. data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
  1976. data/third_party/re2/re2/compile.cc +91 -109
  1977. data/third_party/re2/re2/dfa.cc +27 -39
  1978. data/third_party/re2/re2/filtered_re2.cc +18 -2
  1979. data/third_party/re2/re2/filtered_re2.h +10 -5
  1980. data/third_party/re2/re2/nfa.cc +1 -1
  1981. data/third_party/re2/re2/parse.cc +42 -23
  1982. data/third_party/re2/re2/perl_groups.cc +34 -34
  1983. data/third_party/re2/re2/prefilter.cc +3 -2
  1984. data/third_party/re2/re2/prog.cc +182 -4
  1985. data/third_party/re2/re2/prog.h +28 -9
  1986. data/third_party/re2/re2/re2.cc +87 -118
  1987. data/third_party/re2/re2/re2.h +156 -141
  1988. data/third_party/re2/re2/regexp.cc +12 -5
  1989. data/third_party/re2/re2/regexp.h +8 -2
  1990. data/third_party/re2/re2/set.cc +31 -9
  1991. data/third_party/re2/re2/set.h +9 -4
  1992. data/third_party/re2/re2/simplify.cc +11 -3
  1993. data/third_party/re2/re2/tostring.cc +1 -1
  1994. data/third_party/re2/re2/walker-inl.h +1 -1
  1995. data/third_party/re2/util/mutex.h +2 -2
  1996. data/third_party/re2/util/pcre.h +3 -3
  1997. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  1998. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  1999. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2000. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2001. data/third_party/upb/upb/decode.c +774 -351
  2002. data/third_party/upb/upb/decode.h +66 -12
  2003. data/third_party/upb/upb/decode_fast.c +596 -581
  2004. data/third_party/upb/upb/decode_fast.h +40 -13
  2005. data/third_party/upb/upb/decode_internal.h +211 -0
  2006. data/third_party/upb/upb/def.c +2151 -1068
  2007. data/third_party/upb/upb/def.h +352 -258
  2008. data/third_party/upb/upb/def.hpp +160 -161
  2009. data/third_party/upb/upb/encode.c +291 -165
  2010. data/third_party/upb/upb/encode.h +38 -13
  2011. data/third_party/upb/upb/json_encode.c +267 -204
  2012. data/third_party/upb/upb/json_encode.h +33 -7
  2013. data/third_party/upb/upb/msg.c +274 -102
  2014. data/third_party/upb/upb/msg.h +83 -582
  2015. data/third_party/upb/upb/msg_internal.h +831 -0
  2016. data/third_party/upb/upb/port_def.inc +93 -24
  2017. data/third_party/upb/upb/port_undef.inc +39 -1
  2018. data/third_party/upb/upb/reflection.c +312 -240
  2019. data/third_party/upb/upb/reflection.h +119 -67
  2020. data/third_party/upb/upb/reflection.hpp +37 -0
  2021. data/third_party/upb/upb/table.c +406 -197
  2022. data/third_party/upb/upb/table_internal.h +385 -0
  2023. data/third_party/upb/upb/text_encode.c +141 -90
  2024. data/third_party/upb/upb/text_encode.h +31 -5
  2025. data/third_party/upb/upb/upb.c +164 -66
  2026. data/third_party/upb/upb/upb.h +182 -146
  2027. data/third_party/upb/upb/upb.hpp +50 -23
  2028. data/third_party/upb/upb/upb_internal.h +68 -0
  2029. data/third_party/xxhash/xxhash.h +5580 -0
  2030. data/third_party/zlib/crc32.c +966 -292
  2031. data/third_party/zlib/crc32.h +9441 -436
  2032. data/third_party/zlib/deflate.c +78 -30
  2033. data/third_party/zlib/deflate.h +12 -15
  2034. data/third_party/zlib/gzguts.h +3 -2
  2035. data/third_party/zlib/gzlib.c +5 -3
  2036. data/third_party/zlib/gzread.c +5 -7
  2037. data/third_party/zlib/gzwrite.c +25 -13
  2038. data/third_party/zlib/infback.c +2 -1
  2039. data/third_party/zlib/inffast.c +14 -14
  2040. data/third_party/zlib/inflate.c +39 -8
  2041. data/third_party/zlib/inflate.h +3 -2
  2042. data/third_party/zlib/inftrees.c +3 -3
  2043. data/third_party/zlib/trees.c +27 -48
  2044. data/third_party/zlib/zlib.h +123 -100
  2045. data/third_party/zlib/zutil.c +2 -2
  2046. data/third_party/zlib/zutil.h +12 -9
  2047. metadata +734 -307
  2048. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -388
  2049. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -34
  2050. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -45
  2051. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -85
  2052. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +0 -179
  2053. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +0 -38
  2054. data/src/core/ext/filters/client_channel/resolver.cc +0 -87
  2055. data/src/core/ext/filters/client_channel/resolver.h +0 -147
  2056. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -73
  2057. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -197
  2058. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -89
  2059. data/src/core/ext/filters/client_channel/server_address.cc +0 -161
  2060. data/src/core/ext/filters/client_channel/server_address.h +0 -113
  2061. data/src/core/ext/filters/client_channel/service_config.cc +0 -226
  2062. data/src/core/ext/filters/client_channel/service_config.h +0 -126
  2063. data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -86
  2064. data/src/core/ext/filters/client_channel/service_config_parser.cc +0 -89
  2065. data/src/core/ext/filters/client_channel/service_config_parser.h +0 -92
  2066. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -440
  2067. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -557
  2068. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2069. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -210
  2070. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -27
  2071. data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
  2072. data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
  2073. data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
  2074. data/src/core/ext/transport/chttp2/client/authority.h +0 -36
  2075. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -124
  2076. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -90
  2077. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -212
  2078. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -45
  2079. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -76
  2080. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -86
  2081. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2082. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +0 -242
  2083. data/src/core/ext/transport/chttp2/transport/hpack_table.h +0 -148
  2084. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
  2085. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
  2086. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -27
  2087. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -56
  2088. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -30
  2089. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -56
  2090. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -30
  2091. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -56
  2092. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -29
  2093. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -56
  2094. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -27
  2095. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -56
  2096. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +0 -28
  2097. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
  2098. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
  2099. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
  2100. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
  2101. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
  2102. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +0 -36
  2103. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
  2104. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
  2105. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
  2106. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
  2107. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
  2108. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
  2109. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -124
  2110. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -72
  2111. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  2112. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -83
  2113. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  2114. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -82
  2115. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  2116. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -86
  2117. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  2118. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -74
  2119. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  2120. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
  2121. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
  2122. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
  2123. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
  2124. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
  2125. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
  2126. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
  2127. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
  2128. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
  2129. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
  2130. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
  2131. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
  2132. data/src/core/lib/avl/avl.cc +0 -306
  2133. data/src/core/lib/channel/handshaker.cc +0 -262
  2134. data/src/core/lib/channel/handshaker.h +0 -179
  2135. data/src/core/lib/channel/handshaker_factory.h +0 -42
  2136. data/src/core/lib/channel/handshaker_registry.cc +0 -105
  2137. data/src/core/lib/channel/handshaker_registry.h +0 -54
  2138. data/src/core/lib/compression/algorithm_metadata.h +0 -61
  2139. data/src/core/lib/compression/compression_args.cc +0 -135
  2140. data/src/core/lib/compression/compression_args.h +0 -56
  2141. data/src/core/lib/compression/stream_compression.cc +0 -80
  2142. data/src/core/lib/compression/stream_compression.h +0 -116
  2143. data/src/core/lib/compression/stream_compression_gzip.cc +0 -230
  2144. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2145. data/src/core/lib/compression/stream_compression_identity.cc +0 -90
  2146. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2147. data/src/core/lib/gpr/arena.h +0 -47
  2148. data/src/core/lib/gpr/tls_gcc.h +0 -52
  2149. data/src/core/lib/gpr/tls_msvc.h +0 -54
  2150. data/src/core/lib/gpr/tls_pthread.cc +0 -30
  2151. data/src/core/lib/gpr/tls_pthread.h +0 -56
  2152. data/src/core/lib/gpr/tls_stdcpp.h +0 -48
  2153. data/src/core/lib/gprpp/arena.cc +0 -103
  2154. data/src/core/lib/gprpp/arena.h +0 -121
  2155. data/src/core/lib/gprpp/atomic.h +0 -104
  2156. data/src/core/lib/iomgr/endpoint_pair_uv.cc +0 -40
  2157. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1658
  2158. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2159. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2160. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2161. data/src/core/lib/iomgr/iomgr_posix.h +0 -26
  2162. data/src/core/lib/iomgr/iomgr_uv.cc +0 -43
  2163. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  2164. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2165. data/src/core/lib/iomgr/parse_address.cc +0 -322
  2166. data/src/core/lib/iomgr/parse_address.h +0 -77
  2167. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  2168. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  2169. data/src/core/lib/iomgr/pollset_custom.cc +0 -106
  2170. data/src/core/lib/iomgr/pollset_custom.h +0 -35
  2171. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -48
  2172. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2173. data/src/core/lib/iomgr/pollset_uv.cc +0 -93
  2174. data/src/core/lib/iomgr/pollset_uv.h +0 -32
  2175. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -168
  2176. data/src/core/lib/iomgr/resolve_address_custom.h +0 -45
  2177. data/src/core/lib/iomgr/resource_quota.cc +0 -1016
  2178. data/src/core/lib/iomgr/resource_quota.h +0 -177
  2179. data/src/core/lib/iomgr/sockaddr_custom.h +0 -54
  2180. data/src/core/lib/iomgr/sockaddr_utils.cc +0 -296
  2181. data/src/core/lib/iomgr/sockaddr_utils.h +0 -80
  2182. data/src/core/lib/iomgr/socket_utils_uv.cc +0 -49
  2183. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2184. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -161
  2185. data/src/core/lib/iomgr/tcp_custom.cc +0 -391
  2186. data/src/core/lib/iomgr/tcp_custom.h +0 -84
  2187. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -483
  2188. data/src/core/lib/iomgr/tcp_uv.cc +0 -419
  2189. data/src/core/lib/iomgr/timer_custom.cc +0 -95
  2190. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2191. data/src/core/lib/iomgr/timer_uv.cc +0 -66
  2192. data/src/core/lib/iomgr/udp_server.cc +0 -747
  2193. data/src/core/lib/iomgr/udp_server.h +0 -103
  2194. data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
  2195. data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
  2196. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
  2197. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
  2198. data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
  2199. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
  2200. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
  2201. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -62
  2202. data/src/core/lib/slice/slice_intern.cc +0 -374
  2203. data/src/core/lib/slice/slice_utils.h +0 -200
  2204. data/src/core/lib/surface/init_secure.cc +0 -81
  2205. data/src/core/lib/transport/authority_override.cc +0 -40
  2206. data/src/core/lib/transport/authority_override.h +0 -37
  2207. data/src/core/lib/transport/metadata.cc +0 -689
  2208. data/src/core/lib/transport/metadata.h +0 -446
  2209. data/src/core/lib/transport/static_metadata.cc +0 -1249
  2210. data/src/core/lib/transport/static_metadata.h +0 -604
  2211. data/src/core/lib/transport/status_metadata.cc +0 -62
  2212. data/src/core/lib/transport/status_metadata.h +0 -48
  2213. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  2214. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +0 -93
  2215. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +0 -130
  2216. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  2217. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +0 -104
  2218. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
  2219. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +0 -533
  2220. data/third_party/boringssl-with-bazel/src/crypto/dh/params.c +0 -93
  2221. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
  2222. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -237
  2223. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +0 -653
  2224. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
  2225. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_r2x.c +0 -116
  2226. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
  2227. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +0 -4100
  2228. data/third_party/cares/cares/ares.h +0 -670
  2229. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2230. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2231. data/third_party/cares/cares/ares_create_query.c +0 -206
  2232. data/third_party/cares/cares/ares_data.c +0 -222
  2233. data/third_party/cares/cares/ares_data.h +0 -72
  2234. data/third_party/cares/cares/ares_dns.h +0 -103
  2235. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2236. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2237. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2238. data/third_party/cares/cares/ares_getenv.c +0 -30
  2239. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2240. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2241. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2242. data/third_party/cares/cares/ares_getopt.c +0 -122
  2243. data/third_party/cares/cares/ares_getopt.h +0 -53
  2244. data/third_party/cares/cares/ares_init.c +0 -2615
  2245. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2246. data/third_party/cares/cares/ares_library_init.c +0 -195
  2247. data/third_party/cares/cares/ares_library_init.h +0 -43
  2248. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2249. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2250. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2251. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2252. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2253. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2254. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2255. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2256. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2257. data/third_party/cares/cares/ares_private.h +0 -382
  2258. data/third_party/cares/cares/ares_process.c +0 -1473
  2259. data/third_party/cares/cares/ares_query.c +0 -186
  2260. data/third_party/cares/cares/ares_search.c +0 -323
  2261. data/third_party/cares/cares/ares_send.c +0 -137
  2262. data/third_party/cares/cares/ares_setup.h +0 -217
  2263. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2264. data/third_party/cares/cares/ares_version.h +0 -24
  2265. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2266. data/third_party/cares/cares/inet_ntop.c +0 -207
  2267. data/third_party/upb/third_party/wyhash/wyhash.h +0 -145
  2268. data/third_party/upb/upb/decode.int.h +0 -163
  2269. data/third_party/upb/upb/json_decode.c +0 -1443
  2270. data/third_party/upb/upb/json_decode.h +0 -23
  2271. data/third_party/upb/upb/table.int.h +0 -475
  2272. data/third_party/upb/upb/upb.int.h +0 -29
@@ -1,787 +1,134 @@
1
- /*
2
- *
3
- * Copyright 2018 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
1
+ //
2
+ // Copyright 2018 gRPC authors.
3
+ //
4
+ // Licensed under the Apache License, Version 2.0 (the "License");
5
+ // you may not use this file except in compliance with the License.
6
+ // You may obtain a copy of the License at
7
+ //
8
+ // http://www.apache.org/licenses/LICENSE-2.0
9
+ //
10
+ // Unless required by applicable law or agreed to in writing, software
11
+ // distributed under the License is distributed on an "AS IS" BASIS,
12
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ // See the License for the specific language governing permissions and
14
+ // limitations under the License.
15
+ //
18
16
 
19
17
  #include <grpc/support/port_platform.h>
20
18
 
21
- #include <algorithm>
22
- #include <cctype>
23
- #include <cstdint>
24
- #include <cstdlib>
19
+ #include "src/core/ext/xds/xds_api.h"
20
+
21
+ #include <set>
25
22
  #include <string>
23
+ #include <vector>
26
24
 
27
25
  #include "absl/strings/str_cat.h"
28
- #include "absl/strings/str_format.h"
29
- #include "absl/strings/str_join.h"
30
- #include "absl/strings/str_split.h"
31
-
32
- #include "upb/upb.hpp"
33
-
34
- #include <grpc/impl/codegen/log.h>
35
- #include <grpc/support/alloc.h>
36
- #include <grpc/support/string_util.h>
37
-
38
- #include "src/core/ext/xds/xds_api.h"
39
- #include "src/core/lib/gpr/env.h"
40
- #include "src/core/lib/gpr/string.h"
41
- #include "src/core/lib/gpr/useful.h"
42
- #include "src/core/lib/iomgr/error.h"
43
- #include "src/core/lib/iomgr/sockaddr_utils.h"
44
- #include "src/core/lib/slice/slice_utils.h"
45
-
46
- #include "envoy/config/cluster/v3/circuit_breaker.upb.h"
47
- #include "envoy/config/cluster/v3/cluster.upb.h"
48
- #include "envoy/config/cluster/v3/cluster.upbdefs.h"
49
- #include "envoy/config/core/v3/address.upb.h"
26
+ #include "envoy/admin/v3/config_dump.upb.h"
50
27
  #include "envoy/config/core/v3/base.upb.h"
51
- #include "envoy/config/core/v3/config_source.upb.h"
52
- #include "envoy/config/core/v3/health_check.upb.h"
53
- #include "envoy/config/core/v3/protocol.upb.h"
54
- #include "envoy/config/endpoint/v3/endpoint.upb.h"
55
- #include "envoy/config/endpoint/v3/endpoint.upbdefs.h"
56
- #include "envoy/config/endpoint/v3/endpoint_components.upb.h"
57
28
  #include "envoy/config/endpoint/v3/load_report.upb.h"
58
- #include "envoy/config/listener/v3/api_listener.upb.h"
59
- #include "envoy/config/listener/v3/listener.upb.h"
60
- #include "envoy/config/route/v3/route.upb.h"
61
- #include "envoy/config/route/v3/route.upbdefs.h"
62
- #include "envoy/config/route/v3/route_components.upb.h"
63
- #include "envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h"
64
- #include "envoy/extensions/transport_sockets/tls/v3/common.upb.h"
65
- #include "envoy/extensions/transport_sockets/tls/v3/tls.upb.h"
66
- #include "envoy/service/cluster/v3/cds.upb.h"
67
- #include "envoy/service/cluster/v3/cds.upbdefs.h"
68
29
  #include "envoy/service/discovery/v3/discovery.upb.h"
69
30
  #include "envoy/service/discovery/v3/discovery.upbdefs.h"
70
- #include "envoy/service/endpoint/v3/eds.upb.h"
71
- #include "envoy/service/endpoint/v3/eds.upbdefs.h"
72
- #include "envoy/service/listener/v3/lds.upb.h"
73
31
  #include "envoy/service/load_stats/v3/lrs.upb.h"
74
32
  #include "envoy/service/load_stats/v3/lrs.upbdefs.h"
75
- #include "envoy/service/route/v3/rds.upb.h"
76
- #include "envoy/service/route/v3/rds.upbdefs.h"
77
- #include "envoy/type/matcher/v3/regex.upb.h"
78
- #include "envoy/type/matcher/v3/string.upb.h"
79
- #include "envoy/type/v3/percent.upb.h"
80
- #include "envoy/type/v3/range.upb.h"
33
+ #include "envoy/service/status/v3/csds.upb.h"
34
+ #include "envoy/service/status/v3/csds.upbdefs.h"
81
35
  #include "google/protobuf/any.upb.h"
82
- #include "google/protobuf/duration.upb.h"
83
36
  #include "google/protobuf/struct.upb.h"
37
+ #include "google/protobuf/timestamp.upb.h"
84
38
  #include "google/protobuf/wrappers.upb.h"
85
39
  #include "google/rpc/status.upb.h"
86
40
  #include "upb/text_encode.h"
87
41
  #include "upb/upb.h"
42
+ #include "upb/upb.hpp"
88
43
 
89
- namespace grpc_core {
90
-
91
- // TODO (donnadionne): Check to see if timeout is enabled, this will be
92
- // removed once timeout feature is fully integration-tested and enabled by
93
- // default.
94
- bool XdsTimeoutEnabled() {
95
- char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_ENABLE_TIMEOUT");
96
- bool parsed_value;
97
- bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
98
- gpr_free(value);
99
- return parse_succeeded && parsed_value;
100
- }
101
-
102
- // TODO(yashykt): Check to see if xDS security is enabled. This will be
103
- // removed once this feature is fully integration-tested and enabled by
104
- // default.
105
- bool XdsSecurityEnabled() {
106
- char* value = gpr_getenv("GRPC_XDS_EXPERIMENTAL_SECURITY_SUPPORT");
107
- bool parsed_value;
108
- bool parse_succeeded = gpr_parse_bool_value(value, &parsed_value);
109
- gpr_free(value);
110
- return parse_succeeded && parsed_value;
111
- }
112
-
113
- //
114
- // XdsApi::Route::Matchers::PathMatcher
115
- //
116
-
117
- XdsApi::Route::Matchers::PathMatcher::PathMatcher(const PathMatcher& other)
118
- : type(other.type), case_sensitive(other.case_sensitive) {
119
- if (type == PathMatcherType::REGEX) {
120
- RE2::Options options;
121
- options.set_case_sensitive(case_sensitive);
122
- regex_matcher =
123
- absl::make_unique<RE2>(other.regex_matcher->pattern(), options);
124
- } else {
125
- string_matcher = other.string_matcher;
126
- }
127
- }
128
-
129
- XdsApi::Route::Matchers::PathMatcher& XdsApi::Route::Matchers::PathMatcher::
130
- operator=(const PathMatcher& other) {
131
- type = other.type;
132
- case_sensitive = other.case_sensitive;
133
- if (type == PathMatcherType::REGEX) {
134
- RE2::Options options;
135
- options.set_case_sensitive(case_sensitive);
136
- regex_matcher =
137
- absl::make_unique<RE2>(other.regex_matcher->pattern(), options);
138
- } else {
139
- string_matcher = other.string_matcher;
140
- }
141
- return *this;
142
- }
143
-
144
- bool XdsApi::Route::Matchers::PathMatcher::operator==(
145
- const PathMatcher& other) const {
146
- if (type != other.type) return false;
147
- if (case_sensitive != other.case_sensitive) return false;
148
- if (type == PathMatcherType::REGEX) {
149
- // Should never be null.
150
- if (regex_matcher == nullptr || other.regex_matcher == nullptr) {
151
- return false;
152
- }
153
- return regex_matcher->pattern() == other.regex_matcher->pattern();
154
- }
155
- return string_matcher == other.string_matcher;
156
- }
157
-
158
- std::string XdsApi::Route::Matchers::PathMatcher::ToString() const {
159
- std::string path_type_string;
160
- switch (type) {
161
- case PathMatcherType::PATH:
162
- path_type_string = "path match";
163
- break;
164
- case PathMatcherType::PREFIX:
165
- path_type_string = "prefix match";
166
- break;
167
- case PathMatcherType::REGEX:
168
- path_type_string = "regex match";
169
- break;
170
- default:
171
- break;
172
- }
173
- return absl::StrFormat("Path %s:%s%s", path_type_string,
174
- type == PathMatcherType::REGEX
175
- ? regex_matcher->pattern()
176
- : string_matcher,
177
- case_sensitive ? "" : "[case_sensitive=false]");
178
- }
179
-
180
- //
181
- // XdsApi::Route::Matchers::HeaderMatcher
182
- //
183
-
184
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcher(
185
- const HeaderMatcher& other)
186
- : name(other.name), type(other.type), invert_match(other.invert_match) {
187
- switch (type) {
188
- case HeaderMatcherType::REGEX:
189
- regex_match = absl::make_unique<RE2>(other.regex_match->pattern());
190
- break;
191
- case HeaderMatcherType::RANGE:
192
- range_start = other.range_start;
193
- range_end = other.range_end;
194
- break;
195
- case HeaderMatcherType::PRESENT:
196
- present_match = other.present_match;
197
- break;
198
- default:
199
- string_matcher = other.string_matcher;
200
- }
201
- }
202
-
203
- XdsApi::Route::Matchers::HeaderMatcher& XdsApi::Route::Matchers::HeaderMatcher::
204
- operator=(const HeaderMatcher& other) {
205
- name = other.name;
206
- type = other.type;
207
- invert_match = other.invert_match;
208
- switch (type) {
209
- case HeaderMatcherType::REGEX:
210
- regex_match = absl::make_unique<RE2>(other.regex_match->pattern());
211
- break;
212
- case HeaderMatcherType::RANGE:
213
- range_start = other.range_start;
214
- range_end = other.range_end;
215
- break;
216
- case HeaderMatcherType::PRESENT:
217
- present_match = other.present_match;
218
- break;
219
- default:
220
- string_matcher = other.string_matcher;
221
- }
222
- return *this;
223
- }
224
-
225
- bool XdsApi::Route::Matchers::HeaderMatcher::operator==(
226
- const HeaderMatcher& other) const {
227
- if (name != other.name) return false;
228
- if (type != other.type) return false;
229
- if (invert_match != other.invert_match) return false;
230
- switch (type) {
231
- case HeaderMatcherType::REGEX:
232
- return regex_match->pattern() != other.regex_match->pattern();
233
- case HeaderMatcherType::RANGE:
234
- return range_start != other.range_start && range_end != other.range_end;
235
- case HeaderMatcherType::PRESENT:
236
- return present_match != other.present_match;
237
- default:
238
- return string_matcher != other.string_matcher;
239
- }
240
- }
241
-
242
- std::string XdsApi::Route::Matchers::HeaderMatcher::ToString() const {
243
- switch (type) {
244
- case HeaderMatcherType::EXACT:
245
- return absl::StrFormat("Header exact match:%s %s:%s",
246
- invert_match ? " not" : "", name, string_matcher);
247
- case HeaderMatcherType::REGEX:
248
- return absl::StrFormat("Header regex match:%s %s:%s",
249
- invert_match ? " not" : "", name,
250
- regex_match->pattern());
251
- case HeaderMatcherType::RANGE:
252
- return absl::StrFormat("Header range match:%s %s:[%d, %d)",
253
- invert_match ? " not" : "", name, range_start,
254
- range_end);
255
- case HeaderMatcherType::PRESENT:
256
- return absl::StrFormat("Header present match:%s %s:%s",
257
- invert_match ? " not" : "", name,
258
- present_match ? "true" : "false");
259
- case HeaderMatcherType::PREFIX:
260
- return absl::StrFormat("Header prefix match:%s %s:%s",
261
- invert_match ? " not" : "", name, string_matcher);
262
- case HeaderMatcherType::SUFFIX:
263
- return absl::StrFormat("Header suffix match:%s %s:%s",
264
- invert_match ? " not" : "", name, string_matcher);
265
- default:
266
- return "";
267
- }
268
- }
269
-
270
- //
271
- // XdsApi::Route
272
- //
273
-
274
- std::string XdsApi::Route::Matchers::ToString() const {
275
- std::vector<std::string> contents;
276
- contents.push_back(path_matcher.ToString());
277
- for (const HeaderMatcher& header_matcher : header_matchers) {
278
- contents.push_back(header_matcher.ToString());
279
- }
280
- if (fraction_per_million.has_value()) {
281
- contents.push_back(absl::StrFormat("Fraction Per Million %d",
282
- fraction_per_million.value()));
283
- }
284
- return absl::StrJoin(contents, "\n");
285
- }
286
-
287
- std::string XdsApi::Route::ClusterWeight::ToString() const {
288
- return absl::StrFormat("{cluster=%s, weight=%d}", name, weight);
289
- }
290
-
291
- std::string XdsApi::Route::ToString() const {
292
- std::vector<std::string> contents;
293
- contents.push_back(matchers.ToString());
294
- if (!cluster_name.empty()) {
295
- contents.push_back(absl::StrFormat("Cluster name: %s", cluster_name));
296
- }
297
- for (const ClusterWeight& cluster_weight : weighted_clusters) {
298
- contents.push_back(cluster_weight.ToString());
299
- }
300
- if (max_stream_duration.has_value()) {
301
- contents.push_back(max_stream_duration->ToString());
302
- }
303
- return absl::StrJoin(contents, "\n");
304
- }
305
-
306
- //
307
- // XdsApi::RdsUpdate
308
- //
309
-
310
- std::string XdsApi::RdsUpdate::ToString() const {
311
- std::vector<std::string> vhosts;
312
- for (const VirtualHost& vhost : virtual_hosts) {
313
- vhosts.push_back(
314
- absl::StrCat("vhost={\n"
315
- " domains=[",
316
- absl::StrJoin(vhost.domains, ", "),
317
- "]\n"
318
- " routes=[\n"));
319
- for (const XdsApi::Route& route : vhost.routes) {
320
- vhosts.push_back(" {\n");
321
- vhosts.push_back(route.ToString());
322
- vhosts.push_back("\n }\n");
323
- }
324
- vhosts.push_back(" ]\n");
325
- vhosts.push_back("]\n");
326
- }
327
- return absl::StrJoin(vhosts, "");
328
- }
329
-
330
- namespace {
331
-
332
- // Better match type has smaller value.
333
- enum MatchType {
334
- EXACT_MATCH,
335
- SUFFIX_MATCH,
336
- PREFIX_MATCH,
337
- UNIVERSE_MATCH,
338
- INVALID_MATCH,
339
- };
340
-
341
- // Returns true if match succeeds.
342
- bool DomainMatch(MatchType match_type, const std::string& domain_pattern_in,
343
- const std::string& expected_host_name_in) {
344
- // Normalize the args to lower-case. Domain matching is case-insensitive.
345
- std::string domain_pattern = domain_pattern_in;
346
- std::string expected_host_name = expected_host_name_in;
347
- std::transform(domain_pattern.begin(), domain_pattern.end(),
348
- domain_pattern.begin(),
349
- [](unsigned char c) { return std::tolower(c); });
350
- std::transform(expected_host_name.begin(), expected_host_name.end(),
351
- expected_host_name.begin(),
352
- [](unsigned char c) { return std::tolower(c); });
353
- if (match_type == EXACT_MATCH) {
354
- return domain_pattern == expected_host_name;
355
- } else if (match_type == SUFFIX_MATCH) {
356
- // Asterisk must match at least one char.
357
- if (expected_host_name.size() < domain_pattern.size()) return false;
358
- absl::string_view pattern_suffix(domain_pattern.c_str() + 1);
359
- absl::string_view host_suffix(expected_host_name.c_str() +
360
- expected_host_name.size() -
361
- pattern_suffix.size());
362
- return pattern_suffix == host_suffix;
363
- } else if (match_type == PREFIX_MATCH) {
364
- // Asterisk must match at least one char.
365
- if (expected_host_name.size() < domain_pattern.size()) return false;
366
- absl::string_view pattern_prefix(domain_pattern.c_str(),
367
- domain_pattern.size() - 1);
368
- absl::string_view host_prefix(expected_host_name.c_str(),
369
- pattern_prefix.size());
370
- return pattern_prefix == host_prefix;
371
- } else {
372
- return match_type == UNIVERSE_MATCH;
373
- }
374
- }
375
-
376
- MatchType DomainPatternMatchType(const std::string& domain_pattern) {
377
- if (domain_pattern.empty()) return INVALID_MATCH;
378
- if (domain_pattern.find('*') == std::string::npos) return EXACT_MATCH;
379
- if (domain_pattern == "*") return UNIVERSE_MATCH;
380
- if (domain_pattern[0] == '*') return SUFFIX_MATCH;
381
- if (domain_pattern[domain_pattern.size() - 1] == '*') return PREFIX_MATCH;
382
- return INVALID_MATCH;
383
- }
384
-
385
- } // namespace
386
-
387
- XdsApi::RdsUpdate::VirtualHost* XdsApi::RdsUpdate::FindVirtualHostForDomain(
388
- const std::string& domain) {
389
- // Find the best matched virtual host.
390
- // The search order for 4 groups of domain patterns:
391
- // 1. Exact match.
392
- // 2. Suffix match (e.g., "*ABC").
393
- // 3. Prefix match (e.g., "ABC*").
394
- // 4. Universe match (i.e., "*").
395
- // Within each group, longest match wins.
396
- // If the same best matched domain pattern appears in multiple virtual hosts,
397
- // the first matched virtual host wins.
398
- VirtualHost* target_vhost = nullptr;
399
- MatchType best_match_type = INVALID_MATCH;
400
- size_t longest_match = 0;
401
- // Check each domain pattern in each virtual host to determine the best
402
- // matched virtual host.
403
- for (VirtualHost& vhost : virtual_hosts) {
404
- for (const std::string& domain_pattern : vhost.domains) {
405
- // Check the match type first. Skip the pattern if it's not better than
406
- // current match.
407
- const MatchType match_type = DomainPatternMatchType(domain_pattern);
408
- // This should be caught by RouteConfigParse().
409
- GPR_ASSERT(match_type != INVALID_MATCH);
410
- if (match_type > best_match_type) continue;
411
- if (match_type == best_match_type &&
412
- domain_pattern.size() <= longest_match) {
413
- continue;
414
- }
415
- // Skip if match fails.
416
- if (!DomainMatch(match_type, domain_pattern, domain)) continue;
417
- // Choose this match.
418
- target_vhost = &vhost;
419
- best_match_type = match_type;
420
- longest_match = domain_pattern.size();
421
- if (best_match_type == EXACT_MATCH) break;
422
- }
423
- if (best_match_type == EXACT_MATCH) break;
424
- }
425
- return target_vhost;
426
- }
427
-
428
- //
429
- // XdsApi::StringMatcher
430
- //
431
-
432
- XdsApi::StringMatcher::StringMatcher(StringMatcherType type,
433
- const std::string& matcher,
434
- bool ignore_case)
435
- : type_(type), ignore_case_(ignore_case) {
436
- if (type_ == StringMatcherType::SAFE_REGEX) {
437
- regex_matcher_ = absl::make_unique<RE2>(matcher);
438
- } else {
439
- string_matcher_ = matcher;
440
- }
441
- }
442
-
443
- XdsApi::StringMatcher::StringMatcher(const StringMatcher& other)
444
- : type_(other.type_), ignore_case_(other.ignore_case_) {
445
- switch (type_) {
446
- case StringMatcherType::SAFE_REGEX:
447
- regex_matcher_ = absl::make_unique<RE2>(other.regex_matcher_->pattern());
448
- break;
449
- default:
450
- string_matcher_ = other.string_matcher_;
451
- }
452
- }
453
-
454
- XdsApi::StringMatcher& XdsApi::StringMatcher::operator=(
455
- const StringMatcher& other) {
456
- type_ = other.type_;
457
- switch (type_) {
458
- case StringMatcherType::SAFE_REGEX:
459
- regex_matcher_ = absl::make_unique<RE2>(other.regex_matcher_->pattern());
460
- break;
461
- default:
462
- string_matcher_ = other.string_matcher_;
463
- }
464
- ignore_case_ = other.ignore_case_;
465
- return *this;
466
- }
467
-
468
- bool XdsApi::StringMatcher::operator==(const StringMatcher& other) const {
469
- if (type_ != other.type_ || ignore_case_ != other.ignore_case_) return false;
470
- switch (type_) {
471
- case StringMatcherType::SAFE_REGEX:
472
- return regex_matcher_->pattern() == other.regex_matcher_->pattern();
473
- default:
474
- return string_matcher_ == other.string_matcher_;
475
- }
476
- }
477
-
478
- bool XdsApi::StringMatcher::Match(absl::string_view value) const {
479
- switch (type_) {
480
- case XdsApi::StringMatcher::StringMatcherType::EXACT:
481
- return ignore_case_ ? absl::EqualsIgnoreCase(value, string_matcher_)
482
- : value == string_matcher_;
483
- case XdsApi::StringMatcher::StringMatcherType::PREFIX:
484
- return ignore_case_ ? absl::StartsWithIgnoreCase(value, string_matcher_)
485
- : absl::StartsWith(value, string_matcher_);
486
- case XdsApi::StringMatcher::StringMatcherType::SUFFIX:
487
- return ignore_case_ ? absl::EndsWithIgnoreCase(value, string_matcher_)
488
- : absl::EndsWith(value, string_matcher_);
489
- case XdsApi::StringMatcher::StringMatcherType::CONTAINS:
490
- return ignore_case_
491
- ? absl::StrContains(absl::AsciiStrToLower(value),
492
- absl::AsciiStrToLower(string_matcher_))
493
- : absl::StrContains(value, string_matcher_);
494
- case XdsApi::StringMatcher::StringMatcherType::SAFE_REGEX:
495
- // ignore_case_ is ignored for SAFE_REGEX
496
- return RE2::FullMatch(std::string(value), *regex_matcher_);
497
- default:
498
- return false;
499
- }
500
- }
501
-
502
- std::string XdsApi::StringMatcher::ToString() const {
503
- switch (type_) {
504
- case StringMatcherType::EXACT:
505
- return absl::StrFormat("StringMatcher{exact=%s%s}", string_matcher_,
506
- ignore_case_ ? ", ignore_case" : "");
507
- case StringMatcherType::PREFIX:
508
- return absl::StrFormat("StringMatcher{prefix=%s%s}", string_matcher_,
509
- ignore_case_ ? ", ignore_case" : "");
510
- case StringMatcherType::SUFFIX:
511
- return absl::StrFormat("StringMatcher{suffix=%s%s}", string_matcher_,
512
- ignore_case_ ? ", ignore_case" : "");
513
- case StringMatcherType::CONTAINS:
514
- return absl::StrFormat("StringMatcher{contains=%s%s}", string_matcher_,
515
- ignore_case_ ? ", ignore_case" : "");
516
- case StringMatcherType::SAFE_REGEX:
517
- return absl::StrFormat("StringMatcher{safe_regex=%s}",
518
- regex_matcher_->pattern());
519
- default:
520
- return "";
521
- }
522
- }
523
-
524
- //
525
- // XdsApi::CommonTlsContext::CertificateValidationContext
526
- //
527
-
528
- std::string XdsApi::CommonTlsContext::CertificateValidationContext::ToString()
529
- const {
530
- std::vector<std::string> contents;
531
- for (const auto& match : match_subject_alt_names) {
532
- contents.push_back(match.ToString());
533
- }
534
- return absl::StrFormat("{match_subject_alt_names=[%s]}",
535
- absl::StrJoin(contents, ", "));
536
- }
537
-
538
- bool XdsApi::CommonTlsContext::CertificateValidationContext::Empty() const {
539
- return match_subject_alt_names.empty();
540
- }
541
-
542
- //
543
- // XdsApi::CommonTlsContext::CertificateValidationContext
544
- //
545
-
546
- std::string XdsApi::CommonTlsContext::CertificateProviderInstance::ToString()
547
- const {
548
- absl::InlinedVector<std::string, 2> contents;
549
- if (!instance_name.empty()) {
550
- contents.push_back(absl::StrFormat("instance_name=%s", instance_name));
551
- }
552
- if (!certificate_name.empty()) {
553
- contents.push_back(
554
- absl::StrFormat("certificate_name=%s", certificate_name));
555
- }
556
- return absl::StrCat("{", absl::StrJoin(contents, ", "), "}");
557
- }
558
-
559
- bool XdsApi::CommonTlsContext::CertificateProviderInstance::Empty() const {
560
- return instance_name.empty() && certificate_name.empty();
561
- }
562
-
563
- //
564
- // XdsApi::CommonTlsContext::CombinedCertificateValidationContext
565
- //
566
-
567
- std::string
568
- XdsApi::CommonTlsContext::CombinedCertificateValidationContext::ToString()
569
- const {
570
- absl::InlinedVector<std::string, 2> contents;
571
- if (!default_validation_context.Empty()) {
572
- contents.push_back(absl::StrFormat("default_validation_context=%s",
573
- default_validation_context.ToString()));
574
- }
575
- if (!validation_context_certificate_provider_instance.Empty()) {
576
- contents.push_back(absl::StrFormat(
577
- "validation_context_certificate_provider_instance=%s",
578
- validation_context_certificate_provider_instance.ToString()));
579
- }
580
- return absl::StrCat("{", absl::StrJoin(contents, ", "), "}");
581
- }
582
-
583
- bool XdsApi::CommonTlsContext::CombinedCertificateValidationContext::Empty()
584
- const {
585
- return default_validation_context.Empty() &&
586
- validation_context_certificate_provider_instance.Empty();
587
- }
588
-
589
- //
590
- // XdsApi::CommonTlsContext
591
- //
592
-
593
- std::string XdsApi::CommonTlsContext::ToString() const {
594
- absl::InlinedVector<std::string, 2> contents;
595
- if (!tls_certificate_certificate_provider_instance.Empty()) {
596
- contents.push_back(absl::StrFormat(
597
- "tls_certificate_certificate_provider_instance=%s",
598
- tls_certificate_certificate_provider_instance.ToString()));
599
- }
600
- if (!combined_validation_context.Empty()) {
601
- contents.push_back(absl::StrFormat("combined_validation_context=%s",
602
- combined_validation_context.ToString()));
603
- }
604
- return absl::StrCat("{", absl::StrJoin(contents, ", "), "}");
605
- }
606
-
607
- bool XdsApi::CommonTlsContext::Empty() const {
608
- return tls_certificate_certificate_provider_instance.Empty() &&
609
- combined_validation_context.Empty();
610
- }
611
-
612
- //
613
- // XdsApi::CdsUpdate
614
- //
615
-
616
- std::string XdsApi::CdsUpdate::ToString() const {
617
- absl::InlinedVector<std::string, 4> contents;
618
- if (!eds_service_name.empty()) {
619
- contents.push_back(
620
- absl::StrFormat("eds_service_name=%s", eds_service_name));
621
- }
622
- if (!common_tls_context.Empty()) {
623
- contents.push_back(absl::StrFormat("common_tls_context=%s",
624
- common_tls_context.ToString()));
625
- }
626
- if (lrs_load_reporting_server_name.has_value()) {
627
- contents.push_back(absl::StrFormat("lrs_load_reporting_server_name=%s",
628
- lrs_load_reporting_server_name.value()));
629
- }
630
- contents.push_back(
631
- absl::StrFormat("max_concurrent_requests=%d", max_concurrent_requests));
632
- return absl::StrCat("{", absl::StrJoin(contents, ", "), "}");
633
- }
634
-
635
- //
636
- // XdsApi::EdsUpdate
637
- //
638
-
639
- std::string XdsApi::EdsUpdate::Priority::Locality::ToString() const {
640
- std::vector<std::string> endpoint_strings;
641
- for (const ServerAddress& endpoint : endpoints) {
642
- endpoint_strings.emplace_back(endpoint.ToString());
643
- }
644
- return absl::StrCat("{name=", name->AsHumanReadableString(),
645
- ", lb_weight=", lb_weight, ", endpoints=[",
646
- absl::StrJoin(endpoint_strings, ", "), "]}");
647
- }
648
-
649
- bool XdsApi::EdsUpdate::Priority::operator==(const Priority& other) const {
650
- if (localities.size() != other.localities.size()) return false;
651
- auto it1 = localities.begin();
652
- auto it2 = other.localities.begin();
653
- while (it1 != localities.end()) {
654
- if (*it1->first != *it2->first) return false;
655
- if (it1->second != it2->second) return false;
656
- ++it1;
657
- ++it2;
658
- }
659
- return true;
660
- }
661
-
662
- std::string XdsApi::EdsUpdate::Priority::ToString() const {
663
- std::vector<std::string> locality_strings;
664
- for (const auto& p : localities) {
665
- locality_strings.emplace_back(p.second.ToString());
666
- }
667
- return absl::StrCat("[", absl::StrJoin(locality_strings, ", "), "]");
668
- }
669
-
670
- bool XdsApi::EdsUpdate::DropConfig::ShouldDrop(
671
- const std::string** category_name) const {
672
- for (size_t i = 0; i < drop_category_list_.size(); ++i) {
673
- const auto& drop_category = drop_category_list_[i];
674
- // Generate a random number in [0, 1000000).
675
- const uint32_t random = static_cast<uint32_t>(rand()) % 1000000;
676
- if (random < drop_category.parts_per_million) {
677
- *category_name = &drop_category.name;
678
- return true;
679
- }
680
- }
681
- return false;
682
- }
683
-
684
- std::string XdsApi::EdsUpdate::DropConfig::ToString() const {
685
- std::vector<std::string> category_strings;
686
- for (const DropCategory& category : drop_category_list_) {
687
- category_strings.emplace_back(
688
- absl::StrCat(category.name, "=", category.parts_per_million));
689
- }
690
- return absl::StrCat("{[", absl::StrJoin(category_strings, ", "),
691
- "], drop_all=", drop_all_, "}");
692
- }
693
-
694
- std::string XdsApi::EdsUpdate::ToString() const {
695
- std::vector<std::string> priority_strings;
696
- for (size_t i = 0; i < priorities.size(); ++i) {
697
- const Priority& priority = priorities[i];
698
- priority_strings.emplace_back(
699
- absl::StrCat("priority ", i, ": ", priority.ToString()));
700
- }
701
- return absl::StrCat("priorities=[", absl::StrJoin(priority_strings, ", "),
702
- "], drop_config=", drop_config->ToString());
703
- }
704
-
705
- //
706
- // XdsApi
707
- //
708
-
709
- const char* XdsApi::kLdsTypeUrl =
710
- "type.googleapis.com/envoy.config.listener.v3.Listener";
711
- const char* XdsApi::kRdsTypeUrl =
712
- "type.googleapis.com/envoy.config.route.v3.RouteConfiguration";
713
- const char* XdsApi::kCdsTypeUrl =
714
- "type.googleapis.com/envoy.config.cluster.v3.Cluster";
715
- const char* XdsApi::kEdsTypeUrl =
716
- "type.googleapis.com/envoy.config.endpoint.v3.ClusterLoadAssignment";
717
-
718
- namespace {
719
-
720
- const char* kLdsV2TypeUrl = "type.googleapis.com/envoy.api.v2.Listener";
721
- const char* kRdsV2TypeUrl =
722
- "type.googleapis.com/envoy.api.v2.RouteConfiguration";
723
- const char* kCdsV2TypeUrl = "type.googleapis.com/envoy.api.v2.Cluster";
724
- const char* kEdsV2TypeUrl =
725
- "type.googleapis.com/envoy.api.v2.ClusterLoadAssignment";
726
-
727
- bool IsLds(absl::string_view type_url) {
728
- return type_url == XdsApi::kLdsTypeUrl || type_url == kLdsV2TypeUrl;
729
- }
730
-
731
- bool IsRds(absl::string_view type_url) {
732
- return type_url == XdsApi::kRdsTypeUrl || type_url == kRdsV2TypeUrl;
733
- }
44
+ #include <grpc/impl/codegen/log.h>
45
+ #include <grpc/support/alloc.h>
46
+ #include <grpc/support/string_util.h>
734
47
 
735
- bool IsCds(absl::string_view type_url) {
736
- return type_url == XdsApi::kCdsTypeUrl || type_url == kCdsV2TypeUrl;
737
- }
48
+ #include "src/core/ext/xds/upb_utils.h"
49
+ #include "src/core/ext/xds/xds_common_types.h"
50
+ #include "src/core/ext/xds/xds_resource_type.h"
51
+ #include "src/core/ext/xds/xds_routing.h"
52
+ #include "src/core/lib/address_utils/parse_address.h"
53
+ #include "src/core/lib/address_utils/sockaddr_utils.h"
54
+ #include "src/core/lib/gpr/env.h"
55
+ #include "src/core/lib/gpr/string.h"
56
+ #include "src/core/lib/gprpp/host_port.h"
57
+ #include "src/core/lib/iomgr/error.h"
58
+ #include "src/core/lib/iomgr/sockaddr.h"
59
+ #include "src/core/lib/iomgr/socket_utils.h"
60
+ #include "src/core/lib/slice/slice_internal.h"
61
+ #include "src/core/lib/uri/uri_parser.h"
738
62
 
739
- bool IsEds(absl::string_view type_url) {
740
- return type_url == XdsApi::kEdsTypeUrl || type_url == kEdsV2TypeUrl;
741
- }
63
+ namespace grpc_core {
742
64
 
743
- } // namespace
65
+ // If gRPC is built with -DGRPC_XDS_USER_AGENT_NAME_SUFFIX="...", that string
66
+ // will be appended to the user agent name reported to the xDS server.
67
+ #ifdef GRPC_XDS_USER_AGENT_NAME_SUFFIX
68
+ #define GRPC_XDS_USER_AGENT_NAME_SUFFIX_STRING \
69
+ " " GRPC_XDS_USER_AGENT_NAME_SUFFIX
70
+ #else
71
+ #define GRPC_XDS_USER_AGENT_NAME_SUFFIX_STRING ""
72
+ #endif
73
+
74
+ // If gRPC is built with -DGRPC_XDS_USER_AGENT_VERSION_SUFFIX="...", that string
75
+ // will be appended to the user agent version reported to the xDS server.
76
+ #ifdef GRPC_XDS_USER_AGENT_VERSION_SUFFIX
77
+ #define GRPC_XDS_USER_AGENT_VERSION_SUFFIX_STRING \
78
+ " " GRPC_XDS_USER_AGENT_VERSION_SUFFIX
79
+ #else
80
+ #define GRPC_XDS_USER_AGENT_VERSION_SUFFIX_STRING ""
81
+ #endif
744
82
 
745
83
  XdsApi::XdsApi(XdsClient* client, TraceFlag* tracer,
746
- const XdsBootstrap::Node* node)
84
+ const XdsBootstrap::Node* node,
85
+ const CertificateProviderStore::PluginDefinitionMap*
86
+ certificate_provider_definition_map,
87
+ upb::SymbolTable* symtab)
747
88
  : client_(client),
748
89
  tracer_(tracer),
749
90
  node_(node),
91
+ certificate_provider_definition_map_(certificate_provider_definition_map),
92
+ symtab_(symtab),
750
93
  build_version_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING, " ",
751
- grpc_version_string())),
752
- user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING)) {}
94
+ grpc_version_string(),
95
+ GRPC_XDS_USER_AGENT_NAME_SUFFIX_STRING,
96
+ GRPC_XDS_USER_AGENT_VERSION_SUFFIX_STRING)),
97
+ user_agent_name_(absl::StrCat("gRPC C-core ", GPR_PLATFORM_STRING,
98
+ GRPC_XDS_USER_AGENT_NAME_SUFFIX_STRING)),
99
+ user_agent_version_(
100
+ absl::StrCat("C-core ", grpc_version_string(),
101
+ GRPC_XDS_USER_AGENT_NAME_SUFFIX_STRING,
102
+ GRPC_XDS_USER_AGENT_VERSION_SUFFIX_STRING)) {}
753
103
 
754
104
  namespace {
755
105
 
756
- // Works for both std::string and absl::string_view.
757
- template <typename T>
758
- inline upb_strview StdStringToUpbString(const T& str) {
759
- return upb_strview_make(str.data(), str.size());
760
- }
761
-
762
- void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
763
- const Json& value);
106
+ void PopulateMetadataValue(const XdsEncodingContext& context,
107
+ google_protobuf_Value* value_pb, const Json& value);
764
108
 
765
- void PopulateListValue(upb_arena* arena, google_protobuf_ListValue* list_value,
109
+ void PopulateListValue(const XdsEncodingContext& context,
110
+ google_protobuf_ListValue* list_value,
766
111
  const Json::Array& values) {
767
112
  for (const auto& value : values) {
768
- auto* value_pb = google_protobuf_ListValue_add_values(list_value, arena);
769
- PopulateMetadataValue(arena, value_pb, value);
113
+ auto* value_pb =
114
+ google_protobuf_ListValue_add_values(list_value, context.arena);
115
+ PopulateMetadataValue(context, value_pb, value);
770
116
  }
771
117
  }
772
118
 
773
- void PopulateMetadata(upb_arena* arena, google_protobuf_Struct* metadata_pb,
119
+ void PopulateMetadata(const XdsEncodingContext& context,
120
+ google_protobuf_Struct* metadata_pb,
774
121
  const Json::Object& metadata) {
775
122
  for (const auto& p : metadata) {
776
- google_protobuf_Value* value = google_protobuf_Value_new(arena);
777
- PopulateMetadataValue(arena, value, p.second);
123
+ google_protobuf_Value* value = google_protobuf_Value_new(context.arena);
124
+ PopulateMetadataValue(context, value, p.second);
778
125
  google_protobuf_Struct_fields_set(
779
- metadata_pb, StdStringToUpbString(p.first), value, arena);
126
+ metadata_pb, StdStringToUpbString(p.first), value, context.arena);
780
127
  }
781
128
  }
782
129
 
783
- void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
784
- const Json& value) {
130
+ void PopulateMetadataValue(const XdsEncodingContext& context,
131
+ google_protobuf_Value* value_pb, const Json& value) {
785
132
  switch (value.type()) {
786
133
  case Json::Type::JSON_NULL:
787
134
  google_protobuf_Value_set_null_value(value_pb, 0);
@@ -802,14 +149,14 @@ void PopulateMetadataValue(upb_arena* arena, google_protobuf_Value* value_pb,
802
149
  break;
803
150
  case Json::Type::OBJECT: {
804
151
  google_protobuf_Struct* struct_value =
805
- google_protobuf_Value_mutable_struct_value(value_pb, arena);
806
- PopulateMetadata(arena, struct_value, value.object_value());
152
+ google_protobuf_Value_mutable_struct_value(value_pb, context.arena);
153
+ PopulateMetadata(context, struct_value, value.object_value());
807
154
  break;
808
155
  }
809
156
  case Json::Type::ARRAY: {
810
157
  google_protobuf_ListValue* list_value =
811
- google_protobuf_Value_mutable_list_value(value_pb, arena);
812
- PopulateListValue(arena, list_value, value.array_value());
158
+ google_protobuf_Value_mutable_list_value(value_pb, context.arena);
159
+ PopulateListValue(context, list_value, value.array_value());
813
160
  break;
814
161
  }
815
162
  }
@@ -836,20 +183,23 @@ std::string EncodeStringField(uint32_t field_number, const std::string& str) {
836
183
  EncodeVarint(str.size()) + str;
837
184
  }
838
185
 
839
- void PopulateBuildVersion(upb_arena* arena, envoy_config_core_v3_Node* node_msg,
186
+ void PopulateBuildVersion(const XdsEncodingContext& context,
187
+ envoy_config_core_v3_Node* node_msg,
840
188
  const std::string& build_version) {
841
189
  std::string encoded_build_version = EncodeStringField(5, build_version);
842
- // TODO(roth): This should use upb_msg_addunknown(), but that API is
190
+ // TODO(roth): This should use upb_Message_AddUnknown(), but that API is
843
191
  // broken in the current version of upb, so we're using the internal
844
192
  // API for now. Change this once we upgrade to a version of upb that
845
193
  // fixes this bug.
846
- _upb_msg_addunknown(node_msg, encoded_build_version.data(),
847
- encoded_build_version.size(), arena);
194
+ _upb_Message_AddUnknown(node_msg, encoded_build_version.data(),
195
+ encoded_build_version.size(), context.arena);
848
196
  }
849
197
 
850
- void PopulateNode(upb_arena* arena, const XdsBootstrap::Node* node, bool use_v3,
198
+ void PopulateNode(const XdsEncodingContext& context,
199
+ const XdsBootstrap::Node* node,
851
200
  const std::string& build_version,
852
201
  const std::string& user_agent_name,
202
+ const std::string& user_agent_version,
853
203
  envoy_config_core_v3_Node* node_msg) {
854
204
  if (node != nullptr) {
855
205
  if (!node->id.empty()) {
@@ -862,13 +212,13 @@ void PopulateNode(upb_arena* arena, const XdsBootstrap::Node* node, bool use_v3,
862
212
  }
863
213
  if (!node->metadata.object_value().empty()) {
864
214
  google_protobuf_Struct* metadata =
865
- envoy_config_core_v3_Node_mutable_metadata(node_msg, arena);
866
- PopulateMetadata(arena, metadata, node->metadata.object_value());
215
+ envoy_config_core_v3_Node_mutable_metadata(node_msg, context.arena);
216
+ PopulateMetadata(context, metadata, node->metadata.object_value());
867
217
  }
868
218
  if (!node->locality_region.empty() || !node->locality_zone.empty() ||
869
- !node->locality_subzone.empty()) {
219
+ !node->locality_sub_zone.empty()) {
870
220
  envoy_config_core_v3_Locality* locality =
871
- envoy_config_core_v3_Node_mutable_locality(node_msg, arena);
221
+ envoy_config_core_v3_Node_mutable_locality(node_msg, context.arena);
872
222
  if (!node->locality_region.empty()) {
873
223
  envoy_config_core_v3_Locality_set_region(
874
224
  locality, StdStringToUpbString(node->locality_region));
@@ -877,89 +227,70 @@ void PopulateNode(upb_arena* arena, const XdsBootstrap::Node* node, bool use_v3,
877
227
  envoy_config_core_v3_Locality_set_zone(
878
228
  locality, StdStringToUpbString(node->locality_zone));
879
229
  }
880
- if (!node->locality_subzone.empty()) {
230
+ if (!node->locality_sub_zone.empty()) {
881
231
  envoy_config_core_v3_Locality_set_sub_zone(
882
- locality, StdStringToUpbString(node->locality_subzone));
232
+ locality, StdStringToUpbString(node->locality_sub_zone));
883
233
  }
884
234
  }
885
235
  }
886
- if (!use_v3) {
887
- PopulateBuildVersion(arena, node_msg, build_version);
236
+ if (!context.use_v3) {
237
+ PopulateBuildVersion(context, node_msg, build_version);
888
238
  }
889
239
  envoy_config_core_v3_Node_set_user_agent_name(
890
240
  node_msg, StdStringToUpbString(user_agent_name));
891
241
  envoy_config_core_v3_Node_set_user_agent_version(
892
- node_msg, upb_strview_makez(grpc_version_string()));
242
+ node_msg, StdStringToUpbString(user_agent_version));
893
243
  envoy_config_core_v3_Node_add_client_features(
894
- node_msg, upb_strview_makez("envoy.lb.does_not_support_overprovisioning"),
895
- arena);
896
- }
897
-
898
- inline absl::string_view UpbStringToAbsl(const upb_strview& str) {
899
- return absl::string_view(str.data, str.size);
900
- }
901
-
902
- inline std::string UpbStringToStdString(const upb_strview& str) {
903
- return std::string(str.data, str.size);
244
+ node_msg,
245
+ upb_StringView_FromString("envoy.lb.does_not_support_overprovisioning"),
246
+ context.arena);
904
247
  }
905
248
 
906
249
  void MaybeLogDiscoveryRequest(
907
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
250
+ const XdsEncodingContext& context,
908
251
  const envoy_service_discovery_v3_DiscoveryRequest* request) {
909
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
252
+ if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
910
253
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
911
- const upb_msgdef* msg_type =
912
- envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(symtab);
254
+ const upb_MessageDef* msg_type =
255
+ envoy_service_discovery_v3_DiscoveryRequest_getmsgdef(context.symtab);
913
256
  char buf[10240];
914
- upb_text_encode(request, msg_type, nullptr, 0, buf, sizeof(buf));
915
- gpr_log(GPR_DEBUG, "[xds_client %p] constructed ADS request: %s", client,
916
- buf);
257
+ upb_TextEncode(request, msg_type, nullptr, 0, buf, sizeof(buf));
258
+ gpr_log(GPR_DEBUG, "[xds_client %p] constructed ADS request: %s",
259
+ context.client, buf);
917
260
  }
918
261
  }
919
262
 
920
263
  grpc_slice SerializeDiscoveryRequest(
921
- upb_arena* arena, envoy_service_discovery_v3_DiscoveryRequest* request) {
264
+ const XdsEncodingContext& context,
265
+ envoy_service_discovery_v3_DiscoveryRequest* request) {
922
266
  size_t output_length;
923
267
  char* output = envoy_service_discovery_v3_DiscoveryRequest_serialize(
924
- request, arena, &output_length);
268
+ request, context.arena, &output_length);
925
269
  return grpc_slice_from_copied_buffer(output, output_length);
926
270
  }
927
271
 
928
- absl::string_view TypeUrlExternalToInternal(bool use_v3,
929
- const std::string& type_url) {
930
- if (!use_v3) {
931
- if (type_url == XdsApi::kLdsTypeUrl) {
932
- return kLdsV2TypeUrl;
933
- }
934
- if (type_url == XdsApi::kRdsTypeUrl) {
935
- return kRdsV2TypeUrl;
936
- }
937
- if (type_url == XdsApi::kCdsTypeUrl) {
938
- return kCdsV2TypeUrl;
939
- }
940
- if (type_url == XdsApi::kEdsTypeUrl) {
941
- return kEdsV2TypeUrl;
942
- }
943
- }
944
- return type_url;
945
- }
946
-
947
272
  } // namespace
948
273
 
949
274
  grpc_slice XdsApi::CreateAdsRequest(
950
- const XdsBootstrap::XdsServer& server, const std::string& type_url,
951
- const std::set<absl::string_view>& resource_names,
952
- const std::string& version, const std::string& nonce, grpc_error* error,
275
+ const XdsBootstrap::XdsServer& server, absl::string_view type_url,
276
+ absl::string_view version, absl::string_view nonce,
277
+ const std::vector<std::string>& resource_names, grpc_error_handle error,
953
278
  bool populate_node) {
954
279
  upb::Arena arena;
280
+ const XdsEncodingContext context = {client_,
281
+ server,
282
+ tracer_,
283
+ symtab_->ptr(),
284
+ arena.ptr(),
285
+ server.ShouldUseV3(),
286
+ certificate_provider_definition_map_};
955
287
  // Create a request.
956
288
  envoy_service_discovery_v3_DiscoveryRequest* request =
957
289
  envoy_service_discovery_v3_DiscoveryRequest_new(arena.ptr());
958
290
  // Set type_url.
959
- absl::string_view real_type_url =
960
- TypeUrlExternalToInternal(server.ShouldUseV3(), type_url);
291
+ std::string type_url_str = absl::StrCat("type.googleapis.com/", type_url);
961
292
  envoy_service_discovery_v3_DiscoveryRequest_set_type_url(
962
- request, StdStringToUpbString(real_type_url));
293
+ request, StdStringToUpbString(type_url_str));
963
294
  // Set version_info.
964
295
  if (!version.empty()) {
965
296
  envoy_service_discovery_v3_DiscoveryRequest_set_version_info(
@@ -971,6 +302,7 @@ grpc_slice XdsApi::CreateAdsRequest(
971
302
  request, StdStringToUpbString(nonce));
972
303
  }
973
304
  // Set error_detail if it's a NACK.
305
+ std::string error_string_storage;
974
306
  if (error != GRPC_ERROR_NONE) {
975
307
  google_rpc_Status* error_detail =
976
308
  envoy_service_discovery_v3_DiscoveryRequest_mutable_error_detail(
@@ -981,12 +313,10 @@ grpc_slice XdsApi::CreateAdsRequest(
981
313
  // generate them in the parsing code, and then use that here.
982
314
  google_rpc_Status_set_code(error_detail, GRPC_STATUS_INVALID_ARGUMENT);
983
315
  // Error description comes from the error that was passed in.
984
- grpc_slice error_description_slice;
985
- GPR_ASSERT(grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION,
986
- &error_description_slice));
987
- upb_strview error_description_strview =
988
- StdStringToUpbString(StringViewFromSlice(error_description_slice));
989
- google_rpc_Status_set_message(error_detail, error_description_strview);
316
+ error_string_storage = grpc_error_std_string(error);
317
+ upb_StringView error_description =
318
+ StdStringToUpbString(error_string_storage);
319
+ google_rpc_Status_set_message(error_detail, error_description);
990
320
  GRPC_ERROR_UNREF(error);
991
321
  }
992
322
  // Populate node.
@@ -994,1141 +324,128 @@ grpc_slice XdsApi::CreateAdsRequest(
994
324
  envoy_config_core_v3_Node* node_msg =
995
325
  envoy_service_discovery_v3_DiscoveryRequest_mutable_node(request,
996
326
  arena.ptr());
997
- PopulateNode(arena.ptr(), node_, server.ShouldUseV3(), build_version_,
998
- user_agent_name_, node_msg);
327
+ PopulateNode(context, node_, build_version_, user_agent_name_,
328
+ user_agent_version_, node_msg);
329
+ envoy_config_core_v3_Node_add_client_features(
330
+ node_msg, upb_StringView_FromString("xds.config.resource-in-sotw"),
331
+ context.arena);
999
332
  }
1000
333
  // Add resource_names.
1001
- for (const auto& resource_name : resource_names) {
334
+ for (const std::string& resource_name : resource_names) {
1002
335
  envoy_service_discovery_v3_DiscoveryRequest_add_resource_names(
1003
336
  request, StdStringToUpbString(resource_name), arena.ptr());
1004
337
  }
1005
- MaybeLogDiscoveryRequest(client_, tracer_, symtab_.ptr(), request);
1006
- return SerializeDiscoveryRequest(arena.ptr(), request);
338
+ MaybeLogDiscoveryRequest(context, request);
339
+ return SerializeDiscoveryRequest(context, request);
1007
340
  }
1008
341
 
1009
342
  namespace {
1010
343
 
1011
344
  void MaybeLogDiscoveryResponse(
1012
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
345
+ const XdsEncodingContext& context,
1013
346
  const envoy_service_discovery_v3_DiscoveryResponse* response) {
1014
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
1015
- gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1016
- const upb_msgdef* msg_type =
1017
- envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(symtab);
1018
- char buf[10240];
1019
- upb_text_encode(response, msg_type, nullptr, 0, buf, sizeof(buf));
1020
- gpr_log(GPR_DEBUG, "[xds_client %p] received response: %s", client, buf);
1021
- }
1022
- }
1023
-
1024
- void MaybeLogRouteConfiguration(
1025
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
1026
- const envoy_config_route_v3_RouteConfiguration* route_config) {
1027
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
1028
- gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1029
- const upb_msgdef* msg_type =
1030
- envoy_config_route_v3_RouteConfiguration_getmsgdef(symtab);
1031
- char buf[10240];
1032
- upb_text_encode(route_config, msg_type, nullptr, 0, buf, sizeof(buf));
1033
- gpr_log(GPR_DEBUG, "[xds_client %p] RouteConfiguration: %s", client, buf);
1034
- }
1035
- }
1036
-
1037
- void MaybeLogCluster(XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
1038
- const envoy_config_cluster_v3_Cluster* cluster) {
1039
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
1040
- gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1041
- const upb_msgdef* msg_type =
1042
- envoy_config_cluster_v3_Cluster_getmsgdef(symtab);
1043
- char buf[10240];
1044
- upb_text_encode(cluster, msg_type, nullptr, 0, buf, sizeof(buf));
1045
- gpr_log(GPR_DEBUG, "[xds_client %p] Cluster: %s", client, buf);
1046
- }
1047
- }
1048
-
1049
- void MaybeLogClusterLoadAssignment(
1050
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
1051
- const envoy_config_endpoint_v3_ClusterLoadAssignment* cla) {
1052
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
347
+ if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
1053
348
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1054
- const upb_msgdef* msg_type =
1055
- envoy_config_endpoint_v3_ClusterLoadAssignment_getmsgdef(symtab);
349
+ const upb_MessageDef* msg_type =
350
+ envoy_service_discovery_v3_DiscoveryResponse_getmsgdef(context.symtab);
1056
351
  char buf[10240];
1057
- upb_text_encode(cla, msg_type, nullptr, 0, buf, sizeof(buf));
1058
- gpr_log(GPR_DEBUG, "[xds_client %p] ClusterLoadAssignment: %s", client,
352
+ upb_TextEncode(response, msg_type, nullptr, 0, buf, sizeof(buf));
353
+ gpr_log(GPR_DEBUG, "[xds_client %p] received response: %s", context.client,
1059
354
  buf);
1060
355
  }
1061
356
  }
1062
357
 
1063
- grpc_error* RoutePathMatchParse(const envoy_config_route_v3_RouteMatch* match,
1064
- XdsApi::Route* route, bool* ignore_route) {
1065
- auto* case_sensitive = envoy_config_route_v3_RouteMatch_case_sensitive(match);
1066
- if (case_sensitive != nullptr) {
1067
- route->matchers.path_matcher.case_sensitive =
1068
- google_protobuf_BoolValue_value(case_sensitive);
1069
- }
1070
- if (envoy_config_route_v3_RouteMatch_has_prefix(match)) {
1071
- absl::string_view prefix =
1072
- UpbStringToAbsl(envoy_config_route_v3_RouteMatch_prefix(match));
1073
- // Empty prefix "" is accepted.
1074
- if (!prefix.empty()) {
1075
- // Prefix "/" is accepted.
1076
- if (prefix[0] != '/') {
1077
- // Prefix which does not start with a / will never match anything, so
1078
- // ignore this route.
1079
- *ignore_route = true;
1080
- return GRPC_ERROR_NONE;
1081
- }
1082
- std::vector<absl::string_view> prefix_elements =
1083
- absl::StrSplit(prefix.substr(1), absl::MaxSplits('/', 2));
1084
- if (prefix_elements.size() > 2) {
1085
- // Prefix cannot have more than 2 slashes.
1086
- *ignore_route = true;
1087
- return GRPC_ERROR_NONE;
1088
- } else if (prefix_elements.size() == 2 && prefix_elements[0].empty()) {
1089
- // Prefix contains empty string between the 2 slashes
1090
- *ignore_route = true;
1091
- return GRPC_ERROR_NONE;
1092
- }
1093
- }
1094
- route->matchers.path_matcher.type =
1095
- XdsApi::Route::Matchers::PathMatcher::PathMatcherType::PREFIX;
1096
- route->matchers.path_matcher.string_matcher = std::string(prefix);
1097
- } else if (envoy_config_route_v3_RouteMatch_has_path(match)) {
1098
- absl::string_view path =
1099
- UpbStringToAbsl(envoy_config_route_v3_RouteMatch_path(match));
1100
- if (path.empty()) {
1101
- // Path that is empty will never match anything, so ignore this route.
1102
- *ignore_route = true;
1103
- return GRPC_ERROR_NONE;
1104
- }
1105
- if (path[0] != '/') {
1106
- // Path which does not start with a / will never match anything, so
1107
- // ignore this route.
1108
- *ignore_route = true;
1109
- return GRPC_ERROR_NONE;
1110
- }
1111
- std::vector<absl::string_view> path_elements =
1112
- absl::StrSplit(path.substr(1), absl::MaxSplits('/', 2));
1113
- if (path_elements.size() != 2) {
1114
- // Path not in the required format of /service/method will never match
1115
- // anything, so ignore this route.
1116
- *ignore_route = true;
1117
- return GRPC_ERROR_NONE;
1118
- } else if (path_elements[0].empty()) {
1119
- // Path contains empty service name will never match anything, so ignore
1120
- // this route.
1121
- *ignore_route = true;
1122
- return GRPC_ERROR_NONE;
1123
- } else if (path_elements[1].empty()) {
1124
- // Path contains empty method name will never match anything, so ignore
1125
- // this route.
1126
- *ignore_route = true;
1127
- return GRPC_ERROR_NONE;
1128
- }
1129
- route->matchers.path_matcher.type =
1130
- XdsApi::Route::Matchers::PathMatcher::PathMatcherType::PATH;
1131
- route->matchers.path_matcher.string_matcher = std::string(path);
1132
- } else if (envoy_config_route_v3_RouteMatch_has_safe_regex(match)) {
1133
- const envoy_type_matcher_v3_RegexMatcher* regex_matcher =
1134
- envoy_config_route_v3_RouteMatch_safe_regex(match);
1135
- GPR_ASSERT(regex_matcher != nullptr);
1136
- std::string matcher = UpbStringToStdString(
1137
- envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
1138
- RE2::Options options;
1139
- options.set_case_sensitive(route->matchers.path_matcher.case_sensitive);
1140
- auto regex = absl::make_unique<RE2>(std::move(matcher), options);
1141
- if (!regex->ok()) {
1142
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1143
- "Invalid regex string specified in path matcher.");
1144
- }
1145
- route->matchers.path_matcher.type =
1146
- XdsApi::Route::Matchers::PathMatcher::PathMatcherType::REGEX;
1147
- route->matchers.path_matcher.regex_matcher = std::move(regex);
1148
- } else {
1149
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1150
- "Invalid route path specifier specified.");
1151
- }
1152
- return GRPC_ERROR_NONE;
1153
- }
1154
-
1155
- grpc_error* RouteHeaderMatchersParse(
1156
- const envoy_config_route_v3_RouteMatch* match, XdsApi::Route* route) {
1157
- size_t size;
1158
- const envoy_config_route_v3_HeaderMatcher* const* headers =
1159
- envoy_config_route_v3_RouteMatch_headers(match, &size);
1160
- for (size_t i = 0; i < size; ++i) {
1161
- const envoy_config_route_v3_HeaderMatcher* header = headers[i];
1162
- XdsApi::Route::Matchers::HeaderMatcher header_matcher;
1163
- header_matcher.name =
1164
- UpbStringToStdString(envoy_config_route_v3_HeaderMatcher_name(header));
1165
- if (envoy_config_route_v3_HeaderMatcher_has_exact_match(header)) {
1166
- header_matcher.type =
1167
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::EXACT;
1168
- header_matcher.string_matcher = UpbStringToStdString(
1169
- envoy_config_route_v3_HeaderMatcher_exact_match(header));
1170
- } else if (envoy_config_route_v3_HeaderMatcher_has_safe_regex_match(
1171
- header)) {
1172
- const envoy_type_matcher_v3_RegexMatcher* regex_matcher =
1173
- envoy_config_route_v3_HeaderMatcher_safe_regex_match(header);
1174
- GPR_ASSERT(regex_matcher != nullptr);
1175
- const std::string matcher = UpbStringToStdString(
1176
- envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
1177
- std::unique_ptr<RE2> regex = absl::make_unique<RE2>(matcher);
1178
- if (!regex->ok()) {
1179
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1180
- "Invalid regex string specified in header matcher.");
1181
- }
1182
- header_matcher.type =
1183
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::REGEX;
1184
- header_matcher.regex_match = std::move(regex);
1185
- } else if (envoy_config_route_v3_HeaderMatcher_has_range_match(header)) {
1186
- header_matcher.type =
1187
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::RANGE;
1188
- const envoy_type_v3_Int64Range* range_matcher =
1189
- envoy_config_route_v3_HeaderMatcher_range_match(header);
1190
- header_matcher.range_start =
1191
- envoy_type_v3_Int64Range_start(range_matcher);
1192
- header_matcher.range_end = envoy_type_v3_Int64Range_end(range_matcher);
1193
- if (header_matcher.range_end < header_matcher.range_start) {
1194
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1195
- "Invalid range header matcher specifier specified: end "
1196
- "cannot be smaller than start.");
1197
- }
1198
- } else if (envoy_config_route_v3_HeaderMatcher_has_present_match(header)) {
1199
- header_matcher.type =
1200
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::PRESENT;
1201
- header_matcher.present_match =
1202
- envoy_config_route_v3_HeaderMatcher_present_match(header);
1203
- } else if (envoy_config_route_v3_HeaderMatcher_has_prefix_match(header)) {
1204
- header_matcher.type =
1205
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::PREFIX;
1206
- header_matcher.string_matcher = UpbStringToStdString(
1207
- envoy_config_route_v3_HeaderMatcher_prefix_match(header));
1208
- } else if (envoy_config_route_v3_HeaderMatcher_has_suffix_match(header)) {
1209
- header_matcher.type =
1210
- XdsApi::Route::Matchers::HeaderMatcher::HeaderMatcherType::SUFFIX;
1211
- header_matcher.string_matcher = UpbStringToStdString(
1212
- envoy_config_route_v3_HeaderMatcher_suffix_match(header));
1213
- } else {
1214
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1215
- "Invalid route header matcher specified.");
1216
- }
1217
- header_matcher.invert_match =
1218
- envoy_config_route_v3_HeaderMatcher_invert_match(header);
1219
- route->matchers.header_matchers.emplace_back(std::move(header_matcher));
1220
- }
1221
- return GRPC_ERROR_NONE;
1222
- }
1223
-
1224
- grpc_error* RouteRuntimeFractionParse(
1225
- const envoy_config_route_v3_RouteMatch* match, XdsApi::Route* route) {
1226
- const envoy_config_core_v3_RuntimeFractionalPercent* runtime_fraction =
1227
- envoy_config_route_v3_RouteMatch_runtime_fraction(match);
1228
- if (runtime_fraction != nullptr) {
1229
- const envoy_type_v3_FractionalPercent* fraction =
1230
- envoy_config_core_v3_RuntimeFractionalPercent_default_value(
1231
- runtime_fraction);
1232
- if (fraction != nullptr) {
1233
- uint32_t numerator = envoy_type_v3_FractionalPercent_numerator(fraction);
1234
- const auto denominator =
1235
- static_cast<envoy_type_v3_FractionalPercent_DenominatorType>(
1236
- envoy_type_v3_FractionalPercent_denominator(fraction));
1237
- // Normalize to million.
1238
- switch (denominator) {
1239
- case envoy_type_v3_FractionalPercent_HUNDRED:
1240
- numerator *= 10000;
1241
- break;
1242
- case envoy_type_v3_FractionalPercent_TEN_THOUSAND:
1243
- numerator *= 100;
1244
- break;
1245
- case envoy_type_v3_FractionalPercent_MILLION:
1246
- break;
1247
- default:
1248
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1249
- "Unknown denominator type");
1250
- }
1251
- route->matchers.fraction_per_million = numerator;
1252
- }
1253
- }
1254
- return GRPC_ERROR_NONE;
1255
- }
1256
-
1257
- grpc_error* RouteActionParse(const envoy_config_route_v3_Route* route_msg,
1258
- XdsApi::Route* route, bool* ignore_route) {
1259
- if (!envoy_config_route_v3_Route_has_route(route_msg)) {
1260
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1261
- "No RouteAction found in route.");
1262
- }
1263
- const envoy_config_route_v3_RouteAction* route_action =
1264
- envoy_config_route_v3_Route_route(route_msg);
1265
- // Get the cluster or weighted_clusters in the RouteAction.
1266
- if (envoy_config_route_v3_RouteAction_has_cluster(route_action)) {
1267
- route->cluster_name = UpbStringToStdString(
1268
- envoy_config_route_v3_RouteAction_cluster(route_action));
1269
- if (route->cluster_name.empty()) {
1270
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1271
- "RouteAction cluster contains empty cluster name.");
1272
- }
1273
- } else if (envoy_config_route_v3_RouteAction_has_weighted_clusters(
1274
- route_action)) {
1275
- const envoy_config_route_v3_WeightedCluster* weighted_cluster =
1276
- envoy_config_route_v3_RouteAction_weighted_clusters(route_action);
1277
- uint32_t total_weight = 100;
1278
- const google_protobuf_UInt32Value* weight =
1279
- envoy_config_route_v3_WeightedCluster_total_weight(weighted_cluster);
1280
- if (weight != nullptr) {
1281
- total_weight = google_protobuf_UInt32Value_value(weight);
1282
- }
1283
- size_t clusters_size;
1284
- const envoy_config_route_v3_WeightedCluster_ClusterWeight* const* clusters =
1285
- envoy_config_route_v3_WeightedCluster_clusters(weighted_cluster,
1286
- &clusters_size);
1287
- uint32_t sum_of_weights = 0;
1288
- for (size_t j = 0; j < clusters_size; ++j) {
1289
- const envoy_config_route_v3_WeightedCluster_ClusterWeight*
1290
- cluster_weight = clusters[j];
1291
- XdsApi::Route::ClusterWeight cluster;
1292
- cluster.name = UpbStringToStdString(
1293
- envoy_config_route_v3_WeightedCluster_ClusterWeight_name(
1294
- cluster_weight));
1295
- if (cluster.name.empty()) {
1296
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1297
- "RouteAction weighted_cluster cluster contains empty cluster "
1298
- "name.");
1299
- }
1300
- const google_protobuf_UInt32Value* weight =
1301
- envoy_config_route_v3_WeightedCluster_ClusterWeight_weight(
1302
- cluster_weight);
1303
- if (weight == nullptr) {
1304
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1305
- "RouteAction weighted_cluster cluster missing weight");
1306
- }
1307
- cluster.weight = google_protobuf_UInt32Value_value(weight);
1308
- if (cluster.weight == 0) continue;
1309
- sum_of_weights += cluster.weight;
1310
- route->weighted_clusters.emplace_back(std::move(cluster));
1311
- }
1312
- if (total_weight != sum_of_weights) {
1313
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1314
- "RouteAction weighted_cluster has incorrect total weight");
1315
- }
1316
- if (route->weighted_clusters.empty()) {
1317
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1318
- "RouteAction weighted_cluster has no valid clusters specified.");
1319
- }
1320
- } else {
1321
- // No cluster or weighted_clusters found in RouteAction, ignore this route.
1322
- *ignore_route = true;
1323
- }
1324
- if (XdsTimeoutEnabled() && !*ignore_route) {
1325
- const envoy_config_route_v3_RouteAction_MaxStreamDuration*
1326
- max_stream_duration =
1327
- envoy_config_route_v3_RouteAction_max_stream_duration(route_action);
1328
- if (max_stream_duration != nullptr) {
1329
- const google_protobuf_Duration* duration =
1330
- envoy_config_route_v3_RouteAction_MaxStreamDuration_grpc_timeout_header_max(
1331
- max_stream_duration);
1332
- if (duration == nullptr) {
1333
- duration =
1334
- envoy_config_route_v3_RouteAction_MaxStreamDuration_max_stream_duration(
1335
- max_stream_duration);
1336
- }
1337
- if (duration != nullptr) {
1338
- XdsApi::Duration duration_in_route;
1339
- duration_in_route.seconds = google_protobuf_Duration_seconds(duration);
1340
- duration_in_route.nanos = google_protobuf_Duration_nanos(duration);
1341
- route->max_stream_duration = duration_in_route;
1342
- }
1343
- }
1344
- }
1345
- return GRPC_ERROR_NONE;
1346
- }
1347
-
1348
- grpc_error* RouteConfigParse(
1349
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
1350
- const envoy_config_route_v3_RouteConfiguration* route_config,
1351
- XdsApi::RdsUpdate* rds_update) {
1352
- MaybeLogRouteConfiguration(client, tracer, symtab, route_config);
1353
- // Get the virtual hosts.
1354
- size_t size;
1355
- const envoy_config_route_v3_VirtualHost* const* virtual_hosts =
1356
- envoy_config_route_v3_RouteConfiguration_virtual_hosts(route_config,
1357
- &size);
1358
- for (size_t i = 0; i < size; ++i) {
1359
- rds_update->virtual_hosts.emplace_back();
1360
- XdsApi::RdsUpdate::VirtualHost& vhost = rds_update->virtual_hosts.back();
1361
- // Parse domains.
1362
- size_t domain_size;
1363
- upb_strview const* domains = envoy_config_route_v3_VirtualHost_domains(
1364
- virtual_hosts[i], &domain_size);
1365
- for (size_t j = 0; j < domain_size; ++j) {
1366
- std::string domain_pattern = UpbStringToStdString(domains[j]);
1367
- const MatchType match_type = DomainPatternMatchType(domain_pattern);
1368
- if (match_type == INVALID_MATCH) {
1369
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1370
- absl::StrCat("Invalid domain pattern \"", domain_pattern, "\".")
1371
- .c_str());
1372
- }
1373
- vhost.domains.emplace_back(std::move(domain_pattern));
1374
- }
1375
- if (vhost.domains.empty()) {
1376
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("VirtualHost has no domains");
1377
- }
1378
- // Parse routes.
1379
- size_t num_routes;
1380
- const envoy_config_route_v3_Route* const* routes =
1381
- envoy_config_route_v3_VirtualHost_routes(virtual_hosts[i], &num_routes);
1382
- if (num_routes < 1) {
1383
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1384
- "No route found in the virtual host.");
1385
- }
1386
- // Loop over the whole list of routes
1387
- for (size_t j = 0; j < num_routes; ++j) {
1388
- const envoy_config_route_v3_RouteMatch* match =
1389
- envoy_config_route_v3_Route_match(routes[j]);
1390
- size_t query_parameters_size;
1391
- static_cast<void>(envoy_config_route_v3_RouteMatch_query_parameters(
1392
- match, &query_parameters_size));
1393
- if (query_parameters_size > 0) {
1394
- continue;
1395
- }
1396
- XdsApi::Route route;
1397
- bool ignore_route = false;
1398
- grpc_error* error = RoutePathMatchParse(match, &route, &ignore_route);
1399
- if (error != GRPC_ERROR_NONE) return error;
1400
- if (ignore_route) continue;
1401
- error = RouteHeaderMatchersParse(match, &route);
1402
- if (error != GRPC_ERROR_NONE) return error;
1403
- error = RouteRuntimeFractionParse(match, &route);
1404
- if (error != GRPC_ERROR_NONE) return error;
1405
- error = RouteActionParse(routes[j], &route, &ignore_route);
1406
- if (error != GRPC_ERROR_NONE) return error;
1407
- if (ignore_route) continue;
1408
- vhost.routes.emplace_back(std::move(route));
1409
- }
1410
- if (vhost.routes.empty()) {
1411
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("No valid routes specified.");
1412
- }
1413
- }
1414
- return GRPC_ERROR_NONE;
1415
- }
1416
-
1417
- grpc_error* LdsResponseParse(
1418
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
1419
- const envoy_service_discovery_v3_DiscoveryResponse* response,
1420
- const std::set<absl::string_view>& expected_listener_names,
1421
- XdsApi::LdsUpdateMap* lds_update_map, upb_arena* arena) {
1422
- // Get the resources from the response.
1423
- size_t size;
1424
- const google_protobuf_Any* const* resources =
1425
- envoy_service_discovery_v3_DiscoveryResponse_resources(response, &size);
1426
- for (size_t i = 0; i < size; ++i) {
1427
- // Check the type_url of the resource.
1428
- absl::string_view type_url =
1429
- UpbStringToAbsl(google_protobuf_Any_type_url(resources[i]));
1430
- if (!IsLds(type_url)) {
1431
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not LDS.");
1432
- }
1433
- // Decode the listener.
1434
- const upb_strview encoded_listener =
1435
- google_protobuf_Any_value(resources[i]);
1436
- const envoy_config_listener_v3_Listener* listener =
1437
- envoy_config_listener_v3_Listener_parse(encoded_listener.data,
1438
- encoded_listener.size, arena);
1439
- if (listener == nullptr) {
1440
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode listener.");
1441
- }
1442
- // Check listener name. Ignore unexpected listeners.
1443
- std::string listener_name =
1444
- UpbStringToStdString(envoy_config_listener_v3_Listener_name(listener));
1445
- if (expected_listener_names.find(listener_name) ==
1446
- expected_listener_names.end()) {
1447
- continue;
1448
- }
1449
- // Fail if listener name is duplicated.
1450
- if (lds_update_map->find(listener_name) != lds_update_map->end()) {
1451
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1452
- absl::StrCat("duplicate listener name \"", listener_name, "\"")
1453
- .c_str());
1454
- }
1455
- XdsApi::LdsUpdate& lds_update = (*lds_update_map)[listener_name];
1456
- // Get api_listener and decode it to http_connection_manager.
1457
- const envoy_config_listener_v3_ApiListener* api_listener =
1458
- envoy_config_listener_v3_Listener_api_listener(listener);
1459
- if (api_listener == nullptr) {
1460
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1461
- "Listener has no ApiListener.");
1462
- }
1463
- const upb_strview encoded_api_listener = google_protobuf_Any_value(
1464
- envoy_config_listener_v3_ApiListener_api_listener(api_listener));
1465
- const envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager*
1466
- http_connection_manager =
1467
- envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_parse(
1468
- encoded_api_listener.data, encoded_api_listener.size, arena);
1469
- if (http_connection_manager == nullptr) {
1470
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1471
- "Could not parse HttpConnectionManager config from ApiListener");
1472
- }
1473
- if (XdsTimeoutEnabled()) {
1474
- // Obtain max_stream_duration from Http Protocol Options.
1475
- const envoy_config_core_v3_HttpProtocolOptions* options =
1476
- envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_common_http_protocol_options(
1477
- http_connection_manager);
1478
- if (options != nullptr) {
1479
- const google_protobuf_Duration* duration =
1480
- envoy_config_core_v3_HttpProtocolOptions_max_stream_duration(
1481
- options);
1482
- if (duration != nullptr) {
1483
- lds_update.http_max_stream_duration.seconds =
1484
- google_protobuf_Duration_seconds(duration);
1485
- lds_update.http_max_stream_duration.nanos =
1486
- google_protobuf_Duration_nanos(duration);
1487
- }
1488
- }
1489
- }
1490
- // Found inlined route_config. Parse it to find the cluster_name.
1491
- if (envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_route_config(
1492
- http_connection_manager)) {
1493
- const envoy_config_route_v3_RouteConfiguration* route_config =
1494
- envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_route_config(
1495
- http_connection_manager);
1496
- XdsApi::RdsUpdate rds_update;
1497
- grpc_error* error =
1498
- RouteConfigParse(client, tracer, symtab, route_config, &rds_update);
1499
- if (error != GRPC_ERROR_NONE) return error;
1500
- lds_update.rds_update = std::move(rds_update);
1501
- continue;
1502
- }
1503
- // Validate that RDS must be used to get the route_config dynamically.
1504
- if (!envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_has_rds(
1505
- http_connection_manager)) {
1506
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1507
- "HttpConnectionManager neither has inlined route_config nor RDS.");
1508
- }
1509
- const envoy_extensions_filters_network_http_connection_manager_v3_Rds* rds =
1510
- envoy_extensions_filters_network_http_connection_manager_v3_HttpConnectionManager_rds(
1511
- http_connection_manager);
1512
- // Check that the ConfigSource specifies ADS.
1513
- const envoy_config_core_v3_ConfigSource* config_source =
1514
- envoy_extensions_filters_network_http_connection_manager_v3_Rds_config_source(
1515
- rds);
1516
- if (config_source == nullptr) {
1517
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1518
- "HttpConnectionManager missing config_source for RDS.");
1519
- }
1520
- if (!envoy_config_core_v3_ConfigSource_has_ads(config_source)) {
1521
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1522
- "HttpConnectionManager ConfigSource for RDS does not specify ADS.");
1523
- }
1524
- // Get the route_config_name.
1525
- lds_update.route_config_name = UpbStringToStdString(
1526
- envoy_extensions_filters_network_http_connection_manager_v3_Rds_route_config_name(
1527
- rds));
1528
- }
1529
- return GRPC_ERROR_NONE;
1530
- }
1531
-
1532
- grpc_error* RdsResponseParse(
1533
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
1534
- const envoy_service_discovery_v3_DiscoveryResponse* response,
1535
- const std::set<absl::string_view>& expected_route_configuration_names,
1536
- XdsApi::RdsUpdateMap* rds_update_map, upb_arena* arena) {
1537
- // Get the resources from the response.
1538
- size_t size;
1539
- const google_protobuf_Any* const* resources =
1540
- envoy_service_discovery_v3_DiscoveryResponse_resources(response, &size);
1541
- for (size_t i = 0; i < size; ++i) {
1542
- // Check the type_url of the resource.
1543
- absl::string_view type_url =
1544
- UpbStringToAbsl(google_protobuf_Any_type_url(resources[i]));
1545
- if (!IsRds(type_url)) {
1546
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not RDS.");
1547
- }
1548
- // Decode the route_config.
1549
- const upb_strview encoded_route_config =
1550
- google_protobuf_Any_value(resources[i]);
1551
- const envoy_config_route_v3_RouteConfiguration* route_config =
1552
- envoy_config_route_v3_RouteConfiguration_parse(
1553
- encoded_route_config.data, encoded_route_config.size, arena);
1554
- if (route_config == nullptr) {
1555
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode route_config.");
1556
- }
1557
- // Check route_config_name. Ignore unexpected route_config.
1558
- std::string route_config_name = UpbStringToStdString(
1559
- envoy_config_route_v3_RouteConfiguration_name(route_config));
1560
- if (expected_route_configuration_names.find(route_config_name) ==
1561
- expected_route_configuration_names.end()) {
1562
- continue;
1563
- }
1564
- // Fail if route config name is duplicated.
1565
- if (rds_update_map->find(route_config_name) != rds_update_map->end()) {
1566
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1567
- absl::StrCat("duplicate route config name \"", route_config_name,
1568
- "\"")
1569
- .c_str());
1570
- }
1571
- // Parse the route_config.
1572
- XdsApi::RdsUpdate& rds_update =
1573
- (*rds_update_map)[std::move(route_config_name)];
1574
- grpc_error* error =
1575
- RouteConfigParse(client, tracer, symtab, route_config, &rds_update);
1576
- if (error != GRPC_ERROR_NONE) return error;
1577
- }
1578
- return GRPC_ERROR_NONE;
1579
- }
1580
-
1581
- XdsApi::CommonTlsContext::CertificateProviderInstance
1582
- CertificateProviderInstanceParse(
1583
- const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance*
1584
- certificate_provider_instance_proto) {
1585
- return {
1586
- UpbStringToStdString(
1587
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_instance_name(
1588
- certificate_provider_instance_proto)),
1589
- UpbStringToStdString(
1590
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CertificateProviderInstance_certificate_name(
1591
- certificate_provider_instance_proto))};
1592
- }
1593
-
1594
- grpc_error* CommonTlsContextParse(
1595
- const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*
1596
- common_tls_context_proto,
1597
- XdsApi::CommonTlsContext* common_tls_context) GRPC_MUST_USE_RESULT;
1598
- grpc_error* CommonTlsContextParse(
1599
- const envoy_extensions_transport_sockets_tls_v3_CommonTlsContext*
1600
- common_tls_context_proto,
1601
- XdsApi::CommonTlsContext* common_tls_context) {
1602
- auto* combined_validation_context =
1603
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_combined_validation_context(
1604
- common_tls_context_proto);
1605
- if (combined_validation_context != nullptr) {
1606
- auto* default_validation_context =
1607
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_default_validation_context(
1608
- combined_validation_context);
1609
- if (default_validation_context != nullptr) {
1610
- size_t len = 0;
1611
- auto* subject_alt_names_matchers =
1612
- envoy_extensions_transport_sockets_tls_v3_CertificateValidationContext_match_subject_alt_names(
1613
- default_validation_context, &len);
1614
- for (size_t i = 0; i < len; ++i) {
1615
- XdsApi::StringMatcher::StringMatcherType type;
1616
- std::string matcher;
1617
- if (envoy_type_matcher_v3_StringMatcher_has_exact(
1618
- subject_alt_names_matchers[i])) {
1619
- type = XdsApi::StringMatcher::StringMatcherType::EXACT;
1620
- matcher =
1621
- UpbStringToStdString(envoy_type_matcher_v3_StringMatcher_exact(
1622
- subject_alt_names_matchers[i]));
1623
- } else if (envoy_type_matcher_v3_StringMatcher_has_prefix(
1624
- subject_alt_names_matchers[i])) {
1625
- type = XdsApi::StringMatcher::StringMatcherType::PREFIX;
1626
- matcher =
1627
- UpbStringToStdString(envoy_type_matcher_v3_StringMatcher_prefix(
1628
- subject_alt_names_matchers[i]));
1629
- } else if (envoy_type_matcher_v3_StringMatcher_has_suffix(
1630
- subject_alt_names_matchers[i])) {
1631
- type = XdsApi::StringMatcher::StringMatcherType::SUFFIX;
1632
- matcher =
1633
- UpbStringToStdString(envoy_type_matcher_v3_StringMatcher_suffix(
1634
- subject_alt_names_matchers[i]));
1635
- } else if (envoy_type_matcher_v3_StringMatcher_has_contains(
1636
- subject_alt_names_matchers[i])) {
1637
- type = XdsApi::StringMatcher::StringMatcherType::CONTAINS;
1638
- matcher =
1639
- UpbStringToStdString(envoy_type_matcher_v3_StringMatcher_contains(
1640
- subject_alt_names_matchers[i]));
1641
- } else if (envoy_type_matcher_v3_StringMatcher_has_safe_regex(
1642
- subject_alt_names_matchers[i])) {
1643
- type = XdsApi::StringMatcher::StringMatcherType::SAFE_REGEX;
1644
- auto* regex_matcher = envoy_type_matcher_v3_StringMatcher_safe_regex(
1645
- subject_alt_names_matchers[i]);
1646
- matcher = UpbStringToStdString(
1647
- envoy_type_matcher_v3_RegexMatcher_regex(regex_matcher));
1648
- } else {
1649
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1650
- "Invalid StringMatcher specified");
1651
- }
1652
- bool ignore_case = envoy_type_matcher_v3_StringMatcher_ignore_case(
1653
- subject_alt_names_matchers[i]);
1654
- XdsApi::StringMatcher string_matcher(type, matcher, ignore_case);
1655
- if (type == XdsApi::StringMatcher::StringMatcherType::SAFE_REGEX) {
1656
- if (!string_matcher.regex_matcher()->ok()) {
1657
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1658
- "Invalid regex string specified in string matcher.");
1659
- }
1660
- if (ignore_case) {
1661
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1662
- "StringMatcher: ignore_case has no effect for SAFE_REGEX.");
1663
- }
1664
- }
1665
- common_tls_context->combined_validation_context
1666
- .default_validation_context.match_subject_alt_names.push_back(
1667
- std::move(string_matcher));
1668
- }
1669
- }
1670
- auto* validation_context_certificate_provider_instance =
1671
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_CombinedCertificateValidationContext_validation_context_certificate_provider_instance(
1672
- combined_validation_context);
1673
- if (validation_context_certificate_provider_instance != nullptr) {
1674
- common_tls_context->combined_validation_context
1675
- .validation_context_certificate_provider_instance =
1676
- CertificateProviderInstanceParse(
1677
- validation_context_certificate_provider_instance);
1678
- }
1679
- }
1680
- auto* tls_certificate_certificate_provider_instance =
1681
- envoy_extensions_transport_sockets_tls_v3_CommonTlsContext_tls_certificate_certificate_provider_instance(
1682
- common_tls_context_proto);
1683
- if (tls_certificate_certificate_provider_instance != nullptr) {
1684
- common_tls_context->tls_certificate_certificate_provider_instance =
1685
- CertificateProviderInstanceParse(
1686
- tls_certificate_certificate_provider_instance);
1687
- }
1688
- return GRPC_ERROR_NONE;
1689
- }
1690
-
1691
- grpc_error* CdsResponseParse(
1692
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
1693
- const envoy_service_discovery_v3_DiscoveryResponse* response,
1694
- const std::set<absl::string_view>& expected_cluster_names,
1695
- XdsApi::CdsUpdateMap* cds_update_map, upb_arena* arena) {
1696
- // Get the resources from the response.
1697
- size_t size;
1698
- const google_protobuf_Any* const* resources =
1699
- envoy_service_discovery_v3_DiscoveryResponse_resources(response, &size);
1700
- // Parse all the resources in the CDS response.
1701
- for (size_t i = 0; i < size; ++i) {
1702
- // Check the type_url of the resource.
1703
- absl::string_view type_url =
1704
- UpbStringToAbsl(google_protobuf_Any_type_url(resources[i]));
1705
- if (!IsCds(type_url)) {
1706
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not CDS.");
1707
- }
1708
- // Decode the cluster.
1709
- const upb_strview encoded_cluster = google_protobuf_Any_value(resources[i]);
1710
- const envoy_config_cluster_v3_Cluster* cluster =
1711
- envoy_config_cluster_v3_Cluster_parse(encoded_cluster.data,
1712
- encoded_cluster.size, arena);
1713
- if (cluster == nullptr) {
1714
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode cluster.");
1715
- }
1716
- MaybeLogCluster(client, tracer, symtab, cluster);
1717
- // Ignore unexpected cluster names.
1718
- std::string cluster_name =
1719
- UpbStringToStdString(envoy_config_cluster_v3_Cluster_name(cluster));
1720
- if (expected_cluster_names.find(cluster_name) ==
1721
- expected_cluster_names.end()) {
1722
- continue;
1723
- }
1724
- // Fail on duplicate resources.
1725
- if (cds_update_map->find(cluster_name) != cds_update_map->end()) {
1726
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1727
- absl::StrCat("duplicate resource name \"", cluster_name, "\"")
1728
- .c_str());
1729
- }
1730
- XdsApi::CdsUpdate& cds_update = (*cds_update_map)[std::move(cluster_name)];
1731
- // Check the cluster_discovery_type.
1732
- if (!envoy_config_cluster_v3_Cluster_has_type(cluster)) {
1733
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType not found.");
1734
- }
1735
- if (envoy_config_cluster_v3_Cluster_type(cluster) !=
1736
- envoy_config_cluster_v3_Cluster_EDS) {
1737
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("DiscoveryType is not EDS.");
1738
- }
1739
- // Check the EDS config source.
1740
- const envoy_config_cluster_v3_Cluster_EdsClusterConfig* eds_cluster_config =
1741
- envoy_config_cluster_v3_Cluster_eds_cluster_config(cluster);
1742
- const envoy_config_core_v3_ConfigSource* eds_config =
1743
- envoy_config_cluster_v3_Cluster_EdsClusterConfig_eds_config(
1744
- eds_cluster_config);
1745
- if (!envoy_config_core_v3_ConfigSource_has_ads(eds_config)) {
1746
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1747
- "EDS ConfigSource is not ADS.");
1748
- }
1749
- // Record EDS service_name (if any).
1750
- upb_strview service_name =
1751
- envoy_config_cluster_v3_Cluster_EdsClusterConfig_service_name(
1752
- eds_cluster_config);
1753
- if (service_name.size != 0) {
1754
- cds_update.eds_service_name = UpbStringToStdString(service_name);
1755
- }
1756
- // Check the LB policy.
1757
- if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) !=
1758
- envoy_config_cluster_v3_Cluster_ROUND_ROBIN) {
1759
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1760
- "LB policy is not ROUND_ROBIN.");
1761
- }
1762
- if (XdsSecurityEnabled()) {
1763
- // Record Upstream tls context
1764
- auto* transport_socket =
1765
- envoy_config_cluster_v3_Cluster_transport_socket(cluster);
1766
- if (transport_socket != nullptr) {
1767
- absl::string_view name = UpbStringToAbsl(
1768
- envoy_config_core_v3_TransportSocket_name(transport_socket));
1769
- if (name == "envoy.transport_sockets.tls") {
1770
- auto* typed_config =
1771
- envoy_config_core_v3_TransportSocket_typed_config(
1772
- transport_socket);
1773
- if (typed_config != nullptr) {
1774
- const upb_strview encoded_upstream_tls_context =
1775
- google_protobuf_Any_value(typed_config);
1776
- auto* upstream_tls_context =
1777
- envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_parse(
1778
- encoded_upstream_tls_context.data,
1779
- encoded_upstream_tls_context.size, arena);
1780
- if (upstream_tls_context == nullptr) {
1781
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1782
- "Can't decode upstream tls context.");
1783
- }
1784
- auto* common_tls_context =
1785
- envoy_extensions_transport_sockets_tls_v3_UpstreamTlsContext_common_tls_context(
1786
- upstream_tls_context);
1787
- if (common_tls_context != nullptr) {
1788
- grpc_error* error = CommonTlsContextParse(
1789
- common_tls_context, &cds_update.common_tls_context);
1790
- if (error != GRPC_ERROR_NONE) return error;
1791
- }
1792
- }
1793
- if (cds_update.common_tls_context.combined_validation_context
1794
- .validation_context_certificate_provider_instance
1795
- .instance_name.empty()) {
1796
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1797
- "TLS configuration provided but no "
1798
- "validation_context_certificate_provider_instance found.");
1799
- }
1800
- }
1801
- }
1802
- }
1803
- // Record LRS server name (if any).
1804
- const envoy_config_core_v3_ConfigSource* lrs_server =
1805
- envoy_config_cluster_v3_Cluster_lrs_server(cluster);
1806
- if (lrs_server != nullptr) {
1807
- if (!envoy_config_core_v3_ConfigSource_has_self(lrs_server)) {
1808
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1809
- "LRS ConfigSource is not self.");
1810
- }
1811
- cds_update.lrs_load_reporting_server_name.emplace("");
1812
- }
1813
- // The Cluster resource encodes the circuit breaking parameters in a list of
1814
- // Thresholds messages, where each message specifies the parameters for a
1815
- // particular RoutingPriority. we will look only at the first entry in the
1816
- // list for priority DEFAULT and default to 1024 if not found.
1817
- if (envoy_config_cluster_v3_Cluster_has_circuit_breakers(cluster)) {
1818
- const envoy_config_cluster_v3_CircuitBreakers* circuit_breakers =
1819
- envoy_config_cluster_v3_Cluster_circuit_breakers(cluster);
1820
- size_t num_thresholds;
1821
- const envoy_config_cluster_v3_CircuitBreakers_Thresholds* const*
1822
- thresholds = envoy_config_cluster_v3_CircuitBreakers_thresholds(
1823
- circuit_breakers, &num_thresholds);
1824
- for (size_t i = 0; i < num_thresholds; ++i) {
1825
- const auto* threshold = thresholds[i];
1826
- if (envoy_config_cluster_v3_CircuitBreakers_Thresholds_priority(
1827
- threshold) == envoy_config_core_v3_DEFAULT) {
1828
- const google_protobuf_UInt32Value* max_requests =
1829
- envoy_config_cluster_v3_CircuitBreakers_Thresholds_max_requests(
1830
- threshold);
1831
- if (max_requests != nullptr) {
1832
- cds_update.max_concurrent_requests =
1833
- google_protobuf_UInt32Value_value(max_requests);
1834
- }
1835
- break;
1836
- }
1837
- }
1838
- }
1839
- }
1840
- return GRPC_ERROR_NONE;
1841
- }
1842
-
1843
- grpc_error* ServerAddressParseAndAppend(
1844
- const envoy_config_endpoint_v3_LbEndpoint* lb_endpoint,
1845
- ServerAddressList* list) {
1846
- // If health_status is not HEALTHY or UNKNOWN, skip this endpoint.
1847
- const int32_t health_status =
1848
- envoy_config_endpoint_v3_LbEndpoint_health_status(lb_endpoint);
1849
- if (health_status != envoy_config_core_v3_UNKNOWN &&
1850
- health_status != envoy_config_core_v3_HEALTHY) {
1851
- return GRPC_ERROR_NONE;
1852
- }
1853
- // Find the ip:port.
1854
- const envoy_config_endpoint_v3_Endpoint* endpoint =
1855
- envoy_config_endpoint_v3_LbEndpoint_endpoint(lb_endpoint);
1856
- const envoy_config_core_v3_Address* address =
1857
- envoy_config_endpoint_v3_Endpoint_address(endpoint);
1858
- const envoy_config_core_v3_SocketAddress* socket_address =
1859
- envoy_config_core_v3_Address_socket_address(address);
1860
- std::string address_str = UpbStringToStdString(
1861
- envoy_config_core_v3_SocketAddress_address(socket_address));
1862
- uint32_t port = envoy_config_core_v3_SocketAddress_port_value(socket_address);
1863
- if (GPR_UNLIKELY(port >> 16) != 0) {
1864
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid port.");
1865
- }
1866
- // Populate grpc_resolved_address.
1867
- grpc_resolved_address addr;
1868
- grpc_string_to_sockaddr(&addr, address_str.c_str(), port);
1869
- // Append the address to the list.
1870
- list->emplace_back(addr, nullptr);
1871
- return GRPC_ERROR_NONE;
1872
- }
1873
-
1874
- grpc_error* LocalityParse(
1875
- const envoy_config_endpoint_v3_LocalityLbEndpoints* locality_lb_endpoints,
1876
- XdsApi::EdsUpdate::Priority::Locality* output_locality, size_t* priority) {
1877
- // Parse LB weight.
1878
- const google_protobuf_UInt32Value* lb_weight =
1879
- envoy_config_endpoint_v3_LocalityLbEndpoints_load_balancing_weight(
1880
- locality_lb_endpoints);
1881
- // If LB weight is not specified, it means this locality is assigned no load.
1882
- // TODO(juanlishen): When we support CDS to configure the inter-locality
1883
- // policy, we should change the LB weight handling.
1884
- output_locality->lb_weight =
1885
- lb_weight != nullptr ? google_protobuf_UInt32Value_value(lb_weight) : 0;
1886
- if (output_locality->lb_weight == 0) return GRPC_ERROR_NONE;
1887
- // Parse locality name.
1888
- const envoy_config_core_v3_Locality* locality =
1889
- envoy_config_endpoint_v3_LocalityLbEndpoints_locality(
1890
- locality_lb_endpoints);
1891
- std::string region =
1892
- UpbStringToStdString(envoy_config_core_v3_Locality_region(locality));
1893
- std::string zone =
1894
- UpbStringToStdString(envoy_config_core_v3_Locality_region(locality));
1895
- std::string sub_zone =
1896
- UpbStringToStdString(envoy_config_core_v3_Locality_sub_zone(locality));
1897
- output_locality->name = MakeRefCounted<XdsLocalityName>(
1898
- std::move(region), std::move(zone), std::move(sub_zone));
1899
- // Parse the addresses.
1900
- size_t size;
1901
- const envoy_config_endpoint_v3_LbEndpoint* const* lb_endpoints =
1902
- envoy_config_endpoint_v3_LocalityLbEndpoints_lb_endpoints(
1903
- locality_lb_endpoints, &size);
1904
- for (size_t i = 0; i < size; ++i) {
1905
- grpc_error* error = ServerAddressParseAndAppend(
1906
- lb_endpoints[i], &output_locality->endpoints);
1907
- if (error != GRPC_ERROR_NONE) return error;
1908
- }
1909
- // Parse the priority.
1910
- *priority = envoy_config_endpoint_v3_LocalityLbEndpoints_priority(
1911
- locality_lb_endpoints);
1912
- return GRPC_ERROR_NONE;
1913
- }
1914
-
1915
- grpc_error* DropParseAndAppend(
1916
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload*
1917
- drop_overload,
1918
- XdsApi::EdsUpdate::DropConfig* drop_config) {
1919
- // Get the category.
1920
- std::string category = UpbStringToStdString(
1921
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_category(
1922
- drop_overload));
1923
- if (category.empty()) {
1924
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Empty drop category name");
1925
- }
1926
- // Get the drop rate (per million).
1927
- const envoy_type_v3_FractionalPercent* drop_percentage =
1928
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload_drop_percentage(
1929
- drop_overload);
1930
- uint32_t numerator =
1931
- envoy_type_v3_FractionalPercent_numerator(drop_percentage);
1932
- const auto denominator =
1933
- static_cast<envoy_type_v3_FractionalPercent_DenominatorType>(
1934
- envoy_type_v3_FractionalPercent_denominator(drop_percentage));
1935
- // Normalize to million.
1936
- switch (denominator) {
1937
- case envoy_type_v3_FractionalPercent_HUNDRED:
1938
- numerator *= 10000;
1939
- break;
1940
- case envoy_type_v3_FractionalPercent_TEN_THOUSAND:
1941
- numerator *= 100;
1942
- break;
1943
- case envoy_type_v3_FractionalPercent_MILLION:
1944
- break;
1945
- default:
1946
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Unknown denominator type");
1947
- }
1948
- // Cap numerator to 1000000.
1949
- numerator = GPR_MIN(numerator, 1000000);
1950
- drop_config->AddCategory(std::move(category), numerator);
1951
- return GRPC_ERROR_NONE;
1952
- }
1953
-
1954
- grpc_error* EdsResponseParse(
1955
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
1956
- const envoy_service_discovery_v3_DiscoveryResponse* response,
1957
- const std::set<absl::string_view>& expected_eds_service_names,
1958
- XdsApi::EdsUpdateMap* eds_update_map, upb_arena* arena) {
1959
- // Get the resources from the response.
1960
- size_t size;
1961
- const google_protobuf_Any* const* resources =
1962
- envoy_service_discovery_v3_DiscoveryResponse_resources(response, &size);
1963
- for (size_t i = 0; i < size; ++i) {
1964
- // Check the type_url of the resource.
1965
- absl::string_view type_url =
1966
- UpbStringToAbsl(google_protobuf_Any_type_url(resources[i]));
1967
- if (!IsEds(type_url)) {
1968
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING("Resource is not EDS.");
1969
- }
1970
- // Get the cluster_load_assignment.
1971
- upb_strview encoded_cluster_load_assignment =
1972
- google_protobuf_Any_value(resources[i]);
1973
- envoy_config_endpoint_v3_ClusterLoadAssignment* cluster_load_assignment =
1974
- envoy_config_endpoint_v3_ClusterLoadAssignment_parse(
1975
- encoded_cluster_load_assignment.data,
1976
- encoded_cluster_load_assignment.size, arena);
1977
- if (cluster_load_assignment == nullptr) {
1978
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
1979
- "Can't parse cluster_load_assignment.");
1980
- }
1981
- MaybeLogClusterLoadAssignment(client, tracer, symtab,
1982
- cluster_load_assignment);
1983
- // Check the EDS service name. Ignore unexpected names.
1984
- std::string eds_service_name = UpbStringToStdString(
1985
- envoy_config_endpoint_v3_ClusterLoadAssignment_cluster_name(
1986
- cluster_load_assignment));
1987
- if (expected_eds_service_names.find(eds_service_name) ==
1988
- expected_eds_service_names.end()) {
1989
- continue;
1990
- }
1991
- // Fail on duplicate resources.
1992
- if (eds_update_map->find(eds_service_name) != eds_update_map->end()) {
1993
- return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1994
- absl::StrCat("duplicate resource name \"", eds_service_name, "\"")
1995
- .c_str());
1996
- }
1997
- XdsApi::EdsUpdate& eds_update =
1998
- (*eds_update_map)[std::move(eds_service_name)];
1999
- // Get the endpoints.
2000
- size_t locality_size;
2001
- const envoy_config_endpoint_v3_LocalityLbEndpoints* const* endpoints =
2002
- envoy_config_endpoint_v3_ClusterLoadAssignment_endpoints(
2003
- cluster_load_assignment, &locality_size);
2004
- for (size_t j = 0; j < locality_size; ++j) {
2005
- size_t priority;
2006
- XdsApi::EdsUpdate::Priority::Locality locality;
2007
- grpc_error* error = LocalityParse(endpoints[j], &locality, &priority);
2008
- if (error != GRPC_ERROR_NONE) return error;
2009
- // Filter out locality with weight 0.
2010
- if (locality.lb_weight == 0) continue;
2011
- // Make sure prorities is big enough. Note that they might not
2012
- // arrive in priority order.
2013
- while (eds_update.priorities.size() < priority + 1) {
2014
- eds_update.priorities.emplace_back();
2015
- }
2016
- eds_update.priorities[priority].localities.emplace(locality.name.get(),
2017
- std::move(locality));
2018
- }
2019
- for (const auto& priority : eds_update.priorities) {
2020
- if (priority.localities.empty()) {
2021
- return GRPC_ERROR_CREATE_FROM_STATIC_STRING(
2022
- "EDS update includes sparse priority list");
2023
- }
2024
- }
2025
- // Get the drop config.
2026
- eds_update.drop_config = MakeRefCounted<XdsApi::EdsUpdate::DropConfig>();
2027
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy* policy =
2028
- envoy_config_endpoint_v3_ClusterLoadAssignment_policy(
2029
- cluster_load_assignment);
2030
- if (policy != nullptr) {
2031
- size_t drop_size;
2032
- const envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_DropOverload* const*
2033
- drop_overload =
2034
- envoy_config_endpoint_v3_ClusterLoadAssignment_Policy_drop_overloads(
2035
- policy, &drop_size);
2036
- for (size_t j = 0; j < drop_size; ++j) {
2037
- grpc_error* error =
2038
- DropParseAndAppend(drop_overload[j], eds_update.drop_config.get());
2039
- if (error != GRPC_ERROR_NONE) return error;
2040
- }
2041
- }
2042
- }
2043
- return GRPC_ERROR_NONE;
2044
- }
2045
-
2046
- std::string TypeUrlInternalToExternal(absl::string_view type_url) {
2047
- if (type_url == kLdsV2TypeUrl) {
2048
- return XdsApi::kLdsTypeUrl;
2049
- } else if (type_url == kRdsV2TypeUrl) {
2050
- return XdsApi::kRdsTypeUrl;
2051
- } else if (type_url == kCdsV2TypeUrl) {
2052
- return XdsApi::kCdsTypeUrl;
2053
- } else if (type_url == kEdsV2TypeUrl) {
2054
- return XdsApi::kEdsTypeUrl;
2055
- }
2056
- return std::string(type_url);
2057
- }
2058
-
2059
358
  } // namespace
2060
359
 
2061
- XdsApi::AdsParseResult XdsApi::ParseAdsResponse(
2062
- const grpc_slice& encoded_response,
2063
- const std::set<absl::string_view>& expected_listener_names,
2064
- const std::set<absl::string_view>& expected_route_configuration_names,
2065
- const std::set<absl::string_view>& expected_cluster_names,
2066
- const std::set<absl::string_view>& expected_eds_service_names) {
2067
- AdsParseResult result;
360
+ absl::Status XdsApi::ParseAdsResponse(const XdsBootstrap::XdsServer& server,
361
+ const grpc_slice& encoded_response,
362
+ AdsResponseParserInterface* parser) {
2068
363
  upb::Arena arena;
364
+ const XdsEncodingContext context = {client_,
365
+ server,
366
+ tracer_,
367
+ symtab_->ptr(),
368
+ arena.ptr(),
369
+ server.ShouldUseV3(),
370
+ certificate_provider_definition_map_};
2069
371
  // Decode the response.
2070
372
  const envoy_service_discovery_v3_DiscoveryResponse* response =
2071
373
  envoy_service_discovery_v3_DiscoveryResponse_parse(
2072
374
  reinterpret_cast<const char*>(GRPC_SLICE_START_PTR(encoded_response)),
2073
375
  GRPC_SLICE_LENGTH(encoded_response), arena.ptr());
2074
- // If decoding fails, output an empty type_url and return.
376
+ // If decoding fails, report a fatal error and return.
2075
377
  if (response == nullptr) {
2076
- result.parse_error =
2077
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Can't decode DiscoveryResponse.");
2078
- return result;
2079
- }
2080
- MaybeLogDiscoveryResponse(client_, tracer_, symtab_.ptr(), response);
2081
- // Record the type_url, the version_info, and the nonce of the response.
2082
- result.type_url = TypeUrlInternalToExternal(UpbStringToAbsl(
2083
- envoy_service_discovery_v3_DiscoveryResponse_type_url(response)));
2084
- result.version = UpbStringToStdString(
378
+ return absl::InvalidArgumentError("Can't decode DiscoveryResponse.");
379
+ }
380
+ MaybeLogDiscoveryResponse(context, response);
381
+ // Report the type_url, version, nonce, and number of resources to the parser.
382
+ AdsResponseParserInterface::AdsResponseFields fields;
383
+ fields.type_url = std::string(absl::StripPrefix(
384
+ UpbStringToAbsl(
385
+ envoy_service_discovery_v3_DiscoveryResponse_type_url(response)),
386
+ "type.googleapis.com/"));
387
+ fields.version = UpbStringToStdString(
2085
388
  envoy_service_discovery_v3_DiscoveryResponse_version_info(response));
2086
- result.nonce = UpbStringToStdString(
389
+ fields.nonce = UpbStringToStdString(
2087
390
  envoy_service_discovery_v3_DiscoveryResponse_nonce(response));
2088
- // Parse the response according to the resource type.
2089
- if (IsLds(result.type_url)) {
2090
- result.parse_error = LdsResponseParse(client_, tracer_, symtab_.ptr(),
2091
- response, expected_listener_names,
2092
- &result.lds_update_map, arena.ptr());
2093
- } else if (IsRds(result.type_url)) {
2094
- result.parse_error =
2095
- RdsResponseParse(client_, tracer_, symtab_.ptr(), response,
2096
- expected_route_configuration_names,
2097
- &result.rds_update_map, arena.ptr());
2098
- } else if (IsCds(result.type_url)) {
2099
- result.parse_error = CdsResponseParse(client_, tracer_, symtab_.ptr(),
2100
- response, expected_cluster_names,
2101
- &result.cds_update_map, arena.ptr());
2102
- } else if (IsEds(result.type_url)) {
2103
- result.parse_error = EdsResponseParse(client_, tracer_, symtab_.ptr(),
2104
- response, expected_eds_service_names,
2105
- &result.eds_update_map, arena.ptr());
391
+ size_t num_resources;
392
+ const google_protobuf_Any* const* resources =
393
+ envoy_service_discovery_v3_DiscoveryResponse_resources(response,
394
+ &num_resources);
395
+ fields.num_resources = num_resources;
396
+ absl::Status status = parser->ProcessAdsResponseFields(std::move(fields));
397
+ if (!status.ok()) return status;
398
+ // Process each resource.
399
+ for (size_t i = 0; i < num_resources; ++i) {
400
+ absl::string_view type_url = absl::StripPrefix(
401
+ UpbStringToAbsl(google_protobuf_Any_type_url(resources[i])),
402
+ "type.googleapis.com/");
403
+ absl::string_view serialized_resource =
404
+ UpbStringToAbsl(google_protobuf_Any_value(resources[i]));
405
+ // Unwrap Resource messages, if so wrapped.
406
+ if (type_url == "envoy.api.v2.Resource" ||
407
+ type_url == "envoy.service.discovery.v3.Resource") {
408
+ const auto* resource_wrapper = envoy_service_discovery_v3_Resource_parse(
409
+ serialized_resource.data(), serialized_resource.size(), arena.ptr());
410
+ if (resource_wrapper == nullptr) {
411
+ return absl::InvalidArgumentError(
412
+ "Can't decode Resource proto wrapper");
413
+ }
414
+ const auto* resource =
415
+ envoy_service_discovery_v3_Resource_resource(resource_wrapper);
416
+ type_url = absl::StripPrefix(
417
+ UpbStringToAbsl(google_protobuf_Any_type_url(resource)),
418
+ "type.googleapis.com/");
419
+ serialized_resource =
420
+ UpbStringToAbsl(google_protobuf_Any_value(resource));
421
+ }
422
+ parser->ParseResource(context, i, type_url, serialized_resource);
2106
423
  }
2107
- return result;
424
+ return absl::OkStatus();
2108
425
  }
2109
426
 
2110
427
  namespace {
2111
428
 
2112
429
  void MaybeLogLrsRequest(
2113
- XdsClient* client, TraceFlag* tracer, upb_symtab* symtab,
430
+ const XdsEncodingContext& context,
2114
431
  const envoy_service_load_stats_v3_LoadStatsRequest* request) {
2115
- if (GRPC_TRACE_FLAG_ENABLED(*tracer) &&
432
+ if (GRPC_TRACE_FLAG_ENABLED(*context.tracer) &&
2116
433
  gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
2117
- const upb_msgdef* msg_type =
2118
- envoy_service_load_stats_v3_LoadStatsRequest_getmsgdef(symtab);
434
+ const upb_MessageDef* msg_type =
435
+ envoy_service_load_stats_v3_LoadStatsRequest_getmsgdef(context.symtab);
2119
436
  char buf[10240];
2120
- upb_text_encode(request, msg_type, nullptr, 0, buf, sizeof(buf));
2121
- gpr_log(GPR_DEBUG, "[xds_client %p] constructed LRS request: %s", client,
2122
- buf);
437
+ upb_TextEncode(request, msg_type, nullptr, 0, buf, sizeof(buf));
438
+ gpr_log(GPR_DEBUG, "[xds_client %p] constructed LRS request: %s",
439
+ context.client, buf);
2123
440
  }
2124
441
  }
2125
442
 
2126
443
  grpc_slice SerializeLrsRequest(
2127
- const envoy_service_load_stats_v3_LoadStatsRequest* request,
2128
- upb_arena* arena) {
444
+ const XdsEncodingContext& context,
445
+ const envoy_service_load_stats_v3_LoadStatsRequest* request) {
2129
446
  size_t output_length;
2130
447
  char* output = envoy_service_load_stats_v3_LoadStatsRequest_serialize(
2131
- request, arena, &output_length);
448
+ request, context.arena, &output_length);
2132
449
  return grpc_slice_from_copied_buffer(output, output_length);
2133
450
  }
2134
451
 
@@ -2137,6 +454,13 @@ grpc_slice SerializeLrsRequest(
2137
454
  grpc_slice XdsApi::CreateLrsInitialRequest(
2138
455
  const XdsBootstrap::XdsServer& server) {
2139
456
  upb::Arena arena;
457
+ const XdsEncodingContext context = {client_,
458
+ server,
459
+ tracer_,
460
+ symtab_->ptr(),
461
+ arena.ptr(),
462
+ server.ShouldUseV3(),
463
+ certificate_provider_definition_map_};
2140
464
  // Create a request.
2141
465
  envoy_service_load_stats_v3_LoadStatsRequest* request =
2142
466
  envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -2144,25 +468,27 @@ grpc_slice XdsApi::CreateLrsInitialRequest(
2144
468
  envoy_config_core_v3_Node* node_msg =
2145
469
  envoy_service_load_stats_v3_LoadStatsRequest_mutable_node(request,
2146
470
  arena.ptr());
2147
- PopulateNode(arena.ptr(), node_, server.ShouldUseV3(), build_version_,
2148
- user_agent_name_, node_msg);
471
+ PopulateNode(context, node_, build_version_, user_agent_name_,
472
+ user_agent_version_, node_msg);
2149
473
  envoy_config_core_v3_Node_add_client_features(
2150
- node_msg, upb_strview_makez("envoy.lrs.supports_send_all_clusters"),
474
+ node_msg,
475
+ upb_StringView_FromString("envoy.lrs.supports_send_all_clusters"),
2151
476
  arena.ptr());
2152
- MaybeLogLrsRequest(client_, tracer_, symtab_.ptr(), request);
2153
- return SerializeLrsRequest(request, arena.ptr());
477
+ MaybeLogLrsRequest(context, request);
478
+ return SerializeLrsRequest(context, request);
2154
479
  }
2155
480
 
2156
481
  namespace {
2157
482
 
2158
483
  void LocalityStatsPopulate(
484
+ const XdsEncodingContext& context,
2159
485
  envoy_config_endpoint_v3_UpstreamLocalityStats* output,
2160
486
  const XdsLocalityName& locality_name,
2161
- const XdsClusterLocalityStats::Snapshot& snapshot, upb_arena* arena) {
487
+ const XdsClusterLocalityStats::Snapshot& snapshot) {
2162
488
  // Set locality.
2163
489
  envoy_config_core_v3_Locality* locality =
2164
- envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_locality(output,
2165
- arena);
490
+ envoy_config_endpoint_v3_UpstreamLocalityStats_mutable_locality(
491
+ output, context.arena);
2166
492
  if (!locality_name.region().empty()) {
2167
493
  envoy_config_core_v3_Locality_set_region(
2168
494
  locality, StdStringToUpbString(locality_name.region()));
@@ -2190,7 +516,7 @@ void LocalityStatsPopulate(
2190
516
  const XdsClusterLocalityStats::BackendMetric& metric_value = p.second;
2191
517
  envoy_config_endpoint_v3_EndpointLoadMetricStats* load_metric =
2192
518
  envoy_config_endpoint_v3_UpstreamLocalityStats_add_load_metric_stats(
2193
- output, arena);
519
+ output, context.arena);
2194
520
  envoy_config_endpoint_v3_EndpointLoadMetricStats_set_metric_name(
2195
521
  load_metric, StdStringToUpbString(metric_name));
2196
522
  envoy_config_endpoint_v3_EndpointLoadMetricStats_set_num_requests_finished_with_metric(
@@ -2205,6 +531,16 @@ void LocalityStatsPopulate(
2205
531
  grpc_slice XdsApi::CreateLrsRequest(
2206
532
  ClusterLoadReportMap cluster_load_report_map) {
2207
533
  upb::Arena arena;
534
+ // The xDS server info is not actually needed here, so we seed it with an
535
+ // empty value.
536
+ XdsBootstrap::XdsServer empty_server;
537
+ const XdsEncodingContext context = {client_,
538
+ empty_server,
539
+ tracer_,
540
+ symtab_->ptr(),
541
+ arena.ptr(),
542
+ false,
543
+ certificate_provider_definition_map_};
2208
544
  // Create a request.
2209
545
  envoy_service_load_stats_v3_LoadStatsRequest* request =
2210
546
  envoy_service_load_stats_v3_LoadStatsRequest_new(arena.ptr());
@@ -2231,8 +567,7 @@ grpc_slice XdsApi::CreateLrsRequest(
2231
567
  envoy_config_endpoint_v3_UpstreamLocalityStats* locality_stats =
2232
568
  envoy_config_endpoint_v3_ClusterStats_add_upstream_locality_stats(
2233
569
  cluster_stats, arena.ptr());
2234
- LocalityStatsPopulate(locality_stats, locality_name, snapshot,
2235
- arena.ptr());
570
+ LocalityStatsPopulate(context, locality_stats, locality_name, snapshot);
2236
571
  }
2237
572
  // Add dropped requests.
2238
573
  uint64_t total_dropped_requests = 0;
@@ -2253,22 +588,21 @@ grpc_slice XdsApi::CreateLrsRequest(
2253
588
  envoy_config_endpoint_v3_ClusterStats_set_total_dropped_requests(
2254
589
  cluster_stats, total_dropped_requests);
2255
590
  // Set real load report interval.
2256
- gpr_timespec timespec =
2257
- grpc_millis_to_timespec(load_report.load_report_interval, GPR_TIMESPAN);
591
+ gpr_timespec timespec = load_report.load_report_interval.as_timespec();
2258
592
  google_protobuf_Duration* load_report_interval =
2259
593
  envoy_config_endpoint_v3_ClusterStats_mutable_load_report_interval(
2260
594
  cluster_stats, arena.ptr());
2261
595
  google_protobuf_Duration_set_seconds(load_report_interval, timespec.tv_sec);
2262
596
  google_protobuf_Duration_set_nanos(load_report_interval, timespec.tv_nsec);
2263
597
  }
2264
- MaybeLogLrsRequest(client_, tracer_, symtab_.ptr(), request);
2265
- return SerializeLrsRequest(request, arena.ptr());
598
+ MaybeLogLrsRequest(context, request);
599
+ return SerializeLrsRequest(context, request);
2266
600
  }
2267
601
 
2268
- grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
2269
- bool* send_all_clusters,
2270
- std::set<std::string>* cluster_names,
2271
- grpc_millis* load_reporting_interval) {
602
+ grpc_error_handle XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
603
+ bool* send_all_clusters,
604
+ std::set<std::string>* cluster_names,
605
+ Duration* load_reporting_interval) {
2272
606
  upb::Arena arena;
2273
607
  // Decode the response.
2274
608
  const envoy_service_load_stats_v3_LoadStatsResponse* decoded_response =
@@ -2286,7 +620,7 @@ grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
2286
620
  } else {
2287
621
  // Store the cluster names.
2288
622
  size_t size;
2289
- const upb_strview* clusters =
623
+ const upb_StringView* clusters =
2290
624
  envoy_service_load_stats_v3_LoadStatsResponse_clusters(decoded_response,
2291
625
  &size);
2292
626
  for (size_t i = 0; i < size; ++i) {
@@ -2297,12 +631,100 @@ grpc_error* XdsApi::ParseLrsResponse(const grpc_slice& encoded_response,
2297
631
  const google_protobuf_Duration* load_reporting_interval_duration =
2298
632
  envoy_service_load_stats_v3_LoadStatsResponse_load_reporting_interval(
2299
633
  decoded_response);
2300
- gpr_timespec timespec{
634
+ *load_reporting_interval = Duration::FromSecondsAndNanoseconds(
2301
635
  google_protobuf_Duration_seconds(load_reporting_interval_duration),
2302
- google_protobuf_Duration_nanos(load_reporting_interval_duration),
2303
- GPR_TIMESPAN};
2304
- *load_reporting_interval = gpr_time_to_millis(timespec);
636
+ google_protobuf_Duration_nanos(load_reporting_interval_duration));
2305
637
  return GRPC_ERROR_NONE;
2306
638
  }
2307
639
 
640
+ namespace {
641
+
642
+ google_protobuf_Timestamp* EncodeTimestamp(const XdsEncodingContext& context,
643
+ Timestamp value) {
644
+ google_protobuf_Timestamp* timestamp =
645
+ google_protobuf_Timestamp_new(context.arena);
646
+ gpr_timespec timespec = value.as_timespec(GPR_CLOCK_REALTIME);
647
+ google_protobuf_Timestamp_set_seconds(timestamp, timespec.tv_sec);
648
+ google_protobuf_Timestamp_set_nanos(timestamp, timespec.tv_nsec);
649
+ return timestamp;
650
+ }
651
+
652
+ } // namespace
653
+
654
+ std::string XdsApi::AssembleClientConfig(
655
+ const ResourceTypeMetadataMap& resource_type_metadata_map) {
656
+ upb::Arena arena;
657
+ // Create the ClientConfig for resource metadata from XdsClient
658
+ auto* client_config = envoy_service_status_v3_ClientConfig_new(arena.ptr());
659
+ // Fill-in the node information
660
+ auto* node = envoy_service_status_v3_ClientConfig_mutable_node(client_config,
661
+ arena.ptr());
662
+ // The xDS server info is not actually needed here, so we seed it with an
663
+ // empty value.
664
+ XdsBootstrap::XdsServer empty_server;
665
+ const XdsEncodingContext context = {client_,
666
+ empty_server,
667
+ tracer_,
668
+ symtab_->ptr(),
669
+ arena.ptr(),
670
+ true,
671
+ certificate_provider_definition_map_};
672
+ PopulateNode(context, node_, build_version_, user_agent_name_,
673
+ user_agent_version_, node);
674
+ // Dump each resource.
675
+ std::vector<std::string> type_url_storage;
676
+ for (const auto& p : resource_type_metadata_map) {
677
+ absl::string_view type_url = p.first;
678
+ const ResourceMetadataMap& resource_metadata_map = p.second;
679
+ type_url_storage.emplace_back(
680
+ absl::StrCat("type.googleapis.com/", type_url));
681
+ for (const auto& q : resource_metadata_map) {
682
+ absl::string_view resource_name = q.first;
683
+ const ResourceMetadata& metadata = *q.second;
684
+ auto* entry =
685
+ envoy_service_status_v3_ClientConfig_add_generic_xds_configs(
686
+ client_config, context.arena);
687
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_type_url(
688
+ entry, StdStringToUpbString(type_url_storage.back()));
689
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_name(
690
+ entry, StdStringToUpbString(resource_name));
691
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_client_status(
692
+ entry, metadata.client_status);
693
+ if (!metadata.serialized_proto.empty()) {
694
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_version_info(
695
+ entry, StdStringToUpbString(metadata.version));
696
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_last_updated(
697
+ entry, EncodeTimestamp(context, metadata.update_time));
698
+ auto* any_field =
699
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_mutable_xds_config(
700
+ entry, context.arena);
701
+ google_protobuf_Any_set_type_url(
702
+ any_field, StdStringToUpbString(type_url_storage.back()));
703
+ google_protobuf_Any_set_value(
704
+ any_field, StdStringToUpbString(metadata.serialized_proto));
705
+ }
706
+ if (metadata.client_status == XdsApi::ResourceMetadata::NACKED) {
707
+ auto* update_failure_state =
708
+ envoy_admin_v3_UpdateFailureState_new(context.arena);
709
+ envoy_admin_v3_UpdateFailureState_set_details(
710
+ update_failure_state,
711
+ StdStringToUpbString(metadata.failed_details));
712
+ envoy_admin_v3_UpdateFailureState_set_version_info(
713
+ update_failure_state,
714
+ StdStringToUpbString(metadata.failed_version));
715
+ envoy_admin_v3_UpdateFailureState_set_last_update_attempt(
716
+ update_failure_state,
717
+ EncodeTimestamp(context, metadata.failed_update_time));
718
+ envoy_service_status_v3_ClientConfig_GenericXdsConfig_set_error_state(
719
+ entry, update_failure_state);
720
+ }
721
+ }
722
+ }
723
+ // Serialize the upb message to bytes
724
+ size_t output_length;
725
+ char* output = envoy_service_status_v3_ClientConfig_serialize(
726
+ client_config, arena.ptr(), &output_length);
727
+ return std::string(output, output_length);
728
+ }
729
+
2308
730
  } // namespace grpc_core