grpc 1.55.0 → 1.56.0.pre3

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 (374) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -68
  3. data/include/grpc/event_engine/event_engine.h +4 -3
  4. data/include/grpc/grpc_audit_logging.h +96 -0
  5. data/include/grpc/module.modulemap +2 -0
  6. data/include/grpc/support/json.h +218 -0
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  9. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
  11. data/src/core/ext/filters/client_channel/client_channel.h +6 -0
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
  14. data/src/core/ext/filters/client_channel/config_selector.h +9 -24
  15. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
  22. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
  29. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  31. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
  40. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
  41. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
  43. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
  45. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
  46. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
  47. data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
  48. data/src/core/ext/filters/client_channel/subchannel.h +3 -43
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
  50. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
  51. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
  52. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
  53. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
  55. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  56. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  57. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  58. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  59. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  60. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  61. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  62. data/src/core/ext/xds/xds_api.cc +9 -6
  63. data/src/core/ext/xds/xds_api.h +3 -2
  64. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  65. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  66. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  67. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  68. data/src/core/ext/xds/xds_client.cc +5 -4
  69. data/src/core/ext/xds/xds_client_stats.h +1 -1
  70. data/src/core/ext/xds/xds_cluster.cc +20 -19
  71. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  72. data/src/core/ext/xds/xds_common_types.cc +3 -1
  73. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  74. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  75. data/src/core/ext/xds/xds_http_filters.h +4 -2
  76. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  77. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  78. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  79. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  80. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  81. data/src/core/ext/xds/xds_listener.cc +1 -0
  82. data/src/core/ext/xds/xds_route_config.cc +40 -3
  83. data/src/core/ext/xds/xds_routing.cc +2 -2
  84. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  85. data/src/core/lib/avl/avl.h +5 -0
  86. data/src/core/lib/channel/channel_args.cc +80 -22
  87. data/src/core/lib/channel/channel_args.h +34 -1
  88. data/src/core/lib/channel/channel_trace.cc +16 -12
  89. data/src/core/lib/channel/channelz.cc +159 -132
  90. data/src/core/lib/channel/channelz.h +42 -35
  91. data/src/core/lib/channel/channelz_registry.cc +23 -20
  92. data/src/core/lib/channel/connected_channel.cc +17 -6
  93. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  94. data/src/core/lib/channel/promise_based_filter.h +2 -0
  95. data/src/core/lib/compression/compression_internal.cc +2 -5
  96. data/src/core/lib/config/config_vars.cc +20 -18
  97. data/src/core/lib/config/config_vars.h +4 -4
  98. data/src/core/lib/config/load_config.cc +13 -0
  99. data/src/core/lib/config/load_config.h +6 -0
  100. data/src/core/lib/debug/event_log.h +1 -1
  101. data/src/core/lib/debug/stats_data.h +1 -1
  102. data/src/core/lib/debug/trace.cc +24 -55
  103. data/src/core/lib/debug/trace.h +3 -1
  104. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  105. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  106. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  107. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  108. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  109. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  110. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  111. data/src/core/lib/event_engine/poller.h +2 -2
  112. data/src/core/lib/event_engine/posix.h +4 -0
  113. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  114. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  115. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  116. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
  117. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
  118. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  119. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
  120. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  121. data/src/core/lib/event_engine/shim.cc +7 -1
  122. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  123. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  124. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  125. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  126. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  127. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  128. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  129. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  130. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  131. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  132. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  133. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  134. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  135. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  136. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  137. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  139. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  141. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  142. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  143. data/src/core/lib/experiments/config.cc +38 -7
  144. data/src/core/lib/experiments/config.h +16 -0
  145. data/src/core/lib/experiments/experiments.cc +67 -20
  146. data/src/core/lib/experiments/experiments.h +27 -21
  147. data/src/core/lib/gpr/log_internal.h +55 -0
  148. data/src/core/lib/gprpp/crash.cc +10 -0
  149. data/src/core/lib/gprpp/crash.h +3 -0
  150. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  151. data/src/core/lib/gprpp/per_cpu.h +29 -6
  152. data/src/core/lib/gprpp/time.cc +1 -0
  153. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  154. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  155. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  156. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  157. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  158. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  159. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  160. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  161. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  162. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  163. data/src/core/lib/iomgr/socket_windows.h +9 -2
  164. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  165. data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
  166. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  167. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  168. data/src/core/lib/json/json.h +2 -166
  169. data/src/core/lib/json/json_object_loader.cc +8 -9
  170. data/src/core/lib/json/json_object_loader.h +25 -18
  171. data/src/core/lib/json/json_reader.cc +13 -6
  172. data/src/core/lib/json/json_util.cc +6 -11
  173. data/src/core/lib/json/json_writer.cc +7 -8
  174. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  175. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  176. data/src/core/lib/matchers/matchers.cc +3 -4
  177. data/src/core/lib/matchers/matchers.h +2 -1
  178. data/src/core/lib/promise/activity.cc +5 -0
  179. data/src/core/lib/promise/activity.h +10 -0
  180. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  181. data/src/core/lib/promise/party.cc +31 -13
  182. data/src/core/lib/promise/party.h +11 -2
  183. data/src/core/lib/promise/pipe.h +9 -2
  184. data/src/core/lib/promise/prioritized_race.h +95 -0
  185. data/src/core/lib/promise/sleep.cc +2 -1
  186. data/src/core/lib/resolver/server_address.cc +0 -8
  187. data/src/core/lib/resolver/server_address.h +0 -6
  188. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  189. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  190. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  191. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  192. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  193. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  194. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  195. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  196. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  197. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  198. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  199. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  200. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  202. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  203. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  204. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  205. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  206. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  207. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  208. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  209. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  210. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  211. data/src/core/lib/security/util/json_util.cc +1 -0
  212. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  213. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  214. data/src/core/lib/surface/call.cc +38 -23
  215. data/src/core/lib/surface/completion_queue.cc +6 -2
  216. data/src/core/lib/surface/version.cc +2 -2
  217. data/src/core/lib/transport/batch_builder.cc +15 -12
  218. data/src/core/lib/transport/batch_builder.h +39 -35
  219. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  220. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  221. data/src/ruby/ext/grpc/extconf.rb +8 -9
  222. data/src/ruby/lib/grpc/version.rb +1 -1
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  225. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  226. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  227. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  228. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  229. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  230. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  231. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  232. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  233. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  234. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  236. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  237. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  238. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  239. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  240. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  243. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  244. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  278. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  279. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  280. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  281. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  282. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  283. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  284. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  288. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  289. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  300. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  303. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  304. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  305. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  306. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  307. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  310. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  311. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  312. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  313. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  314. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  315. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  317. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  318. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  319. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  320. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  321. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  322. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  323. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  324. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  325. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  326. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  327. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  328. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  329. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  332. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  333. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  334. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  335. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  336. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  337. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  338. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  339. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  340. data/third_party/cares/cares/include/ares.h +23 -1
  341. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  342. data/third_party/cares/cares/include/ares_rules.h +2 -2
  343. data/third_party/cares/cares/include/ares_version.h +3 -3
  344. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  345. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  346. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  347. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  348. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  349. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  350. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  351. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  352. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  353. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  354. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  355. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  356. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  357. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  358. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  359. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  360. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  361. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  362. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  363. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  364. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  365. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  366. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  367. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  368. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  369. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  370. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  371. metadata +50 -14
  372. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  373. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  374. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -0,0 +1,122 @@
1
+ //
2
+ // Copyright 2023 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
+ //
16
+
17
+ #include <grpc/support/port_platform.h>
18
+
19
+ #include "src/core/ext/xds/xds_audit_logger_registry.h"
20
+
21
+ #include <string>
22
+ #include <utility>
23
+
24
+ #include "absl/status/status.h"
25
+ #include "absl/status/statusor.h"
26
+ #include "absl/strings/string_view.h"
27
+ #include "absl/types/optional.h"
28
+ #include "envoy/config/core/v3/extension.upb.h"
29
+ #include "envoy/config/rbac/v3/rbac.upb.h"
30
+
31
+ #include "src/core/ext/xds/xds_common_types.h"
32
+ #include "src/core/lib/gprpp/match.h"
33
+ #include "src/core/lib/gprpp/validation_errors.h"
34
+ #include "src/core/lib/security/authorization/audit_logging.h"
35
+
36
+ namespace grpc_core {
37
+
38
+ namespace {
39
+
40
+ using experimental::AuditLoggerRegistry;
41
+
42
+ class StdoutLoggerConfigFactory : public XdsAuditLoggerRegistry::ConfigFactory {
43
+ public:
44
+ Json::Object ConvertXdsAuditLoggerConfig(
45
+ const XdsResourceType::DecodeContext& /*context*/,
46
+ absl::string_view /*configuration*/,
47
+ ValidationErrors* /*errors*/) override {
48
+ // Stdout logger has no configuration right now. So we don't process the
49
+ // config protobuf.
50
+ return {};
51
+ }
52
+
53
+ absl::string_view type() override { return Type(); }
54
+ absl::string_view name() override { return "stdout_logger"; }
55
+
56
+ static absl::string_view Type() {
57
+ return "envoy.extensions.rbac.audit_loggers.stream.v3.StdoutAuditLog";
58
+ }
59
+ };
60
+
61
+ } // namespace
62
+
63
+ XdsAuditLoggerRegistry::XdsAuditLoggerRegistry() {
64
+ audit_logger_config_factories_.emplace(
65
+ StdoutLoggerConfigFactory::Type(),
66
+ std::make_unique<StdoutLoggerConfigFactory>());
67
+ }
68
+
69
+ Json XdsAuditLoggerRegistry::ConvertXdsAuditLoggerConfig(
70
+ const XdsResourceType::DecodeContext& context,
71
+ const envoy_config_rbac_v3_RBAC_AuditLoggingOptions_AuditLoggerConfig*
72
+ logger_config,
73
+ ValidationErrors* errors) const {
74
+ const auto* typed_extension_config =
75
+ envoy_config_rbac_v3_RBAC_AuditLoggingOptions_AuditLoggerConfig_audit_logger(
76
+ logger_config);
77
+ ValidationErrors::ScopedField field(errors, ".audit_logger");
78
+ if (typed_extension_config == nullptr) {
79
+ errors->AddError("field not present");
80
+ return Json(); // A null Json object.
81
+ }
82
+ ValidationErrors::ScopedField field2(errors, ".typed_config");
83
+ const auto* typed_config =
84
+ envoy_config_core_v3_TypedExtensionConfig_typed_config(
85
+ typed_extension_config);
86
+ auto extension = ExtractXdsExtension(context, typed_config, errors);
87
+ if (!extension.has_value()) return Json();
88
+ absl::string_view name;
89
+ Json config;
90
+ Match(
91
+ extension->value,
92
+ // Built-in logger types.
93
+ [&](absl::string_view serialized_value) {
94
+ auto it = audit_logger_config_factories_.find(extension->type);
95
+ if (it == audit_logger_config_factories_.end()) return;
96
+ name = it->second->name();
97
+ config = Json::FromObject(it->second->ConvertXdsAuditLoggerConfig(
98
+ context, serialized_value, errors));
99
+ },
100
+ // Custom logger types.
101
+ [&](Json json) {
102
+ if (!AuditLoggerRegistry::FactoryExists(extension->type)) return;
103
+ name = extension->type;
104
+ config = json;
105
+ });
106
+ // Config not found in either case if name is empty.
107
+ if (name.empty()) {
108
+ if (!envoy_config_rbac_v3_RBAC_AuditLoggingOptions_AuditLoggerConfig_is_optional(
109
+ logger_config)) {
110
+ errors->AddError("unsupported audit logger type");
111
+ }
112
+ return Json();
113
+ }
114
+ // Validate the converted config.
115
+ auto result = AuditLoggerRegistry::ParseConfig(name, config);
116
+ if (!result.ok()) {
117
+ errors->AddError(result.status().message());
118
+ return Json();
119
+ }
120
+ return Json::FromObject({{std::string(name), std::move(config)}});
121
+ }
122
+ } // namespace grpc_core
@@ -0,0 +1,68 @@
1
+ //
2
+ // Copyright 2023 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
+ //
16
+
17
+ #ifndef GRPC_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H
18
+ #define GRPC_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H
19
+
20
+ #include <grpc/support/port_platform.h>
21
+
22
+ #include <map>
23
+ #include <memory>
24
+
25
+ #include "absl/strings/string_view.h"
26
+ #include "envoy/config/rbac/v3/rbac.upb.h"
27
+
28
+ #include "src/core/ext/xds/xds_resource_type.h"
29
+ #include "src/core/lib/gprpp/validation_errors.h"
30
+ #include "src/core/lib/json/json.h"
31
+
32
+ namespace grpc_core {
33
+
34
+ // A registry that maintains a set of converters that are able to map xDS
35
+ // RBAC audit logger configuration to gRPC's JSON format.
36
+ class XdsAuditLoggerRegistry {
37
+ public:
38
+ class ConfigFactory {
39
+ public:
40
+ virtual ~ConfigFactory() = default;
41
+ virtual Json::Object ConvertXdsAuditLoggerConfig(
42
+ const XdsResourceType::DecodeContext& context,
43
+ absl::string_view configuration, ValidationErrors* errors) = 0;
44
+ // The full proto message name for the logger config.
45
+ virtual absl::string_view type() = 0;
46
+ // The logger name used for the gRPC registry.
47
+ virtual absl::string_view name() = 0;
48
+ };
49
+
50
+ XdsAuditLoggerRegistry();
51
+
52
+ Json ConvertXdsAuditLoggerConfig(
53
+ const XdsResourceType::DecodeContext& context,
54
+ const envoy_config_rbac_v3_RBAC_AuditLoggingOptions_AuditLoggerConfig*
55
+ logger_config,
56
+ ValidationErrors* errors) const;
57
+
58
+ private:
59
+ // A map of config factories that goes from the type of the audit logging
60
+ // config to the config factory.
61
+ std::map<absl::string_view /* Owned by ConfigFactory */,
62
+ std::unique_ptr<ConfigFactory>>
63
+ audit_logger_config_factories_;
64
+ };
65
+
66
+ } // namespace grpc_core
67
+
68
+ #endif // GRPC_SRC_CORE_EXT_XDS_XDS_AUDIT_LOGGER_REGISTRY_H
@@ -35,6 +35,8 @@
35
35
  #include "absl/strings/string_view.h"
36
36
  #include "absl/types/optional.h"
37
37
 
38
+ #include <grpc/support/json.h>
39
+
38
40
  #include "src/core/lib/config/core_configuration.h"
39
41
  #include "src/core/lib/gprpp/ref_counted_ptr.h"
40
42
  #include "src/core/lib/json/json.h"
@@ -139,7 +141,7 @@ void GrpcXdsBootstrap::GrpcXdsServer::JsonPostLoad(const Json& json,
139
141
  CoreConfiguration::Get().channel_creds_registry().IsSupported(
140
142
  creds.type)) {
141
143
  if (!CoreConfiguration::Get().channel_creds_registry().IsValidConfig(
142
- creds.type, creds.config)) {
144
+ creds.type, Json::FromObject(creds.config))) {
143
145
  errors->AddError(absl::StrCat(
144
146
  "invalid config for channel creds type \"", creds.type, "\""));
145
147
  continue;
@@ -173,22 +175,25 @@ void GrpcXdsBootstrap::GrpcXdsServer::JsonPostLoad(const Json& json,
173
175
  }
174
176
 
175
177
  Json GrpcXdsBootstrap::GrpcXdsServer::ToJson() const {
176
- Json::Object channel_creds_json{{"type", channel_creds_.type}};
178
+ Json::Object channel_creds_json{
179
+ {"type", Json::FromString(channel_creds_.type)},
180
+ };
177
181
  if (!channel_creds_.config.empty()) {
178
- channel_creds_json["config"] = channel_creds_.config;
182
+ channel_creds_json["config"] = Json::FromObject(channel_creds_.config);
179
183
  }
180
184
  Json::Object json{
181
- {"server_uri", server_uri_},
182
- {"channel_creds", Json::Array{std::move(channel_creds_json)}},
185
+ {"server_uri", Json::FromString(server_uri_)},
186
+ {"channel_creds",
187
+ Json::FromArray({Json::FromObject(std::move(channel_creds_json))})},
183
188
  };
184
189
  if (!server_features_.empty()) {
185
190
  Json::Array server_features_json;
186
191
  for (auto& feature : server_features_) {
187
- server_features_json.emplace_back(feature);
192
+ server_features_json.emplace_back(Json::FromString(feature));
188
193
  }
189
- json["server_features"] = std::move(server_features_json);
194
+ json["server_features"] = Json::FromArray(std::move(server_features_json));
190
195
  }
191
- return json;
196
+ return Json::FromObject(std::move(json));
192
197
  }
193
198
 
194
199
  //
@@ -254,6 +259,13 @@ const JsonLoaderInterface* GrpcXdsBootstrap::JsonLoader(const JsonArgs&) {
254
259
  void GrpcXdsBootstrap::JsonPostLoad(const Json& /*json*/,
255
260
  const JsonArgs& /*args*/,
256
261
  ValidationErrors* errors) {
262
+ // Verify that there is at least one server present.
263
+ {
264
+ ValidationErrors::ScopedField field(errors, ".xds_servers");
265
+ if (servers_.empty() && !errors->FieldHasErrors()) {
266
+ errors->AddError("must be non-empty");
267
+ }
268
+ }
257
269
  // Verify that each authority has the right prefix in the
258
270
  // client_listener_resource_name_template field.
259
271
  {
@@ -292,7 +304,7 @@ std::string GrpcXdsBootstrap::ToString() const {
292
304
  "},\n",
293
305
  node_->id(), node_->cluster(), node_->locality_region(),
294
306
  node_->locality_zone(), node_->locality_sub_zone(),
295
- JsonDump(Json{node_->metadata()})));
307
+ JsonDump(Json::FromObject(node_->metadata()))));
296
308
  }
297
309
  parts.push_back(
298
310
  absl::StrFormat("servers=[\n%s\n],\n", JsonDump(servers_[0].ToJson())));
@@ -30,6 +30,7 @@
30
30
  #include "absl/types/optional.h"
31
31
 
32
32
  #include "src/core/ext/xds/certificate_provider_store.h"
33
+ #include "src/core/ext/xds/xds_audit_logger_registry.h"
33
34
  #include "src/core/ext/xds/xds_bootstrap.h"
34
35
  #include "src/core/ext/xds/xds_cluster_specifier_plugin.h"
35
36
  #include "src/core/ext/xds/xds_http_filters.h"
@@ -161,6 +162,9 @@ class GrpcXdsBootstrap : public XdsBootstrap {
161
162
  const XdsLbPolicyRegistry& lb_policy_registry() const {
162
163
  return lb_policy_registry_;
163
164
  }
165
+ const XdsAuditLoggerRegistry& audit_logger_registry() const {
166
+ return audit_logger_registry_;
167
+ }
164
168
 
165
169
  // Exposed for testing purposes only.
166
170
  const std::map<std::string, GrpcAuthority>& authorities() const {
@@ -177,6 +181,7 @@ class GrpcXdsBootstrap : public XdsBootstrap {
177
181
  XdsHttpFilterRegistry http_filter_registry_;
178
182
  XdsClusterSpecifierPluginRegistry cluster_specifier_plugin_registry_;
179
183
  XdsLbPolicyRegistry lb_policy_registry_;
184
+ XdsAuditLoggerRegistry audit_logger_registry_;
180
185
  };
181
186
 
182
187
  } // namespace grpc_core
@@ -152,7 +152,8 @@ class XdsClient::ChannelState::AdsCallState
152
152
  absl::string_view serialized_resource) override
153
153
  ABSL_EXCLUSIVE_LOCKS_REQUIRED(&XdsClient::mu_);
154
154
 
155
- void ResourceWrapperParsingFailed(size_t idx) override;
155
+ void ResourceWrapperParsingFailed(size_t idx,
156
+ absl::string_view message) override;
156
157
 
157
158
  Result TakeResult() { return std::move(result_); }
158
159
 
@@ -878,9 +879,9 @@ void XdsClient::ChannelState::AdsCallState::AdsResponseParser::ParseResource(
878
879
  }
879
880
 
880
881
  void XdsClient::ChannelState::AdsCallState::AdsResponseParser::
881
- ResourceWrapperParsingFailed(size_t idx) {
882
- result_.errors.emplace_back(absl::StrCat(
883
- "resource index ", idx, ": Can't decode Resource proto wrapper"));
882
+ ResourceWrapperParsingFailed(size_t idx, absl::string_view message) {
883
+ result_.errors.emplace_back(
884
+ absl::StrCat("resource index ", idx, ": ", message));
884
885
  }
885
886
 
886
887
  //
@@ -239,7 +239,7 @@ class XdsClusterLocalityStats : public RefCounted<XdsClusterLocalityStats> {
239
239
  absl::string_view cluster_name_;
240
240
  absl::string_view eds_service_name_;
241
241
  RefCountedPtr<XdsLocalityName> name_;
242
- PerCpu<Stats> stats_{32};
242
+ PerCpu<Stats> stats_{PerCpuOptions().SetMaxShards(32).SetCpusPerShard(4)};
243
243
  };
244
244
 
245
245
  } // namespace grpc_core
@@ -46,6 +46,7 @@
46
46
  #include "upb/base/string_view.h"
47
47
  #include "upb/text/encode.h"
48
48
 
49
+ #include <grpc/support/json.h>
49
50
  #include <grpc/support/log.h>
50
51
 
51
52
  #include "src/core/ext/xds/upb_utils.h"
@@ -102,8 +103,8 @@ std::string XdsClusterResource::ToString() const {
102
103
  "prioritized_cluster_names=[",
103
104
  absl::StrJoin(aggregate.prioritized_cluster_names, ", "), "]"));
104
105
  });
105
- contents.push_back(
106
- absl::StrCat("lb_policy_config=", JsonDump(Json{lb_policy_config})));
106
+ contents.push_back(absl::StrCat("lb_policy_config=",
107
+ JsonDump(Json::FromArray(lb_policy_config))));
107
108
  if (lrs_load_reporting_server.has_value()) {
108
109
  contents.push_back(absl::StrCat("lrs_load_reporting_server_name=",
109
110
  lrs_load_reporting_server->server_uri()));
@@ -329,7 +330,8 @@ void ParseLbPolicyConfig(const XdsResourceType::DecodeContext& context,
329
330
  if (original_error_count == errors->size()) {
330
331
  auto config = CoreConfiguration::Get()
331
332
  .lb_policy_registry()
332
- .ParseLoadBalancingConfig(cds_update->lb_policy_config);
333
+ .ParseLoadBalancingConfig(
334
+ Json::FromArray(cds_update->lb_policy_config));
333
335
  if (!config.ok()) errors->AddError(config.status().message());
334
336
  }
335
337
  return;
@@ -339,17 +341,16 @@ void ParseLbPolicyConfig(const XdsResourceType::DecodeContext& context,
339
341
  if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
340
342
  envoy_config_cluster_v3_Cluster_ROUND_ROBIN) {
341
343
  cds_update->lb_policy_config = {
342
- Json::Object{
344
+ Json::FromObject({
343
345
  {"xds_wrr_locality_experimental",
344
- Json::Object{
345
- {"childPolicy",
346
- Json::Array{
347
- Json::Object{
348
- {"round_robin", Json::Object()},
349
- },
350
- }},
351
- }},
352
- },
346
+ Json::FromObject({
347
+ {"childPolicy", Json::FromArray({
348
+ Json::FromObject({
349
+ {"round_robin", Json::FromObject({})},
350
+ }),
351
+ })},
352
+ })},
353
+ }),
353
354
  };
354
355
  } else if (envoy_config_cluster_v3_Cluster_lb_policy(cluster) ==
355
356
  envoy_config_cluster_v3_Cluster_RING_HASH) {
@@ -391,13 +392,13 @@ void ParseLbPolicyConfig(const XdsResourceType::DecodeContext& context,
391
392
  }
392
393
  }
393
394
  cds_update->lb_policy_config = {
394
- Json::Object{
395
+ Json::FromObject({
395
396
  {"ring_hash_experimental",
396
- Json::Object{
397
- {"minRingSize", min_ring_size},
398
- {"maxRingSize", max_ring_size},
399
- }},
400
- },
397
+ Json::FromObject({
398
+ {"minRingSize", Json::FromNumber(min_ring_size)},
399
+ {"maxRingSize", Json::FromNumber(max_ring_size)},
400
+ })},
401
+ }),
401
402
  };
402
403
  } else {
403
404
  ValidationErrors::ScopedField field(errors, ".lb_policy");
@@ -30,6 +30,7 @@
30
30
  #include "upb/json/encode.h"
31
31
  #include "upb/upb.hpp"
32
32
 
33
+ #include <grpc/support/json.h>
33
34
  #include <grpc/support/log.h>
34
35
 
35
36
  #include "src/core/lib/json/json.h"
@@ -91,14 +92,16 @@ Json XdsRouteLookupClusterSpecifierPlugin::GenerateLoadBalancingPolicyConfig(
91
92
  reinterpret_cast<char*>(buf), json_size + 1, status.ptr());
92
93
  auto json = JsonParse(reinterpret_cast<char*>(buf));
93
94
  GPR_ASSERT(json.ok());
94
- return Json::Array{Json::Object{
95
- {"rls_experimental",
96
- Json::Object{
97
- {"routeLookupConfig", std::move(*json)},
98
- {"childPolicy",
99
- Json::Array{Json::Object{{"cds_experimental", Json::Object()}}}},
100
- {"childPolicyConfigTargetFieldName", "cluster"},
101
- }}}};
95
+ return Json::FromArray({Json::FromObject(
96
+ {{"rls_experimental",
97
+ Json::FromObject({
98
+ {"routeLookupConfig", std::move(*json)},
99
+ {"childPolicy",
100
+ Json::FromArray({
101
+ Json::FromObject({{"cds_experimental", Json::FromObject({})}}),
102
+ })},
103
+ {"childPolicyConfigTargetFieldName", Json::FromString("cluster")},
104
+ })}})});
102
105
  }
103
106
 
104
107
  //
@@ -45,6 +45,8 @@
45
45
  #include "upb/upb.hpp"
46
46
  #include "xds/type/v3/typed_struct.upb.h"
47
47
 
48
+ #include <grpc/support/json.h>
49
+
48
50
  #include "src/core/ext/xds/upb_utils.h"
49
51
  #include "src/core/ext/xds/xds_bootstrap_grpc.h"
50
52
  #include "src/core/ext/xds/xds_client.h"
@@ -486,7 +488,7 @@ absl::optional<XdsExtension> ExtractXdsExtension(
486
488
  errors, absl::StrCat(".value[", extension.type, "]"));
487
489
  auto* protobuf_struct = xds_type_v3_TypedStruct_value(typed_struct);
488
490
  if (protobuf_struct == nullptr) {
489
- extension.value = Json::Object(); // Default to empty object.
491
+ extension.value = Json::FromObject({}); // Default to empty object.
490
492
  } else {
491
493
  auto json = ParseProtobufStructToJson(context, protobuf_struct);
492
494
  if (!json.ok()) {
@@ -34,6 +34,7 @@
34
34
  #include "google/protobuf/wrappers.upb.h"
35
35
 
36
36
  #include <grpc/status.h>
37
+ #include <grpc/support/json.h>
37
38
 
38
39
  #include "src/core/ext/filters/fault_injection/fault_injection_filter.h"
39
40
  #include "src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h"
@@ -139,14 +140,14 @@ XdsHttpFaultFilter::GenerateFilterConfig(
139
140
  }
140
141
  // Set the abort_code, even if it's OK
141
142
  fault_injection_policy_json["abortCode"] =
142
- grpc_status_code_to_string(abort_grpc_status_code);
143
+ Json::FromString(grpc_status_code_to_string(abort_grpc_status_code));
143
144
  // Set the headers if we enabled header abort injection control
144
145
  if (envoy_extensions_filters_http_fault_v3_FaultAbort_has_header_abort(
145
146
  fault_abort)) {
146
147
  fault_injection_policy_json["abortCodeHeader"] =
147
- "x-envoy-fault-abort-grpc-request";
148
+ Json::FromString("x-envoy-fault-abort-grpc-request");
148
149
  fault_injection_policy_json["abortPercentageHeader"] =
149
- "x-envoy-fault-abort-percentage";
150
+ Json::FromString("x-envoy-fault-abort-percentage");
150
151
  }
151
152
  // Set the fraction percent
152
153
  auto* percent =
@@ -154,9 +155,9 @@ XdsHttpFaultFilter::GenerateFilterConfig(
154
155
  fault_abort);
155
156
  if (percent != nullptr) {
156
157
  fault_injection_policy_json["abortPercentageNumerator"] =
157
- envoy_type_v3_FractionalPercent_numerator(percent);
158
+ Json::FromNumber(envoy_type_v3_FractionalPercent_numerator(percent));
158
159
  fault_injection_policy_json["abortPercentageDenominator"] =
159
- GetDenominator(percent);
160
+ Json::FromNumber(GetDenominator(percent));
160
161
  }
161
162
  }
162
163
  // Section 2: Parse the delay injection config
@@ -171,15 +172,16 @@ XdsHttpFaultFilter::GenerateFilterConfig(
171
172
  if (delay_duration != nullptr) {
172
173
  ValidationErrors::ScopedField field(errors, ".fixed_delay");
173
174
  Duration duration = ParseDuration(delay_duration, errors);
174
- fault_injection_policy_json["delay"] = duration.ToJsonString();
175
+ fault_injection_policy_json["delay"] =
176
+ Json::FromString(duration.ToJsonString());
175
177
  }
176
178
  // Set the headers if we enabled header delay injection control
177
179
  if (envoy_extensions_filters_common_fault_v3_FaultDelay_has_header_delay(
178
180
  fault_delay)) {
179
181
  fault_injection_policy_json["delayHeader"] =
180
- "x-envoy-fault-delay-request";
182
+ Json::FromString("x-envoy-fault-delay-request");
181
183
  fault_injection_policy_json["delayPercentageHeader"] =
182
- "x-envoy-fault-delay-request-percentage";
184
+ Json::FromString("x-envoy-fault-delay-request-percentage");
183
185
  }
184
186
  // Set the fraction percent
185
187
  auto* percent =
@@ -187,9 +189,9 @@ XdsHttpFaultFilter::GenerateFilterConfig(
187
189
  fault_delay);
188
190
  if (percent != nullptr) {
189
191
  fault_injection_policy_json["delayPercentageNumerator"] =
190
- envoy_type_v3_FractionalPercent_numerator(percent);
192
+ Json::FromNumber(envoy_type_v3_FractionalPercent_numerator(percent));
191
193
  fault_injection_policy_json["delayPercentageDenominator"] =
192
- GetDenominator(percent);
194
+ Json::FromNumber(GetDenominator(percent));
193
195
  }
194
196
  }
195
197
  // Section 3: Parse the maximum active faults
@@ -198,10 +200,10 @@ XdsHttpFaultFilter::GenerateFilterConfig(
198
200
  http_fault);
199
201
  if (max_fault_wrapper != nullptr) {
200
202
  fault_injection_policy_json["maxFaults"] =
201
- google_protobuf_UInt32Value_value(max_fault_wrapper);
203
+ Json::FromNumber(google_protobuf_UInt32Value_value(max_fault_wrapper));
202
204
  }
203
205
  return FilterConfig{ConfigProtoName(),
204
- std::move(fault_injection_policy_json)};
206
+ Json::FromObject(std::move(fault_injection_policy_json))};
205
207
  }
206
208
 
207
209
  absl::optional<XdsHttpFilterImpl::FilterConfig>
@@ -225,7 +227,8 @@ ChannelArgs XdsHttpFaultFilter::ModifyChannelArgs(
225
227
  absl::StatusOr<XdsHttpFilterImpl::ServiceConfigJsonEntry>
226
228
  XdsHttpFaultFilter::GenerateServiceConfig(
227
229
  const FilterConfig& hcm_filter_config,
228
- const FilterConfig* filter_config_override) const {
230
+ const FilterConfig* filter_config_override,
231
+ absl::string_view /*filter_name*/) const {
229
232
  Json policy_json = filter_config_override != nullptr
230
233
  ? filter_config_override->config
231
234
  : hcm_filter_config.config;
@@ -48,7 +48,8 @@ class XdsHttpFaultFilter : public XdsHttpFilterImpl {
48
48
  ChannelArgs ModifyChannelArgs(const ChannelArgs& args) const override;
49
49
  absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
50
50
  const FilterConfig& hcm_filter_config,
51
- const FilterConfig* filter_config_override) const override;
51
+ const FilterConfig* filter_config_override,
52
+ absl::string_view filter_name) const override;
52
53
  bool IsSupportedOnClients() const override { return true; }
53
54
  bool IsSupportedOnServers() const override { return false; }
54
55
  };
@@ -112,7 +112,8 @@ class XdsHttpFilterImpl {
112
112
  // there is no override in any of those locations.
113
113
  virtual absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
114
114
  const FilterConfig& hcm_filter_config,
115
- const FilterConfig* filter_config_override) const = 0;
115
+ const FilterConfig* filter_config_override,
116
+ absl::string_view filter_name) const = 0;
116
117
 
117
118
  // Returns true if the filter is supported on clients; false otherwise
118
119
  virtual bool IsSupportedOnClients() const = 0;
@@ -138,7 +139,8 @@ class XdsHttpRouterFilter : public XdsHttpFilterImpl {
138
139
  const grpc_channel_filter* channel_filter() const override { return nullptr; }
139
140
  absl::StatusOr<ServiceConfigJsonEntry> GenerateServiceConfig(
140
141
  const FilterConfig& /*hcm_filter_config*/,
141
- const FilterConfig* /*filter_config_override*/) const override {
142
+ const FilterConfig* /*filter_config_override*/,
143
+ absl::string_view /*filter_name*/) const override {
142
144
  // This will never be called, since channel_filter() returns null.
143
145
  return absl::UnimplementedError("router filter should never be called");
144
146
  }