grpc 1.43.1 → 1.53.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 (2346) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +765 -449
  3. data/include/grpc/byte_buffer.h +76 -1
  4. data/include/grpc/byte_buffer_reader.h +19 -1
  5. data/include/grpc/compression.h +2 -2
  6. data/include/grpc/event_engine/endpoint_config.h +11 -5
  7. data/include/grpc/event_engine/event_engine.h +131 -41
  8. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
  9. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  10. data/include/grpc/event_engine/memory_allocator.h +1 -16
  11. data/include/grpc/event_engine/port.h +1 -1
  12. data/include/grpc/event_engine/slice.h +306 -0
  13. data/include/grpc/event_engine/slice_buffer.h +159 -0
  14. data/include/grpc/fork.h +25 -1
  15. data/include/grpc/grpc.h +44 -28
  16. data/include/grpc/grpc_posix.h +21 -20
  17. data/include/grpc/grpc_security.h +47 -50
  18. data/include/grpc/impl/codegen/atm.h +3 -71
  19. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -67
  20. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -61
  21. data/include/grpc/impl/codegen/atm_windows.h +3 -108
  22. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  23. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  24. data/include/grpc/impl/codegen/compression_types.h +5 -85
  25. data/include/grpc/impl/codegen/connectivity_state.h +5 -21
  26. data/include/grpc/impl/codegen/fork.h +4 -25
  27. data/include/grpc/impl/codegen/gpr_types.h +4 -35
  28. data/include/grpc/impl/codegen/grpc_types.h +5 -788
  29. data/include/grpc/impl/codegen/log.h +3 -86
  30. data/include/grpc/impl/codegen/port_platform.h +3 -699
  31. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  32. data/include/grpc/impl/codegen/slice.h +4 -104
  33. data/include/grpc/impl/codegen/status.h +4 -131
  34. data/include/grpc/impl/codegen/sync.h +3 -42
  35. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  36. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  37. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  38. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  39. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  40. data/include/grpc/impl/compression_types.h +109 -0
  41. data/include/grpc/impl/connectivity_state.h +47 -0
  42. data/include/grpc/impl/grpc_types.h +827 -0
  43. data/include/grpc/impl/propagation_bits.h +54 -0
  44. data/include/grpc/impl/slice_type.h +112 -0
  45. data/include/grpc/load_reporting.h +1 -1
  46. data/include/grpc/module.modulemap +5 -1
  47. data/include/grpc/slice.h +1 -12
  48. data/include/grpc/status.h +131 -1
  49. data/include/grpc/support/atm.h +70 -1
  50. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  51. data/include/grpc/support/atm_gcc_sync.h +58 -1
  52. data/include/grpc/support/atm_windows.h +105 -1
  53. data/include/grpc/support/log.h +87 -1
  54. data/include/grpc/support/log_windows.h +1 -1
  55. data/include/grpc/support/port_platform.h +767 -1
  56. data/include/grpc/support/string_util.h +1 -1
  57. data/include/grpc/support/sync.h +35 -2
  58. data/include/grpc/support/sync_abseil.h +11 -1
  59. data/include/grpc/support/sync_custom.h +13 -1
  60. data/include/grpc/support/sync_generic.h +24 -1
  61. data/include/grpc/support/sync_posix.h +27 -1
  62. data/include/grpc/support/sync_windows.h +15 -1
  63. data/include/grpc/support/time.h +31 -6
  64. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +148 -0
  65. data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +52 -0
  66. data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +29 -0
  67. data/src/core/ext/filters/census/grpc_context.cc +19 -17
  68. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +315 -0
  69. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +142 -0
  70. data/src/core/ext/filters/channel_idle/idle_filter_state.cc +96 -0
  71. data/src/core/ext/filters/channel_idle/idle_filter_state.h +68 -0
  72. data/src/core/ext/filters/client_channel/backend_metric.cc +22 -15
  73. data/src/core/ext/filters/client_channel/backend_metric.h +21 -11
  74. data/src/core/ext/filters/client_channel/backup_poller.cc +44 -40
  75. data/src/core/ext/filters/client_channel/backup_poller.h +26 -28
  76. data/src/core/ext/filters/client_channel/channel_connectivity.cc +94 -49
  77. data/src/core/ext/filters/client_channel/client_channel.cc +681 -648
  78. data/src/core/ext/filters/client_channel/client_channel.h +106 -61
  79. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -23
  80. data/src/core/ext/filters/client_channel/client_channel_channelz.h +33 -23
  81. data/src/core/ext/filters/client_channel/client_channel_factory.cc +19 -43
  82. data/src/core/ext/filters/client_channel/client_channel_factory.h +11 -11
  83. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +26 -57
  84. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  85. data/src/core/ext/filters/client_channel/client_channel_service_config.h +111 -0
  86. data/src/core/ext/filters/client_channel/config_selector.cc +1 -0
  87. data/src/core/ext/filters/client_channel/config_selector.h +33 -27
  88. data/src/core/ext/filters/client_channel/connector.h +20 -11
  89. data/src/core/ext/filters/client_channel/dynamic_filters.cc +40 -55
  90. data/src/core/ext/filters/client_channel/dynamic_filters.h +22 -13
  91. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +4 -22
  92. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +27 -36
  93. data/src/core/ext/filters/client_channel/health/health_check_client.cc +139 -583
  94. data/src/core/ext/filters/client_channel/health/health_check_client.h +29 -163
  95. data/src/core/ext/filters/client_channel/http_proxy.cc +130 -164
  96. data/src/core/ext/filters/client_channel/http_proxy.h +46 -22
  97. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  98. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +12 -8
  99. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +9 -7
  100. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +49 -0
  101. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +37 -16
  102. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +18 -13
  103. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +71 -134
  104. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +41 -24
  105. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +468 -413
  106. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +27 -35
  107. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +15 -3
  108. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +10 -8
  109. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +18 -20
  110. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +27 -22
  111. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +43 -34
  112. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +30 -29
  113. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +338 -0
  114. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +57 -0
  115. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +117 -0
  116. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +1129 -0
  117. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +94 -0
  118. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +221 -209
  119. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +488 -480
  120. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +525 -391
  121. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +19 -9
  122. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +726 -701
  123. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +282 -254
  124. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +177 -150
  125. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +128 -0
  126. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.h +71 -0
  127. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +972 -0
  128. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +289 -251
  129. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +274 -201
  130. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  131. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +64 -0
  132. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +3 -3
  133. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +215 -264
  134. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +213 -215
  135. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +578 -667
  136. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +819 -0
  137. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +67 -0
  138. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +369 -0
  139. data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +4 -0
  140. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +22 -21
  141. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +42 -33
  142. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +678 -336
  143. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +67 -51
  144. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +50 -45
  145. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +109 -119
  146. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +421 -420
  147. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +95 -81
  148. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  149. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +21 -20
  150. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +2 -0
  151. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +22 -22
  152. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +124 -255
  153. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +37 -49
  154. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +21 -6
  155. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +190 -96
  156. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +269 -0
  157. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +121 -0
  158. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +56 -61
  159. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +537 -338
  160. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +6 -4
  161. data/src/core/ext/filters/client_channel/retry_filter.cc +392 -307
  162. data/src/core/ext/filters/client_channel/retry_filter.h +4 -3
  163. data/src/core/ext/filters/client_channel/retry_service_config.cc +198 -232
  164. data/src/core/ext/filters/client_channel/retry_service_config.h +44 -35
  165. data/src/core/ext/filters/client_channel/retry_throttle.cc +37 -60
  166. data/src/core/ext/filters/client_channel/retry_throttle.h +47 -34
  167. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +40 -22
  168. data/src/core/ext/filters/client_channel/subchannel.cc +343 -402
  169. data/src/core/ext/filters/client_channel/subchannel.h +116 -86
  170. data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +38 -0
  171. data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +17 -77
  172. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +41 -47
  173. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +470 -0
  174. data/src/core/ext/filters/client_channel/subchannel_stream_client.h +222 -0
  175. data/src/core/ext/filters/deadline/deadline_filter.cc +102 -83
  176. data/src/core/ext/filters/deadline/deadline_filter.h +17 -14
  177. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +180 -403
  178. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +41 -9
  179. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  180. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +112 -0
  181. data/src/core/ext/filters/http/client/http_client_filter.cc +123 -548
  182. data/src/core/ext/filters/http/client/http_client_filter.h +55 -25
  183. data/src/core/ext/filters/http/client_authority_filter.cc +60 -129
  184. data/src/core/ext/filters/http/client_authority_filter.h +49 -27
  185. data/src/core/ext/filters/http/http_filters_plugin.cc +53 -60
  186. data/src/core/ext/filters/http/message_compress/compression_filter.cc +307 -0
  187. data/src/core/ext/filters/http/message_compress/compression_filter.h +139 -0
  188. data/src/core/ext/filters/http/server/http_server_filter.cc +116 -474
  189. data/src/core/ext/filters/http/server/http_server_filter.h +58 -24
  190. data/src/core/ext/filters/message_size/message_size_filter.cc +137 -165
  191. data/src/core/ext/filters/message_size/message_size_filter.h +44 -20
  192. data/src/core/ext/filters/rbac/rbac_filter.cc +175 -0
  193. data/src/core/ext/filters/rbac/rbac_filter.h +84 -0
  194. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +819 -0
  195. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +86 -0
  196. data/src/core/ext/filters/server_config_selector/server_config_selector.h +23 -10
  197. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +93 -199
  198. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +4 -3
  199. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +219 -0
  200. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  201. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  202. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  203. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  204. data/src/core/ext/transport/chttp2/alpn/alpn.h +24 -24
  205. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +316 -137
  206. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +38 -30
  207. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +378 -182
  208. data/src/core/ext/transport/chttp2/server/chttp2_server.h +26 -26
  209. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +24 -24
  210. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +35 -34
  211. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +31 -30
  212. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +29 -29
  213. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +972 -1236
  214. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +36 -25
  215. data/src/core/ext/transport/chttp2/transport/context_list.cc +23 -19
  216. data/src/core/ext/transport/chttp2/transport/context_list.h +32 -29
  217. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +251 -0
  218. data/src/core/ext/transport/chttp2/transport/decode_huff.h +971 -0
  219. data/src/core/ext/transport/chttp2/transport/flow_control.cc +351 -301
  220. data/src/core/ext/transport/chttp2/transport/flow_control.h +249 -326
  221. data/src/core/ext/transport/chttp2/transport/frame.h +22 -26
  222. data/src/core/ext/transport/chttp2/transport/frame_data.cc +85 -235
  223. data/src/core/ext/transport/chttp2/transport/frame_data.h +38 -61
  224. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +41 -36
  225. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +24 -22
  226. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +34 -28
  227. data/src/core/ext/transport/chttp2/transport/frame_ping.h +25 -22
  228. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +40 -26
  229. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +24 -21
  230. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +46 -77
  231. data/src/core/ext/transport/chttp2/transport/frame_settings.h +27 -23
  232. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +34 -33
  233. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +24 -21
  234. data/src/core/ext/transport/chttp2/transport/hpack_constants.h +10 -4
  235. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +432 -422
  236. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +127 -219
  237. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +5 -2
  238. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +15 -4
  239. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +143 -620
  240. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +31 -25
  241. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +162 -61
  242. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +71 -71
  243. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  244. data/src/core/ext/transport/chttp2/transport/http2_settings.h +39 -38
  245. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  246. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  247. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  248. data/src/core/ext/transport/chttp2/transport/huffsyms.h +21 -21
  249. data/src/core/ext/transport/chttp2/transport/internal.h +257 -338
  250. data/src/core/ext/transport/chttp2/transport/parsing.cc +367 -140
  251. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +30 -30
  252. data/src/core/ext/transport/chttp2/transport/stream_map.cc +24 -24
  253. data/src/core/ext/transport/chttp2/transport/stream_map.h +34 -33
  254. data/src/core/ext/transport/chttp2/transport/varint.cc +19 -20
  255. data/src/core/ext/transport/chttp2/transport/varint.h +39 -34
  256. data/src/core/ext/transport/chttp2/transport/writing.cc +199 -227
  257. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -22
  258. data/src/core/ext/transport/inproc/inproc_transport.cc +252 -347
  259. data/src/core/ext/transport/inproc/inproc_transport.h +23 -24
  260. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c +117 -0
  261. data/src/core/ext/upb-generated/envoy/admin/v3/certs.upb.h +502 -0
  262. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c +122 -0
  263. data/src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.h +578 -0
  264. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +46 -359
  265. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +280 -1357
  266. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c +388 -0
  267. data/src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.h +1953 -0
  268. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c +56 -0
  269. data/src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.h +159 -0
  270. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c +64 -0
  271. data/src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.h +189 -0
  272. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c +46 -0
  273. data/src/core/ext/upb-generated/envoy/admin/v3/memory.upb.h +128 -0
  274. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c +43 -0
  275. data/src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.h +106 -0
  276. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c +43 -0
  277. data/src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.h +101 -0
  278. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c +106 -0
  279. data/src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.h +613 -0
  280. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c +48 -0
  281. data/src/core/ext/upb-generated/envoy/admin/v3/tap.upb.h +107 -0
  282. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +14 -12
  283. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +49 -16
  284. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +13 -11
  285. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +53 -23
  286. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +98 -96
  287. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +729 -386
  288. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +191 -173
  289. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1403 -664
  290. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +34 -26
  291. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +212 -91
  292. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +256 -250
  293. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1774 -852
  294. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +10 -8
  295. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +46 -24
  296. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +49 -27
  297. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +276 -99
  298. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c +299 -0
  299. data/src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.h +1437 -0
  300. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +78 -51
  301. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +519 -190
  302. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +11 -8
  303. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +49 -25
  304. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +159 -154
  305. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +1178 -584
  306. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +87 -42
  307. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +553 -167
  308. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +9 -7
  309. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +42 -24
  310. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +11 -29
  311. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +45 -101
  312. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c +58 -0
  313. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.h +159 -0
  314. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +108 -104
  315. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +820 -410
  316. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +118 -84
  317. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +813 -358
  318. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +11 -9
  319. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +61 -31
  320. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +164 -108
  321. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +1082 -399
  322. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +8 -6
  323. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +32 -17
  324. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +15 -13
  325. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +91 -49
  326. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +29 -12
  327. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +140 -34
  328. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +15 -13
  329. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +97 -49
  330. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +11 -9
  331. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +50 -26
  332. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +34 -32
  333. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +206 -109
  334. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +58 -49
  335. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +405 -191
  336. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +49 -47
  337. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +377 -188
  338. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +9 -7
  339. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +38 -21
  340. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +101 -64
  341. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +684 -261
  342. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +77 -69
  343. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +588 -301
  344. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +21 -15
  345. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +130 -49
  346. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +15 -10
  347. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +98 -41
  348. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +53 -0
  349. data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +140 -0
  350. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +58 -55
  351. data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +445 -235
  352. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +62 -60
  353. data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +442 -237
  354. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +98 -77
  355. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +672 -294
  356. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +46 -36
  357. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +301 -163
  358. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +589 -475
  359. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +4357 -1895
  360. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +25 -19
  361. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +160 -72
  362. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c +241 -0
  363. data/src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.h +1191 -0
  364. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c +45 -0
  365. data/src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.h +101 -0
  366. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c +49 -0
  367. data/src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.h +107 -0
  368. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +15 -13
  369. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +85 -46
  370. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c +52 -0
  371. data/src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.h +138 -0
  372. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c +63 -0
  373. data/src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.h +254 -0
  374. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +47 -0
  375. data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.h +107 -0
  376. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c +47 -0
  377. data/src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.h +98 -0
  378. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c +69 -0
  379. data/src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.h +221 -0
  380. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c +33 -0
  381. data/src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.h +43 -0
  382. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c +71 -0
  383. data/src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.h +226 -0
  384. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c +55 -0
  385. data/src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.h +159 -0
  386. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +8 -6
  387. data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +38 -24
  388. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +29 -27
  389. data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +208 -113
  390. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +36 -34
  391. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +272 -132
  392. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +71 -0
  393. data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +237 -0
  394. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +19 -14
  395. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -43
  396. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  397. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  398. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +239 -197
  399. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1708 -734
  400. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  401. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  402. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +54 -0
  403. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +188 -0
  404. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c +111 -0
  405. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.h +444 -0
  406. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +56 -0
  407. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +192 -0
  408. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c +46 -0
  409. data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.h +98 -0
  410. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +3 -1
  411. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +2 -1
  412. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +89 -58
  413. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +606 -235
  414. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +26 -24
  415. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +168 -87
  416. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +100 -71
  417. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +672 -263
  418. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c +62 -0
  419. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.h +168 -0
  420. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +6 -4
  421. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +26 -16
  422. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +185 -66
  423. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +1118 -256
  424. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +18 -16
  425. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +115 -62
  426. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +52 -50
  427. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +367 -186
  428. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c +48 -0
  429. data/src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.h +116 -0
  430. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +20 -18
  431. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +140 -82
  432. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c +47 -0
  433. data/src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.h +113 -0
  434. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +74 -0
  435. data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +230 -0
  436. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +16 -14
  437. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +107 -57
  438. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +10 -8
  439. data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +54 -31
  440. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +10 -8
  441. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +52 -27
  442. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +9 -7
  443. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +42 -24
  444. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +21 -19
  445. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +129 -69
  446. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c +43 -0
  447. data/src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.h +114 -0
  448. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +19 -17
  449. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +131 -65
  450. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +14 -12
  451. data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +93 -53
  452. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +23 -21
  453. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +162 -83
  454. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +32 -30
  455. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -146
  456. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +36 -34
  457. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +255 -131
  458. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c +66 -0
  459. data/src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.h +213 -0
  460. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +3 -1
  461. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -1
  462. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c +42 -0
  463. data/src/core/ext/upb-generated/envoy/type/v3/http_status.upb.h +143 -0
  464. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +13 -11
  465. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +70 -36
  466. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +19 -17
  467. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +110 -52
  468. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c +63 -0
  469. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.h +202 -0
  470. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c +26 -0
  471. data/src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.h +43 -0
  472. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +10 -8
  473. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +44 -19
  474. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c +51 -0
  475. data/src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.h +131 -0
  476. data/src/core/ext/upb-generated/google/api/annotations.upb.c +8 -6
  477. data/src/core/ext/upb-generated/google/api/annotations.upb.h +22 -6
  478. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +109 -103
  479. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +764 -382
  480. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +120 -112
  481. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +843 -402
  482. data/src/core/ext/upb-generated/google/api/http.upb.c +29 -27
  483. data/src/core/ext/upb-generated/google/api/http.upb.h +228 -115
  484. data/src/core/ext/upb-generated/google/api/httpbody.upb.c +46 -0
  485. data/src/core/ext/upb-generated/google/api/httpbody.upb.h +115 -0
  486. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +9 -7
  487. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +42 -22
  488. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +292 -237
  489. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2198 -1030
  490. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +9 -7
  491. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +40 -20
  492. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +6 -4
  493. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +26 -16
  494. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +31 -29
  495. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +189 -93
  496. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +9 -7
  497. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +40 -20
  498. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +40 -38
  499. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +276 -149
  500. data/src/core/ext/upb-generated/google/rpc/status.upb.c +11 -9
  501. data/src/core/ext/upb-generated/google/rpc/status.upb.h +56 -30
  502. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c +84 -0
  503. data/src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.h +335 -0
  504. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +21 -19
  505. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +107 -48
  506. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +102 -96
  507. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +725 -359
  508. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +16 -13
  509. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +84 -41
  510. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +12 -10
  511. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +64 -35
  512. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +57 -55
  513. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +419 -219
  514. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +22 -20
  515. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +123 -63
  516. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c +175 -0
  517. data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.h +792 -0
  518. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +36 -34
  519. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +201 -78
  520. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +14 -12
  521. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +57 -22
  522. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +7 -5
  523. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +15 -6
  524. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +14 -12
  525. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +59 -24
  526. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +13 -11
  527. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -23
  528. data/src/core/ext/upb-generated/validate/validate.upb.c +339 -312
  529. data/src/core/ext/upb-generated/validate/validate.upb.h +2818 -1180
  530. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c +110 -0
  531. data/src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.h +290 -0
  532. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.c +55 -0
  533. data/src/core/ext/upb-generated/xds/annotations/v3/security.upb.h +112 -0
  534. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c +38 -0
  535. data/src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.h +46 -0
  536. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +34 -32
  537. data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +187 -80
  538. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c +53 -0
  539. data/src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.h +103 -0
  540. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +8 -6
  541. data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +34 -19
  542. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  543. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  544. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +18 -16
  545. data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +106 -55
  546. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +14 -12
  547. data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +57 -30
  548. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.c +46 -0
  549. data/src/core/ext/upb-generated/xds/core/v3/extension.upb.h +107 -0
  550. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +12 -10
  551. data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +59 -30
  552. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +20 -18
  553. data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +138 -70
  554. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +12 -10
  555. data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +62 -30
  556. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -21
  557. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +114 -46
  558. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +46 -0
  559. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.h +113 -0
  560. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  561. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  562. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  563. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  564. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  565. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  566. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  567. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  568. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c +207 -0
  569. data/src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.h +914 -0
  570. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  571. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  572. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c +52 -0
  573. data/src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.h +151 -0
  574. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c +65 -0
  575. data/src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.h +226 -0
  576. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  577. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  578. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  579. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  580. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +10 -9
  581. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +46 -24
  582. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c +84 -0
  583. data/src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.h +55 -0
  584. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c +128 -0
  585. data/src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.h +50 -0
  586. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +73 -278
  587. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +16 -101
  588. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c +277 -0
  589. data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.h +125 -0
  590. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c +43 -0
  591. data/src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.h +40 -0
  592. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c +56 -0
  593. data/src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.h +40 -0
  594. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c +49 -0
  595. data/src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.h +35 -0
  596. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c +46 -0
  597. data/src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.h +35 -0
  598. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c +46 -0
  599. data/src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.h +35 -0
  600. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c +142 -0
  601. data/src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.h +40 -0
  602. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c +51 -0
  603. data/src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.h +35 -0
  604. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +8 -6
  605. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +1 -1
  606. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +8 -6
  607. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +4 -4
  608. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +118 -115
  609. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +46 -46
  610. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +257 -237
  611. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +55 -55
  612. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +58 -51
  613. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +10 -10
  614. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +394 -370
  615. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +73 -78
  616. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +14 -11
  617. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +4 -4
  618. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +23 -16
  619. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +4 -4
  620. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c +206 -0
  621. data/src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.h +105 -0
  622. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +101 -79
  623. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +27 -22
  624. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +15 -12
  625. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +4 -4
  626. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +203 -194
  627. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +73 -73
  628. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +138 -101
  629. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +26 -16
  630. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +14 -12
  631. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +4 -4
  632. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +22 -34
  633. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +4 -9
  634. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c +53 -0
  635. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.h +40 -0
  636. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +21 -18
  637. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +43 -43
  638. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +182 -165
  639. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +30 -25
  640. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +14 -12
  641. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +4 -4
  642. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +252 -219
  643. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +53 -43
  644. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +12 -9
  645. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +4 -4
  646. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +14 -11
  647. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +7 -7
  648. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +18 -11
  649. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +9 -4
  650. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +24 -21
  651. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +4 -4
  652. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +13 -11
  653. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +4 -4
  654. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +18 -15
  655. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +13 -13
  656. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +81 -73
  657. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +19 -19
  658. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +18 -15
  659. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +16 -16
  660. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +14 -11
  661. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +4 -4
  662. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +180 -146
  663. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +24 -19
  664. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +153 -147
  665. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +22 -22
  666. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +26 -19
  667. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +4 -4
  668. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +44 -33
  669. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +7 -7
  670. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +69 -0
  671. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.h +35 -0
  672. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +17 -14
  673. data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +25 -25
  674. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +17 -14
  675. data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +28 -28
  676. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +201 -0
  677. data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +75 -0
  678. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +91 -74
  679. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +10 -10
  680. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +902 -806
  681. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +180 -160
  682. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +52 -37
  683. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +10 -10
  684. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c +199 -0
  685. data/src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.h +90 -0
  686. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c +56 -0
  687. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.h +35 -0
  688. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c +57 -0
  689. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.h +35 -0
  690. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +15 -12
  691. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +7 -7
  692. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c +72 -0
  693. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.h +35 -0
  694. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c +99 -0
  695. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.h +35 -0
  696. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +48 -0
  697. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.h +35 -0
  698. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c +52 -0
  699. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.h +35 -0
  700. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c +71 -0
  701. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.h +40 -0
  702. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c +61 -0
  703. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.h +30 -0
  704. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c +75 -0
  705. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.h +40 -0
  706. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c +79 -0
  707. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.h +35 -0
  708. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +15 -11
  709. data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +4 -4
  710. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +17 -14
  711. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +16 -16
  712. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +18 -15
  713. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +10 -10
  714. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +80 -0
  715. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
  716. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +59 -44
  717. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +4 -4
  718. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  719. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  720. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +506 -463
  721. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +63 -58
  722. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  723. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  724. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +15 -11
  725. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +1 -1
  726. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +172 -140
  727. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +24 -19
  728. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +19 -16
  729. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +10 -10
  730. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +220 -198
  731. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +24 -19
  732. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c +58 -0
  733. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.h +40 -0
  734. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +14 -11
  735. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +4 -4
  736. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +163 -88
  737. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +57 -22
  738. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +16 -13
  739. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +7 -7
  740. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +123 -120
  741. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +16 -16
  742. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c +46 -0
  743. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.h +35 -0
  744. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +13 -10
  745. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +13 -13
  746. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c +48 -0
  747. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.h +35 -0
  748. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +52 -0
  749. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +50 -0
  750. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +15 -12
  751. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +7 -7
  752. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +15 -12
  753. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +4 -4
  754. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +15 -12
  755. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +4 -4
  756. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +15 -12
  757. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +4 -4
  758. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +36 -32
  759. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +10 -10
  760. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c +40 -0
  761. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.h +40 -0
  762. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +15 -12
  763. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +7 -7
  764. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +14 -12
  765. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +7 -7
  766. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +16 -13
  767. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +10 -10
  768. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +13 -10
  769. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +22 -22
  770. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +14 -11
  771. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +16 -16
  772. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c +53 -0
  773. data/src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.h +45 -0
  774. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +10 -8
  775. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +1 -1
  776. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c +94 -0
  777. data/src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.h +35 -0
  778. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +12 -10
  779. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +7 -7
  780. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +11 -8
  781. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +10 -10
  782. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c +69 -0
  783. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.h +40 -0
  784. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c +39 -0
  785. data/src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.h +30 -0
  786. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +11 -9
  787. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +4 -4
  788. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c +57 -0
  789. data/src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.h +35 -0
  790. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +5 -5
  791. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +1 -1
  792. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
  793. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
  794. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
  795. data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
  796. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +3 -3
  797. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +10 -10
  798. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c +39 -0
  799. data/src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.h +35 -0
  800. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +3 -3
  801. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +4 -4
  802. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +94 -92
  803. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +82 -82
  804. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +3 -3
  805. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +4 -4
  806. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +3 -3
  807. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +4 -4
  808. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +3 -3
  809. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +13 -13
  810. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +3 -3
  811. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +4 -4
  812. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +3 -3
  813. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +28 -28
  814. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  815. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +4 -4
  816. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c +67 -0
  817. data/src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.h +50 -0
  818. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +99 -0
  819. data/src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.h +75 -0
  820. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +4 -4
  821. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +10 -10
  822. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +5 -5
  823. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +4 -4
  824. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -4
  825. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +1 -1
  826. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +4 -4
  827. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +4 -4
  828. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +4 -4
  829. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +4 -4
  830. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +6 -6
  831. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +70 -70
  832. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c +63 -0
  833. data/src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.h +45 -0
  834. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c +47 -0
  835. data/src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.h +35 -0
  836. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c +35 -0
  837. data/src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.h +30 -0
  838. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +4 -4
  839. data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +13 -13
  840. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c +40 -0
  841. data/src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.h +35 -0
  842. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +5 -5
  843. data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +4 -4
  844. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  845. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  846. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +7 -7
  847. data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +7 -7
  848. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +4 -4
  849. data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +7 -7
  850. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c +41 -0
  851. data/src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.h +35 -0
  852. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +6 -6
  853. data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +4 -4
  854. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +6 -6
  855. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +7 -7
  856. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +6 -6
  857. data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +4 -4
  858. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  859. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  860. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  861. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  862. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  863. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  864. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  865. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  866. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +126 -0
  867. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.h +80 -0
  868. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  869. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  870. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c +40 -0
  871. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.h +40 -0
  872. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c +52 -0
  873. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.h +40 -0
  874. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  875. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  876. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  877. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  878. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +6 -9
  879. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +4 -4
  880. data/src/core/ext/xds/certificate_provider_store.cc +75 -3
  881. data/src/core/ext/xds/certificate_provider_store.h +30 -4
  882. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +21 -14
  883. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -6
  884. data/src/core/ext/xds/upb_utils.h +45 -0
  885. data/src/core/ext/xds/xds_api.cc +294 -3740
  886. data/src/core/ext/xds/xds_api.h +82 -635
  887. data/src/core/ext/xds/xds_bootstrap.cc +10 -446
  888. data/src/core/ext/xds/xds_bootstrap.h +46 -83
  889. data/src/core/ext/xds/xds_bootstrap_grpc.cc +362 -0
  890. data/src/core/ext/xds/xds_bootstrap_grpc.h +184 -0
  891. data/src/core/ext/xds/xds_certificate_provider.cc +36 -25
  892. data/src/core/ext/xds/xds_certificate_provider.h +37 -4
  893. data/src/core/ext/xds/xds_channel_args.h +3 -3
  894. data/src/core/ext/xds/xds_channel_stack_modifier.cc +27 -20
  895. data/src/core/ext/xds/xds_channel_stack_modifier.h +20 -7
  896. data/src/core/ext/xds/xds_client.cc +1247 -2097
  897. data/src/core/ext/xds/xds_client.h +159 -204
  898. data/src/core/ext/xds/xds_client_grpc.cc +235 -0
  899. data/src/core/ext/xds/xds_client_grpc.h +79 -0
  900. data/src/core/ext/xds/xds_client_stats.cc +35 -36
  901. data/src/core/ext/xds/xds_client_stats.h +31 -28
  902. data/src/core/ext/xds/xds_cluster.cc +711 -0
  903. data/src/core/ext/xds/xds_cluster.h +137 -0
  904. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +132 -0
  905. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +97 -0
  906. data/src/core/ext/xds/xds_common_types.cc +503 -0
  907. data/src/core/ext/xds/xds_common_types.h +108 -0
  908. data/src/core/ext/xds/xds_endpoint.cc +474 -0
  909. data/src/core/ext/xds/xds_endpoint.h +139 -0
  910. data/src/core/ext/xds/xds_health_status.cc +80 -0
  911. data/src/core/ext/xds/xds_health_status.h +109 -0
  912. data/src/core/ext/xds/xds_http_fault_filter.cc +68 -59
  913. data/src/core/ext/xds/xds_http_fault_filter.h +20 -26
  914. data/src/core/ext/xds/xds_http_filters.cc +71 -66
  915. data/src/core/ext/xds/xds_http_filters.h +74 -26
  916. data/src/core/ext/xds/xds_http_rbac_filter.cc +506 -0
  917. data/src/core/ext/xds/xds_http_rbac_filter.h +58 -0
  918. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  919. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  920. data/src/core/ext/xds/xds_lb_policy_registry.cc +334 -0
  921. data/src/core/ext/xds/xds_lb_policy_registry.h +71 -0
  922. data/src/core/ext/xds/xds_listener.cc +1131 -0
  923. data/src/core/ext/xds/xds_listener.h +226 -0
  924. data/src/core/ext/xds/xds_resource_type.h +104 -0
  925. data/src/core/ext/xds/xds_resource_type_impl.h +88 -0
  926. data/src/core/ext/xds/xds_route_config.cc +1144 -0
  927. data/src/core/ext/xds/xds_route_config.h +252 -0
  928. data/src/core/ext/xds/xds_routing.cc +33 -16
  929. data/src/core/ext/xds/xds_routing.h +25 -17
  930. data/src/core/ext/xds/xds_server_config_fetcher.cc +386 -281
  931. data/src/core/ext/xds/xds_transport.h +86 -0
  932. data/src/core/ext/xds/xds_transport_grpc.cc +356 -0
  933. data/src/core/ext/xds/xds_transport_grpc.h +135 -0
  934. data/src/core/lib/address_utils/parse_address.cc +55 -35
  935. data/src/core/lib/address_utils/parse_address.h +46 -37
  936. data/src/core/lib/address_utils/sockaddr_utils.cc +112 -79
  937. data/src/core/lib/address_utils/sockaddr_utils.h +45 -55
  938. data/src/core/lib/avl/avl.h +100 -13
  939. data/src/core/lib/backoff/backoff.cc +26 -57
  940. data/src/core/lib/backoff/backoff.h +32 -32
  941. data/src/core/lib/channel/call_finalization.h +88 -0
  942. data/src/core/lib/channel/call_tracer.h +27 -9
  943. data/src/core/lib/channel/channel_args.cc +291 -65
  944. data/src/core/lib/channel/channel_args.h +461 -54
  945. data/src/core/lib/channel/channel_args_preconditioning.cc +6 -10
  946. data/src/core/lib/channel/channel_args_preconditioning.h +7 -7
  947. data/src/core/lib/channel/channel_fwd.h +26 -0
  948. data/src/core/lib/channel/channel_stack.cc +100 -53
  949. data/src/core/lib/channel/channel_stack.h +212 -130
  950. data/src/core/lib/channel/channel_stack_builder.cc +35 -295
  951. data/src/core/lib/channel/channel_stack_builder.h +115 -153
  952. data/src/core/lib/channel/channel_stack_builder_impl.cc +126 -0
  953. data/src/core/lib/channel/channel_stack_builder_impl.h +48 -0
  954. data/src/core/lib/channel/channel_trace.cc +29 -39
  955. data/src/core/lib/channel/channel_trace.h +27 -24
  956. data/src/core/lib/channel/channelz.cc +51 -65
  957. data/src/core/lib/channel/channelz.h +50 -33
  958. data/src/core/lib/channel/channelz_registry.cc +28 -36
  959. data/src/core/lib/channel/channelz_registry.h +31 -30
  960. data/src/core/lib/channel/connected_channel.cc +1269 -75
  961. data/src/core/lib/channel/connected_channel.h +23 -24
  962. data/src/core/lib/channel/context.h +36 -21
  963. data/src/core/lib/channel/promise_based_filter.cc +2521 -0
  964. data/src/core/lib/channel/promise_based_filter.h +937 -0
  965. data/src/core/lib/channel/status_util.cc +64 -17
  966. data/src/core/lib/channel/status_util.h +38 -24
  967. data/src/core/lib/compression/compression.cc +44 -131
  968. data/src/core/lib/compression/compression_internal.cc +189 -230
  969. data/src/core/lib/compression/compression_internal.h +90 -94
  970. data/src/core/lib/compression/message_compress.cc +39 -37
  971. data/src/core/lib/compression/message_compress.h +30 -31
  972. data/src/core/lib/config/core_configuration.cc +15 -2
  973. data/src/core/lib/config/core_configuration.h +125 -39
  974. data/src/core/lib/debug/event_log.cc +88 -0
  975. data/src/core/lib/debug/event_log.h +81 -0
  976. data/src/core/lib/debug/histogram_view.cc +69 -0
  977. data/src/core/lib/debug/histogram_view.h +37 -0
  978. data/src/core/lib/debug/stats.cc +48 -152
  979. data/src/core/lib/debug/stats.h +50 -57
  980. data/src/core/lib/debug/stats_data.cc +302 -649
  981. data/src/core/lib/debug/stats_data.h +293 -548
  982. data/src/core/lib/debug/trace.cc +18 -20
  983. data/src/core/lib/debug/trace.h +27 -48
  984. data/src/core/lib/event_engine/channel_args_endpoint_config.cc +16 -17
  985. data/src/core/lib/event_engine/channel_args_endpoint_config.h +16 -9
  986. data/src/core/lib/event_engine/common_closures.h +71 -0
  987. data/src/core/lib/event_engine/default_event_engine.cc +99 -0
  988. data/src/core/lib/event_engine/default_event_engine.h +73 -0
  989. data/src/core/lib/event_engine/default_event_engine_factory.cc +48 -0
  990. data/src/core/lib/event_engine/default_event_engine_factory.h +33 -0
  991. data/src/core/lib/event_engine/event_engine.cc +3 -15
  992. data/src/core/lib/event_engine/executor/executor.h +38 -0
  993. data/src/core/lib/event_engine/forkable.cc +106 -0
  994. data/src/core/lib/event_engine/forkable.h +61 -0
  995. data/src/core/lib/event_engine/handle_containers.h +74 -0
  996. data/src/core/lib/event_engine/memory_allocator.cc +19 -15
  997. data/src/core/lib/event_engine/poller.h +62 -0
  998. data/src/core/lib/event_engine/posix.h +158 -0
  999. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +642 -0
  1000. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +139 -0
  1001. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +899 -0
  1002. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  1003. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  1004. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  1005. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +33 -0
  1006. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  1007. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  1008. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +265 -0
  1009. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  1010. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1305 -0
  1011. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +717 -0
  1012. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +640 -0
  1013. data/src/core/lib/event_engine/posix_engine/posix_engine.h +259 -0
  1014. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  1015. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +289 -0
  1016. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +279 -0
  1017. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +379 -0
  1018. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  1019. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +853 -0
  1020. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +316 -0
  1021. data/src/core/lib/event_engine/posix_engine/timer.cc +311 -0
  1022. data/src/core/lib/event_engine/posix_engine/timer.h +194 -0
  1023. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +107 -0
  1024. data/src/core/lib/event_engine/posix_engine/timer_heap.h +56 -0
  1025. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +173 -0
  1026. data/src/core/lib/event_engine/posix_engine/timer_manager.h +114 -0
  1027. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +332 -0
  1028. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +185 -0
  1029. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +127 -0
  1030. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  1031. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +150 -0
  1032. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  1033. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  1034. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  1035. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  1036. data/src/core/lib/event_engine/resolved_address.cc +60 -0
  1037. data/src/core/lib/event_engine/resolved_address_internal.h +34 -0
  1038. data/src/core/lib/event_engine/shim.cc +56 -0
  1039. data/src/core/lib/event_engine/shim.h +33 -0
  1040. data/src/core/lib/event_engine/slice.cc +103 -0
  1041. data/src/core/lib/event_engine/slice_buffer.cc +50 -0
  1042. data/src/core/lib/event_engine/tcp_socket_utils.cc +389 -0
  1043. data/src/core/lib/event_engine/tcp_socket_utils.h +90 -0
  1044. data/src/core/lib/event_engine/thread_local.cc +29 -0
  1045. data/src/core/lib/event_engine/thread_local.h +32 -0
  1046. data/src/core/lib/event_engine/thread_pool.cc +253 -0
  1047. data/src/core/lib/event_engine/thread_pool.h +141 -0
  1048. data/src/core/lib/event_engine/time_util.cc +30 -0
  1049. data/src/core/lib/event_engine/time_util.h +32 -0
  1050. data/src/core/lib/event_engine/trace.cc +24 -0
  1051. data/src/core/lib/event_engine/trace.h +43 -0
  1052. data/src/core/lib/event_engine/utils.cc +44 -0
  1053. data/src/core/lib/event_engine/utils.h +44 -0
  1054. data/src/core/lib/event_engine/windows/iocp.cc +140 -0
  1055. data/src/core/lib/event_engine/windows/iocp.h +69 -0
  1056. data/src/core/lib/event_engine/windows/win_socket.cc +219 -0
  1057. data/src/core/lib/event_engine/windows/win_socket.h +129 -0
  1058. data/src/core/lib/event_engine/windows/windows_endpoint.cc +331 -0
  1059. data/src/core/lib/event_engine/windows/windows_endpoint.h +103 -0
  1060. data/src/core/lib/event_engine/windows/windows_engine.cc +388 -0
  1061. data/src/core/lib/event_engine/windows/windows_engine.h +163 -0
  1062. data/src/core/lib/experiments/config.cc +161 -0
  1063. data/src/core/lib/experiments/config.h +53 -0
  1064. data/src/core/lib/experiments/experiments.cc +81 -0
  1065. data/src/core/lib/experiments/experiments.h +117 -0
  1066. data/src/core/lib/gpr/alloc.cc +19 -25
  1067. data/src/core/lib/gpr/alloc.h +20 -20
  1068. data/src/core/lib/gpr/atm.cc +17 -17
  1069. data/src/core/lib/gpr/cpu_iphone.cc +24 -24
  1070. data/src/core/lib/gpr/cpu_linux.cc +28 -23
  1071. data/src/core/lib/gpr/cpu_posix.cc +23 -22
  1072. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  1073. data/src/core/lib/gpr/log.cc +30 -17
  1074. data/src/core/lib/gpr/log_android.cc +22 -20
  1075. data/src/core/lib/gpr/log_linux.cc +24 -24
  1076. data/src/core/lib/gpr/log_posix.cc +20 -19
  1077. data/src/core/lib/gpr/log_windows.cc +25 -25
  1078. data/src/core/lib/gpr/spinlock.h +20 -20
  1079. data/src/core/lib/gpr/string.cc +25 -24
  1080. data/src/core/lib/gpr/string.h +61 -61
  1081. data/src/core/lib/gpr/string_posix.cc +24 -24
  1082. data/src/core/lib/gpr/string_util_windows.cc +25 -52
  1083. data/src/core/lib/gpr/string_windows.cc +24 -24
  1084. data/src/core/lib/gpr/sync.cc +25 -25
  1085. data/src/core/lib/gpr/sync_abseil.cc +36 -40
  1086. data/src/core/lib/gpr/sync_posix.cc +23 -34
  1087. data/src/core/lib/gpr/sync_windows.cc +29 -27
  1088. data/src/core/lib/gpr/time.cc +36 -31
  1089. data/src/core/lib/gpr/time_posix.cc +41 -45
  1090. data/src/core/lib/gpr/time_precise.cc +22 -22
  1091. data/src/core/lib/gpr/time_precise.h +21 -22
  1092. data/src/core/lib/gpr/time_windows.cc +35 -29
  1093. data/src/core/lib/gpr/tmpfile.h +24 -24
  1094. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  1095. data/src/core/lib/gpr/tmpfile_posix.cc +22 -20
  1096. data/src/core/lib/gpr/tmpfile_windows.cc +28 -29
  1097. data/src/core/lib/gpr/useful.h +101 -30
  1098. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  1099. data/src/core/lib/gprpp/atomic_utils.h +20 -20
  1100. data/src/core/lib/gprpp/bitset.h +54 -17
  1101. data/src/core/lib/gprpp/chunked_vector.h +52 -6
  1102. data/src/core/lib/gprpp/construct_destruct.h +4 -3
  1103. data/src/core/lib/gprpp/cpp_impl_of.h +7 -3
  1104. data/src/core/lib/gprpp/crash.cc +33 -0
  1105. data/src/core/lib/gprpp/crash.h +34 -0
  1106. data/src/core/lib/gprpp/debug_location.h +62 -31
  1107. data/src/core/lib/gprpp/dual_ref_counted.h +4 -7
  1108. data/src/core/lib/gprpp/env.h +53 -0
  1109. data/src/core/lib/gprpp/env_linux.cc +80 -0
  1110. data/src/core/lib/gprpp/env_posix.cc +47 -0
  1111. data/src/core/lib/gprpp/env_windows.cc +56 -0
  1112. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  1113. data/src/core/lib/gprpp/examine_stack.h +21 -22
  1114. data/src/core/lib/gprpp/fork.cc +58 -53
  1115. data/src/core/lib/gprpp/fork.h +29 -35
  1116. data/src/core/lib/gprpp/global_config.h +22 -24
  1117. data/src/core/lib/gprpp/global_config_custom.h +20 -20
  1118. data/src/core/lib/gprpp/global_config_env.cc +28 -25
  1119. data/src/core/lib/gprpp/global_config_env.h +29 -27
  1120. data/src/core/lib/gprpp/global_config_generic.h +21 -25
  1121. data/src/core/lib/gprpp/host_port.cc +30 -26
  1122. data/src/core/lib/gprpp/host_port.h +32 -31
  1123. data/src/core/lib/gprpp/load_file.cc +75 -0
  1124. data/src/core/lib/gprpp/load_file.h +33 -0
  1125. data/src/core/lib/gprpp/manual_constructor.h +21 -89
  1126. data/src/core/lib/gprpp/match.h +75 -0
  1127. data/src/core/lib/gprpp/memory.h +22 -26
  1128. data/src/core/lib/gprpp/mpscq.cc +17 -17
  1129. data/src/core/lib/gprpp/mpscq.h +21 -21
  1130. data/src/core/lib/gprpp/no_destruct.h +95 -0
  1131. data/src/core/lib/gprpp/notification.h +67 -0
  1132. data/src/core/lib/gprpp/orphanable.h +22 -25
  1133. data/src/core/lib/gprpp/overload.h +59 -0
  1134. data/src/core/lib/gprpp/packed_table.h +40 -0
  1135. data/src/core/lib/gprpp/per_cpu.h +46 -0
  1136. data/src/core/lib/gprpp/ref_counted.h +24 -24
  1137. data/src/core/lib/gprpp/ref_counted_ptr.h +42 -55
  1138. data/src/core/lib/gprpp/single_set_ptr.h +87 -0
  1139. data/src/core/lib/gprpp/sorted_pack.h +98 -0
  1140. data/src/core/lib/gprpp/stat.h +3 -5
  1141. data/src/core/lib/gprpp/stat_posix.cc +10 -4
  1142. data/src/core/lib/gprpp/stat_windows.cc +4 -2
  1143. data/src/core/lib/gprpp/status_helper.cc +79 -51
  1144. data/src/core/lib/gprpp/status_helper.h +19 -24
  1145. data/src/core/lib/gprpp/strerror.cc +43 -0
  1146. data/src/core/lib/gprpp/strerror.h +29 -0
  1147. data/src/core/lib/gprpp/sync.h +26 -24
  1148. data/src/core/lib/gprpp/table.h +33 -4
  1149. data/src/core/lib/gprpp/tchar.cc +49 -0
  1150. data/src/core/lib/gprpp/tchar.h +33 -0
  1151. data/src/core/lib/gprpp/thd.h +25 -28
  1152. data/src/core/lib/gprpp/thd_posix.cc +33 -32
  1153. data/src/core/lib/gprpp/thd_windows.cc +28 -26
  1154. data/src/core/lib/gprpp/time.cc +241 -0
  1155. data/src/core/lib/gprpp/time.h +366 -0
  1156. data/src/core/lib/gprpp/time_averaged_stats.cc +60 -0
  1157. data/src/core/lib/gprpp/time_averaged_stats.h +79 -0
  1158. data/src/core/lib/gprpp/time_util.cc +4 -0
  1159. data/src/core/lib/gprpp/time_util.h +3 -3
  1160. data/src/core/lib/gprpp/unique_type_name.h +104 -0
  1161. data/src/core/lib/gprpp/validation_errors.cc +61 -0
  1162. data/src/core/lib/gprpp/validation_errors.h +127 -0
  1163. data/src/core/lib/gprpp/work_serializer.cc +247 -0
  1164. data/src/core/lib/gprpp/work_serializer.h +86 -0
  1165. data/src/core/lib/handshaker/proxy_mapper.h +53 -0
  1166. data/src/core/lib/handshaker/proxy_mapper_registry.cc +71 -0
  1167. data/src/core/lib/handshaker/proxy_mapper_registry.h +75 -0
  1168. data/src/core/lib/http/format_request.cc +81 -47
  1169. data/src/core/lib/http/format_request.h +30 -27
  1170. data/src/core/lib/http/httpcli.cc +328 -262
  1171. data/src/core/lib/http/httpcli.h +256 -115
  1172. data/src/core/lib/http/httpcli_security_connector.cc +101 -104
  1173. data/src/core/lib/http/httpcli_ssl_credentials.h +39 -0
  1174. data/src/core/lib/http/parser.cc +144 -85
  1175. data/src/core/lib/http/parser.h +51 -35
  1176. data/src/core/lib/iomgr/block_annotate.h +23 -23
  1177. data/src/core/lib/iomgr/buffer_list.cc +156 -136
  1178. data/src/core/lib/iomgr/buffer_list.h +128 -106
  1179. data/src/core/lib/iomgr/call_combiner.cc +37 -58
  1180. data/src/core/lib/iomgr/call_combiner.h +24 -25
  1181. data/src/core/lib/iomgr/cfstream_handle.cc +33 -36
  1182. data/src/core/lib/iomgr/cfstream_handle.h +25 -25
  1183. data/src/core/lib/iomgr/closure.cc +27 -0
  1184. data/src/core/lib/iomgr/closure.h +111 -54
  1185. data/src/core/lib/iomgr/combiner.cc +29 -26
  1186. data/src/core/lib/iomgr/combiner.h +20 -20
  1187. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  1188. data/src/core/lib/iomgr/dynamic_annotations.h +22 -22
  1189. data/src/core/lib/iomgr/endpoint.cc +21 -21
  1190. data/src/core/lib/iomgr/endpoint.h +53 -51
  1191. data/src/core/lib/iomgr/endpoint_cfstream.cc +51 -47
  1192. data/src/core/lib/iomgr/endpoint_cfstream.h +32 -32
  1193. data/src/core/lib/iomgr/endpoint_pair.h +20 -20
  1194. data/src/core/lib/iomgr/endpoint_pair_posix.cc +34 -27
  1195. data/src/core/lib/iomgr/endpoint_pair_windows.cc +30 -21
  1196. data/src/core/lib/iomgr/error.cc +52 -832
  1197. data/src/core/lib/iomgr/error.h +45 -319
  1198. data/src/core/lib/iomgr/error_cfstream.cc +18 -23
  1199. data/src/core/lib/iomgr/error_cfstream.h +21 -21
  1200. data/src/core/lib/iomgr/ev_apple.cc +27 -26
  1201. data/src/core/lib/iomgr/ev_apple.h +21 -21
  1202. data/src/core/lib/iomgr/ev_epoll1_linux.cc +270 -254
  1203. data/src/core/lib/iomgr/ev_epoll1_linux.h +21 -21
  1204. data/src/core/lib/iomgr/ev_poll_posix.cc +302 -277
  1205. data/src/core/lib/iomgr/ev_poll_posix.h +22 -22
  1206. data/src/core/lib/iomgr/ev_posix.cc +91 -125
  1207. data/src/core/lib/iomgr/ev_posix.h +94 -88
  1208. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  1209. data/src/core/lib/iomgr/event_engine_shims/closure.cc +62 -0
  1210. data/src/core/lib/iomgr/event_engine_shims/closure.h +39 -0
  1211. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +430 -0
  1212. data/src/core/lib/iomgr/event_engine_shims/endpoint.h +43 -0
  1213. data/src/core/lib/iomgr/event_engine_shims/tcp_client.cc +91 -0
  1214. data/src/core/lib/iomgr/event_engine_shims/tcp_client.h +44 -0
  1215. data/src/core/lib/iomgr/exec_ctx.cc +45 -139
  1216. data/src/core/lib/iomgr/exec_ctx.h +154 -195
  1217. data/src/core/lib/iomgr/executor.cc +25 -26
  1218. data/src/core/lib/iomgr/executor.h +27 -30
  1219. data/src/core/lib/iomgr/fork_posix.cc +30 -26
  1220. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  1221. data/src/core/lib/iomgr/gethostname.h +20 -20
  1222. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  1223. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  1224. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  1225. data/src/core/lib/iomgr/grpc_if_nametoindex.h +22 -22
  1226. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  1227. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  1228. data/src/core/lib/iomgr/internal_errqueue.cc +41 -48
  1229. data/src/core/lib/iomgr/internal_errqueue.h +84 -89
  1230. data/src/core/lib/iomgr/iocp_windows.cc +31 -31
  1231. data/src/core/lib/iomgr/iocp_windows.h +22 -22
  1232. data/src/core/lib/iomgr/iomgr.cc +25 -20
  1233. data/src/core/lib/iomgr/iomgr.h +35 -35
  1234. data/src/core/lib/iomgr/iomgr_fwd.h +26 -0
  1235. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  1236. data/src/core/lib/iomgr/iomgr_internal.h +28 -28
  1237. data/src/core/lib/iomgr/iomgr_posix.cc +22 -21
  1238. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +22 -20
  1239. data/src/core/lib/iomgr/iomgr_windows.cc +25 -23
  1240. data/src/core/lib/iomgr/load_file.cc +24 -27
  1241. data/src/core/lib/iomgr/load_file.h +22 -22
  1242. data/src/core/lib/iomgr/lockfree_event.cc +114 -131
  1243. data/src/core/lib/iomgr/lockfree_event.h +23 -23
  1244. data/src/core/lib/iomgr/nameser.h +86 -86
  1245. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  1246. data/src/core/lib/iomgr/polling_entity.h +35 -29
  1247. data/src/core/lib/iomgr/pollset.cc +18 -18
  1248. data/src/core/lib/iomgr/pollset.h +60 -60
  1249. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  1250. data/src/core/lib/iomgr/pollset_set.h +26 -28
  1251. data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
  1252. data/src/core/lib/iomgr/pollset_set_windows.h +20 -20
  1253. data/src/core/lib/iomgr/pollset_windows.cc +34 -33
  1254. data/src/core/lib/iomgr/pollset_windows.h +24 -24
  1255. data/src/core/lib/iomgr/port.h +59 -42
  1256. data/src/core/lib/iomgr/python_util.h +24 -24
  1257. data/src/core/lib/iomgr/resolve_address.cc +34 -39
  1258. data/src/core/lib/iomgr/resolve_address.h +100 -67
  1259. data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
  1260. data/src/core/lib/iomgr/resolve_address_posix.cc +133 -98
  1261. data/src/core/lib/iomgr/resolve_address_posix.h +63 -0
  1262. data/src/core/lib/iomgr/resolve_address_windows.cc +129 -84
  1263. data/src/core/lib/iomgr/resolve_address_windows.h +63 -0
  1264. data/src/core/lib/iomgr/resolved_address.h +39 -0
  1265. data/src/core/lib/iomgr/sockaddr.h +25 -26
  1266. data/src/core/lib/iomgr/sockaddr_posix.h +23 -21
  1267. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +64 -0
  1268. data/src/core/lib/iomgr/sockaddr_windows.h +23 -21
  1269. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  1270. data/src/core/lib/iomgr/socket_factory_posix.h +32 -32
  1271. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  1272. data/src/core/lib/iomgr/socket_mutator.h +39 -39
  1273. data/src/core/lib/iomgr/socket_utils.h +27 -27
  1274. data/src/core/lib/iomgr/socket_utils_common_posix.cc +82 -118
  1275. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  1276. data/src/core/lib/iomgr/socket_utils_posix.cc +103 -19
  1277. data/src/core/lib/iomgr/socket_utils_posix.h +176 -84
  1278. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  1279. data/src/core/lib/iomgr/socket_windows.cc +37 -36
  1280. data/src/core/lib/iomgr/socket_windows.h +59 -61
  1281. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  1282. data/src/core/lib/iomgr/systemd_utils.h +33 -0
  1283. data/src/core/lib/iomgr/tcp_client.cc +28 -24
  1284. data/src/core/lib/iomgr/tcp_client.h +49 -37
  1285. data/src/core/lib/iomgr/tcp_client_cfstream.cc +46 -35
  1286. data/src/core/lib/iomgr/tcp_client_posix.cc +244 -106
  1287. data/src/core/lib/iomgr/tcp_client_posix.h +55 -52
  1288. data/src/core/lib/iomgr/tcp_client_windows.cc +73 -53
  1289. data/src/core/lib/iomgr/tcp_posix.cc +563 -361
  1290. data/src/core/lib/iomgr/tcp_posix.h +32 -30
  1291. data/src/core/lib/iomgr/tcp_server.cc +33 -24
  1292. data/src/core/lib/iomgr/tcp_server.h +78 -69
  1293. data/src/core/lib/iomgr/tcp_server_posix.cc +402 -145
  1294. data/src/core/lib/iomgr/tcp_server_utils_posix.h +68 -55
  1295. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +121 -82
  1296. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +47 -43
  1297. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +19 -19
  1298. data/src/core/lib/iomgr/tcp_server_windows.cc +116 -118
  1299. data/src/core/lib/iomgr/tcp_windows.cc +123 -98
  1300. data/src/core/lib/iomgr/tcp_windows.h +34 -35
  1301. data/src/core/lib/iomgr/timer.cc +19 -19
  1302. data/src/core/lib/iomgr/timer.h +78 -73
  1303. data/src/core/lib/iomgr/timer_generic.cc +214 -204
  1304. data/src/core/lib/iomgr/timer_generic.h +21 -21
  1305. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  1306. data/src/core/lib/iomgr/timer_heap.h +22 -22
  1307. data/src/core/lib/iomgr/timer_manager.cc +44 -43
  1308. data/src/core/lib/iomgr/timer_manager.h +27 -27
  1309. data/src/core/lib/iomgr/unix_sockets_posix.cc +38 -51
  1310. data/src/core/lib/iomgr/unix_sockets_posix.h +25 -28
  1311. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +25 -32
  1312. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +23 -23
  1313. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  1314. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +29 -26
  1315. data/src/core/lib/iomgr/wakeup_fd_pipe.h +20 -20
  1316. data/src/core/lib/iomgr/wakeup_fd_posix.cc +33 -30
  1317. data/src/core/lib/iomgr/wakeup_fd_posix.h +52 -54
  1318. data/src/core/lib/json/json.h +23 -27
  1319. data/src/core/lib/json/json_args.h +34 -0
  1320. data/src/core/lib/json/json_channel_args.h +42 -0
  1321. data/src/core/lib/json/json_object_loader.cc +217 -0
  1322. data/src/core/lib/json/json_object_loader.h +634 -0
  1323. data/src/core/lib/json/json_reader.cc +123 -90
  1324. data/src/core/lib/json/json_util.cc +17 -37
  1325. data/src/core/lib/json/json_util.h +21 -12
  1326. data/src/core/lib/json/json_writer.cc +62 -57
  1327. data/src/core/lib/load_balancing/lb_policy.cc +102 -0
  1328. data/src/core/lib/load_balancing/lb_policy.h +442 -0
  1329. data/src/core/lib/load_balancing/lb_policy_factory.h +49 -0
  1330. data/src/core/lib/load_balancing/lb_policy_registry.cc +142 -0
  1331. data/src/core/lib/load_balancing/lb_policy_registry.h +82 -0
  1332. data/src/core/lib/load_balancing/subchannel_interface.h +135 -0
  1333. data/src/core/lib/matchers/matchers.cc +13 -8
  1334. data/src/core/lib/matchers/matchers.h +5 -3
  1335. data/src/core/lib/promise/activity.cc +36 -15
  1336. data/src/core/lib/promise/activity.h +287 -188
  1337. data/src/core/lib/promise/arena_promise.h +231 -0
  1338. data/src/core/lib/promise/context.h +18 -11
  1339. data/src/core/lib/promise/detail/basic_join.h +197 -0
  1340. data/src/core/lib/promise/detail/basic_seq.h +104 -20
  1341. data/src/core/lib/promise/detail/promise_factory.h +62 -15
  1342. data/src/core/lib/promise/detail/promise_like.h +3 -3
  1343. data/src/core/lib/promise/detail/status.h +37 -3
  1344. data/src/core/lib/promise/detail/switch.h +21 -21
  1345. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +23 -15
  1346. data/src/core/lib/promise/if.h +195 -0
  1347. data/src/core/lib/promise/interceptor_list.h +308 -0
  1348. data/src/core/lib/promise/intra_activity_waiter.h +55 -0
  1349. data/src/core/lib/promise/latch.h +191 -0
  1350. data/src/core/lib/promise/loop.h +44 -14
  1351. data/src/core/lib/promise/map.h +4 -6
  1352. data/src/core/lib/promise/pipe.h +608 -0
  1353. data/src/core/lib/promise/poll.h +132 -8
  1354. data/src/core/lib/promise/promise.h +95 -0
  1355. data/src/core/lib/promise/race.h +6 -10
  1356. data/src/core/lib/promise/seq.h +45 -9
  1357. data/src/core/lib/promise/sleep.cc +90 -0
  1358. data/src/core/lib/promise/sleep.h +84 -0
  1359. data/src/core/lib/promise/trace.cc +20 -0
  1360. data/src/core/lib/promise/trace.h +24 -0
  1361. data/src/core/lib/promise/try_join.h +82 -0
  1362. data/src/core/lib/promise/try_seq.h +175 -0
  1363. data/src/core/lib/resolver/resolver.cc +37 -0
  1364. data/src/core/lib/resolver/resolver.h +138 -0
  1365. data/src/core/lib/resolver/resolver_factory.h +77 -0
  1366. data/src/core/lib/resolver/resolver_registry.cc +164 -0
  1367. data/src/core/lib/resolver/resolver_registry.h +123 -0
  1368. data/src/core/lib/resolver/server_address.cc +182 -0
  1369. data/src/core/lib/resolver/server_address.h +145 -0
  1370. data/src/core/lib/resource_quota/api.cc +25 -29
  1371. data/src/core/lib/resource_quota/api.h +14 -6
  1372. data/src/core/lib/resource_quota/arena.cc +165 -0
  1373. data/src/core/lib/resource_quota/arena.h +314 -0
  1374. data/src/core/lib/resource_quota/memory_quota.cc +418 -173
  1375. data/src/core/lib/resource_quota/memory_quota.h +287 -116
  1376. data/src/core/lib/resource_quota/periodic_update.cc +78 -0
  1377. data/src/core/lib/resource_quota/periodic_update.h +71 -0
  1378. data/src/core/lib/resource_quota/resource_quota.h +20 -4
  1379. data/src/core/lib/resource_quota/thread_quota.cc +2 -0
  1380. data/src/core/lib/resource_quota/thread_quota.h +7 -3
  1381. data/src/core/lib/resource_quota/trace.h +3 -3
  1382. data/src/core/lib/security/authorization/authorization_engine.h +3 -3
  1383. data/src/core/lib/security/authorization/authorization_policy_provider.h +17 -3
  1384. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +3 -0
  1385. data/src/core/lib/security/authorization/evaluate_args.cc +42 -28
  1386. data/src/core/lib/security/authorization/evaluate_args.h +10 -7
  1387. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +64 -0
  1388. data/src/core/lib/security/authorization/grpc_authorization_engine.h +69 -0
  1389. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +122 -0
  1390. data/src/core/lib/security/authorization/grpc_server_authz_filter.h +61 -0
  1391. data/src/core/lib/security/authorization/matchers.cc +241 -0
  1392. data/src/core/lib/security/authorization/matchers.h +218 -0
  1393. data/src/core/lib/security/authorization/rbac_policy.cc +446 -0
  1394. data/src/core/lib/security/authorization/rbac_policy.h +178 -0
  1395. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +66 -0
  1396. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +60 -0
  1397. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +70 -0
  1398. data/src/core/lib/security/context/security_context.cc +31 -27
  1399. data/src/core/lib/security/context/security_context.h +65 -36
  1400. data/src/core/lib/security/credentials/alts/alts_credentials.cc +35 -27
  1401. data/src/core/lib/security/credentials/alts/alts_credentials.h +71 -57
  1402. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  1403. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +43 -43
  1404. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  1405. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  1406. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  1407. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +20 -22
  1408. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  1409. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +38 -39
  1410. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +19 -22
  1411. data/src/core/lib/security/credentials/call_creds_util.cc +97 -0
  1412. data/src/core/lib/security/credentials/call_creds_util.h +43 -0
  1413. data/src/core/lib/security/credentials/channel_creds_registry.h +103 -0
  1414. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +80 -0
  1415. data/src/core/lib/security/credentials/composite/composite_credentials.cc +52 -111
  1416. data/src/core/lib/security/credentials/composite/composite_credentials.h +65 -40
  1417. data/src/core/lib/security/credentials/credentials.cc +25 -29
  1418. data/src/core/lib/security/credentials/credentials.h +141 -133
  1419. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +248 -104
  1420. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +22 -3
  1421. data/src/core/lib/security/credentials/external/aws_request_signer.cc +14 -3
  1422. data/src/core/lib/security/credentials/external/aws_request_signer.h +3 -3
  1423. data/src/core/lib/security/credentials/external/external_account_credentials.cc +137 -101
  1424. data/src/core/lib/security/credentials/external/external_account_credentials.h +19 -12
  1425. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +29 -27
  1426. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +9 -3
  1427. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +77 -44
  1428. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +14 -3
  1429. data/src/core/lib/security/credentials/fake/fake_credentials.cc +62 -62
  1430. data/src/core/lib/security/credentials/fake/fake_credentials.h +71 -63
  1431. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +23 -25
  1432. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +163 -124
  1433. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +41 -29
  1434. data/src/core/lib/security/credentials/iam/iam_credentials.cc +50 -47
  1435. data/src/core/lib/security/credentials/iam/iam_credentials.h +46 -30
  1436. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +35 -26
  1437. data/src/core/lib/security/credentials/insecure/insecure_credentials.h +61 -0
  1438. data/src/core/lib/security/credentials/jwt/json_token.cc +44 -35
  1439. data/src/core/lib/security/credentials/jwt/json_token.h +36 -36
  1440. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +62 -71
  1441. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +51 -33
  1442. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +166 -129
  1443. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +51 -49
  1444. data/src/core/lib/security/credentials/local/local_credentials.cc +36 -30
  1445. data/src/core/lib/security/credentials/local/local_credentials.h +42 -26
  1446. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +229 -234
  1447. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +103 -55
  1448. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +122 -174
  1449. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +101 -48
  1450. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +49 -54
  1451. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +49 -26
  1452. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +22 -30
  1453. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +16 -17
  1454. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +65 -48
  1455. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +69 -9
  1456. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +44 -4
  1457. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +75 -13
  1458. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +47 -23
  1459. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +70 -83
  1460. data/src/core/lib/security/credentials/tls/tls_credentials.cc +55 -50
  1461. data/src/core/lib/security/credentials/tls/tls_credentials.h +34 -25
  1462. data/src/core/lib/security/credentials/tls/tls_utils.cc +5 -1
  1463. data/src/core/lib/security/credentials/tls/tls_utils.h +4 -4
  1464. data/src/core/lib/security/credentials/xds/xds_credentials.cc +77 -81
  1465. data/src/core/lib/security/credentials/xds/xds_credentials.h +56 -11
  1466. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +68 -68
  1467. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +50 -48
  1468. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +79 -91
  1469. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +26 -29
  1470. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +21 -22
  1471. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +30 -24
  1472. data/src/core/lib/security/security_connector/load_system_roots.h +20 -20
  1473. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +22 -20
  1474. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +175 -0
  1475. data/src/core/lib/security/security_connector/load_system_roots_supported.h +45 -0
  1476. data/src/core/lib/security/security_connector/local/local_security_connector.cc +74 -65
  1477. data/src/core/lib/security/security_connector/local/local_security_connector.h +49 -46
  1478. data/src/core/lib/security/security_connector/security_connector.cc +39 -49
  1479. data/src/core/lib/security/security_connector/security_connector.h +82 -65
  1480. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +65 -59
  1481. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +44 -43
  1482. data/src/core/lib/security/security_connector/ssl_utils.cc +76 -70
  1483. data/src/core/lib/security/security_connector/ssl_utils.h +57 -58
  1484. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  1485. data/src/core/lib/security/security_connector/ssl_utils_config.h +21 -22
  1486. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +83 -71
  1487. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +54 -34
  1488. data/src/core/lib/security/transport/auth_filters.h +89 -27
  1489. data/src/core/lib/security/transport/client_auth_filter.cc +142 -388
  1490. data/src/core/lib/security/transport/secure_endpoint.cc +305 -181
  1491. data/src/core/lib/security/transport/secure_endpoint.h +29 -28
  1492. data/src/core/lib/security/transport/security_handshaker.cc +147 -107
  1493. data/src/core/lib/security/transport/security_handshaker.h +28 -23
  1494. data/src/core/lib/security/transport/server_auth_filter.cc +179 -282
  1495. data/src/core/lib/security/transport/tsi_error.cc +23 -20
  1496. data/src/core/lib/security/transport/tsi_error.h +20 -20
  1497. data/src/core/lib/security/util/json_util.cc +24 -24
  1498. data/src/core/lib/security/util/json_util.h +21 -23
  1499. data/src/core/lib/service_config/service_config.h +89 -0
  1500. data/src/core/lib/service_config/service_config_call_data.h +82 -0
  1501. data/src/core/lib/service_config/service_config_impl.cc +191 -0
  1502. data/src/core/lib/service_config/service_config_impl.h +125 -0
  1503. data/src/core/lib/service_config/service_config_parser.cc +81 -0
  1504. data/src/core/lib/service_config/service_config_parser.h +105 -0
  1505. data/src/core/lib/slice/b64.cc +26 -26
  1506. data/src/core/lib/slice/b64.h +34 -32
  1507. data/src/core/lib/slice/percent_encoding.cc +24 -30
  1508. data/src/core/lib/slice/percent_encoding.h +28 -34
  1509. data/src/core/lib/slice/slice.cc +128 -218
  1510. data/src/core/lib/slice/slice.h +126 -39
  1511. data/src/core/lib/slice/slice_buffer.cc +136 -76
  1512. data/src/core/lib/slice/slice_buffer.h +168 -0
  1513. data/src/core/lib/slice/slice_internal.h +43 -69
  1514. data/src/core/lib/slice/slice_refcount.cc +4 -1
  1515. data/src/core/lib/slice/slice_refcount.h +51 -96
  1516. data/src/core/lib/slice/slice_string_helpers.cc +17 -33
  1517. data/src/core/lib/slice/slice_string_helpers.h +23 -30
  1518. data/src/core/lib/surface/api_trace.cc +17 -17
  1519. data/src/core/lib/surface/api_trace.h +25 -25
  1520. data/src/core/lib/surface/builtins.cc +11 -6
  1521. data/src/core/lib/surface/builtins.h +3 -3
  1522. data/src/core/lib/surface/byte_buffer.cc +26 -21
  1523. data/src/core/lib/surface/byte_buffer_reader.cc +24 -24
  1524. data/src/core/lib/surface/call.cc +3070 -1436
  1525. data/src/core/lib/surface/call.h +140 -61
  1526. data/src/core/lib/surface/call_details.cc +22 -23
  1527. data/src/core/lib/surface/call_log_batch.cc +25 -18
  1528. data/src/core/lib/surface/call_test_only.h +34 -31
  1529. data/src/core/lib/surface/call_trace.cc +123 -0
  1530. data/src/core/lib/surface/call_trace.h +30 -0
  1531. data/src/core/lib/surface/channel.cc +249 -322
  1532. data/src/core/lib/surface/channel.h +140 -94
  1533. data/src/core/lib/surface/channel_init.cc +19 -20
  1534. data/src/core/lib/surface/channel_init.h +25 -27
  1535. data/src/core/lib/surface/channel_ping.cc +26 -20
  1536. data/src/core/lib/surface/channel_stack_type.cc +21 -19
  1537. data/src/core/lib/surface/channel_stack_type.h +22 -22
  1538. data/src/core/lib/surface/completion_queue.cc +210 -231
  1539. data/src/core/lib/surface/completion_queue.h +42 -40
  1540. data/src/core/lib/surface/completion_queue_factory.cc +34 -28
  1541. data/src/core/lib/surface/completion_queue_factory.h +21 -23
  1542. data/src/core/lib/surface/event_string.cc +19 -24
  1543. data/src/core/lib/surface/event_string.h +21 -21
  1544. data/src/core/lib/surface/init.cc +106 -94
  1545. data/src/core/lib/surface/init.h +20 -30
  1546. data/src/core/lib/surface/init_internally.cc +25 -0
  1547. data/src/core/lib/surface/init_internally.h +37 -0
  1548. data/src/core/lib/surface/lame_client.cc +87 -130
  1549. data/src/core/lib/surface/lame_client.h +62 -24
  1550. data/src/core/lib/surface/metadata_array.cc +18 -17
  1551. data/src/core/lib/surface/server.cc +421 -228
  1552. data/src/core/lib/surface/server.h +62 -31
  1553. data/src/core/lib/surface/validate_metadata.cc +34 -48
  1554. data/src/core/lib/surface/validate_metadata.h +24 -21
  1555. data/src/core/lib/surface/version.cc +21 -21
  1556. data/src/core/lib/transport/bdp_estimator.cc +28 -29
  1557. data/src/core/lib/transport/bdp_estimator.h +24 -26
  1558. data/src/core/lib/transport/connectivity_state.cc +24 -23
  1559. data/src/core/lib/transport/connectivity_state.h +24 -25
  1560. data/src/core/lib/transport/error_utils.cc +62 -82
  1561. data/src/core/lib/transport/error_utils.h +31 -26
  1562. data/src/core/lib/transport/handshaker.cc +239 -0
  1563. data/src/core/lib/transport/handshaker.h +172 -0
  1564. data/src/core/lib/transport/handshaker_factory.h +74 -0
  1565. data/src/core/lib/transport/handshaker_registry.cc +61 -0
  1566. data/src/core/lib/transport/handshaker_registry.h +69 -0
  1567. data/src/core/lib/transport/http2_errors.h +22 -22
  1568. data/src/core/lib/transport/http_connect_handshaker.cc +400 -0
  1569. data/src/core/lib/transport/http_connect_handshaker.h +42 -0
  1570. data/src/core/lib/transport/metadata_batch.cc +278 -72
  1571. data/src/core/lib/transport/metadata_batch.h +1052 -825
  1572. data/src/core/lib/transport/parsed_metadata.cc +4 -4
  1573. data/src/core/lib/transport/parsed_metadata.h +128 -100
  1574. data/src/core/lib/transport/pid_controller.cc +20 -20
  1575. data/src/core/lib/transport/pid_controller.h +27 -27
  1576. data/src/core/lib/transport/status_conversion.cc +25 -25
  1577. data/src/core/lib/transport/status_conversion.h +25 -25
  1578. data/src/core/lib/transport/tcp_connect_handshaker.cc +245 -0
  1579. data/src/core/lib/transport/tcp_connect_handshaker.h +39 -0
  1580. data/src/core/lib/transport/timeout_encoding.cc +225 -92
  1581. data/src/core/lib/transport/timeout_encoding.h +65 -31
  1582. data/src/core/lib/transport/transport.cc +99 -57
  1583. data/src/core/lib/transport/transport.h +282 -152
  1584. data/src/core/lib/transport/transport_fwd.h +20 -0
  1585. data/src/core/lib/transport/transport_impl.h +59 -35
  1586. data/src/core/lib/transport/transport_op_string.cc +44 -85
  1587. data/src/core/lib/uri/uri_parser.cc +239 -57
  1588. data/src/core/lib/uri/uri_parser.h +40 -28
  1589. data/src/core/plugin_registry/grpc_plugin_registry.cc +77 -156
  1590. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +66 -0
  1591. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  1592. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  1593. data/src/core/tsi/alts/crypt/gsec.h +336 -336
  1594. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  1595. data/src/core/tsi/alts/frame_protector/alts_counter.h +68 -68
  1596. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  1597. data/src/core/tsi/alts/frame_protector/alts_crypter.h +209 -209
  1598. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
  1599. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +40 -40
  1600. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  1601. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +82 -83
  1602. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  1603. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  1604. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  1605. data/src/core/tsi/alts/frame_protector/frame_handler.h +169 -169
  1606. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +142 -117
  1607. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +104 -104
  1608. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +27 -18
  1609. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +43 -44
  1610. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +72 -56
  1611. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +60 -60
  1612. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +24 -24
  1613. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +23 -22
  1614. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +39 -39
  1615. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +21 -21
  1616. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +107 -106
  1617. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +45 -44
  1618. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +40 -41
  1619. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +38 -36
  1620. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +35 -36
  1621. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +67 -68
  1622. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +32 -31
  1623. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +55 -56
  1624. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  1625. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +141 -142
  1626. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +67 -58
  1627. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +43 -44
  1628. data/src/core/tsi/fake_transport_security.cc +146 -110
  1629. data/src/core/tsi/fake_transport_security.h +36 -30
  1630. data/src/core/tsi/local_transport_security.cc +46 -49
  1631. data/src/core/tsi/local_transport_security.h +34 -37
  1632. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +146 -0
  1633. data/src/core/tsi/ssl/key_logging/ssl_key_logging.h +81 -0
  1634. data/src/core/tsi/ssl/session_cache/ssl_session.h +24 -24
  1635. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +21 -19
  1636. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  1637. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +34 -27
  1638. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +27 -20
  1639. data/src/core/tsi/ssl_transport_security.cc +451 -394
  1640. data/src/core/tsi/ssl_transport_security.h +235 -194
  1641. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  1642. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  1643. data/src/core/tsi/ssl_types.h +27 -27
  1644. data/src/core/tsi/transport_security.cc +44 -32
  1645. data/src/core/tsi/transport_security.h +49 -48
  1646. data/src/core/tsi/transport_security_grpc.cc +23 -22
  1647. data/src/core/tsi/transport_security_grpc.h +44 -41
  1648. data/src/core/tsi/transport_security_interface.h +346 -332
  1649. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.clang +2 -0
  1650. data/src/ruby/ext/grpc/ext-export-truffleruby-with-ruby-abi-version.gcc +7 -0
  1651. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  1652. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  1653. data/src/ruby/ext/grpc/ext-export.gcc +1 -1
  1654. data/src/ruby/ext/grpc/extconf.rb +107 -22
  1655. data/src/ruby/ext/grpc/rb_call.c +1 -0
  1656. data/src/ruby/ext/grpc/rb_channel.c +6 -2
  1657. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  1658. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  1659. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  1660. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +58 -62
  1661. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +90 -96
  1662. data/src/ruby/ext/grpc/rb_loader.c +6 -2
  1663. data/src/ruby/ext/grpc/rb_server.c +7 -4
  1664. data/src/ruby/lib/grpc/errors.rb +1 -1
  1665. data/src/ruby/lib/grpc/generic/active_call.rb +7 -1
  1666. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  1667. data/src/ruby/lib/grpc/grpc.rb +1 -1
  1668. data/src/ruby/lib/grpc/version.rb +1 -1
  1669. data/src/ruby/pb/generate_proto_ruby.sh +1 -6
  1670. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +4 -0
  1671. data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
  1672. data/src/ruby/pb/test/client.rb +769 -0
  1673. data/src/ruby/pb/test/server.rb +252 -0
  1674. data/src/ruby/pb/test/xds_client.rb +415 -0
  1675. data/src/ruby/spec/channel_spec.rb +5 -43
  1676. data/src/ruby/spec/client_server_spec.rb +20 -8
  1677. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  1678. data/src/ruby/spec/generic/client_stub_spec.rb +23 -23
  1679. data/src/ruby/spec/generic/server_interceptors_spec.rb +1 -1
  1680. data/src/ruby/spec/user_agent_spec.rb +1 -1
  1681. data/third_party/abseil-cpp/absl/algorithm/container.h +57 -58
  1682. data/third_party/abseil-cpp/absl/base/attributes.h +88 -41
  1683. data/third_party/abseil-cpp/absl/base/casts.h +61 -68
  1684. data/third_party/abseil-cpp/absl/base/config.h +221 -39
  1685. data/third_party/abseil-cpp/absl/base/internal/cycleclock.cc +12 -42
  1686. data/third_party/abseil-cpp/absl/base/internal/cycleclock.h +52 -2
  1687. data/third_party/abseil-cpp/absl/base/internal/cycleclock_config.h +55 -0
  1688. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -4
  1689. data/third_party/abseil-cpp/absl/base/internal/endian.h +17 -62
  1690. data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +50 -0
  1691. data/third_party/abseil-cpp/absl/base/internal/inline_variable.h +3 -3
  1692. data/third_party/abseil-cpp/absl/base/internal/invoke.h +54 -0
  1693. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +2 -2
  1694. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +1 -1
  1695. data/third_party/abseil-cpp/absl/base/internal/prefetch.h +138 -0
  1696. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +39 -28
  1697. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +36 -36
  1698. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +6 -3
  1699. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +10 -6
  1700. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -5
  1701. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +4 -1
  1702. data/third_party/abseil-cpp/absl/base/internal/strerror.cc +88 -0
  1703. data/third_party/abseil-cpp/absl/base/internal/strerror.h +39 -0
  1704. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +14 -11
  1705. data/third_party/abseil-cpp/absl/base/internal/thread_annotations.h +9 -0
  1706. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +2 -1
  1707. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -0
  1708. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +6 -7
  1709. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +12 -40
  1710. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +62 -0
  1711. data/third_party/abseil-cpp/absl/base/log_severity.cc +28 -0
  1712. data/third_party/abseil-cpp/absl/base/log_severity.h +51 -0
  1713. data/third_party/abseil-cpp/absl/base/macros.h +4 -21
  1714. data/third_party/abseil-cpp/absl/base/optimization.h +76 -16
  1715. data/third_party/abseil-cpp/absl/base/options.h +1 -7
  1716. data/third_party/abseil-cpp/absl/base/policy_checks.h +15 -13
  1717. data/third_party/abseil-cpp/absl/base/thread_annotations.h +2 -2
  1718. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  1719. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  1720. data/third_party/abseil-cpp/absl/container/fixed_array.h +9 -5
  1721. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +11 -4
  1722. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  1723. data/third_party/abseil-cpp/absl/container/inlined_vector.h +84 -25
  1724. data/third_party/abseil-cpp/absl/container/internal/common.h +9 -8
  1725. data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +132 -0
  1726. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +23 -29
  1727. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +4 -55
  1728. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +116 -23
  1729. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +40 -54
  1730. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +165 -66
  1731. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +159 -4
  1732. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1121 -470
  1733. data/third_party/abseil-cpp/absl/crc/crc32c.cc +99 -0
  1734. data/third_party/abseil-cpp/absl/crc/crc32c.h +183 -0
  1735. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +256 -0
  1736. data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +57 -0
  1737. data/third_party/abseil-cpp/absl/crc/internal/crc.cc +468 -0
  1738. data/third_party/abseil-cpp/absl/crc/internal/crc.h +91 -0
  1739. data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +269 -0
  1740. data/third_party/abseil-cpp/absl/crc/internal/crc32c.h +39 -0
  1741. data/third_party/abseil-cpp/absl/crc/internal/crc32c_inline.h +72 -0
  1742. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc +130 -0
  1743. data/third_party/abseil-cpp/absl/crc/internal/crc_cord_state.h +159 -0
  1744. data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +179 -0
  1745. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy.h +119 -0
  1746. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc +75 -0
  1747. data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc +434 -0
  1748. data/third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc +93 -0
  1749. data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +725 -0
  1750. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +79 -0
  1751. data/third_party/abseil-cpp/absl/crc/internal/non_temporal_memcpy.h +180 -0
  1752. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +45 -88
  1753. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +67 -38
  1754. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +1 -1
  1755. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +16 -13
  1756. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +3 -2
  1757. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +19 -12
  1758. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +8 -3
  1759. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +2 -1
  1760. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +1 -1
  1761. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +8 -3
  1762. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +59 -102
  1763. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +5 -4
  1764. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +41 -11
  1765. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +18 -4
  1766. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +6 -1
  1767. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +3 -2
  1768. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +164 -101
  1769. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +7 -6
  1770. data/third_party/abseil-cpp/absl/functional/any_invocable.h +316 -0
  1771. data/third_party/abseil-cpp/absl/functional/bind_front.h +10 -1
  1772. data/third_party/abseil-cpp/absl/functional/function_ref.h +2 -1
  1773. data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +878 -0
  1774. data/third_party/abseil-cpp/absl/hash/hash.h +82 -8
  1775. data/third_party/abseil-cpp/absl/hash/internal/city.cc +10 -10
  1776. data/third_party/abseil-cpp/absl/hash/internal/hash.h +235 -26
  1777. data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +3 -14
  1778. data/third_party/abseil-cpp/absl/memory/memory.h +26 -447
  1779. data/third_party/abseil-cpp/absl/meta/type_traits.h +104 -12
  1780. data/third_party/abseil-cpp/absl/numeric/bits.h +1 -1
  1781. data/third_party/abseil-cpp/absl/numeric/int128.cc +14 -10
  1782. data/third_party/abseil-cpp/absl/numeric/int128.h +2 -2
  1783. data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +33 -10
  1784. data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
  1785. data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
  1786. data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
  1787. data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
  1788. data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
  1789. data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
  1790. data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
  1791. data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
  1792. data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +95 -0
  1793. data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +270 -0
  1794. data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
  1795. data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
  1796. data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
  1797. data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +161 -0
  1798. data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +287 -0
  1799. data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
  1800. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
  1801. data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
  1802. data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
  1803. data/third_party/abseil-cpp/absl/random/internal/randen.h +96 -0
  1804. data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +225 -0
  1805. data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
  1806. data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +264 -0
  1807. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
  1808. data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
  1809. data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
  1810. data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
  1811. data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
  1812. data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
  1813. data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +165 -0
  1814. data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
  1815. data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
  1816. data/third_party/abseil-cpp/absl/random/internal/traits.h +149 -0
  1817. data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
  1818. data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +96 -0
  1819. data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +256 -0
  1820. data/third_party/abseil-cpp/absl/random/poisson_distribution.h +261 -0
  1821. data/third_party/abseil-cpp/absl/random/random.h +189 -0
  1822. data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
  1823. data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
  1824. data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
  1825. data/third_party/abseil-cpp/absl/random/seed_sequences.h +111 -0
  1826. data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
  1827. data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
  1828. data/third_party/abseil-cpp/absl/random/zipf_distribution.h +272 -0
  1829. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  1830. data/third_party/abseil-cpp/absl/status/status.cc +193 -14
  1831. data/third_party/abseil-cpp/absl/status/status.h +24 -14
  1832. data/third_party/abseil-cpp/absl/status/statusor.h +9 -3
  1833. data/third_party/abseil-cpp/absl/strings/ascii.cc +5 -5
  1834. data/third_party/abseil-cpp/absl/strings/ascii.h +4 -4
  1835. data/third_party/abseil-cpp/absl/strings/charconv.cc +534 -96
  1836. data/third_party/abseil-cpp/absl/strings/cord.cc +257 -924
  1837. data/third_party/abseil-cpp/absl/strings/cord.h +268 -156
  1838. data/third_party/abseil-cpp/absl/strings/cord_analysis.cc +188 -0
  1839. data/third_party/abseil-cpp/absl/strings/cord_analysis.h +44 -0
  1840. data/third_party/abseil-cpp/absl/strings/cord_buffer.cc +30 -0
  1841. data/third_party/abseil-cpp/absl/strings/cord_buffer.h +575 -0
  1842. data/third_party/abseil-cpp/absl/strings/escaping.cc +73 -62
  1843. data/third_party/abseil-cpp/absl/strings/escaping.h +24 -19
  1844. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +14 -12
  1845. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +4 -4
  1846. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  1847. data/third_party/abseil-cpp/absl/strings/internal/cord_data_edge.h +63 -0
  1848. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +20 -32
  1849. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +441 -150
  1850. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +157 -53
  1851. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +70 -73
  1852. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +8 -6
  1853. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +4 -2
  1854. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +3 -2
  1855. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +5 -4
  1856. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +7 -74
  1857. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc +56 -0
  1858. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.h +103 -0
  1859. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +58 -17
  1860. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +13 -11
  1861. data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +7 -15
  1862. data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +3 -3
  1863. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +19 -43
  1864. data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +7 -7
  1865. data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +5 -4
  1866. data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +4 -2
  1867. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +93 -0
  1868. data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +34 -0
  1869. data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +18 -15
  1870. data/third_party/abseil-cpp/absl/strings/internal/escaping.h +7 -9
  1871. data/third_party/abseil-cpp/absl/strings/internal/has_absl_stringify.h +55 -0
  1872. data/third_party/abseil-cpp/absl/strings/internal/memutil.cc +9 -6
  1873. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.cc +14 -7
  1874. data/third_party/abseil-cpp/absl/strings/internal/ostringstream.h +35 -10
  1875. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +113 -46
  1876. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +127 -30
  1877. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -2
  1878. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +42 -10
  1879. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +56 -289
  1880. data/third_party/abseil-cpp/absl/strings/internal/str_format/constexpr_parser.h +351 -0
  1881. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
  1882. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +9 -4
  1883. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +215 -181
  1884. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +2 -1
  1885. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +10 -209
  1886. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -103
  1887. data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +9 -6
  1888. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -1
  1889. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +10 -2
  1890. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc +28 -0
  1891. data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +57 -0
  1892. data/third_party/abseil-cpp/absl/strings/internal/utf8.cc +9 -9
  1893. data/third_party/abseil-cpp/absl/strings/numbers.cc +42 -39
  1894. data/third_party/abseil-cpp/absl/strings/numbers.h +26 -23
  1895. data/third_party/abseil-cpp/absl/strings/str_cat.cc +9 -6
  1896. data/third_party/abseil-cpp/absl/strings/str_cat.h +70 -16
  1897. data/third_party/abseil-cpp/absl/strings/str_format.h +71 -9
  1898. data/third_party/abseil-cpp/absl/strings/str_join.h +9 -15
  1899. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -2
  1900. data/third_party/abseil-cpp/absl/strings/string_view.cc +8 -19
  1901. data/third_party/abseil-cpp/absl/strings/string_view.h +6 -12
  1902. data/third_party/abseil-cpp/absl/strings/strip.h +8 -6
  1903. data/third_party/abseil-cpp/absl/strings/substitute.cc +8 -6
  1904. data/third_party/abseil-cpp/absl/strings/substitute.h +55 -21
  1905. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +9 -6
  1906. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +0 -4
  1907. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +20 -17
  1908. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +37 -31
  1909. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +22 -8
  1910. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +0 -4
  1911. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -6
  1912. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +0 -25
  1913. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +10 -4
  1914. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +172 -88
  1915. data/third_party/abseil-cpp/absl/synchronization/mutex.h +102 -55
  1916. data/third_party/abseil-cpp/absl/synchronization/notification.cc +0 -1
  1917. data/third_party/abseil-cpp/absl/synchronization/notification.h +3 -3
  1918. data/third_party/abseil-cpp/absl/time/civil_time.cc +26 -0
  1919. data/third_party/abseil-cpp/absl/time/civil_time.h +25 -0
  1920. data/third_party/abseil-cpp/absl/time/clock.cc +17 -11
  1921. data/third_party/abseil-cpp/absl/time/duration.cc +12 -11
  1922. data/third_party/abseil-cpp/absl/time/format.cc +2 -1
  1923. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +11 -7
  1924. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +1 -1
  1925. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +26 -5
  1926. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +7 -6
  1927. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +36 -35
  1928. data/third_party/abseil-cpp/absl/time/time.cc +2 -2
  1929. data/third_party/abseil-cpp/absl/time/time.h +268 -169
  1930. data/third_party/abseil-cpp/absl/types/internal/optional.h +8 -0
  1931. data/third_party/abseil-cpp/absl/types/internal/span.h +30 -19
  1932. data/third_party/abseil-cpp/absl/types/internal/variant.h +28 -40
  1933. data/third_party/abseil-cpp/absl/types/optional.h +17 -14
  1934. data/third_party/abseil-cpp/absl/types/span.h +31 -8
  1935. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
  1936. data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
  1937. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
  1938. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
  1939. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
  1940. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
  1941. data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
  1942. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
  1943. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
  1944. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
  1945. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
  1946. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +1 -1
  1947. data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
  1948. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
  1949. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
  1950. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
  1951. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
  1952. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
  1953. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
  1954. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +1 -2
  1955. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
  1956. data/third_party/cares/cares/include/ares.h +742 -0
  1957. data/third_party/cares/cares/include/ares_dns.h +112 -0
  1958. data/third_party/cares/cares/include/ares_version.h +24 -0
  1959. data/third_party/cares/cares/src/lib/ares__close_sockets.c +61 -0
  1960. data/third_party/cares/cares/src/lib/ares__get_hostent.c +260 -0
  1961. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +260 -0
  1962. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +264 -0
  1963. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +499 -0
  1964. data/third_party/cares/cares/src/lib/ares_android.c +444 -0
  1965. data/third_party/cares/cares/src/lib/ares_android.h +27 -0
  1966. data/third_party/cares/cares/src/lib/ares_create_query.c +197 -0
  1967. data/third_party/cares/cares/src/lib/ares_data.c +240 -0
  1968. data/third_party/cares/cares/src/lib/ares_data.h +74 -0
  1969. data/third_party/cares/cares/src/lib/ares_expand_name.c +300 -0
  1970. data/third_party/cares/cares/src/lib/ares_expand_string.c +67 -0
  1971. data/third_party/cares/cares/src/lib/ares_free_hostent.c +43 -0
  1972. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +59 -0
  1973. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +772 -0
  1974. data/third_party/cares/cares/src/lib/ares_getenv.c +28 -0
  1975. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +287 -0
  1976. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +534 -0
  1977. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +447 -0
  1978. data/third_party/cares/cares/src/lib/ares_init.c +2654 -0
  1979. data/third_party/cares/cares/src/lib/ares_ipv6.h +85 -0
  1980. data/third_party/cares/cares/src/lib/ares_library_init.c +200 -0
  1981. data/third_party/cares/cares/src/lib/ares_library_init.h +43 -0
  1982. data/third_party/cares/cares/src/lib/ares_nameser.h +482 -0
  1983. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +209 -0
  1984. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +212 -0
  1985. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +199 -0
  1986. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +164 -0
  1987. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +183 -0
  1988. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +177 -0
  1989. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +228 -0
  1990. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +179 -0
  1991. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +168 -0
  1992. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +214 -0
  1993. data/third_party/cares/cares/src/lib/ares_private.h +423 -0
  1994. data/third_party/cares/cares/src/lib/ares_process.c +1548 -0
  1995. data/third_party/cares/cares/src/lib/ares_query.c +180 -0
  1996. data/third_party/cares/cares/src/lib/ares_search.c +321 -0
  1997. data/third_party/cares/cares/src/lib/ares_send.c +131 -0
  1998. data/third_party/cares/cares/src/lib/ares_setup.h +220 -0
  1999. data/third_party/cares/cares/src/lib/ares_strsplit.c +178 -0
  2000. data/third_party/cares/cares/src/lib/ares_writev.h +36 -0
  2001. data/third_party/cares/cares/src/lib/config-dos.h +115 -0
  2002. data/third_party/cares/cares/src/lib/inet_net_pton.c +444 -0
  2003. data/third_party/cares/cares/src/lib/inet_ntop.c +201 -0
  2004. data/third_party/re2/re2/bitstate.cc +3 -3
  2005. data/third_party/re2/re2/dfa.cc +13 -13
  2006. data/third_party/re2/re2/nfa.cc +4 -4
  2007. data/third_party/re2/re2/onepass.cc +2 -2
  2008. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  2009. data/third_party/re2/re2/prefilter_tree.h +3 -2
  2010. data/third_party/re2/re2/prog.cc +11 -2
  2011. data/third_party/re2/re2/prog.h +17 -5
  2012. data/third_party/re2/re2/re2.cc +6 -11
  2013. data/third_party/re2/re2/re2.h +1 -1
  2014. data/third_party/re2/re2/regexp.cc +1 -2
  2015. data/third_party/re2/re2/stringpiece.h +10 -7
  2016. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  2017. data/third_party/re2/re2/unicode_groups.cc +319 -151
  2018. data/third_party/re2/re2/walker-inl.h +3 -2
  2019. data/third_party/re2/util/mutex.h +4 -4
  2020. data/third_party/upb/third_party/utf8_range/naive.c +92 -0
  2021. data/third_party/upb/third_party/utf8_range/range2-neon.c +157 -0
  2022. data/third_party/upb/third_party/utf8_range/range2-sse.c +170 -0
  2023. data/third_party/upb/third_party/utf8_range/utf8_range.h +9 -0
  2024. data/third_party/upb/upb/arena.c +277 -0
  2025. data/third_party/upb/upb/arena.h +225 -0
  2026. data/third_party/upb/upb/array.c +114 -0
  2027. data/third_party/upb/upb/array.h +83 -0
  2028. data/third_party/upb/upb/collections.h +36 -0
  2029. data/third_party/upb/upb/decode.c +685 -366
  2030. data/third_party/upb/upb/decode.h +44 -17
  2031. data/third_party/upb/upb/decode_fast.c +304 -302
  2032. data/third_party/upb/upb/decode_fast.h +18 -18
  2033. data/third_party/upb/upb/def.c +1932 -1076
  2034. data/third_party/upb/upb/def.h +336 -288
  2035. data/third_party/upb/upb/def.hpp +134 -174
  2036. data/third_party/upb/upb/encode.c +228 -186
  2037. data/third_party/upb/upb/encode.h +24 -16
  2038. data/third_party/upb/upb/extension_registry.c +93 -0
  2039. data/third_party/upb/upb/extension_registry.h +84 -0
  2040. data/third_party/upb/upb/internal/decode.h +211 -0
  2041. data/third_party/upb/upb/internal/table.h +385 -0
  2042. data/third_party/upb/upb/internal/upb.h +68 -0
  2043. data/third_party/upb/upb/internal/vsnprintf_compat.h +52 -0
  2044. data/third_party/upb/upb/json_decode.c +1512 -0
  2045. data/third_party/upb/upb/json_decode.h +47 -0
  2046. data/third_party/upb/upb/json_encode.c +780 -0
  2047. data/third_party/upb/upb/json_encode.h +65 -0
  2048. data/third_party/upb/upb/map.c +108 -0
  2049. data/third_party/upb/upb/map.h +117 -0
  2050. data/third_party/upb/upb/message_value.h +66 -0
  2051. data/third_party/upb/upb/mini_table.c +1147 -0
  2052. data/third_party/upb/upb/mini_table.h +189 -0
  2053. data/third_party/upb/upb/mini_table.hpp +112 -0
  2054. data/third_party/upb/upb/msg.c +125 -167
  2055. data/third_party/upb/upb/msg.h +18 -55
  2056. data/third_party/upb/upb/msg_internal.h +352 -284
  2057. data/third_party/upb/upb/port_def.inc +10 -1
  2058. data/third_party/upb/upb/port_undef.inc +2 -0
  2059. data/third_party/upb/upb/reflection.c +150 -267
  2060. data/third_party/upb/upb/reflection.h +36 -126
  2061. data/third_party/upb/upb/reflection.hpp +6 -6
  2062. data/third_party/upb/upb/status.c +86 -0
  2063. data/third_party/upb/upb/status.h +66 -0
  2064. data/third_party/upb/upb/table.c +233 -149
  2065. data/third_party/upb/upb/table_internal.h +9 -324
  2066. data/third_party/upb/upb/text_encode.c +115 -91
  2067. data/third_party/upb/upb/text_encode.h +10 -10
  2068. data/third_party/upb/upb/upb.c +34 -281
  2069. data/third_party/upb/upb/upb.h +79 -262
  2070. data/third_party/upb/upb/upb.hpp +31 -28
  2071. data/third_party/xxhash/xxhash.h +607 -352
  2072. data/third_party/zlib/compress.c +3 -3
  2073. data/third_party/zlib/crc32.c +975 -292
  2074. data/third_party/zlib/crc32.h +9441 -436
  2075. data/third_party/zlib/deflate.c +183 -129
  2076. data/third_party/zlib/deflate.h +12 -15
  2077. data/third_party/zlib/gzguts.h +3 -2
  2078. data/third_party/zlib/gzlib.c +6 -4
  2079. data/third_party/zlib/gzread.c +8 -12
  2080. data/third_party/zlib/gzwrite.c +26 -14
  2081. data/third_party/zlib/infback.c +12 -8
  2082. data/third_party/zlib/inffast.c +14 -14
  2083. data/third_party/zlib/inflate.c +44 -10
  2084. data/third_party/zlib/inflate.h +3 -2
  2085. data/third_party/zlib/inftrees.c +3 -3
  2086. data/third_party/zlib/inftrees.h +1 -1
  2087. data/third_party/zlib/trees.c +85 -107
  2088. data/third_party/zlib/uncompr.c +2 -2
  2089. data/third_party/zlib/zconf.h +16 -3
  2090. data/third_party/zlib/zlib.h +129 -106
  2091. data/third_party/zlib/zutil.c +11 -9
  2092. data/third_party/zlib/zutil.h +13 -9
  2093. metadata +790 -298
  2094. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  2095. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +0 -390
  2096. data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -42
  2097. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +0 -44
  2098. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +0 -83
  2099. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -60
  2100. data/src/core/ext/filters/client_channel/lb_policy.cc +0 -131
  2101. data/src/core/ext/filters/client_channel/lb_policy.h +0 -441
  2102. data/src/core/ext/filters/client_channel/lb_policy_factory.h +0 -48
  2103. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +0 -185
  2104. data/src/core/ext/filters/client_channel/lb_policy_registry.h +0 -65
  2105. data/src/core/ext/filters/client_channel/proxy_mapper.h +0 -54
  2106. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +0 -89
  2107. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +0 -50
  2108. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +0 -31
  2109. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +0 -28
  2110. data/src/core/ext/filters/client_channel/resolver.cc +0 -87
  2111. data/src/core/ext/filters/client_channel/resolver.h +0 -136
  2112. data/src/core/ext/filters/client_channel/resolver_factory.h +0 -75
  2113. data/src/core/ext/filters/client_channel/resolver_registry.cc +0 -194
  2114. data/src/core/ext/filters/client_channel/resolver_registry.h +0 -88
  2115. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -189
  2116. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -99
  2117. data/src/core/ext/filters/client_channel/server_address.cc +0 -170
  2118. data/src/core/ext/filters/client_channel/server_address.h +0 -144
  2119. data/src/core/ext/filters/client_channel/subchannel_interface.h +0 -130
  2120. data/src/core/ext/filters/client_idle/client_idle_filter.cc +0 -264
  2121. data/src/core/ext/filters/client_idle/idle_filter_state.cc +0 -96
  2122. data/src/core/ext/filters/client_idle/idle_filter_state.h +0 -66
  2123. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -181
  2124. data/src/core/ext/filters/fault_injection/service_config_parser.h +0 -85
  2125. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -553
  2126. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -53
  2127. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -398
  2128. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +0 -31
  2129. data/src/core/ext/filters/max_age/max_age_filter.cc +0 -560
  2130. data/src/core/ext/filters/max_age/max_age_filter.h +0 -26
  2131. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -67
  2132. data/src/core/ext/service_config/service_config.cc +0 -227
  2133. data/src/core/ext/service_config/service_config.h +0 -127
  2134. data/src/core/ext/service_config/service_config_call_data.h +0 -72
  2135. data/src/core/ext/service_config/service_config_parser.cc +0 -89
  2136. data/src/core/ext/service_config/service_config_parser.h +0 -97
  2137. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +0 -122
  2138. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +0 -92
  2139. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +0 -192
  2140. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +0 -52
  2141. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +0 -79
  2142. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +0 -125
  2143. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -37
  2144. data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
  2145. data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
  2146. data/src/core/ext/transport/chttp2/transport/hpack_utils.h +0 -30
  2147. data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
  2148. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +0 -38
  2149. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +0 -64
  2150. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -38
  2151. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +0 -64
  2152. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -38
  2153. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +0 -64
  2154. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -38
  2155. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +0 -64
  2156. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +0 -38
  2157. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +0 -64
  2158. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +0 -102
  2159. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +0 -306
  2160. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +0 -56
  2161. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +0 -135
  2162. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +0 -115
  2163. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +0 -371
  2164. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +0 -67
  2165. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +0 -35
  2166. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +0 -68
  2167. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +0 -35
  2168. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +0 -67
  2169. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +0 -35
  2170. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +0 -75
  2171. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +0 -35
  2172. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +0 -69
  2173. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +0 -35
  2174. data/src/core/ext/xds/certificate_provider_factory.h +0 -61
  2175. data/src/core/ext/xds/certificate_provider_registry.cc +0 -103
  2176. data/src/core/ext/xds/certificate_provider_registry.h +0 -57
  2177. data/src/core/lib/channel/handshaker.cc +0 -222
  2178. data/src/core/lib/channel/handshaker.h +0 -161
  2179. data/src/core/lib/channel/handshaker_factory.h +0 -50
  2180. data/src/core/lib/channel/handshaker_registry.cc +0 -50
  2181. data/src/core/lib/channel/handshaker_registry.h +0 -71
  2182. data/src/core/lib/compression/algorithm_metadata.h +0 -62
  2183. data/src/core/lib/compression/compression_args.cc +0 -140
  2184. data/src/core/lib/compression/compression_args.h +0 -58
  2185. data/src/core/lib/compression/stream_compression.cc +0 -81
  2186. data/src/core/lib/compression/stream_compression.h +0 -117
  2187. data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
  2188. data/src/core/lib/compression/stream_compression_gzip.h +0 -28
  2189. data/src/core/lib/compression/stream_compression_identity.cc +0 -91
  2190. data/src/core/lib/compression/stream_compression_identity.h +0 -29
  2191. data/src/core/lib/event_engine/event_engine_factory.cc +0 -49
  2192. data/src/core/lib/event_engine/event_engine_factory.h +0 -33
  2193. data/src/core/lib/event_engine/sockaddr.cc +0 -40
  2194. data/src/core/lib/event_engine/sockaddr.h +0 -44
  2195. data/src/core/lib/gpr/env.h +0 -40
  2196. data/src/core/lib/gpr/env_linux.cc +0 -75
  2197. data/src/core/lib/gpr/env_posix.cc +0 -46
  2198. data/src/core/lib/gpr/env_windows.cc +0 -74
  2199. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  2200. data/src/core/lib/gpr/murmur_hash.h +0 -29
  2201. data/src/core/lib/gpr/string_windows.h +0 -32
  2202. data/src/core/lib/gpr/tls.h +0 -157
  2203. data/src/core/lib/gprpp/arena.cc +0 -104
  2204. data/src/core/lib/gprpp/arena.h +0 -131
  2205. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +0 -32
  2206. data/src/core/lib/iomgr/error_internal.h +0 -66
  2207. data/src/core/lib/iomgr/ev_epollex_linux.cc +0 -1654
  2208. data/src/core/lib/iomgr/ev_epollex_linux.h +0 -30
  2209. data/src/core/lib/iomgr/event_engine/closure.cc +0 -77
  2210. data/src/core/lib/iomgr/event_engine/closure.h +0 -42
  2211. data/src/core/lib/iomgr/event_engine/endpoint.cc +0 -172
  2212. data/src/core/lib/iomgr/event_engine/endpoint.h +0 -52
  2213. data/src/core/lib/iomgr/event_engine/iomgr.cc +0 -84
  2214. data/src/core/lib/iomgr/event_engine/pollset.cc +0 -88
  2215. data/src/core/lib/iomgr/event_engine/pollset.h +0 -25
  2216. data/src/core/lib/iomgr/event_engine/promise.h +0 -51
  2217. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +0 -41
  2218. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +0 -35
  2219. data/src/core/lib/iomgr/event_engine/resolver.cc +0 -115
  2220. data/src/core/lib/iomgr/event_engine/tcp.cc +0 -295
  2221. data/src/core/lib/iomgr/event_engine/timer.cc +0 -63
  2222. data/src/core/lib/iomgr/executor/mpmcqueue.cc +0 -182
  2223. data/src/core/lib/iomgr/executor/mpmcqueue.h +0 -171
  2224. data/src/core/lib/iomgr/executor/threadpool.cc +0 -136
  2225. data/src/core/lib/iomgr/executor/threadpool.h +0 -150
  2226. data/src/core/lib/iomgr/iomgr_custom.cc +0 -79
  2227. data/src/core/lib/iomgr/iomgr_custom.h +0 -49
  2228. data/src/core/lib/iomgr/is_epollexclusive_available.cc +0 -119
  2229. data/src/core/lib/iomgr/is_epollexclusive_available.h +0 -36
  2230. data/src/core/lib/iomgr/pollset_custom.cc +0 -105
  2231. data/src/core/lib/iomgr/pollset_custom.h +0 -37
  2232. data/src/core/lib/iomgr/pollset_set_custom.cc +0 -47
  2233. data/src/core/lib/iomgr/pollset_set_custom.h +0 -26
  2234. data/src/core/lib/iomgr/resolve_address_custom.cc +0 -169
  2235. data/src/core/lib/iomgr/resolve_address_custom.h +0 -44
  2236. data/src/core/lib/iomgr/sys_epoll_wrapper.h +0 -30
  2237. data/src/core/lib/iomgr/tcp_client_custom.cc +0 -146
  2238. data/src/core/lib/iomgr/tcp_custom.cc +0 -350
  2239. data/src/core/lib/iomgr/tcp_custom.h +0 -85
  2240. data/src/core/lib/iomgr/tcp_server_custom.cc +0 -457
  2241. data/src/core/lib/iomgr/time_averaged_stats.cc +0 -64
  2242. data/src/core/lib/iomgr/time_averaged_stats.h +0 -72
  2243. data/src/core/lib/iomgr/timer_custom.cc +0 -96
  2244. data/src/core/lib/iomgr/timer_custom.h +0 -43
  2245. data/src/core/lib/iomgr/work_serializer.cc +0 -226
  2246. data/src/core/lib/iomgr/work_serializer.h +0 -93
  2247. data/src/core/lib/profiling/basic_timers.cc +0 -295
  2248. data/src/core/lib/profiling/stap_timers.cc +0 -50
  2249. data/src/core/lib/profiling/timers.h +0 -94
  2250. data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +0 -173
  2251. data/src/core/lib/security/authorization/sdk_server_authz_filter.h +0 -67
  2252. data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
  2253. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +0 -170
  2254. data/src/core/lib/security/security_connector/load_system_roots_linux.h +0 -46
  2255. data/src/core/lib/slice/slice_api.cc +0 -39
  2256. data/src/core/lib/slice/slice_intern.cc +0 -367
  2257. data/src/core/lib/slice/slice_refcount_base.h +0 -181
  2258. data/src/core/lib/slice/slice_split.cc +0 -100
  2259. data/src/core/lib/slice/slice_split.h +0 -40
  2260. data/src/core/lib/slice/slice_utils.h +0 -200
  2261. data/src/core/lib/slice/static_slice.cc +0 -377
  2262. data/src/core/lib/slice/static_slice.h +0 -300
  2263. data/src/core/lib/surface/init_secure.cc +0 -103
  2264. data/src/core/lib/transport/byte_stream.cc +0 -162
  2265. data/src/core/lib/transport/byte_stream.h +0 -166
  2266. data/src/core/lib/transport/metadata.cc +0 -714
  2267. data/src/core/lib/transport/metadata.h +0 -449
  2268. data/src/core/lib/transport/static_metadata.cc +0 -1032
  2269. data/src/core/lib/transport/static_metadata.h +0 -322
  2270. data/src/core/lib/transport/status_metadata.cc +0 -63
  2271. data/src/core/lib/transport/status_metadata.h +0 -48
  2272. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +0 -50
  2273. data/third_party/cares/cares/ares.h +0 -670
  2274. data/third_party/cares/cares/ares__close_sockets.c +0 -61
  2275. data/third_party/cares/cares/ares__get_hostent.c +0 -261
  2276. data/third_party/cares/cares/ares_create_query.c +0 -206
  2277. data/third_party/cares/cares/ares_data.c +0 -222
  2278. data/third_party/cares/cares/ares_data.h +0 -72
  2279. data/third_party/cares/cares/ares_dns.h +0 -103
  2280. data/third_party/cares/cares/ares_expand_name.c +0 -209
  2281. data/third_party/cares/cares/ares_expand_string.c +0 -70
  2282. data/third_party/cares/cares/ares_free_hostent.c +0 -41
  2283. data/third_party/cares/cares/ares_getenv.c +0 -30
  2284. data/third_party/cares/cares/ares_gethostbyaddr.c +0 -294
  2285. data/third_party/cares/cares/ares_gethostbyname.c +0 -529
  2286. data/third_party/cares/cares/ares_getnameinfo.c +0 -453
  2287. data/third_party/cares/cares/ares_getopt.c +0 -122
  2288. data/third_party/cares/cares/ares_getopt.h +0 -53
  2289. data/third_party/cares/cares/ares_init.c +0 -2615
  2290. data/third_party/cares/cares/ares_ipv6.h +0 -78
  2291. data/third_party/cares/cares/ares_library_init.c +0 -195
  2292. data/third_party/cares/cares/ares_library_init.h +0 -43
  2293. data/third_party/cares/cares/ares_parse_a_reply.c +0 -264
  2294. data/third_party/cares/cares/ares_parse_aaaa_reply.c +0 -264
  2295. data/third_party/cares/cares/ares_parse_mx_reply.c +0 -170
  2296. data/third_party/cares/cares/ares_parse_naptr_reply.c +0 -194
  2297. data/third_party/cares/cares/ares_parse_ns_reply.c +0 -183
  2298. data/third_party/cares/cares/ares_parse_ptr_reply.c +0 -221
  2299. data/third_party/cares/cares/ares_parse_soa_reply.c +0 -133
  2300. data/third_party/cares/cares/ares_parse_srv_reply.c +0 -179
  2301. data/third_party/cares/cares/ares_parse_txt_reply.c +0 -220
  2302. data/third_party/cares/cares/ares_private.h +0 -382
  2303. data/third_party/cares/cares/ares_process.c +0 -1473
  2304. data/third_party/cares/cares/ares_query.c +0 -186
  2305. data/third_party/cares/cares/ares_search.c +0 -323
  2306. data/third_party/cares/cares/ares_send.c +0 -137
  2307. data/third_party/cares/cares/ares_setup.h +0 -217
  2308. data/third_party/cares/cares/ares_strsplit.c +0 -174
  2309. data/third_party/cares/cares/ares_version.h +0 -24
  2310. data/third_party/cares/cares/inet_net_pton.c +0 -450
  2311. data/third_party/cares/cares/inet_ntop.c +0 -207
  2312. data/third_party/upb/upb/decode_internal.h +0 -194
  2313. data/third_party/upb/upb/upb_internal.h +0 -58
  2314. /data/third_party/cares/cares/{ares_rules.h → include/ares_rules.h} +0 -0
  2315. /data/third_party/cares/cares/{ares__read_line.c → src/lib/ares__read_line.c} +0 -0
  2316. /data/third_party/cares/cares/{ares__timeval.c → src/lib/ares__timeval.c} +0 -0
  2317. /data/third_party/cares/cares/{ares_cancel.c → src/lib/ares_cancel.c} +0 -0
  2318. /data/third_party/cares/cares/{ares_destroy.c → src/lib/ares_destroy.c} +0 -0
  2319. /data/third_party/cares/cares/{ares_fds.c → src/lib/ares_fds.c} +0 -0
  2320. /data/third_party/cares/cares/{ares_free_string.c → src/lib/ares_free_string.c} +0 -0
  2321. /data/third_party/cares/cares/{ares_getenv.h → src/lib/ares_getenv.h} +0 -0
  2322. /data/third_party/cares/cares/{ares_getsock.c → src/lib/ares_getsock.c} +0 -0
  2323. /data/third_party/cares/cares/{ares_inet_net_pton.h → src/lib/ares_inet_net_pton.h} +0 -0
  2324. /data/third_party/cares/cares/{ares_iphlpapi.h → src/lib/ares_iphlpapi.h} +0 -0
  2325. /data/third_party/cares/cares/{ares_llist.c → src/lib/ares_llist.c} +0 -0
  2326. /data/third_party/cares/cares/{ares_llist.h → src/lib/ares_llist.h} +0 -0
  2327. /data/third_party/cares/cares/{ares_mkquery.c → src/lib/ares_mkquery.c} +0 -0
  2328. /data/third_party/cares/cares/{ares_nowarn.c → src/lib/ares_nowarn.c} +0 -0
  2329. /data/third_party/cares/cares/{ares_nowarn.h → src/lib/ares_nowarn.h} +0 -0
  2330. /data/third_party/cares/cares/{ares_options.c → src/lib/ares_options.c} +0 -0
  2331. /data/third_party/cares/cares/{ares_platform.c → src/lib/ares_platform.c} +0 -0
  2332. /data/third_party/cares/cares/{ares_platform.h → src/lib/ares_platform.h} +0 -0
  2333. /data/third_party/cares/cares/{ares_strcasecmp.c → src/lib/ares_strcasecmp.c} +0 -0
  2334. /data/third_party/cares/cares/{ares_strcasecmp.h → src/lib/ares_strcasecmp.h} +0 -0
  2335. /data/third_party/cares/cares/{ares_strdup.c → src/lib/ares_strdup.c} +0 -0
  2336. /data/third_party/cares/cares/{ares_strdup.h → src/lib/ares_strdup.h} +0 -0
  2337. /data/third_party/cares/cares/{ares_strerror.c → src/lib/ares_strerror.c} +0 -0
  2338. /data/third_party/cares/cares/{ares_strsplit.h → src/lib/ares_strsplit.h} +0 -0
  2339. /data/third_party/cares/cares/{ares_timeout.c → src/lib/ares_timeout.c} +0 -0
  2340. /data/third_party/cares/cares/{ares_version.c → src/lib/ares_version.c} +0 -0
  2341. /data/third_party/cares/cares/{ares_writev.c → src/lib/ares_writev.c} +0 -0
  2342. /data/third_party/cares/cares/{bitncmp.c → src/lib/bitncmp.c} +0 -0
  2343. /data/third_party/cares/cares/{bitncmp.h → src/lib/bitncmp.h} +0 -0
  2344. /data/third_party/cares/cares/{config-win32.h → src/lib/config-win32.h} +0 -0
  2345. /data/third_party/cares/cares/{setup_once.h → src/lib/setup_once.h} +0 -0
  2346. /data/third_party/cares/cares/{windows_port.c → src/lib/windows_port.c} +0 -0
@@ -0,0 +1,2654 @@
1
+
2
+ /* Copyright 1998 by the Massachusetts Institute of Technology.
3
+ * Copyright (C) 2007-2013 by Daniel Stenberg
4
+ *
5
+ * Permission to use, copy, modify, and distribute this
6
+ * software and its documentation for any purpose and without
7
+ * fee is hereby granted, provided that the above copyright
8
+ * notice appear in all copies and that both that copyright
9
+ * notice and this permission notice appear in supporting
10
+ * documentation, and that the name of M.I.T. not be used in
11
+ * advertising or publicity pertaining to distribution of the
12
+ * software without specific, written prior permission.
13
+ * M.I.T. makes no representations about the suitability of
14
+ * this software for any purpose. It is provided "as is"
15
+ * without express or implied warranty.
16
+ */
17
+
18
+ #include "ares_setup.h"
19
+
20
+ #ifdef HAVE_SYS_PARAM_H
21
+ #include <sys/param.h>
22
+ #endif
23
+
24
+ #ifdef HAVE_NETINET_IN_H
25
+ #include <netinet/in.h>
26
+ #endif
27
+
28
+ #ifdef HAVE_NETDB_H
29
+ #include <netdb.h>
30
+ #endif
31
+
32
+ #ifdef HAVE_ARPA_INET_H
33
+ #include <arpa/inet.h>
34
+ #endif
35
+
36
+ #include "ares_nameser.h"
37
+
38
+ #if defined(ANDROID) || defined(__ANDROID__)
39
+ #include <sys/system_properties.h>
40
+ #include "ares_android.h"
41
+ /* From the Bionic sources */
42
+ #define DNS_PROP_NAME_PREFIX "net.dns"
43
+ #define MAX_DNS_PROPERTIES 8
44
+ #endif
45
+
46
+ #if defined(CARES_USE_LIBRESOLV)
47
+ #include <resolv.h>
48
+ #endif
49
+
50
+ #include "ares.h"
51
+ #include "ares_inet_net_pton.h"
52
+ #include "ares_library_init.h"
53
+ #include "ares_nowarn.h"
54
+ #include "ares_platform.h"
55
+ #include "ares_private.h"
56
+
57
+ #ifdef WATT32
58
+ #undef WIN32 /* Redefined in MingW/MSVC headers */
59
+ #endif
60
+
61
+ static int init_by_options(ares_channel channel,
62
+ const struct ares_options *options,
63
+ int optmask);
64
+ static int init_by_environment(ares_channel channel);
65
+ static int init_by_resolv_conf(ares_channel channel);
66
+ static int init_by_defaults(ares_channel channel);
67
+
68
+ #ifndef WATT32
69
+ static int config_nameserver(struct server_state **servers, int *nservers,
70
+ char *str);
71
+ #endif
72
+ static int set_search(ares_channel channel, const char *str);
73
+ static int set_options(ares_channel channel, const char *str);
74
+ static const char *try_option(const char *p, const char *q, const char *opt);
75
+ static int init_id_key(rc4_key* key,int key_data_len);
76
+
77
+ static int config_sortlist(struct apattern **sortlist, int *nsort,
78
+ const char *str);
79
+ static int sortlist_alloc(struct apattern **sortlist, int *nsort,
80
+ struct apattern *pat);
81
+ static int ip_addr(const char *s, ares_ssize_t len, struct in_addr *addr);
82
+ static void natural_mask(struct apattern *pat);
83
+ #if !defined(WIN32) && !defined(WATT32) && \
84
+ !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV)
85
+ static int config_domain(ares_channel channel, char *str);
86
+ static int config_lookup(ares_channel channel, const char *str,
87
+ const char *bindch, const char *altbindch,
88
+ const char *filech);
89
+ static char *try_config(char *s, const char *opt, char scc);
90
+ #endif
91
+
92
+ #define ARES_CONFIG_CHECK(x) (x->lookups && x->nsort > -1 && \
93
+ x->nservers > -1 && \
94
+ x->ndomains > -1 && \
95
+ x->ndots > -1 && x->timeout > -1 && \
96
+ x->tries > -1)
97
+
98
+ int ares_init(ares_channel *channelptr)
99
+ {
100
+ return ares_init_options(channelptr, NULL, 0);
101
+ }
102
+
103
+ int ares_init_options(ares_channel *channelptr, struct ares_options *options,
104
+ int optmask)
105
+ {
106
+ ares_channel channel;
107
+ int i;
108
+ int status = ARES_SUCCESS;
109
+ struct timeval now;
110
+
111
+ if (ares_library_initialized() != ARES_SUCCESS)
112
+ return ARES_ENOTINITIALIZED; /* LCOV_EXCL_LINE: n/a on non-WinSock */
113
+
114
+ channel = ares_malloc(sizeof(struct ares_channeldata));
115
+ if (!channel) {
116
+ *channelptr = NULL;
117
+ return ARES_ENOMEM;
118
+ }
119
+
120
+ now = ares__tvnow();
121
+
122
+ /* Set everything to distinguished values so we know they haven't
123
+ * been set yet.
124
+ */
125
+ channel->flags = -1;
126
+ channel->timeout = -1;
127
+ channel->tries = -1;
128
+ channel->ndots = -1;
129
+ channel->rotate = -1;
130
+ channel->udp_port = -1;
131
+ channel->tcp_port = -1;
132
+ channel->ednspsz = -1;
133
+ channel->socket_send_buffer_size = -1;
134
+ channel->socket_receive_buffer_size = -1;
135
+ channel->nservers = -1;
136
+ channel->ndomains = -1;
137
+ channel->nsort = -1;
138
+ channel->tcp_connection_generation = 0;
139
+ channel->lookups = NULL;
140
+ channel->domains = NULL;
141
+ channel->sortlist = NULL;
142
+ channel->servers = NULL;
143
+ channel->sock_state_cb = NULL;
144
+ channel->sock_state_cb_data = NULL;
145
+ channel->sock_create_cb = NULL;
146
+ channel->sock_create_cb_data = NULL;
147
+ channel->sock_config_cb = NULL;
148
+ channel->sock_config_cb_data = NULL;
149
+ channel->sock_funcs = NULL;
150
+ channel->sock_func_cb_data = NULL;
151
+ channel->resolvconf_path = NULL;
152
+
153
+ channel->last_server = 0;
154
+ channel->last_timeout_processed = (time_t)now.tv_sec;
155
+
156
+ memset(&channel->local_dev_name, 0, sizeof(channel->local_dev_name));
157
+ channel->local_ip4 = 0;
158
+ memset(&channel->local_ip6, 0, sizeof(channel->local_ip6));
159
+
160
+ /* Initialize our lists of queries */
161
+ ares__init_list_head(&(channel->all_queries));
162
+ for (i = 0; i < ARES_QID_TABLE_SIZE; i++)
163
+ {
164
+ ares__init_list_head(&(channel->queries_by_qid[i]));
165
+ }
166
+ for (i = 0; i < ARES_TIMEOUT_TABLE_SIZE; i++)
167
+ {
168
+ ares__init_list_head(&(channel->queries_by_timeout[i]));
169
+ }
170
+
171
+ /* Initialize configuration by each of the four sources, from highest
172
+ * precedence to lowest.
173
+ */
174
+
175
+ status = init_by_options(channel, options, optmask);
176
+ if (status != ARES_SUCCESS) {
177
+ DEBUGF(fprintf(stderr, "Error: init_by_options failed: %s\n",
178
+ ares_strerror(status)));
179
+ /* If we fail to apply user-specified options, fail the whole init process */
180
+ goto done;
181
+ }
182
+ status = init_by_environment(channel);
183
+ if (status != ARES_SUCCESS)
184
+ DEBUGF(fprintf(stderr, "Error: init_by_environment failed: %s\n",
185
+ ares_strerror(status)));
186
+ if (status == ARES_SUCCESS) {
187
+ status = init_by_resolv_conf(channel);
188
+ if (status != ARES_SUCCESS)
189
+ DEBUGF(fprintf(stderr, "Error: init_by_resolv_conf failed: %s\n",
190
+ ares_strerror(status)));
191
+ }
192
+
193
+ /*
194
+ * No matter what failed or succeeded, seed defaults to provide
195
+ * useful behavior for things that we missed.
196
+ */
197
+ status = init_by_defaults(channel);
198
+ if (status != ARES_SUCCESS)
199
+ DEBUGF(fprintf(stderr, "Error: init_by_defaults failed: %s\n",
200
+ ares_strerror(status)));
201
+
202
+ /* Generate random key */
203
+
204
+ if (status == ARES_SUCCESS) {
205
+ status = init_id_key(&channel->id_key, ARES_ID_KEY_LEN);
206
+ if (status == ARES_SUCCESS)
207
+ channel->next_id = ares__generate_new_id(&channel->id_key);
208
+ else
209
+ DEBUGF(fprintf(stderr, "Error: init_id_key failed: %s\n",
210
+ ares_strerror(status)));
211
+ }
212
+
213
+ done:
214
+ if (status != ARES_SUCCESS)
215
+ {
216
+ /* Something failed; clean up memory we may have allocated. */
217
+ if (channel->servers)
218
+ ares_free(channel->servers);
219
+ if (channel->ndomains != -1)
220
+ ares_strsplit_free(channel->domains, channel->ndomains);
221
+ if (channel->sortlist)
222
+ ares_free(channel->sortlist);
223
+ if(channel->lookups)
224
+ ares_free(channel->lookups);
225
+ if(channel->resolvconf_path)
226
+ ares_free(channel->resolvconf_path);
227
+ ares_free(channel);
228
+ return status;
229
+ }
230
+
231
+ /* Trim to one server if ARES_FLAG_PRIMARY is set. */
232
+ if ((channel->flags & ARES_FLAG_PRIMARY) && channel->nservers > 1)
233
+ channel->nservers = 1;
234
+
235
+ ares__init_servers_state(channel);
236
+
237
+ *channelptr = channel;
238
+ return ARES_SUCCESS;
239
+ }
240
+
241
+ /* ares_dup() duplicates a channel handle with all its options and returns a
242
+ new channel handle */
243
+ int ares_dup(ares_channel *dest, ares_channel src)
244
+ {
245
+ struct ares_options opts;
246
+ struct ares_addr_port_node *servers;
247
+ int non_v4_default_port = 0;
248
+ int i, rc;
249
+ int optmask;
250
+
251
+ *dest = NULL; /* in case of failure return NULL explicitly */
252
+
253
+ /* First get the options supported by the old ares_save_options() function,
254
+ which is most of them */
255
+ rc = ares_save_options(src, &opts, &optmask);
256
+ if(rc)
257
+ {
258
+ ares_destroy_options(&opts);
259
+ return rc;
260
+ }
261
+
262
+ /* Then create the new channel with those options */
263
+ rc = ares_init_options(dest, &opts, optmask);
264
+
265
+ /* destroy the options copy to not leak any memory */
266
+ ares_destroy_options(&opts);
267
+
268
+ if(rc)
269
+ return rc;
270
+
271
+ /* Now clone the options that ares_save_options() doesn't support. */
272
+ (*dest)->sock_create_cb = src->sock_create_cb;
273
+ (*dest)->sock_create_cb_data = src->sock_create_cb_data;
274
+ (*dest)->sock_config_cb = src->sock_config_cb;
275
+ (*dest)->sock_config_cb_data = src->sock_config_cb_data;
276
+ (*dest)->sock_funcs = src->sock_funcs;
277
+ (*dest)->sock_func_cb_data = src->sock_func_cb_data;
278
+
279
+ strncpy((*dest)->local_dev_name, src->local_dev_name,
280
+ sizeof((*dest)->local_dev_name));
281
+ (*dest)->local_ip4 = src->local_ip4;
282
+ memcpy((*dest)->local_ip6, src->local_ip6, sizeof(src->local_ip6));
283
+
284
+ /* Full name server cloning required if there is a non-IPv4, or non-default port, nameserver */
285
+ for (i = 0; i < src->nservers; i++)
286
+ {
287
+ if ((src->servers[i].addr.family != AF_INET) ||
288
+ (src->servers[i].addr.udp_port != 0) ||
289
+ (src->servers[i].addr.tcp_port != 0)) {
290
+ non_v4_default_port++;
291
+ break;
292
+ }
293
+ }
294
+ if (non_v4_default_port) {
295
+ rc = ares_get_servers_ports(src, &servers);
296
+ if (rc != ARES_SUCCESS) {
297
+ ares_destroy(*dest);
298
+ *dest = NULL;
299
+ return rc;
300
+ }
301
+ rc = ares_set_servers_ports(*dest, servers);
302
+ ares_free_data(servers);
303
+ if (rc != ARES_SUCCESS) {
304
+ ares_destroy(*dest);
305
+ *dest = NULL;
306
+ return rc;
307
+ }
308
+ }
309
+
310
+ return ARES_SUCCESS; /* everything went fine */
311
+ }
312
+
313
+ /* Save options from initialized channel */
314
+ int ares_save_options(ares_channel channel, struct ares_options *options,
315
+ int *optmask)
316
+ {
317
+ int i, j;
318
+ int ipv4_nservers = 0;
319
+
320
+ /* Zero everything out */
321
+ memset(options, 0, sizeof(struct ares_options));
322
+
323
+ if (!ARES_CONFIG_CHECK(channel))
324
+ return ARES_ENODATA;
325
+
326
+ /* Traditionally the optmask wasn't saved in the channel struct so it was
327
+ recreated here. ROTATE is the first option that has no struct field of
328
+ its own in the public config struct */
329
+ (*optmask) = (ARES_OPT_FLAGS|ARES_OPT_TRIES|ARES_OPT_NDOTS|
330
+ ARES_OPT_UDP_PORT|ARES_OPT_TCP_PORT|ARES_OPT_SOCK_STATE_CB|
331
+ ARES_OPT_SERVERS|ARES_OPT_DOMAINS|ARES_OPT_LOOKUPS|
332
+ ARES_OPT_SORTLIST|ARES_OPT_TIMEOUTMS);
333
+ (*optmask) |= (channel->rotate ? ARES_OPT_ROTATE : ARES_OPT_NOROTATE);
334
+
335
+ if (channel->resolvconf_path)
336
+ (*optmask) |= ARES_OPT_RESOLVCONF;
337
+
338
+ /* Copy easy stuff */
339
+ options->flags = channel->flags;
340
+
341
+ /* We return full millisecond resolution but that's only because we don't
342
+ set the ARES_OPT_TIMEOUT anymore, only the new ARES_OPT_TIMEOUTMS */
343
+ options->timeout = channel->timeout;
344
+ options->tries = channel->tries;
345
+ options->ndots = channel->ndots;
346
+ options->udp_port = ntohs(aresx_sitous(channel->udp_port));
347
+ options->tcp_port = ntohs(aresx_sitous(channel->tcp_port));
348
+ options->sock_state_cb = channel->sock_state_cb;
349
+ options->sock_state_cb_data = channel->sock_state_cb_data;
350
+
351
+ /* Copy IPv4 servers that use the default port */
352
+ if (channel->nservers) {
353
+ for (i = 0; i < channel->nservers; i++)
354
+ {
355
+ if ((channel->servers[i].addr.family == AF_INET) &&
356
+ (channel->servers[i].addr.udp_port == 0) &&
357
+ (channel->servers[i].addr.tcp_port == 0))
358
+ ipv4_nservers++;
359
+ }
360
+ if (ipv4_nservers) {
361
+ options->servers = ares_malloc(ipv4_nservers * sizeof(struct in_addr));
362
+ if (!options->servers)
363
+ return ARES_ENOMEM;
364
+ for (i = j = 0; i < channel->nservers; i++)
365
+ {
366
+ if ((channel->servers[i].addr.family == AF_INET) &&
367
+ (channel->servers[i].addr.udp_port == 0) &&
368
+ (channel->servers[i].addr.tcp_port == 0))
369
+ memcpy(&options->servers[j++],
370
+ &channel->servers[i].addr.addrV4,
371
+ sizeof(channel->servers[i].addr.addrV4));
372
+ }
373
+ }
374
+ }
375
+ options->nservers = ipv4_nservers;
376
+
377
+ /* copy domains */
378
+ if (channel->ndomains) {
379
+ options->domains = ares_malloc(channel->ndomains * sizeof(char *));
380
+ if (!options->domains)
381
+ return ARES_ENOMEM;
382
+
383
+ for (i = 0; i < channel->ndomains; i++)
384
+ {
385
+ options->ndomains = i;
386
+ options->domains[i] = ares_strdup(channel->domains[i]);
387
+ if (!options->domains[i])
388
+ return ARES_ENOMEM;
389
+ }
390
+ }
391
+ options->ndomains = channel->ndomains;
392
+
393
+ /* copy lookups */
394
+ if (channel->lookups) {
395
+ options->lookups = ares_strdup(channel->lookups);
396
+ if (!options->lookups && channel->lookups)
397
+ return ARES_ENOMEM;
398
+ }
399
+
400
+ /* copy sortlist */
401
+ if (channel->nsort) {
402
+ options->sortlist = ares_malloc(channel->nsort * sizeof(struct apattern));
403
+ if (!options->sortlist)
404
+ return ARES_ENOMEM;
405
+ for (i = 0; i < channel->nsort; i++)
406
+ options->sortlist[i] = channel->sortlist[i];
407
+ }
408
+ options->nsort = channel->nsort;
409
+
410
+ /* copy path for resolv.conf file */
411
+ if (channel->resolvconf_path) {
412
+ options->resolvconf_path = ares_strdup(channel->resolvconf_path);
413
+ if (!options->resolvconf_path)
414
+ return ARES_ENOMEM;
415
+ }
416
+
417
+ return ARES_SUCCESS;
418
+ }
419
+
420
+ static int init_by_options(ares_channel channel,
421
+ const struct ares_options *options,
422
+ int optmask)
423
+ {
424
+ int i;
425
+
426
+ /* Easy stuff. */
427
+ if ((optmask & ARES_OPT_FLAGS) && channel->flags == -1)
428
+ channel->flags = options->flags;
429
+ if ((optmask & ARES_OPT_TIMEOUTMS) && channel->timeout == -1)
430
+ channel->timeout = options->timeout;
431
+ else if ((optmask & ARES_OPT_TIMEOUT) && channel->timeout == -1)
432
+ channel->timeout = options->timeout * 1000;
433
+ if ((optmask & ARES_OPT_TRIES) && channel->tries == -1)
434
+ channel->tries = options->tries;
435
+ if ((optmask & ARES_OPT_NDOTS) && channel->ndots == -1)
436
+ channel->ndots = options->ndots;
437
+ if ((optmask & ARES_OPT_ROTATE) && channel->rotate == -1)
438
+ channel->rotate = 1;
439
+ if ((optmask & ARES_OPT_NOROTATE) && channel->rotate == -1)
440
+ channel->rotate = 0;
441
+ if ((optmask & ARES_OPT_UDP_PORT) && channel->udp_port == -1)
442
+ channel->udp_port = htons(options->udp_port);
443
+ if ((optmask & ARES_OPT_TCP_PORT) && channel->tcp_port == -1)
444
+ channel->tcp_port = htons(options->tcp_port);
445
+ if ((optmask & ARES_OPT_SOCK_STATE_CB) && channel->sock_state_cb == NULL)
446
+ {
447
+ channel->sock_state_cb = options->sock_state_cb;
448
+ channel->sock_state_cb_data = options->sock_state_cb_data;
449
+ }
450
+ if ((optmask & ARES_OPT_SOCK_SNDBUF)
451
+ && channel->socket_send_buffer_size == -1)
452
+ channel->socket_send_buffer_size = options->socket_send_buffer_size;
453
+ if ((optmask & ARES_OPT_SOCK_RCVBUF)
454
+ && channel->socket_receive_buffer_size == -1)
455
+ channel->socket_receive_buffer_size = options->socket_receive_buffer_size;
456
+
457
+ if ((optmask & ARES_OPT_EDNSPSZ) && channel->ednspsz == -1)
458
+ channel->ednspsz = options->ednspsz;
459
+
460
+ /* Copy the IPv4 servers, if given. */
461
+ if ((optmask & ARES_OPT_SERVERS) && channel->nservers == -1)
462
+ {
463
+ /* Avoid zero size allocations at any cost */
464
+ if (options->nservers > 0)
465
+ {
466
+ channel->servers =
467
+ ares_malloc(options->nservers * sizeof(struct server_state));
468
+ if (!channel->servers)
469
+ return ARES_ENOMEM;
470
+ for (i = 0; i < options->nservers; i++)
471
+ {
472
+ channel->servers[i].addr.family = AF_INET;
473
+ channel->servers[i].addr.udp_port = 0;
474
+ channel->servers[i].addr.tcp_port = 0;
475
+ memcpy(&channel->servers[i].addr.addrV4,
476
+ &options->servers[i],
477
+ sizeof(channel->servers[i].addr.addrV4));
478
+ }
479
+ }
480
+ channel->nservers = options->nservers;
481
+ }
482
+
483
+ /* Copy the domains, if given. Keep channel->ndomains consistent so
484
+ * we can clean up in case of error.
485
+ */
486
+ if ((optmask & ARES_OPT_DOMAINS) && channel->ndomains == -1)
487
+ {
488
+ /* Avoid zero size allocations at any cost */
489
+ if (options->ndomains > 0)
490
+ {
491
+ channel->domains = ares_malloc(options->ndomains * sizeof(char *));
492
+ if (!channel->domains)
493
+ return ARES_ENOMEM;
494
+ for (i = 0; i < options->ndomains; i++)
495
+ {
496
+ channel->ndomains = i;
497
+ channel->domains[i] = ares_strdup(options->domains[i]);
498
+ if (!channel->domains[i])
499
+ return ARES_ENOMEM;
500
+ }
501
+ }
502
+ channel->ndomains = options->ndomains;
503
+ }
504
+
505
+ /* Set lookups, if given. */
506
+ if ((optmask & ARES_OPT_LOOKUPS) && !channel->lookups)
507
+ {
508
+ channel->lookups = ares_strdup(options->lookups);
509
+ if (!channel->lookups)
510
+ return ARES_ENOMEM;
511
+ }
512
+
513
+ /* copy sortlist */
514
+ if ((optmask & ARES_OPT_SORTLIST) && (channel->nsort == -1)) {
515
+ if (options->nsort > 0) {
516
+ channel->sortlist = ares_malloc(options->nsort * sizeof(struct apattern));
517
+ if (!channel->sortlist)
518
+ return ARES_ENOMEM;
519
+ for (i = 0; i < options->nsort; i++)
520
+ channel->sortlist[i] = options->sortlist[i];
521
+ }
522
+ channel->nsort = options->nsort;
523
+ }
524
+
525
+ /* Set path for resolv.conf file, if given. */
526
+ if ((optmask & ARES_OPT_RESOLVCONF) && !channel->resolvconf_path)
527
+ {
528
+ channel->resolvconf_path = ares_strdup(options->resolvconf_path);
529
+ if (!channel->resolvconf_path && options->resolvconf_path)
530
+ return ARES_ENOMEM;
531
+ }
532
+
533
+ channel->optmask = optmask;
534
+
535
+ return ARES_SUCCESS;
536
+ }
537
+
538
+ static int init_by_environment(ares_channel channel)
539
+ {
540
+ const char *localdomain, *res_options;
541
+ int status;
542
+
543
+ localdomain = getenv("LOCALDOMAIN");
544
+ if (localdomain && channel->ndomains == -1)
545
+ {
546
+ status = set_search(channel, localdomain);
547
+ if (status != ARES_SUCCESS)
548
+ return status;
549
+ }
550
+
551
+ res_options = getenv("RES_OPTIONS");
552
+ if (res_options)
553
+ {
554
+ status = set_options(channel, res_options);
555
+ if (status != ARES_SUCCESS)
556
+ return status; /* LCOV_EXCL_LINE: set_options() never fails */
557
+ }
558
+
559
+ return ARES_SUCCESS;
560
+ }
561
+
562
+ #ifdef WIN32
563
+ /*
564
+ * get_REG_SZ()
565
+ *
566
+ * Given a 'hKey' handle to an open registry key and a 'leafKeyName' pointer
567
+ * to the name of the registry leaf key to be queried, fetch it's string
568
+ * value and return a pointer in *outptr to a newly allocated memory area
569
+ * holding it as a null-terminated string.
570
+ *
571
+ * Returns 0 and nullifies *outptr upon inability to return a string value.
572
+ *
573
+ * Returns 1 and sets *outptr when returning a dynamically allocated string.
574
+ *
575
+ * Supported on Windows NT 3.5 and newer.
576
+ */
577
+ static int get_REG_SZ(HKEY hKey, const char *leafKeyName, char **outptr)
578
+ {
579
+ DWORD size = 0;
580
+ int res;
581
+
582
+ *outptr = NULL;
583
+
584
+ /* Find out size of string stored in registry */
585
+ res = RegQueryValueExA(hKey, leafKeyName, 0, NULL, NULL, &size);
586
+ if ((res != ERROR_SUCCESS && res != ERROR_MORE_DATA) || !size)
587
+ return 0;
588
+
589
+ /* Allocate buffer of indicated size plus one given that string
590
+ might have been stored without null termination */
591
+ *outptr = ares_malloc(size+1);
592
+ if (!*outptr)
593
+ return 0;
594
+
595
+ /* Get the value for real */
596
+ res = RegQueryValueExA(hKey, leafKeyName, 0, NULL,
597
+ (unsigned char *)*outptr, &size);
598
+ if ((res != ERROR_SUCCESS) || (size == 1))
599
+ {
600
+ ares_free(*outptr);
601
+ *outptr = NULL;
602
+ return 0;
603
+ }
604
+
605
+ /* Null terminate buffer allways */
606
+ *(*outptr + size) = '\0';
607
+
608
+ return 1;
609
+ }
610
+
611
+ /*
612
+ * get_REG_SZ_9X()
613
+ *
614
+ * Functionally identical to get_REG_SZ()
615
+ *
616
+ * Supported on Windows 95, 98 and ME.
617
+ */
618
+ static int get_REG_SZ_9X(HKEY hKey, const char *leafKeyName, char **outptr)
619
+ {
620
+ DWORD dataType = 0;
621
+ DWORD size = 0;
622
+ int res;
623
+
624
+ *outptr = NULL;
625
+
626
+ /* Find out size of string stored in registry */
627
+ res = RegQueryValueExA(hKey, leafKeyName, 0, &dataType, NULL, &size);
628
+ if ((res != ERROR_SUCCESS && res != ERROR_MORE_DATA) || !size)
629
+ return 0;
630
+
631
+ /* Allocate buffer of indicated size plus one given that string
632
+ might have been stored without null termination */
633
+ *outptr = ares_malloc(size+1);
634
+ if (!*outptr)
635
+ return 0;
636
+
637
+ /* Get the value for real */
638
+ res = RegQueryValueExA(hKey, leafKeyName, 0, &dataType,
639
+ (unsigned char *)*outptr, &size);
640
+ if ((res != ERROR_SUCCESS) || (size == 1))
641
+ {
642
+ ares_free(*outptr);
643
+ *outptr = NULL;
644
+ return 0;
645
+ }
646
+
647
+ /* Null terminate buffer allways */
648
+ *(*outptr + size) = '\0';
649
+
650
+ return 1;
651
+ }
652
+
653
+ /*
654
+ * get_enum_REG_SZ()
655
+ *
656
+ * Given a 'hKeyParent' handle to an open registry key and a 'leafKeyName'
657
+ * pointer to the name of the registry leaf key to be queried, parent key
658
+ * is enumerated searching in child keys for given leaf key name and its
659
+ * associated string value. When located, this returns a pointer in *outptr
660
+ * to a newly allocated memory area holding it as a null-terminated string.
661
+ *
662
+ * Returns 0 and nullifies *outptr upon inability to return a string value.
663
+ *
664
+ * Returns 1 and sets *outptr when returning a dynamically allocated string.
665
+ *
666
+ * Supported on Windows NT 3.5 and newer.
667
+ */
668
+ static int get_enum_REG_SZ(HKEY hKeyParent, const char *leafKeyName,
669
+ char **outptr)
670
+ {
671
+ char enumKeyName[256];
672
+ DWORD enumKeyNameBuffSize;
673
+ DWORD enumKeyIdx = 0;
674
+ HKEY hKeyEnum;
675
+ int gotString;
676
+ int res;
677
+
678
+ *outptr = NULL;
679
+
680
+ for(;;)
681
+ {
682
+ enumKeyNameBuffSize = sizeof(enumKeyName);
683
+ res = RegEnumKeyExA(hKeyParent, enumKeyIdx++, enumKeyName,
684
+ &enumKeyNameBuffSize, 0, NULL, NULL, NULL);
685
+ if (res != ERROR_SUCCESS)
686
+ break;
687
+ res = RegOpenKeyExA(hKeyParent, enumKeyName, 0, KEY_QUERY_VALUE,
688
+ &hKeyEnum);
689
+ if (res != ERROR_SUCCESS)
690
+ continue;
691
+ gotString = get_REG_SZ(hKeyEnum, leafKeyName, outptr);
692
+ RegCloseKey(hKeyEnum);
693
+ if (gotString)
694
+ break;
695
+ }
696
+
697
+ if (!*outptr)
698
+ return 0;
699
+
700
+ return 1;
701
+ }
702
+
703
+ /*
704
+ * get_DNS_Registry_9X()
705
+ *
706
+ * Functionally identical to get_DNS_Registry()
707
+ *
708
+ * Implementation supports Windows 95, 98 and ME.
709
+ */
710
+ static int get_DNS_Registry_9X(char **outptr)
711
+ {
712
+ HKEY hKey_VxD_MStcp;
713
+ int gotString;
714
+ int res;
715
+
716
+ *outptr = NULL;
717
+
718
+ res = RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_9X, 0, KEY_READ,
719
+ &hKey_VxD_MStcp);
720
+ if (res != ERROR_SUCCESS)
721
+ return 0;
722
+
723
+ gotString = get_REG_SZ_9X(hKey_VxD_MStcp, NAMESERVER, outptr);
724
+ RegCloseKey(hKey_VxD_MStcp);
725
+
726
+ if (!gotString || !*outptr)
727
+ return 0;
728
+
729
+ return 1;
730
+ }
731
+
732
+ /*
733
+ * get_DNS_Registry_NT()
734
+ *
735
+ * Functionally identical to get_DNS_Registry()
736
+ *
737
+ * Refs: Microsoft Knowledge Base articles KB120642 and KB314053.
738
+ *
739
+ * Implementation supports Windows NT 3.5 and newer.
740
+ */
741
+ static int get_DNS_Registry_NT(char **outptr)
742
+ {
743
+ HKEY hKey_Interfaces = NULL;
744
+ HKEY hKey_Tcpip_Parameters;
745
+ int gotString;
746
+ int res;
747
+
748
+ *outptr = NULL;
749
+
750
+ res = RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0, KEY_READ,
751
+ &hKey_Tcpip_Parameters);
752
+ if (res != ERROR_SUCCESS)
753
+ return 0;
754
+
755
+ /*
756
+ ** Global DNS settings override adapter specific parameters when both
757
+ ** are set. Additionally static DNS settings override DHCP-configured
758
+ ** parameters when both are set.
759
+ */
760
+
761
+ /* Global DNS static parameters */
762
+ gotString = get_REG_SZ(hKey_Tcpip_Parameters, NAMESERVER, outptr);
763
+ if (gotString)
764
+ goto done;
765
+
766
+ /* Global DNS DHCP-configured parameters */
767
+ gotString = get_REG_SZ(hKey_Tcpip_Parameters, DHCPNAMESERVER, outptr);
768
+ if (gotString)
769
+ goto done;
770
+
771
+ /* Try adapter specific parameters */
772
+ res = RegOpenKeyExA(hKey_Tcpip_Parameters, "Interfaces", 0,
773
+ KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS,
774
+ &hKey_Interfaces);
775
+ if (res != ERROR_SUCCESS)
776
+ {
777
+ hKey_Interfaces = NULL;
778
+ goto done;
779
+ }
780
+
781
+ /* Adapter specific DNS static parameters */
782
+ gotString = get_enum_REG_SZ(hKey_Interfaces, NAMESERVER, outptr);
783
+ if (gotString)
784
+ goto done;
785
+
786
+ /* Adapter specific DNS DHCP-configured parameters */
787
+ gotString = get_enum_REG_SZ(hKey_Interfaces, DHCPNAMESERVER, outptr);
788
+
789
+ done:
790
+ if (hKey_Interfaces)
791
+ RegCloseKey(hKey_Interfaces);
792
+
793
+ RegCloseKey(hKey_Tcpip_Parameters);
794
+
795
+ if (!gotString || !*outptr)
796
+ return 0;
797
+
798
+ return 1;
799
+ }
800
+
801
+ /*
802
+ * get_DNS_Registry()
803
+ *
804
+ * Locates DNS info in the registry. When located, this returns a pointer
805
+ * in *outptr to a newly allocated memory area holding a null-terminated
806
+ * string with a space or comma seperated list of DNS IP addresses.
807
+ *
808
+ * Returns 0 and nullifies *outptr upon inability to return DNSes string.
809
+ *
810
+ * Returns 1 and sets *outptr when returning a dynamically allocated string.
811
+ */
812
+ static int get_DNS_Registry(char **outptr)
813
+ {
814
+ win_platform platform;
815
+ int gotString = 0;
816
+
817
+ *outptr = NULL;
818
+
819
+ platform = ares__getplatform();
820
+
821
+ if (platform == WIN_NT)
822
+ gotString = get_DNS_Registry_NT(outptr);
823
+ else if (platform == WIN_9X)
824
+ gotString = get_DNS_Registry_9X(outptr);
825
+
826
+ if (!gotString)
827
+ return 0;
828
+
829
+ return 1;
830
+ }
831
+
832
+ static void commanjoin(char** dst, const char* const src, const size_t len)
833
+ {
834
+ char *newbuf;
835
+ size_t newsize;
836
+
837
+ /* 1 for terminating 0 and 2 for , and terminating 0 */
838
+ newsize = len + (*dst ? (strlen(*dst) + 2) : 1);
839
+ newbuf = ares_realloc(*dst, newsize);
840
+ if (!newbuf)
841
+ return;
842
+ if (*dst == NULL)
843
+ *newbuf = '\0';
844
+ *dst = newbuf;
845
+ if (strlen(*dst) != 0)
846
+ strcat(*dst, ",");
847
+ strncat(*dst, src, len);
848
+ }
849
+
850
+ /*
851
+ * commajoin()
852
+ *
853
+ * RTF code.
854
+ */
855
+ static void commajoin(char **dst, const char *src)
856
+ {
857
+ commanjoin(dst, src, strlen(src));
858
+ }
859
+
860
+ /*
861
+ * get_DNS_NetworkParams()
862
+ *
863
+ * Locates DNS info using GetNetworkParams() function from the Internet
864
+ * Protocol Helper (IP Helper) API. When located, this returns a pointer
865
+ * in *outptr to a newly allocated memory area holding a null-terminated
866
+ * string with a space or comma seperated list of DNS IP addresses.
867
+ *
868
+ * Returns 0 and nullifies *outptr upon inability to return DNSes string.
869
+ *
870
+ * Returns 1 and sets *outptr when returning a dynamically allocated string.
871
+ *
872
+ * Implementation supports Windows 98 and newer.
873
+ *
874
+ * Note: Ancient PSDK required in order to build a W98 target.
875
+ */
876
+ static int get_DNS_NetworkParams(char **outptr)
877
+ {
878
+ FIXED_INFO *fi, *newfi;
879
+ struct ares_addr namesrvr;
880
+ char *txtaddr;
881
+ IP_ADDR_STRING *ipAddr;
882
+ int res;
883
+ DWORD size = sizeof (*fi);
884
+
885
+ *outptr = NULL;
886
+
887
+ /* Verify run-time availability of GetNetworkParams() */
888
+ if (ares_fpGetNetworkParams == ZERO_NULL)
889
+ return 0;
890
+
891
+ fi = ares_malloc(size);
892
+ if (!fi)
893
+ return 0;
894
+
895
+ res = (*ares_fpGetNetworkParams) (fi, &size);
896
+ if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS))
897
+ goto done;
898
+
899
+ newfi = ares_realloc(fi, size);
900
+ if (!newfi)
901
+ goto done;
902
+
903
+ fi = newfi;
904
+ res = (*ares_fpGetNetworkParams) (fi, &size);
905
+ if (res != ERROR_SUCCESS)
906
+ goto done;
907
+
908
+ for (ipAddr = &fi->DnsServerList; ipAddr; ipAddr = ipAddr->Next)
909
+ {
910
+ txtaddr = &ipAddr->IpAddress.String[0];
911
+
912
+ /* Validate converting textual address to binary format. */
913
+ if (ares_inet_pton(AF_INET, txtaddr, &namesrvr.addrV4) == 1)
914
+ {
915
+ if ((namesrvr.addrV4.S_un.S_addr == INADDR_ANY) ||
916
+ (namesrvr.addrV4.S_un.S_addr == INADDR_NONE))
917
+ continue;
918
+ }
919
+ else if (ares_inet_pton(AF_INET6, txtaddr, &namesrvr.addrV6) == 1)
920
+ {
921
+ if (memcmp(&namesrvr.addrV6, &ares_in6addr_any,
922
+ sizeof(namesrvr.addrV6)) == 0)
923
+ continue;
924
+ }
925
+ else
926
+ continue;
927
+
928
+ commajoin(outptr, txtaddr);
929
+
930
+ if (!*outptr)
931
+ break;
932
+ }
933
+
934
+ done:
935
+ if (fi)
936
+ ares_free(fi);
937
+
938
+ if (!*outptr)
939
+ return 0;
940
+
941
+ return 1;
942
+ }
943
+
944
+ static BOOL ares_IsWindowsVistaOrGreater(void)
945
+ {
946
+ OSVERSIONINFO vinfo;
947
+ memset(&vinfo, 0, sizeof(vinfo));
948
+ vinfo.dwOSVersionInfoSize = sizeof(vinfo);
949
+ #ifdef _MSC_VER
950
+ #pragma warning(push)
951
+ #pragma warning(disable:4996) /* warning C4996: 'GetVersionExW': was declared deprecated */
952
+ #endif
953
+ if (!GetVersionEx(&vinfo) || vinfo.dwMajorVersion < 6)
954
+ return FALSE;
955
+ return TRUE;
956
+ #ifdef _MSC_VER
957
+ #pragma warning(pop)
958
+ #endif
959
+ }
960
+
961
+ /* A structure to hold the string form of IPv4 and IPv6 addresses so we can
962
+ * sort them by a metric.
963
+ */
964
+ typedef struct
965
+ {
966
+ /* The metric we sort them by. */
967
+ ULONG metric;
968
+
969
+ /* Original index of the item, used as a secondary sort parameter to make
970
+ * qsort() stable if the metrics are equal */
971
+ size_t orig_idx;
972
+
973
+ /* Room enough for the string form of any IPv4 or IPv6 address that
974
+ * ares_inet_ntop() will create. Based on the existing c-ares practice.
975
+ */
976
+ char text[sizeof("ffff:ffff:ffff:ffff:ffff:ffff:255.255.255.255")];
977
+ } Address;
978
+
979
+ /* Sort Address values \a left and \a right by metric, returning the usual
980
+ * indicators for qsort().
981
+ */
982
+ static int compareAddresses(const void *arg1,
983
+ const void *arg2)
984
+ {
985
+ const Address * const left = arg1;
986
+ const Address * const right = arg2;
987
+ /* Lower metric the more preferred */
988
+ if(left->metric < right->metric) return -1;
989
+ if(left->metric > right->metric) return 1;
990
+ /* If metrics are equal, lower original index more preferred */
991
+ if(left->orig_idx < right->orig_idx) return -1;
992
+ if(left->orig_idx > right->orig_idx) return 1;
993
+ return 0;
994
+ }
995
+
996
+ /* There can be multiple routes to "the Internet". And there can be different
997
+ * DNS servers associated with each of the interfaces that offer those routes.
998
+ * We have to assume that any DNS server can serve any request. But, some DNS
999
+ * servers may only respond if requested over their associated interface. But
1000
+ * we also want to use "the preferred route to the Internet" whenever possible
1001
+ * (and not use DNS servers on a non-preferred route even by forcing request
1002
+ * to go out on the associated non-preferred interface). i.e. We want to use
1003
+ * the DNS servers associated with the same interface that we would use to
1004
+ * make a general request to anything else.
1005
+ *
1006
+ * But, Windows won't sort the DNS servers by the metrics associated with the
1007
+ * routes and interfaces _even_ though it obviously sends IP packets based on
1008
+ * those same routes and metrics. So, we must do it ourselves.
1009
+ *
1010
+ * So, we sort the DNS servers by the same metric values used to determine how
1011
+ * an outgoing IP packet will go, thus effectively using the DNS servers
1012
+ * associated with the interface that the DNS requests themselves will
1013
+ * travel. This gives us optimal routing and avoids issues where DNS servers
1014
+ * won't respond to requests that don't arrive via some specific subnetwork
1015
+ * (and thus some specific interface).
1016
+ *
1017
+ * This function computes the metric we use to sort. On the interface
1018
+ * identified by \a luid, it determines the best route to \a dest and combines
1019
+ * that route's metric with \a interfaceMetric to compute a metric for the
1020
+ * destination address on that interface. This metric can be used as a weight
1021
+ * to sort the DNS server addresses associated with each interface (lower is
1022
+ * better).
1023
+ *
1024
+ * Note that by restricting the route search to the specific interface with
1025
+ * which the DNS servers are associated, this function asks the question "What
1026
+ * is the metric for sending IP packets to this DNS server?" which allows us
1027
+ * to sort the DNS servers correctly.
1028
+ */
1029
+ static ULONG getBestRouteMetric(IF_LUID * const luid, /* Can't be const :( */
1030
+ const SOCKADDR_INET * const dest,
1031
+ const ULONG interfaceMetric)
1032
+ {
1033
+ /* On this interface, get the best route to that destination. */
1034
+ MIB_IPFORWARD_ROW2 row;
1035
+ SOCKADDR_INET ignored;
1036
+ if(!ares_fpGetBestRoute2 ||
1037
+ ares_fpGetBestRoute2(/* The interface to use. The index is ignored since we are
1038
+ * passing a LUID.
1039
+ */
1040
+ luid, 0,
1041
+ /* No specific source address. */
1042
+ NULL,
1043
+ /* Our destination address. */
1044
+ dest,
1045
+ /* No options. */
1046
+ 0,
1047
+ /* The route row. */
1048
+ &row,
1049
+ /* The best source address, which we don't need. */
1050
+ &ignored) != NO_ERROR
1051
+ /* If the metric is "unused" (-1) or too large for us to add the two
1052
+ * metrics, use the worst possible, thus sorting this last.
1053
+ */
1054
+ || row.Metric == (ULONG)-1
1055
+ || row.Metric > ((ULONG)-1) - interfaceMetric) {
1056
+ /* Return the worst possible metric. */
1057
+ return (ULONG)-1;
1058
+ }
1059
+
1060
+ /* Return the metric value from that row, plus the interface metric.
1061
+ *
1062
+ * See
1063
+ * http://msdn.microsoft.com/en-us/library/windows/desktop/aa814494(v=vs.85).aspx
1064
+ * which describes the combination as a "sum".
1065
+ */
1066
+ return row.Metric + interfaceMetric;
1067
+ }
1068
+
1069
+ /*
1070
+ * get_DNS_AdaptersAddresses()
1071
+ *
1072
+ * Locates DNS info using GetAdaptersAddresses() function from the Internet
1073
+ * Protocol Helper (IP Helper) API. When located, this returns a pointer
1074
+ * in *outptr to a newly allocated memory area holding a null-terminated
1075
+ * string with a space or comma seperated list of DNS IP addresses.
1076
+ *
1077
+ * Returns 0 and nullifies *outptr upon inability to return DNSes string.
1078
+ *
1079
+ * Returns 1 and sets *outptr when returning a dynamically allocated string.
1080
+ *
1081
+ * Implementation supports Windows XP and newer.
1082
+ */
1083
+ #define IPAA_INITIAL_BUF_SZ 15 * 1024
1084
+ #define IPAA_MAX_TRIES 3
1085
+ static int get_DNS_AdaptersAddresses(char **outptr)
1086
+ {
1087
+ IP_ADAPTER_DNS_SERVER_ADDRESS *ipaDNSAddr;
1088
+ IP_ADAPTER_ADDRESSES *ipaa, *newipaa, *ipaaEntry;
1089
+ ULONG ReqBufsz = IPAA_INITIAL_BUF_SZ;
1090
+ ULONG Bufsz = IPAA_INITIAL_BUF_SZ;
1091
+ ULONG AddrFlags = 0;
1092
+ int trying = IPAA_MAX_TRIES;
1093
+ int res;
1094
+
1095
+ /* The capacity of addresses, in elements. */
1096
+ size_t addressesSize;
1097
+ /* The number of elements in addresses. */
1098
+ size_t addressesIndex = 0;
1099
+ /* The addresses we will sort. */
1100
+ Address *addresses;
1101
+
1102
+ union {
1103
+ struct sockaddr *sa;
1104
+ struct sockaddr_in *sa4;
1105
+ struct sockaddr_in6 *sa6;
1106
+ } namesrvr;
1107
+
1108
+ *outptr = NULL;
1109
+
1110
+ /* Verify run-time availability of GetAdaptersAddresses() */
1111
+ if (ares_fpGetAdaptersAddresses == ZERO_NULL)
1112
+ return 0;
1113
+
1114
+ ipaa = ares_malloc(Bufsz);
1115
+ if (!ipaa)
1116
+ return 0;
1117
+
1118
+ /* Start with enough room for a few DNS server addresses and we'll grow it
1119
+ * as we encounter more.
1120
+ */
1121
+ addressesSize = 4;
1122
+ addresses = (Address*)ares_malloc(sizeof(Address) * addressesSize);
1123
+ if(addresses == NULL) {
1124
+ /* We need room for at least some addresses to function. */
1125
+ ares_free(ipaa);
1126
+ return 0;
1127
+ }
1128
+
1129
+ /* Usually this call suceeds with initial buffer size */
1130
+ res = (*ares_fpGetAdaptersAddresses) (AF_UNSPEC, AddrFlags, NULL,
1131
+ ipaa, &ReqBufsz);
1132
+ if ((res != ERROR_BUFFER_OVERFLOW) && (res != ERROR_SUCCESS))
1133
+ goto done;
1134
+
1135
+ while ((res == ERROR_BUFFER_OVERFLOW) && (--trying))
1136
+ {
1137
+ if (Bufsz < ReqBufsz)
1138
+ {
1139
+ newipaa = ares_realloc(ipaa, ReqBufsz);
1140
+ if (!newipaa)
1141
+ goto done;
1142
+ Bufsz = ReqBufsz;
1143
+ ipaa = newipaa;
1144
+ }
1145
+ res = (*ares_fpGetAdaptersAddresses) (AF_UNSPEC, AddrFlags, NULL,
1146
+ ipaa, &ReqBufsz);
1147
+ if (res == ERROR_SUCCESS)
1148
+ break;
1149
+ }
1150
+ if (res != ERROR_SUCCESS)
1151
+ goto done;
1152
+
1153
+ for (ipaaEntry = ipaa; ipaaEntry; ipaaEntry = ipaaEntry->Next)
1154
+ {
1155
+ if(ipaaEntry->OperStatus != IfOperStatusUp)
1156
+ continue;
1157
+
1158
+ /* For each interface, find any associated DNS servers as IPv4 or IPv6
1159
+ * addresses. For each found address, find the best route to that DNS
1160
+ * server address _on_ _that_ _interface_ (at this moment in time) and
1161
+ * compute the resulting total metric, just as Windows routing will do.
1162
+ * Then, sort all the addresses found by the metric.
1163
+ */
1164
+ for (ipaDNSAddr = ipaaEntry->FirstDnsServerAddress;
1165
+ ipaDNSAddr;
1166
+ ipaDNSAddr = ipaDNSAddr->Next)
1167
+ {
1168
+ namesrvr.sa = ipaDNSAddr->Address.lpSockaddr;
1169
+
1170
+ if (namesrvr.sa->sa_family == AF_INET)
1171
+ {
1172
+ if ((namesrvr.sa4->sin_addr.S_un.S_addr == INADDR_ANY) ||
1173
+ (namesrvr.sa4->sin_addr.S_un.S_addr == INADDR_NONE))
1174
+ continue;
1175
+
1176
+ /* Allocate room for another address, if necessary, else skip. */
1177
+ if(addressesIndex == addressesSize) {
1178
+ const size_t newSize = addressesSize + 4;
1179
+ Address * const newMem =
1180
+ (Address*)ares_realloc(addresses, sizeof(Address) * newSize);
1181
+ if(newMem == NULL) {
1182
+ continue;
1183
+ }
1184
+ addresses = newMem;
1185
+ addressesSize = newSize;
1186
+ }
1187
+
1188
+ /* Vista required for Luid or Ipv4Metric */
1189
+ if (ares_IsWindowsVistaOrGreater())
1190
+ {
1191
+ /* Save the address as the next element in addresses. */
1192
+ addresses[addressesIndex].metric =
1193
+ getBestRouteMetric(&ipaaEntry->Luid,
1194
+ (SOCKADDR_INET*)(namesrvr.sa),
1195
+ ipaaEntry->Ipv4Metric);
1196
+ }
1197
+ else
1198
+ {
1199
+ addresses[addressesIndex].metric = (ULONG)-1;
1200
+ }
1201
+
1202
+ /* Record insertion index to make qsort stable */
1203
+ addresses[addressesIndex].orig_idx = addressesIndex;
1204
+
1205
+ if (! ares_inet_ntop(AF_INET, &namesrvr.sa4->sin_addr,
1206
+ addresses[addressesIndex].text,
1207
+ sizeof(addresses[0].text))) {
1208
+ continue;
1209
+ }
1210
+ ++addressesIndex;
1211
+ }
1212
+ else if (namesrvr.sa->sa_family == AF_INET6)
1213
+ {
1214
+ if (memcmp(&namesrvr.sa6->sin6_addr, &ares_in6addr_any,
1215
+ sizeof(namesrvr.sa6->sin6_addr)) == 0)
1216
+ continue;
1217
+
1218
+ /* Allocate room for another address, if necessary, else skip. */
1219
+ if(addressesIndex == addressesSize) {
1220
+ const size_t newSize = addressesSize + 4;
1221
+ Address * const newMem =
1222
+ (Address*)ares_realloc(addresses, sizeof(Address) * newSize);
1223
+ if(newMem == NULL) {
1224
+ continue;
1225
+ }
1226
+ addresses = newMem;
1227
+ addressesSize = newSize;
1228
+ }
1229
+
1230
+ /* Vista required for Luid or Ipv4Metric */
1231
+ if (ares_IsWindowsVistaOrGreater())
1232
+ {
1233
+ /* Save the address as the next element in addresses. */
1234
+ addresses[addressesIndex].metric =
1235
+ getBestRouteMetric(&ipaaEntry->Luid,
1236
+ (SOCKADDR_INET*)(namesrvr.sa),
1237
+ ipaaEntry->Ipv6Metric);
1238
+ }
1239
+ else
1240
+ {
1241
+ addresses[addressesIndex].metric = (ULONG)-1;
1242
+ }
1243
+
1244
+ /* Record insertion index to make qsort stable */
1245
+ addresses[addressesIndex].orig_idx = addressesIndex;
1246
+
1247
+ if (! ares_inet_ntop(AF_INET6, &namesrvr.sa6->sin6_addr,
1248
+ addresses[addressesIndex].text,
1249
+ sizeof(addresses[0].text))) {
1250
+ continue;
1251
+ }
1252
+ ++addressesIndex;
1253
+ }
1254
+ else {
1255
+ /* Skip non-IPv4/IPv6 addresses completely. */
1256
+ continue;
1257
+ }
1258
+ }
1259
+ }
1260
+
1261
+ /* Sort all of the textual addresses by their metric (and original index if
1262
+ * metrics are equal). */
1263
+ qsort(addresses, addressesIndex, sizeof(*addresses), compareAddresses);
1264
+
1265
+ /* Join them all into a single string, removing duplicates. */
1266
+ {
1267
+ size_t i;
1268
+ for(i = 0; i < addressesIndex; ++i) {
1269
+ size_t j;
1270
+ /* Look for this address text appearing previously in the results. */
1271
+ for(j = 0; j < i; ++j) {
1272
+ if(strcmp(addresses[j].text, addresses[i].text) == 0) {
1273
+ break;
1274
+ }
1275
+ }
1276
+ /* Iff we didn't emit this address already, emit it now. */
1277
+ if(j == i) {
1278
+ /* Add that to outptr (if we can). */
1279
+ commajoin(outptr, addresses[i].text);
1280
+ }
1281
+ }
1282
+ }
1283
+
1284
+ done:
1285
+ ares_free(addresses);
1286
+
1287
+ if (ipaa)
1288
+ ares_free(ipaa);
1289
+
1290
+ if (!*outptr) {
1291
+ return 0;
1292
+ }
1293
+
1294
+ return 1;
1295
+ }
1296
+
1297
+ /*
1298
+ * get_DNS_Windows()
1299
+ *
1300
+ * Locates DNS info from Windows employing most suitable methods available at
1301
+ * run-time no matter which Windows version it is. When located, this returns
1302
+ * a pointer in *outptr to a newly allocated memory area holding a string with
1303
+ * a space or comma seperated list of DNS IP addresses, null-terminated.
1304
+ *
1305
+ * Returns 0 and nullifies *outptr upon inability to return DNSes string.
1306
+ *
1307
+ * Returns 1 and sets *outptr when returning a dynamically allocated string.
1308
+ *
1309
+ * Implementation supports Windows 95 and newer.
1310
+ */
1311
+ static int get_DNS_Windows(char **outptr)
1312
+ {
1313
+ /* Try using IP helper API GetAdaptersAddresses(). IPv4 + IPv6, also sorts
1314
+ * DNS servers by interface route metrics to try to use the best DNS server. */
1315
+ if (get_DNS_AdaptersAddresses(outptr))
1316
+ return 1;
1317
+
1318
+ /* Try using IP helper API GetNetworkParams(). IPv4 only. */
1319
+ if (get_DNS_NetworkParams(outptr))
1320
+ return 1;
1321
+
1322
+ /* Fall-back to registry information */
1323
+ return get_DNS_Registry(outptr);
1324
+ }
1325
+
1326
+ /*
1327
+ * get_SuffixList_Windows()
1328
+ *
1329
+ * Reads the "DNS Suffix Search List" from registry and writes the list items
1330
+ * whitespace separated to outptr. If the Search List is empty, the
1331
+ * "Primary Dns Suffix" is written to outptr.
1332
+ *
1333
+ * Returns 0 and nullifies *outptr upon inability to return the suffix list.
1334
+ *
1335
+ * Returns 1 and sets *outptr when returning a dynamically allocated string.
1336
+ *
1337
+ * Implementation supports Windows Server 2003 and newer
1338
+ */
1339
+ static int get_SuffixList_Windows(char **outptr)
1340
+ {
1341
+ HKEY hKey, hKeyEnum;
1342
+ char keyName[256];
1343
+ DWORD keyNameBuffSize;
1344
+ DWORD keyIdx = 0;
1345
+ char *p = NULL;
1346
+
1347
+ *outptr = NULL;
1348
+
1349
+ if (ares__getplatform() != WIN_NT)
1350
+ return 0;
1351
+
1352
+ /* 1. Global DNS Suffix Search List */
1353
+ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY, 0,
1354
+ KEY_READ, &hKey) == ERROR_SUCCESS)
1355
+ {
1356
+ get_REG_SZ(hKey, SEARCHLIST_KEY, outptr);
1357
+ if (get_REG_SZ(hKey, DOMAIN_KEY, &p))
1358
+ {
1359
+ commajoin(outptr, p);
1360
+ ares_free(p);
1361
+ p = NULL;
1362
+ }
1363
+ RegCloseKey(hKey);
1364
+ }
1365
+
1366
+ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NT_DNSCLIENT, 0,
1367
+ KEY_READ, &hKey) == ERROR_SUCCESS)
1368
+ {
1369
+ if (get_REG_SZ(hKey, SEARCHLIST_KEY, &p))
1370
+ {
1371
+ commajoin(outptr, p);
1372
+ ares_free(p);
1373
+ p = NULL;
1374
+ }
1375
+ RegCloseKey(hKey);
1376
+ }
1377
+
1378
+ /* 2. Connection Specific Search List composed of:
1379
+ * a. Primary DNS Suffix */
1380
+ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_DNSCLIENT, 0,
1381
+ KEY_READ, &hKey) == ERROR_SUCCESS)
1382
+ {
1383
+ if (get_REG_SZ(hKey, PRIMARYDNSSUFFIX_KEY, &p))
1384
+ {
1385
+ commajoin(outptr, p);
1386
+ ares_free(p);
1387
+ p = NULL;
1388
+ }
1389
+ RegCloseKey(hKey);
1390
+ }
1391
+
1392
+ /* b. Interface SearchList, Domain, DhcpDomain */
1393
+ if (RegOpenKeyExA(HKEY_LOCAL_MACHINE, WIN_NS_NT_KEY "\\" INTERFACES_KEY, 0,
1394
+ KEY_READ, &hKey) == ERROR_SUCCESS)
1395
+ {
1396
+ for(;;)
1397
+ {
1398
+ keyNameBuffSize = sizeof(keyName);
1399
+ if (RegEnumKeyExA(hKey, keyIdx++, keyName, &keyNameBuffSize,
1400
+ 0, NULL, NULL, NULL)
1401
+ != ERROR_SUCCESS)
1402
+ break;
1403
+ if (RegOpenKeyExA(hKey, keyName, 0, KEY_QUERY_VALUE, &hKeyEnum)
1404
+ != ERROR_SUCCESS)
1405
+ continue;
1406
+ /* p can be comma separated (SearchList) */
1407
+ if (get_REG_SZ(hKeyEnum, SEARCHLIST_KEY, &p))
1408
+ {
1409
+ commajoin(outptr, p);
1410
+ ares_free(p);
1411
+ p = NULL;
1412
+ }
1413
+ if (get_REG_SZ(hKeyEnum, DOMAIN_KEY, &p))
1414
+ {
1415
+ commajoin(outptr, p);
1416
+ ares_free(p);
1417
+ p = NULL;
1418
+ }
1419
+ if (get_REG_SZ(hKeyEnum, DHCPDOMAIN_KEY, &p))
1420
+ {
1421
+ commajoin(outptr, p);
1422
+ ares_free(p);
1423
+ p = NULL;
1424
+ }
1425
+ RegCloseKey(hKeyEnum);
1426
+ }
1427
+ RegCloseKey(hKey);
1428
+ }
1429
+
1430
+ return *outptr != NULL;
1431
+ }
1432
+
1433
+ #endif
1434
+
1435
+ static int init_by_resolv_conf(ares_channel channel)
1436
+ {
1437
+ #if !defined(ANDROID) && !defined(__ANDROID__) && !defined(WATT32) && \
1438
+ !defined(CARES_USE_LIBRESOLV)
1439
+ char *line = NULL;
1440
+ #endif
1441
+ int status = -1, nservers = 0, nsort = 0;
1442
+ struct server_state *servers = NULL;
1443
+ struct apattern *sortlist = NULL;
1444
+
1445
+ #ifdef WIN32
1446
+
1447
+ if (channel->nservers > -1) /* don't override ARES_OPT_SERVER */
1448
+ return ARES_SUCCESS;
1449
+
1450
+ if (get_DNS_Windows(&line))
1451
+ {
1452
+ status = config_nameserver(&servers, &nservers, line);
1453
+ ares_free(line);
1454
+ }
1455
+
1456
+ if (channel->ndomains == -1 && get_SuffixList_Windows(&line))
1457
+ {
1458
+ status = set_search(channel, line);
1459
+ ares_free(line);
1460
+ }
1461
+
1462
+ if (status == ARES_SUCCESS)
1463
+ status = ARES_EOF;
1464
+ else
1465
+ /* Catch the case when all the above checks fail (which happens when there
1466
+ is no network card or the cable is unplugged) */
1467
+ status = ARES_EFILE;
1468
+ #elif defined(__MVS__)
1469
+
1470
+ struct __res_state *res = 0;
1471
+ int count4, count6;
1472
+ __STATEEXTIPV6 *v6;
1473
+ struct server_state *pserver
1474
+ if (0 == res) {
1475
+ int rc = res_init();
1476
+ while (rc == -1 && h_errno == TRY_AGAIN) {
1477
+ rc = res_init();
1478
+ }
1479
+ if (rc == -1) {
1480
+ return ARES_ENOMEM;
1481
+ }
1482
+ res = __res();
1483
+ }
1484
+
1485
+ v6 = res->__res_extIPv6;
1486
+ count4 = res->nscount;
1487
+ if (v6) {
1488
+ count6 = v6->__stat_nscount;
1489
+ } else {
1490
+ count6 = 0;
1491
+ }
1492
+
1493
+ nservers = count4 + count6;
1494
+ servers = ares_malloc(nservers * sizeof(struct server_state));
1495
+ if (!servers)
1496
+ return ARES_ENOMEM;
1497
+
1498
+ memset(servers, 0, nservers * sizeof(struct server_state));
1499
+
1500
+ pserver = servers;
1501
+ for (int i = 0; i < count4; ++i, ++pserver) {
1502
+ struct sockaddr_in *addr_in = &(res->nsaddr_list[i]);
1503
+ pserver->addr.addrV4.s_addr = addr_in->sin_addr.s_addr;
1504
+ pserver->addr.family = AF_INET;
1505
+ pserver->addr.udp_port = addr_in->sin_port;
1506
+ pserver->addr.tcp_port = addr_in->sin_port;
1507
+ }
1508
+
1509
+ for (int j = 0; j < count6; ++j, ++pserver) {
1510
+ struct sockaddr_in6 *addr_in = &(v6->__stat_nsaddr_list[j]);
1511
+ memcpy(&(pserver->addr.addr.addr6), &(addr_in->sin6_addr),
1512
+ sizeof(addr_in->sin6_addr));
1513
+ pserver->addr.family = AF_INET6;
1514
+ pserver->addr.udp_port = addr_in->sin6_port;
1515
+ pserver->addr.tcp_port = addr_in->sin6_port;
1516
+ }
1517
+
1518
+ status = ARES_EOF;
1519
+
1520
+ #elif defined(__riscos__)
1521
+
1522
+ /* Under RISC OS, name servers are listed in the
1523
+ system variable Inet$Resolvers, space separated. */
1524
+
1525
+ line = getenv("Inet$Resolvers");
1526
+ status = ARES_EOF;
1527
+ if (line) {
1528
+ char *resolvers = ares_strdup(line), *pos, *space;
1529
+
1530
+ if (!resolvers)
1531
+ return ARES_ENOMEM;
1532
+
1533
+ pos = resolvers;
1534
+ do {
1535
+ space = strchr(pos, ' ');
1536
+ if (space)
1537
+ *space = '\0';
1538
+ status = config_nameserver(&servers, &nservers, pos);
1539
+ if (status != ARES_SUCCESS)
1540
+ break;
1541
+ pos = space + 1;
1542
+ } while (space);
1543
+
1544
+ if (status == ARES_SUCCESS)
1545
+ status = ARES_EOF;
1546
+
1547
+ ares_free(resolvers);
1548
+ }
1549
+
1550
+ #elif defined(WATT32)
1551
+ int i;
1552
+
1553
+ sock_init();
1554
+ for (i = 0; def_nameservers[i]; i++)
1555
+ ;
1556
+ if (i == 0)
1557
+ return ARES_SUCCESS; /* use localhost DNS server */
1558
+
1559
+ nservers = i;
1560
+ servers = ares_malloc(sizeof(struct server_state));
1561
+ if (!servers)
1562
+ return ARES_ENOMEM;
1563
+ memset(servers, 0, sizeof(struct server_state));
1564
+
1565
+ for (i = 0; def_nameservers[i]; i++)
1566
+ {
1567
+ servers[i].addr.addrV4.s_addr = htonl(def_nameservers[i]);
1568
+ servers[i].addr.family = AF_INET;
1569
+ servers[i].addr.udp_port = 0;
1570
+ servers[i].addr.tcp_port = 0;
1571
+ }
1572
+ status = ARES_EOF;
1573
+
1574
+ #elif defined(ANDROID) || defined(__ANDROID__)
1575
+ unsigned int i;
1576
+ char **dns_servers;
1577
+ char *domains;
1578
+ size_t num_servers;
1579
+
1580
+ /* Use the Android connectivity manager to get a list
1581
+ * of DNS servers. As of Android 8 (Oreo) net.dns#
1582
+ * system properties are no longer available. Google claims this
1583
+ * improves privacy. Apps now need the ACCESS_NETWORK_STATE
1584
+ * permission and must use the ConnectivityManager which
1585
+ * is Java only. */
1586
+ dns_servers = ares_get_android_server_list(MAX_DNS_PROPERTIES, &num_servers);
1587
+ if (dns_servers != NULL)
1588
+ {
1589
+ for (i = 0; i < num_servers; i++)
1590
+ {
1591
+ status = config_nameserver(&servers, &nservers, dns_servers[i]);
1592
+ if (status != ARES_SUCCESS)
1593
+ break;
1594
+ status = ARES_EOF;
1595
+ }
1596
+ for (i = 0; i < num_servers; i++)
1597
+ {
1598
+ ares_free(dns_servers[i]);
1599
+ }
1600
+ ares_free(dns_servers);
1601
+ }
1602
+ if (channel->ndomains == -1)
1603
+ {
1604
+ domains = ares_get_android_search_domains_list();
1605
+ set_search(channel, domains);
1606
+ ares_free(domains);
1607
+ }
1608
+
1609
+ # ifdef HAVE___SYSTEM_PROPERTY_GET
1610
+ /* Old way using the system property still in place as
1611
+ * a fallback. Older android versions can still use this.
1612
+ * it's possible for older apps not not have added the new
1613
+ * permission and we want to try to avoid breaking those.
1614
+ *
1615
+ * We'll only run this if we don't have any dns servers
1616
+ * because this will get the same ones (if it works). */
1617
+ if (status != ARES_EOF) {
1618
+ char propname[PROP_NAME_MAX];
1619
+ char propvalue[PROP_VALUE_MAX]="";
1620
+ for (i = 1; i <= MAX_DNS_PROPERTIES; i++) {
1621
+ snprintf(propname, sizeof(propname), "%s%u", DNS_PROP_NAME_PREFIX, i);
1622
+ if (__system_property_get(propname, propvalue) < 1) {
1623
+ status = ARES_EOF;
1624
+ break;
1625
+ }
1626
+
1627
+ status = config_nameserver(&servers, &nservers, propvalue);
1628
+ if (status != ARES_SUCCESS)
1629
+ break;
1630
+ status = ARES_EOF;
1631
+ }
1632
+ }
1633
+ # endif /* HAVE___SYSTEM_PROPERTY_GET */
1634
+ #elif defined(CARES_USE_LIBRESOLV)
1635
+ struct __res_state res;
1636
+ memset(&res, 0, sizeof(res));
1637
+ int result = res_ninit(&res);
1638
+ if (result == 0 && (res.options & RES_INIT)) {
1639
+ status = ARES_EOF;
1640
+
1641
+ if (channel->nservers == -1) {
1642
+ union res_sockaddr_union addr[MAXNS];
1643
+ int nscount = res_getservers(&res, addr, MAXNS);
1644
+ int i;
1645
+ for (i = 0; i < nscount; ++i) {
1646
+ char str[INET6_ADDRSTRLEN];
1647
+ int config_status;
1648
+ sa_family_t family = addr[i].sin.sin_family;
1649
+ if (family == AF_INET) {
1650
+ ares_inet_ntop(family, &addr[i].sin.sin_addr, str, sizeof(str));
1651
+ } else if (family == AF_INET6) {
1652
+ ares_inet_ntop(family, &addr[i].sin6.sin6_addr, str, sizeof(str));
1653
+ } else {
1654
+ continue;
1655
+ }
1656
+
1657
+ config_status = config_nameserver(&servers, &nservers, str);
1658
+ if (config_status != ARES_SUCCESS) {
1659
+ status = config_status;
1660
+ break;
1661
+ }
1662
+ }
1663
+ }
1664
+ if (channel->ndomains == -1) {
1665
+ int entries = 0;
1666
+ while ((entries < MAXDNSRCH) && res.dnsrch[entries])
1667
+ entries++;
1668
+ if(entries) {
1669
+ channel->domains = ares_malloc(entries * sizeof(char *));
1670
+ if (!channel->domains) {
1671
+ status = ARES_ENOMEM;
1672
+ } else {
1673
+ int i;
1674
+ channel->ndomains = entries;
1675
+ for (i = 0; i < channel->ndomains; ++i) {
1676
+ channel->domains[i] = ares_strdup(res.dnsrch[i]);
1677
+ if (!channel->domains[i])
1678
+ status = ARES_ENOMEM;
1679
+ }
1680
+ }
1681
+ }
1682
+ }
1683
+ if (channel->ndots == -1)
1684
+ channel->ndots = res.ndots;
1685
+ if (channel->tries == -1)
1686
+ channel->tries = res.retry;
1687
+ if (channel->rotate == -1)
1688
+ channel->rotate = res.options & RES_ROTATE;
1689
+ if (channel->timeout == -1)
1690
+ channel->timeout = res.retrans * 1000;
1691
+
1692
+ res_ndestroy(&res);
1693
+ }
1694
+ #else
1695
+ {
1696
+ char *p;
1697
+ FILE *fp;
1698
+ size_t linesize;
1699
+ int error;
1700
+ int update_domains;
1701
+ const char *resolvconf_path;
1702
+
1703
+ /* Don't read resolv.conf and friends if we don't have to */
1704
+ if (ARES_CONFIG_CHECK(channel))
1705
+ return ARES_SUCCESS;
1706
+
1707
+ /* Only update search domains if they're not already specified */
1708
+ update_domains = (channel->ndomains == -1);
1709
+
1710
+ /* Support path for resolvconf filename set by ares_init_options */
1711
+ if(channel->resolvconf_path) {
1712
+ resolvconf_path = channel->resolvconf_path;
1713
+ } else {
1714
+ resolvconf_path = PATH_RESOLV_CONF;
1715
+ }
1716
+
1717
+ fp = fopen(resolvconf_path, "r");
1718
+ if (fp) {
1719
+ while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
1720
+ {
1721
+ if ((p = try_config(line, "domain", ';')) && update_domains)
1722
+ status = config_domain(channel, p);
1723
+ else if ((p = try_config(line, "lookup", ';')) && !channel->lookups)
1724
+ status = config_lookup(channel, p, "bind", NULL, "file");
1725
+ else if ((p = try_config(line, "search", ';')) && update_domains)
1726
+ status = set_search(channel, p);
1727
+ else if ((p = try_config(line, "nameserver", ';')) &&
1728
+ channel->nservers == -1)
1729
+ status = config_nameserver(&servers, &nservers, p);
1730
+ else if ((p = try_config(line, "sortlist", ';')) &&
1731
+ channel->nsort == -1)
1732
+ status = config_sortlist(&sortlist, &nsort, p);
1733
+ else if ((p = try_config(line, "options", ';')))
1734
+ status = set_options(channel, p);
1735
+ else
1736
+ status = ARES_SUCCESS;
1737
+ if (status != ARES_SUCCESS)
1738
+ break;
1739
+ }
1740
+ fclose(fp);
1741
+ }
1742
+ else {
1743
+ error = ERRNO;
1744
+ switch(error) {
1745
+ case ENOENT:
1746
+ case ESRCH:
1747
+ status = ARES_EOF;
1748
+ break;
1749
+ default:
1750
+ DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
1751
+ error, strerror(error)));
1752
+ DEBUGF(fprintf(stderr, "Error opening file: %s\n", PATH_RESOLV_CONF));
1753
+ status = ARES_EFILE;
1754
+ }
1755
+ }
1756
+
1757
+ if ((status == ARES_EOF) && (!channel->lookups)) {
1758
+ /* Many systems (Solaris, Linux, BSD's) use nsswitch.conf */
1759
+ fp = fopen("/etc/nsswitch.conf", "r");
1760
+ if (fp) {
1761
+ while ((status = ares__read_line(fp, &line, &linesize)) ==
1762
+ ARES_SUCCESS)
1763
+ {
1764
+ if ((p = try_config(line, "hosts:", '\0')) && !channel->lookups)
1765
+ (void)config_lookup(channel, p, "dns", "resolve", "files");
1766
+ }
1767
+ fclose(fp);
1768
+ }
1769
+ else {
1770
+ error = ERRNO;
1771
+ switch(error) {
1772
+ case ENOENT:
1773
+ case ESRCH:
1774
+ break;
1775
+ default:
1776
+ DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
1777
+ error, strerror(error)));
1778
+ DEBUGF(fprintf(stderr, "Error opening file: %s\n",
1779
+ "/etc/nsswitch.conf"));
1780
+ }
1781
+
1782
+ /* ignore error, maybe we will get luck in next if clause */
1783
+ status = ARES_EOF;
1784
+ }
1785
+ }
1786
+
1787
+ if ((status == ARES_EOF) && (!channel->lookups)) {
1788
+ /* Linux / GNU libc 2.x and possibly others have host.conf */
1789
+ fp = fopen("/etc/host.conf", "r");
1790
+ if (fp) {
1791
+ while ((status = ares__read_line(fp, &line, &linesize)) ==
1792
+ ARES_SUCCESS)
1793
+ {
1794
+ if ((p = try_config(line, "order", '\0')) && !channel->lookups)
1795
+ /* ignore errors */
1796
+ (void)config_lookup(channel, p, "bind", NULL, "hosts");
1797
+ }
1798
+ fclose(fp);
1799
+ }
1800
+ else {
1801
+ error = ERRNO;
1802
+ switch(error) {
1803
+ case ENOENT:
1804
+ case ESRCH:
1805
+ break;
1806
+ default:
1807
+ DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
1808
+ error, strerror(error)));
1809
+ DEBUGF(fprintf(stderr, "Error opening file: %s\n",
1810
+ "/etc/host.conf"));
1811
+ }
1812
+
1813
+ /* ignore error, maybe we will get luck in next if clause */
1814
+ status = ARES_EOF;
1815
+ }
1816
+ }
1817
+
1818
+ if ((status == ARES_EOF) && (!channel->lookups)) {
1819
+ /* Tru64 uses /etc/svc.conf */
1820
+ fp = fopen("/etc/svc.conf", "r");
1821
+ if (fp) {
1822
+ while ((status = ares__read_line(fp, &line, &linesize)) ==
1823
+ ARES_SUCCESS)
1824
+ {
1825
+ if ((p = try_config(line, "hosts=", '\0')) && !channel->lookups)
1826
+ /* ignore errors */
1827
+ (void)config_lookup(channel, p, "bind", NULL, "local");
1828
+ }
1829
+ fclose(fp);
1830
+ }
1831
+ else {
1832
+ error = ERRNO;
1833
+ switch(error) {
1834
+ case ENOENT:
1835
+ case ESRCH:
1836
+ break;
1837
+ default:
1838
+ DEBUGF(fprintf(stderr, "fopen() failed with error: %d %s\n",
1839
+ error, strerror(error)));
1840
+ DEBUGF(fprintf(stderr, "Error opening file: %s\n", "/etc/svc.conf"));
1841
+ }
1842
+
1843
+ /* ignore error, default value will be chosen for `channel->lookups` */
1844
+ status = ARES_EOF;
1845
+ }
1846
+ }
1847
+
1848
+ if(line)
1849
+ ares_free(line);
1850
+ }
1851
+
1852
+ #endif
1853
+
1854
+ /* Handle errors. */
1855
+ if (status != ARES_EOF)
1856
+ {
1857
+ if (servers != NULL)
1858
+ ares_free(servers);
1859
+ if (sortlist != NULL)
1860
+ ares_free(sortlist);
1861
+ return status;
1862
+ }
1863
+
1864
+ /* If we got any name server entries, fill them in. */
1865
+ if (servers)
1866
+ {
1867
+ channel->servers = servers;
1868
+ channel->nservers = nservers;
1869
+ }
1870
+
1871
+ /* If we got any sortlist entries, fill them in. */
1872
+ if (sortlist)
1873
+ {
1874
+ channel->sortlist = sortlist;
1875
+ channel->nsort = nsort;
1876
+ }
1877
+
1878
+ return ARES_SUCCESS;
1879
+ }
1880
+
1881
+ static int init_by_defaults(ares_channel channel)
1882
+ {
1883
+ char *hostname = NULL;
1884
+ int rc = ARES_SUCCESS;
1885
+ #ifdef HAVE_GETHOSTNAME
1886
+ char *dot;
1887
+ #endif
1888
+
1889
+ if (channel->flags == -1)
1890
+ channel->flags = 0;
1891
+ if (channel->timeout == -1)
1892
+ channel->timeout = DEFAULT_TIMEOUT;
1893
+ if (channel->tries == -1)
1894
+ channel->tries = DEFAULT_TRIES;
1895
+ if (channel->ndots == -1)
1896
+ channel->ndots = 1;
1897
+ if (channel->rotate == -1)
1898
+ channel->rotate = 0;
1899
+ if (channel->udp_port == -1)
1900
+ channel->udp_port = htons(NAMESERVER_PORT);
1901
+ if (channel->tcp_port == -1)
1902
+ channel->tcp_port = htons(NAMESERVER_PORT);
1903
+
1904
+ if (channel->ednspsz == -1)
1905
+ channel->ednspsz = EDNSPACKETSZ;
1906
+
1907
+ if (channel->nservers == -1) {
1908
+ /* If nobody specified servers, try a local named. */
1909
+ channel->servers = ares_malloc(sizeof(struct server_state));
1910
+ if (!channel->servers) {
1911
+ rc = ARES_ENOMEM;
1912
+ goto error;
1913
+ }
1914
+ channel->servers[0].addr.family = AF_INET;
1915
+ channel->servers[0].addr.addrV4.s_addr = htonl(INADDR_LOOPBACK);
1916
+ channel->servers[0].addr.udp_port = 0;
1917
+ channel->servers[0].addr.tcp_port = 0;
1918
+ channel->nservers = 1;
1919
+ }
1920
+
1921
+ #if defined(USE_WINSOCK)
1922
+ #define toolong(x) (x == -1) && (SOCKERRNO == WSAEFAULT)
1923
+ #elif defined(ENAMETOOLONG)
1924
+ #define toolong(x) (x == -1) && ((SOCKERRNO == ENAMETOOLONG) || \
1925
+ (SOCKERRNO == EINVAL))
1926
+ #else
1927
+ #define toolong(x) (x == -1) && (SOCKERRNO == EINVAL)
1928
+ #endif
1929
+
1930
+ if (channel->ndomains == -1) {
1931
+ /* Derive a default domain search list from the kernel hostname,
1932
+ * or set it to empty if the hostname isn't helpful.
1933
+ */
1934
+ #ifndef HAVE_GETHOSTNAME
1935
+ channel->ndomains = 0; /* default to none */
1936
+ #else
1937
+ GETHOSTNAME_TYPE_ARG2 lenv = 64;
1938
+ size_t len = 64;
1939
+ int res;
1940
+ channel->ndomains = 0; /* default to none */
1941
+
1942
+ hostname = ares_malloc(len);
1943
+ if(!hostname) {
1944
+ rc = ARES_ENOMEM;
1945
+ goto error;
1946
+ }
1947
+
1948
+ do {
1949
+ res = gethostname(hostname, lenv);
1950
+
1951
+ if(toolong(res)) {
1952
+ char *p;
1953
+ len *= 2;
1954
+ lenv *= 2;
1955
+ p = ares_realloc(hostname, len);
1956
+ if(!p) {
1957
+ rc = ARES_ENOMEM;
1958
+ goto error;
1959
+ }
1960
+ hostname = p;
1961
+ continue;
1962
+ }
1963
+ else if(res) {
1964
+ /* Lets not treat a gethostname failure as critical, since we
1965
+ * are ok if gethostname doesn't even exist */
1966
+ *hostname = '\0';
1967
+ break;
1968
+ }
1969
+
1970
+ } while (res != 0);
1971
+
1972
+ dot = strchr(hostname, '.');
1973
+ if (dot) {
1974
+ /* a dot was found */
1975
+ channel->domains = ares_malloc(sizeof(char *));
1976
+ if (!channel->domains) {
1977
+ rc = ARES_ENOMEM;
1978
+ goto error;
1979
+ }
1980
+ channel->domains[0] = ares_strdup(dot + 1);
1981
+ if (!channel->domains[0]) {
1982
+ rc = ARES_ENOMEM;
1983
+ goto error;
1984
+ }
1985
+ channel->ndomains = 1;
1986
+ }
1987
+ #endif
1988
+ }
1989
+
1990
+ if (channel->nsort == -1) {
1991
+ channel->sortlist = NULL;
1992
+ channel->nsort = 0;
1993
+ }
1994
+
1995
+ if (!channel->lookups) {
1996
+ channel->lookups = ares_strdup("fb");
1997
+ if (!channel->lookups)
1998
+ rc = ARES_ENOMEM;
1999
+ }
2000
+
2001
+ error:
2002
+ if(rc) {
2003
+ if(channel->servers) {
2004
+ ares_free(channel->servers);
2005
+ channel->servers = NULL;
2006
+ }
2007
+
2008
+ if(channel->domains && channel->domains[0])
2009
+ ares_free(channel->domains[0]);
2010
+ if(channel->domains) {
2011
+ ares_free(channel->domains);
2012
+ channel->domains = NULL;
2013
+ }
2014
+
2015
+ if(channel->lookups) {
2016
+ ares_free(channel->lookups);
2017
+ channel->lookups = NULL;
2018
+ }
2019
+
2020
+ if(channel->resolvconf_path) {
2021
+ ares_free(channel->resolvconf_path);
2022
+ channel->resolvconf_path = NULL;
2023
+ }
2024
+ }
2025
+
2026
+ if(hostname)
2027
+ ares_free(hostname);
2028
+
2029
+ return rc;
2030
+ }
2031
+
2032
+ #if !defined(WIN32) && !defined(WATT32) && \
2033
+ !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV)
2034
+ static int config_domain(ares_channel channel, char *str)
2035
+ {
2036
+ char *q;
2037
+
2038
+ /* Set a single search domain. */
2039
+ q = str;
2040
+ while (*q && !ISSPACE(*q))
2041
+ q++;
2042
+ *q = '\0';
2043
+ return set_search(channel, str);
2044
+ }
2045
+
2046
+ #if defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 910) && \
2047
+ defined(__OPTIMIZE__) && defined(__unix__) && defined(__i386__)
2048
+ /* workaround icc 9.1 optimizer issue */
2049
+ # define vqualifier volatile
2050
+ #else
2051
+ # define vqualifier
2052
+ #endif
2053
+
2054
+ static int config_lookup(ares_channel channel, const char *str,
2055
+ const char *bindch, const char *altbindch,
2056
+ const char *filech)
2057
+ {
2058
+ char lookups[3], *l;
2059
+ const char *vqualifier p;
2060
+ int found;
2061
+
2062
+ if (altbindch == NULL)
2063
+ altbindch = bindch;
2064
+
2065
+ /* Set the lookup order. Only the first letter of each work
2066
+ * is relevant, and it has to be "b" for DNS or "f" for the
2067
+ * host file. Ignore everything else.
2068
+ */
2069
+ l = lookups;
2070
+ p = str;
2071
+ found = 0;
2072
+ while (*p)
2073
+ {
2074
+ if ((*p == *bindch || *p == *altbindch || *p == *filech) && l < lookups + 2) {
2075
+ if (*p == *bindch || *p == *altbindch) *l++ = 'b';
2076
+ else *l++ = 'f';
2077
+ found = 1;
2078
+ }
2079
+ while (*p && !ISSPACE(*p) && (*p != ','))
2080
+ p++;
2081
+ while (*p && (ISSPACE(*p) || (*p == ',')))
2082
+ p++;
2083
+ }
2084
+ if (!found)
2085
+ return ARES_ENOTINITIALIZED;
2086
+ *l = '\0';
2087
+ channel->lookups = ares_strdup(lookups);
2088
+ return (channel->lookups) ? ARES_SUCCESS : ARES_ENOMEM;
2089
+ }
2090
+ #endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ & !CARES_USE_LIBRESOLV */
2091
+
2092
+ #ifndef WATT32
2093
+ /* Validate that the ip address matches the subnet (network base and network
2094
+ * mask) specified. Addresses are specified in standard Network Byte Order as
2095
+ * 16 bytes, and the netmask is 0 to 128 (bits).
2096
+ */
2097
+ static int ares_ipv6_subnet_matches(const unsigned char netbase[16],
2098
+ unsigned char netmask,
2099
+ const unsigned char ipaddr[16])
2100
+ {
2101
+ unsigned char mask[16] = { 0 };
2102
+ unsigned char i;
2103
+
2104
+ /* Misuse */
2105
+ if (netmask > 128)
2106
+ return 0;
2107
+
2108
+ /* Quickly set whole bytes */
2109
+ memset(mask, 0xFF, netmask / 8);
2110
+
2111
+ /* Set remaining bits */
2112
+ if(netmask % 8) {
2113
+ mask[netmask / 8] = (unsigned char)(0xff << (8 - (netmask % 8)));
2114
+ }
2115
+
2116
+ for (i=0; i<16; i++) {
2117
+ if ((netbase[i] & mask[i]) != (ipaddr[i] & mask[i]))
2118
+ return 0;
2119
+ }
2120
+
2121
+ return 1;
2122
+ }
2123
+
2124
+ /* Return true iff the IPv6 ipaddr is blacklisted. */
2125
+ static int ares_ipv6_server_blacklisted(const unsigned char ipaddr[16])
2126
+ {
2127
+ /* A list of blacklisted IPv6 subnets. */
2128
+ const struct {
2129
+ const unsigned char netbase[16];
2130
+ unsigned char netmask;
2131
+ } blacklist[] = {
2132
+ /* fec0::/10 was deprecated by [RFC3879] in September 2004. Formerly a
2133
+ * Site-Local scoped address prefix. These are never valid DNS servers,
2134
+ * but are known to be returned at least sometimes on Windows and Android.
2135
+ */
2136
+ {
2137
+ {
2138
+ 0xfe, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2139
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
2140
+ },
2141
+ 10
2142
+ }
2143
+ };
2144
+ size_t i;
2145
+
2146
+ /* See if ipaddr matches any of the entries in the blacklist. */
2147
+ for (i = 0; i < sizeof(blacklist) / sizeof(blacklist[0]); ++i) {
2148
+ if (ares_ipv6_subnet_matches(
2149
+ blacklist[i].netbase, blacklist[i].netmask, ipaddr))
2150
+ return 1;
2151
+ }
2152
+ return 0;
2153
+ }
2154
+
2155
+ /* Add the IPv4 or IPv6 nameservers in str (separated by commas) to the
2156
+ * servers list, updating servers and nservers as required.
2157
+ *
2158
+ * This will silently ignore blacklisted IPv6 nameservers as detected by
2159
+ * ares_ipv6_server_blacklisted().
2160
+ *
2161
+ * Returns an error code on failure, else ARES_SUCCESS.
2162
+ */
2163
+ static int config_nameserver(struct server_state **servers, int *nservers,
2164
+ char *str)
2165
+ {
2166
+ struct ares_addr host;
2167
+ struct server_state *newserv;
2168
+ char *p, *txtaddr;
2169
+ /* On Windows, there may be more than one nameserver specified in the same
2170
+ * registry key, so we parse input as a space or comma seperated list.
2171
+ */
2172
+ for (p = str; p;)
2173
+ {
2174
+ /* Skip whitespace and commas. */
2175
+ while (*p && (ISSPACE(*p) || (*p == ',')))
2176
+ p++;
2177
+ if (!*p)
2178
+ /* No more input, done. */
2179
+ break;
2180
+
2181
+ /* Pointer to start of IPv4 or IPv6 address part. */
2182
+ txtaddr = p;
2183
+
2184
+ /* Advance past this address. */
2185
+ while (*p && !ISSPACE(*p) && (*p != ','))
2186
+ p++;
2187
+ if (*p)
2188
+ /* Null terminate this address. */
2189
+ *p++ = '\0';
2190
+ else
2191
+ /* Reached end of input, done when this address is processed. */
2192
+ p = NULL;
2193
+
2194
+ /* Convert textual address to binary format. */
2195
+ if (ares_inet_pton(AF_INET, txtaddr, &host.addrV4) == 1)
2196
+ host.family = AF_INET;
2197
+ else if (ares_inet_pton(AF_INET6, txtaddr, &host.addrV6) == 1
2198
+ /* Silently skip blacklisted IPv6 servers. */
2199
+ && !ares_ipv6_server_blacklisted(
2200
+ (const unsigned char *)&host.addrV6))
2201
+ host.family = AF_INET6;
2202
+ else
2203
+ continue;
2204
+
2205
+ /* Resize servers state array. */
2206
+ newserv = ares_realloc(*servers, (*nservers + 1) *
2207
+ sizeof(struct server_state));
2208
+ if (!newserv)
2209
+ return ARES_ENOMEM;
2210
+
2211
+ /* Store address data. */
2212
+ newserv[*nservers].addr.family = host.family;
2213
+ newserv[*nservers].addr.udp_port = 0;
2214
+ newserv[*nservers].addr.tcp_port = 0;
2215
+ if (host.family == AF_INET)
2216
+ memcpy(&newserv[*nservers].addr.addrV4, &host.addrV4,
2217
+ sizeof(host.addrV4));
2218
+ else
2219
+ memcpy(&newserv[*nservers].addr.addrV6, &host.addrV6,
2220
+ sizeof(host.addrV6));
2221
+
2222
+ /* Update arguments. */
2223
+ *servers = newserv;
2224
+ *nservers += 1;
2225
+ }
2226
+
2227
+ return ARES_SUCCESS;
2228
+ }
2229
+ #endif /* !WATT32 */
2230
+
2231
+ static int config_sortlist(struct apattern **sortlist, int *nsort,
2232
+ const char *str)
2233
+ {
2234
+ struct apattern pat;
2235
+ const char *q;
2236
+
2237
+ /* Add sortlist entries. */
2238
+ while (*str && *str != ';')
2239
+ {
2240
+ int bits;
2241
+ char ipbuf[16], ipbufpfx[32];
2242
+ /* Find just the IP */
2243
+ q = str;
2244
+ while (*q && *q != '/' && *q != ';' && !ISSPACE(*q))
2245
+ q++;
2246
+ memcpy(ipbuf, str, q-str);
2247
+ ipbuf[q-str] = '\0';
2248
+ /* Find the prefix */
2249
+ if (*q == '/')
2250
+ {
2251
+ const char *str2 = q+1;
2252
+ while (*q && *q != ';' && !ISSPACE(*q))
2253
+ q++;
2254
+ memcpy(ipbufpfx, str, q-str);
2255
+ ipbufpfx[q-str] = '\0';
2256
+ str = str2;
2257
+ }
2258
+ else
2259
+ ipbufpfx[0] = '\0';
2260
+ /* Lets see if it is CIDR */
2261
+ /* First we'll try IPv6 */
2262
+ if ((bits = ares_inet_net_pton(AF_INET6, ipbufpfx[0] ? ipbufpfx : ipbuf,
2263
+ &pat.addrV6,
2264
+ sizeof(pat.addrV6))) > 0)
2265
+ {
2266
+ pat.type = PATTERN_CIDR;
2267
+ pat.mask.bits = (unsigned short)bits;
2268
+ pat.family = AF_INET6;
2269
+ if (!sortlist_alloc(sortlist, nsort, &pat)) {
2270
+ ares_free(*sortlist);
2271
+ *sortlist = NULL;
2272
+ return ARES_ENOMEM;
2273
+ }
2274
+ }
2275
+ else if (ipbufpfx[0] &&
2276
+ (bits = ares_inet_net_pton(AF_INET, ipbufpfx, &pat.addrV4,
2277
+ sizeof(pat.addrV4))) > 0)
2278
+ {
2279
+ pat.type = PATTERN_CIDR;
2280
+ pat.mask.bits = (unsigned short)bits;
2281
+ pat.family = AF_INET;
2282
+ if (!sortlist_alloc(sortlist, nsort, &pat)) {
2283
+ ares_free(*sortlist);
2284
+ *sortlist = NULL;
2285
+ return ARES_ENOMEM;
2286
+ }
2287
+ }
2288
+ /* See if it is just a regular IP */
2289
+ else if (ip_addr(ipbuf, q-str, &pat.addrV4) == 0)
2290
+ {
2291
+ if (ipbufpfx[0])
2292
+ {
2293
+ memcpy(ipbuf, str, q-str);
2294
+ ipbuf[q-str] = '\0';
2295
+ if (ip_addr(ipbuf, q-str, &pat.mask.addr4) != 0)
2296
+ natural_mask(&pat);
2297
+ }
2298
+ else
2299
+ natural_mask(&pat);
2300
+ pat.family = AF_INET;
2301
+ pat.type = PATTERN_MASK;
2302
+ if (!sortlist_alloc(sortlist, nsort, &pat)) {
2303
+ ares_free(*sortlist);
2304
+ *sortlist = NULL;
2305
+ return ARES_ENOMEM;
2306
+ }
2307
+ }
2308
+ else
2309
+ {
2310
+ while (*q && *q != ';' && !ISSPACE(*q))
2311
+ q++;
2312
+ }
2313
+ str = q;
2314
+ while (ISSPACE(*str))
2315
+ str++;
2316
+ }
2317
+
2318
+ return ARES_SUCCESS;
2319
+ }
2320
+
2321
+ static int set_search(ares_channel channel, const char *str)
2322
+ {
2323
+ size_t cnt;
2324
+
2325
+ if(channel->ndomains != -1) {
2326
+ /* LCOV_EXCL_START: all callers check ndomains == -1 */
2327
+ /* if we already have some domains present, free them first */
2328
+ ares_strsplit_free(channel->domains, channel->ndomains);
2329
+ channel->domains = NULL;
2330
+ channel->ndomains = -1;
2331
+ } /* LCOV_EXCL_STOP */
2332
+
2333
+ channel->domains = ares_strsplit(str, ", ", 1, &cnt);
2334
+ channel->ndomains = (int)cnt;
2335
+ if (channel->domains == NULL || channel->ndomains == 0) {
2336
+ channel->domains = NULL;
2337
+ channel->ndomains = -1;
2338
+ }
2339
+
2340
+ return ARES_SUCCESS;
2341
+ }
2342
+
2343
+ static int set_options(ares_channel channel, const char *str)
2344
+ {
2345
+ const char *p, *q, *val;
2346
+
2347
+ p = str;
2348
+ while (*p)
2349
+ {
2350
+ q = p;
2351
+ while (*q && !ISSPACE(*q))
2352
+ q++;
2353
+ val = try_option(p, q, "ndots:");
2354
+ if (val && channel->ndots == -1)
2355
+ channel->ndots = aresx_sltosi(strtol(val, NULL, 10));
2356
+ val = try_option(p, q, "retrans:");
2357
+ if (val && channel->timeout == -1)
2358
+ channel->timeout = aresx_sltosi(strtol(val, NULL, 10));
2359
+ val = try_option(p, q, "retry:");
2360
+ if (val && channel->tries == -1)
2361
+ channel->tries = aresx_sltosi(strtol(val, NULL, 10));
2362
+ val = try_option(p, q, "rotate");
2363
+ if (val && channel->rotate == -1)
2364
+ channel->rotate = 1;
2365
+ p = q;
2366
+ while (ISSPACE(*p))
2367
+ p++;
2368
+ }
2369
+
2370
+ return ARES_SUCCESS;
2371
+ }
2372
+
2373
+ static const char *try_option(const char *p, const char *q, const char *opt)
2374
+ {
2375
+ size_t len = strlen(opt);
2376
+ return ((size_t)(q - p) >= len && !strncmp(p, opt, len)) ? &p[len] : NULL;
2377
+ }
2378
+
2379
+ #if !defined(WIN32) && !defined(WATT32) && \
2380
+ !defined(ANDROID) && !defined(__ANDROID__) && !defined(CARES_USE_LIBRESOLV)
2381
+ static char *try_config(char *s, const char *opt, char scc)
2382
+ {
2383
+ size_t len;
2384
+ char *p;
2385
+ char *q;
2386
+
2387
+ if (!s || !opt)
2388
+ /* no line or no option */
2389
+ return NULL; /* LCOV_EXCL_LINE */
2390
+
2391
+ /* Hash '#' character is always used as primary comment char, additionally
2392
+ a not-NUL secondary comment char will be considered when specified. */
2393
+
2394
+ /* trim line comment */
2395
+ p = s;
2396
+ if(scc)
2397
+ while (*p && (*p != '#') && (*p != scc))
2398
+ p++;
2399
+ else
2400
+ while (*p && (*p != '#'))
2401
+ p++;
2402
+ *p = '\0';
2403
+
2404
+ /* trim trailing whitespace */
2405
+ q = p - 1;
2406
+ while ((q >= s) && ISSPACE(*q))
2407
+ q--;
2408
+ *++q = '\0';
2409
+
2410
+ /* skip leading whitespace */
2411
+ p = s;
2412
+ while (*p && ISSPACE(*p))
2413
+ p++;
2414
+
2415
+ if (!*p)
2416
+ /* empty line */
2417
+ return NULL;
2418
+
2419
+ if ((len = strlen(opt)) == 0)
2420
+ /* empty option */
2421
+ return NULL; /* LCOV_EXCL_LINE */
2422
+
2423
+ if (strncmp(p, opt, len) != 0)
2424
+ /* line and option do not match */
2425
+ return NULL;
2426
+
2427
+ /* skip over given option name */
2428
+ p += len;
2429
+
2430
+ if (!*p)
2431
+ /* no option value */
2432
+ return NULL; /* LCOV_EXCL_LINE */
2433
+
2434
+ if ((opt[len-1] != ':') && (opt[len-1] != '=') && !ISSPACE(*p))
2435
+ /* whitespace between option name and value is mandatory
2436
+ for given option names which do not end with ':' or '=' */
2437
+ return NULL;
2438
+
2439
+ /* skip over whitespace */
2440
+ while (*p && ISSPACE(*p))
2441
+ p++;
2442
+
2443
+ if (!*p)
2444
+ /* no option value */
2445
+ return NULL;
2446
+
2447
+ /* return pointer to option value */
2448
+ return p;
2449
+ }
2450
+ #endif /* !WIN32 & !WATT32 & !ANDROID & !__ANDROID__ */
2451
+
2452
+ static int ip_addr(const char *ipbuf, ares_ssize_t len, struct in_addr *addr)
2453
+ {
2454
+
2455
+ /* Four octets and three periods yields at most 15 characters. */
2456
+ if (len > 15)
2457
+ return -1;
2458
+
2459
+ if (ares_inet_pton(AF_INET, ipbuf, addr) < 1)
2460
+ return -1;
2461
+
2462
+ return 0;
2463
+ }
2464
+
2465
+ static void natural_mask(struct apattern *pat)
2466
+ {
2467
+ struct in_addr addr;
2468
+
2469
+ /* Store a host-byte-order copy of pat in a struct in_addr. Icky,
2470
+ * but portable.
2471
+ */
2472
+ addr.s_addr = ntohl(pat->addrV4.s_addr);
2473
+
2474
+ /* This is out of date in the CIDR world, but some people might
2475
+ * still rely on it.
2476
+ */
2477
+ if (IN_CLASSA(addr.s_addr))
2478
+ pat->mask.addr4.s_addr = htonl(IN_CLASSA_NET);
2479
+ else if (IN_CLASSB(addr.s_addr))
2480
+ pat->mask.addr4.s_addr = htonl(IN_CLASSB_NET);
2481
+ else
2482
+ pat->mask.addr4.s_addr = htonl(IN_CLASSC_NET);
2483
+ }
2484
+
2485
+ static int sortlist_alloc(struct apattern **sortlist, int *nsort,
2486
+ struct apattern *pat)
2487
+ {
2488
+ struct apattern *newsort;
2489
+ newsort = ares_realloc(*sortlist, (*nsort + 1) * sizeof(struct apattern));
2490
+ if (!newsort)
2491
+ return 0;
2492
+ newsort[*nsort] = *pat;
2493
+ *sortlist = newsort;
2494
+ (*nsort)++;
2495
+ return 1;
2496
+ }
2497
+
2498
+ /* initialize an rc4 key. If possible a cryptographically secure random key
2499
+ is generated using a suitable function (for example win32's RtlGenRandom as
2500
+ described in
2501
+ http://blogs.msdn.com/michael_howard/archive/2005/01/14/353379.aspx
2502
+ otherwise the code defaults to cross-platform albeit less secure mechanism
2503
+ using rand
2504
+ */
2505
+ static void randomize_key(unsigned char* key,int key_data_len)
2506
+ {
2507
+ int randomized = 0;
2508
+ int counter=0;
2509
+ #ifdef WIN32
2510
+ BOOLEAN res;
2511
+ if (ares_fpSystemFunction036)
2512
+ {
2513
+ res = (*ares_fpSystemFunction036) (key, key_data_len);
2514
+ if (res)
2515
+ randomized = 1;
2516
+ }
2517
+ #else /* !WIN32 */
2518
+ #ifdef CARES_RANDOM_FILE
2519
+ FILE *f = fopen(CARES_RANDOM_FILE, "rb");
2520
+ if(f) {
2521
+ setvbuf(f, NULL, _IONBF, 0);
2522
+ counter = aresx_uztosi(fread(key, 1, key_data_len, f));
2523
+ fclose(f);
2524
+ }
2525
+ #endif
2526
+ #endif /* WIN32 */
2527
+
2528
+ if (!randomized) {
2529
+ for (;counter<key_data_len;counter++)
2530
+ key[counter]=(unsigned char)(rand() % 256); /* LCOV_EXCL_LINE */
2531
+ }
2532
+ }
2533
+
2534
+ static int init_id_key(rc4_key* key,int key_data_len)
2535
+ {
2536
+ unsigned char index1;
2537
+ unsigned char index2;
2538
+ unsigned char* state;
2539
+ short counter;
2540
+ unsigned char *key_data_ptr = 0;
2541
+
2542
+ key_data_ptr = ares_malloc(key_data_len);
2543
+ if (!key_data_ptr)
2544
+ return ARES_ENOMEM;
2545
+ memset(key_data_ptr, 0, key_data_len);
2546
+
2547
+ state = &key->state[0];
2548
+ for(counter = 0; counter < 256; counter++)
2549
+ /* unnecessary AND but it keeps some compilers happier */
2550
+ state[counter] = (unsigned char)(counter & 0xff);
2551
+ randomize_key(key->state,key_data_len);
2552
+ key->x = 0;
2553
+ key->y = 0;
2554
+ index1 = 0;
2555
+ index2 = 0;
2556
+ for(counter = 0; counter < 256; counter++)
2557
+ {
2558
+ index2 = (unsigned char)((key_data_ptr[index1] + state[counter] +
2559
+ index2) % 256);
2560
+ ARES_SWAP_BYTE(&state[counter], &state[index2]);
2561
+
2562
+ index1 = (unsigned char)((index1 + 1) % key_data_len);
2563
+ }
2564
+ ares_free(key_data_ptr);
2565
+ return ARES_SUCCESS;
2566
+ }
2567
+
2568
+ void ares_set_local_ip4(ares_channel channel, unsigned int local_ip)
2569
+ {
2570
+ channel->local_ip4 = local_ip;
2571
+ }
2572
+
2573
+ /* local_ip6 should be 16 bytes in length */
2574
+ void ares_set_local_ip6(ares_channel channel,
2575
+ const unsigned char* local_ip6)
2576
+ {
2577
+ memcpy(&channel->local_ip6, local_ip6, sizeof(channel->local_ip6));
2578
+ }
2579
+
2580
+ /* local_dev_name should be null terminated. */
2581
+ void ares_set_local_dev(ares_channel channel,
2582
+ const char* local_dev_name)
2583
+ {
2584
+ strncpy(channel->local_dev_name, local_dev_name,
2585
+ sizeof(channel->local_dev_name));
2586
+ channel->local_dev_name[sizeof(channel->local_dev_name) - 1] = 0;
2587
+ }
2588
+
2589
+
2590
+ void ares_set_socket_callback(ares_channel channel,
2591
+ ares_sock_create_callback cb,
2592
+ void *data)
2593
+ {
2594
+ channel->sock_create_cb = cb;
2595
+ channel->sock_create_cb_data = data;
2596
+ }
2597
+
2598
+ void ares_set_socket_configure_callback(ares_channel channel,
2599
+ ares_sock_config_callback cb,
2600
+ void *data)
2601
+ {
2602
+ channel->sock_config_cb = cb;
2603
+ channel->sock_config_cb_data = data;
2604
+ }
2605
+
2606
+ void ares_set_socket_functions(ares_channel channel,
2607
+ const struct ares_socket_functions * funcs,
2608
+ void *data)
2609
+ {
2610
+ channel->sock_funcs = funcs;
2611
+ channel->sock_func_cb_data = data;
2612
+ }
2613
+
2614
+ int ares_set_sortlist(ares_channel channel, const char *sortstr)
2615
+ {
2616
+ int nsort = 0;
2617
+ struct apattern *sortlist = NULL;
2618
+ int status;
2619
+
2620
+ if (!channel)
2621
+ return ARES_ENODATA;
2622
+
2623
+ status = config_sortlist(&sortlist, &nsort, sortstr);
2624
+ if (status == ARES_SUCCESS && sortlist) {
2625
+ if (channel->sortlist)
2626
+ ares_free(channel->sortlist);
2627
+ channel->sortlist = sortlist;
2628
+ channel->nsort = nsort;
2629
+ }
2630
+ return status;
2631
+ }
2632
+
2633
+ void ares__init_servers_state(ares_channel channel)
2634
+ {
2635
+ struct server_state *server;
2636
+ int i;
2637
+
2638
+ for (i = 0; i < channel->nservers; i++)
2639
+ {
2640
+ server = &channel->servers[i];
2641
+ server->udp_socket = ARES_SOCKET_BAD;
2642
+ server->tcp_socket = ARES_SOCKET_BAD;
2643
+ server->tcp_connection_generation = ++channel->tcp_connection_generation;
2644
+ server->tcp_lenbuf_pos = 0;
2645
+ server->tcp_buffer_pos = 0;
2646
+ server->tcp_buffer = NULL;
2647
+ server->tcp_length = 0;
2648
+ server->qhead = NULL;
2649
+ server->qtail = NULL;
2650
+ ares__init_list_head(&server->queries_to_server);
2651
+ server->channel = channel;
2652
+ server->is_broken = 0;
2653
+ }
2654
+ }