grpc 1.55.0 → 1.56.0.pre3

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

Potentially problematic release.


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

Files changed (374) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +100 -68
  3. data/include/grpc/event_engine/event_engine.h +4 -3
  4. data/include/grpc/grpc_audit_logging.h +96 -0
  5. data/include/grpc/module.modulemap +2 -0
  6. data/include/grpc/support/json.h +218 -0
  7. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  9. data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
  11. data/src/core/ext/filters/client_channel/client_channel.h +6 -0
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
  13. data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
  14. data/src/core/ext/filters/client_channel/config_selector.h +9 -24
  15. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
  17. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
  21. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
  22. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
  23. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
  24. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
  25. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
  29. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
  31. data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
  40. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
  41. data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
  43. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
  44. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
  45. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
  46. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
  47. data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
  48. data/src/core/ext/filters/client_channel/subchannel.h +3 -43
  49. data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
  50. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
  51. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
  52. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
  53. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
  54. data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
  55. data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
  56. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
  57. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
  58. data/src/core/ext/xds/certificate_provider_store.cc +4 -9
  59. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  60. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
  61. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
  62. data/src/core/ext/xds/xds_api.cc +9 -6
  63. data/src/core/ext/xds/xds_api.h +3 -2
  64. data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
  65. data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
  66. data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
  67. data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
  68. data/src/core/ext/xds/xds_client.cc +5 -4
  69. data/src/core/ext/xds/xds_client_stats.h +1 -1
  70. data/src/core/ext/xds/xds_cluster.cc +20 -19
  71. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
  72. data/src/core/ext/xds/xds_common_types.cc +3 -1
  73. data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
  74. data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
  75. data/src/core/ext/xds/xds_http_filters.h +4 -2
  76. data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
  77. data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
  78. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
  79. data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
  80. data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
  81. data/src/core/ext/xds/xds_listener.cc +1 -0
  82. data/src/core/ext/xds/xds_route_config.cc +40 -3
  83. data/src/core/ext/xds/xds_routing.cc +2 -2
  84. data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
  85. data/src/core/lib/avl/avl.h +5 -0
  86. data/src/core/lib/channel/channel_args.cc +80 -22
  87. data/src/core/lib/channel/channel_args.h +34 -1
  88. data/src/core/lib/channel/channel_trace.cc +16 -12
  89. data/src/core/lib/channel/channelz.cc +159 -132
  90. data/src/core/lib/channel/channelz.h +42 -35
  91. data/src/core/lib/channel/channelz_registry.cc +23 -20
  92. data/src/core/lib/channel/connected_channel.cc +17 -6
  93. data/src/core/lib/channel/promise_based_filter.cc +0 -4
  94. data/src/core/lib/channel/promise_based_filter.h +2 -0
  95. data/src/core/lib/compression/compression_internal.cc +2 -5
  96. data/src/core/lib/config/config_vars.cc +20 -18
  97. data/src/core/lib/config/config_vars.h +4 -4
  98. data/src/core/lib/config/load_config.cc +13 -0
  99. data/src/core/lib/config/load_config.h +6 -0
  100. data/src/core/lib/debug/event_log.h +1 -1
  101. data/src/core/lib/debug/stats_data.h +1 -1
  102. data/src/core/lib/debug/trace.cc +24 -55
  103. data/src/core/lib/debug/trace.h +3 -1
  104. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
  105. data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
  106. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
  107. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
  108. data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
  109. data/src/core/lib/event_engine/default_event_engine.cc +13 -1
  110. data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
  111. data/src/core/lib/event_engine/poller.h +2 -2
  112. data/src/core/lib/event_engine/posix.h +4 -0
  113. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
  114. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
  115. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
  116. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
  117. data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
  118. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
  119. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
  120. data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
  121. data/src/core/lib/event_engine/shim.cc +7 -1
  122. data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
  123. data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
  124. data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
  125. data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
  126. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
  127. data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
  128. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
  129. data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
  130. data/src/core/lib/event_engine/windows/iocp.cc +4 -3
  131. data/src/core/lib/event_engine/windows/iocp.h +3 -3
  132. data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
  133. data/src/core/lib/event_engine/windows/win_socket.h +4 -4
  134. data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
  135. data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
  136. data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
  137. data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
  138. data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
  139. data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
  140. data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
  141. data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
  142. data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
  143. data/src/core/lib/experiments/config.cc +38 -7
  144. data/src/core/lib/experiments/config.h +16 -0
  145. data/src/core/lib/experiments/experiments.cc +67 -20
  146. data/src/core/lib/experiments/experiments.h +27 -21
  147. data/src/core/lib/gpr/log_internal.h +55 -0
  148. data/src/core/lib/gprpp/crash.cc +10 -0
  149. data/src/core/lib/gprpp/crash.h +3 -0
  150. data/src/core/lib/gprpp/per_cpu.cc +33 -0
  151. data/src/core/lib/gprpp/per_cpu.h +29 -6
  152. data/src/core/lib/gprpp/time.cc +1 -0
  153. data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
  154. data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
  155. data/src/core/lib/iomgr/ev_apple.cc +12 -12
  156. data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
  157. data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
  158. data/src/core/lib/iomgr/iocp_windows.cc +24 -3
  159. data/src/core/lib/iomgr/iocp_windows.h +11 -0
  160. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
  161. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
  162. data/src/core/lib/iomgr/socket_windows.cc +61 -7
  163. data/src/core/lib/iomgr/socket_windows.h +9 -2
  164. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
  165. data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
  166. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  167. data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
  168. data/src/core/lib/json/json.h +2 -166
  169. data/src/core/lib/json/json_object_loader.cc +8 -9
  170. data/src/core/lib/json/json_object_loader.h +25 -18
  171. data/src/core/lib/json/json_reader.cc +13 -6
  172. data/src/core/lib/json/json_util.cc +6 -11
  173. data/src/core/lib/json/json_writer.cc +7 -8
  174. data/src/core/lib/load_balancing/lb_policy.h +13 -0
  175. data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
  176. data/src/core/lib/matchers/matchers.cc +3 -4
  177. data/src/core/lib/matchers/matchers.h +2 -1
  178. data/src/core/lib/promise/activity.cc +5 -0
  179. data/src/core/lib/promise/activity.h +10 -0
  180. data/src/core/lib/promise/detail/promise_factory.h +1 -1
  181. data/src/core/lib/promise/party.cc +31 -13
  182. data/src/core/lib/promise/party.h +11 -2
  183. data/src/core/lib/promise/pipe.h +9 -2
  184. data/src/core/lib/promise/prioritized_race.h +95 -0
  185. data/src/core/lib/promise/sleep.cc +2 -1
  186. data/src/core/lib/resolver/server_address.cc +0 -8
  187. data/src/core/lib/resolver/server_address.h +0 -6
  188. data/src/core/lib/resource_quota/memory_quota.cc +7 -7
  189. data/src/core/lib/resource_quota/memory_quota.h +1 -2
  190. data/src/core/lib/security/authorization/audit_logging.cc +98 -0
  191. data/src/core/lib/security/authorization/audit_logging.h +73 -0
  192. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
  193. data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
  194. data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
  195. data/src/core/lib/security/authorization/rbac_policy.h +19 -2
  196. data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
  197. data/src/core/lib/security/authorization/stdout_logger.h +61 -0
  198. data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
  199. data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
  200. data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
  201. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
  202. data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
  203. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
  204. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
  205. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
  206. data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
  207. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
  208. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
  209. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
  210. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
  211. data/src/core/lib/security/util/json_util.cc +1 -0
  212. data/src/core/lib/service_config/service_config_call_data.h +49 -20
  213. data/src/core/lib/service_config/service_config_impl.cc +2 -1
  214. data/src/core/lib/surface/call.cc +38 -23
  215. data/src/core/lib/surface/completion_queue.cc +6 -2
  216. data/src/core/lib/surface/version.cc +2 -2
  217. data/src/core/lib/transport/batch_builder.cc +15 -12
  218. data/src/core/lib/transport/batch_builder.h +39 -35
  219. data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
  220. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
  221. data/src/ruby/ext/grpc/extconf.rb +8 -9
  222. data/src/ruby/lib/grpc/version.rb +1 -1
  223. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
  224. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
  225. data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
  226. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
  227. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
  228. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
  229. data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
  230. data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
  231. data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
  232. data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
  233. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
  234. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
  235. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
  236. data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
  237. data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
  238. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
  239. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
  240. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
  241. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
  242. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
  243. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
  244. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
  245. data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
  246. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  247. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
  248. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
  249. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
  251. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
  252. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
  253. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
  254. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
  255. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
  262. data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
  278. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
  279. data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
  280. data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
  281. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
  282. data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
  283. data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
  284. data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
  286. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
  288. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
  289. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
  300. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
  303. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
  304. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
  305. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
  306. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
  307. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
  308. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
  309. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
  310. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
  311. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
  312. data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
  313. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
  314. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
  315. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
  316. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
  317. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
  318. data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
  319. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
  320. data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
  321. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  322. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
  323. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
  324. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
  325. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
  326. data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
  327. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
  328. data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
  329. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
  331. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
  332. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
  333. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
  334. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
  335. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
  336. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
  337. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
  338. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
  339. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
  340. data/third_party/cares/cares/include/ares.h +23 -1
  341. data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
  342. data/third_party/cares/cares/include/ares_rules.h +2 -2
  343. data/third_party/cares/cares/include/ares_version.h +3 -3
  344. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
  345. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
  346. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
  347. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
  348. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
  349. data/third_party/cares/cares/src/lib/ares_data.c +16 -0
  350. data/third_party/cares/cares/src/lib/ares_data.h +7 -0
  351. data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
  352. data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
  353. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
  354. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
  355. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
  356. data/third_party/cares/cares/src/lib/ares_init.c +97 -485
  357. data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
  358. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
  359. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
  360. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
  361. data/third_party/cares/cares/src/lib/ares_private.h +30 -16
  362. data/third_party/cares/cares/src/lib/ares_process.c +55 -16
  363. data/third_party/cares/cares/src/lib/ares_query.c +1 -35
  364. data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
  365. data/third_party/cares/cares/src/lib/ares_send.c +5 -7
  366. data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
  367. data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
  368. data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
  369. data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
  370. data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
  371. metadata +50 -14
  372. data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
  373. data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
  374. data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -18,51 +18,10 @@
18
18
  #endif
19
19
 
20
20
  #include "ares_setup.h"
21
- #include "ares_strsplit.h"
22
21
  #include "ares.h"
23
22
  #include "ares_private.h"
24
23
 
25
- static int list_contains(char * const *list, size_t num_elem, const char *str, int insensitive)
26
- {
27
- size_t len;
28
- size_t i;
29
-
30
- len = strlen(str);
31
- for (i=0; i<num_elem; i++)
32
- {
33
- if (insensitive)
34
- {
35
- #ifdef WIN32
36
- if (strnicmp(list[i], str, len) == 0)
37
- #else
38
- if (strncasecmp(list[i], str, len) == 0)
39
- #endif
40
- return 1;
41
- }
42
- else
43
- {
44
- if (strncmp(list[i], str, len) == 0)
45
- return 1;
46
- }
47
- }
48
-
49
- return 0;
50
- }
51
-
52
- static int is_delim(char c, const char *delims, size_t num_delims)
53
- {
54
- size_t i;
55
-
56
- for (i=0; i<num_delims; i++)
57
- {
58
- if (c == delims[i])
59
- return 1;
60
- }
61
- return 0;
62
- }
63
-
64
-
65
- void ares_strsplit_free(char **elms, size_t num_elm)
24
+ void ares__strsplit_free(char **elms, size_t num_elm)
66
25
  {
67
26
  size_t i;
68
27
 
@@ -74,105 +33,62 @@ void ares_strsplit_free(char **elms, size_t num_elm)
74
33
  ares_free(elms);
75
34
  }
76
35
 
77
-
78
- char **ares_strsplit(const char *in, const char *delms, int make_set, size_t *num_elm)
79
- {
80
- char *parsestr;
81
- char **temp;
82
- char **out;
83
- size_t cnt;
84
- size_t nelms;
85
- size_t in_len;
86
- size_t num_delims;
87
- size_t i;
36
+ char **ares__strsplit(const char *in, const char *delms, size_t *num_elm) {
37
+ const char *p;
38
+ char **table;
39
+ void *tmp;
40
+ size_t i, j, k, count;
88
41
 
89
42
  if (in == NULL || delms == NULL || num_elm == NULL)
90
43
  return NULL;
91
44
 
92
45
  *num_elm = 0;
93
46
 
94
- in_len = strlen(in);
95
- num_delims = strlen(delms);
96
-
97
- /* Figure out how many elements. */
98
- nelms = 1;
99
- for (i=0; i<in_len; i++)
100
- {
101
- if (is_delim(in[i], delms, num_delims))
102
- {
103
- nelms++;
47
+ /* count non-empty delimited substrings */
48
+ count = 0;
49
+ p = in;
50
+ do {
51
+ i = strcspn(p, delms);
52
+ if (i != 0) {
53
+ /* string is non-empty */
54
+ count++;
55
+ p += i;
104
56
  }
105
- }
57
+ } while (*p++ != 0);
106
58
 
107
- /* Copy of input so we can cut it up. */
108
- parsestr = ares_strdup(in);
109
- if (parsestr == NULL)
59
+ if (count == 0)
110
60
  return NULL;
111
-
112
- /* Temporary array to store locations of start of each element
113
- * within parsestr. */
114
- temp = ares_malloc(nelms * sizeof(*temp));
115
- if (temp == NULL)
116
- {
117
- ares_free(parsestr);
61
+ table = ares_malloc(count * sizeof(*table));
62
+ if (table == NULL)
118
63
  return NULL;
119
- }
120
- temp[0] = parsestr;
121
- cnt = 1;
122
- for (i=0; i<in_len && cnt<nelms; i++)
123
- {
124
- if (!is_delim(parsestr[i], delms, num_delims))
125
- continue;
126
-
127
- /* Replace sep with NULL. */
128
- parsestr[i] = '\0';
129
- /* Add the pointer to the array of elements */
130
- temp[cnt] = parsestr+i+1;
131
- cnt++;
132
- }
133
64
 
134
- /* Copy each element to our output array. */
135
- out = ares_malloc(nelms * sizeof(*out));
136
- if (out == NULL)
137
- {
138
- ares_free(parsestr);
139
- ares_free(temp);
140
- return NULL;
141
- }
142
-
143
- nelms = 0;
144
- for (i=0; i<cnt; i++)
145
- {
146
- if (temp[i][0] == '\0')
147
- continue;
148
-
149
- if (make_set && list_contains(out, nelms, temp[i], 1))
150
- continue;
151
-
152
- out[nelms] = ares_strdup(temp[i]);
153
- if (out[nelms] == NULL)
154
- {
155
- ares_strsplit_free(out, nelms);
156
- ares_free(parsestr);
157
- ares_free(temp);
158
- return NULL;
65
+ j = 0; /* current table entry */
66
+ /* re-calculate indices and allocate new strings for table */
67
+ for (p = in; j < count; p += i + 1) {
68
+ i = strcspn(p, delms);
69
+ if (i != 0) {
70
+ for (k = 0; k < j; k++) {
71
+ if (strncasecmp(table[k], p, i) == 0 && table[k][i] == 0)
72
+ break;
73
+ }
74
+ if (k == j) {
75
+ /* copy unique strings only */
76
+ table[j] = ares_malloc(i + 1);
77
+ if (table[j] == NULL) {
78
+ ares__strsplit_free(table, j);
79
+ return NULL;
80
+ }
81
+ strncpy(table[j], p, i);
82
+ table[j++][i] = 0;
83
+ } else
84
+ count--;
159
85
  }
160
- nelms++;
161
- }
162
-
163
-
164
- /* If there are no elements don't return an empty allocated
165
- * array. */
166
- if (nelms == 0)
167
- {
168
- ares_strsplit_free(out, nelms);
169
- out = NULL;
170
86
  }
171
87
 
172
- /* Get the true number of elements (recalculated because of make_set) */
173
- *num_elm = nelms;
88
+ tmp = ares_realloc(table, count * sizeof (*table));
89
+ if (tmp != NULL)
90
+ table = tmp;
174
91
 
175
- ares_free(parsestr);
176
- ares_free(temp);
177
- return out;
92
+ *num_elm = count;
93
+ return table;
178
94
  }
@@ -18,25 +18,24 @@
18
18
 
19
19
  #include "ares_setup.h"
20
20
 
21
- /* Split a string on delem skipping empty elements.
21
+ /* Split a string on delms skipping empty or duplicate elements.
22
22
  *
23
23
  * param in String to split.
24
- * param delims String of characters to treat as a delimitor.
25
- * Each character in the string is a delimitor so
26
- * there can be multiple delimitors to split on.
27
- * E.g. ", " will split on all comma's and spaces.
28
- * param make_set Have the list be a Set where there are no
29
- * duplicate entries. 1 for true, 0 or false.
24
+ * param delms String of characters to treat as a delimitor.
25
+ * Each character in the string is a delimitor so
26
+ * there can be multiple delimitors to split on.
27
+ * E.g. ", " will split on all comma's and spaces.
28
+ * Duplicate entries are removed.
30
29
  * param num_elm Return parameter of the number of elements
31
30
  * in the result array.
32
31
  *
33
32
  * returns an allocated array of allocated string elements.
34
33
  *
35
34
  */
36
- char **ares_strsplit(const char *in, const char *delms, int make_set, size_t *num_elm);
35
+ char **ares__strsplit(const char *in, const char *delms, size_t *num_elm);
37
36
 
38
- /* Frees the result returned from ares_strsplit(). */
39
- void ares_strsplit_free(char **elms, size_t num_elm);
37
+ /* Frees the result returned from ares__strsplit(). */
38
+ void ares__strsplit_free(char **elms, size_t num_elm);
40
39
 
41
40
 
42
41
  #endif /* HEADER_CARES_STRSPLIT_H */
@@ -1,19 +1,20 @@
1
1
 
2
2
  /*
3
- * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
3
+ * Copyright (c) 2012 by Gilles Chehade <gilles@openbsd.org>
4
4
  * Copyright (c) 1996,1999 by Internet Software Consortium.
5
5
  *
6
6
  * Permission to use, copy, modify, and distribute this software for any
7
7
  * purpose with or without fee is hereby granted, provided that the above
8
8
  * copyright notice and this permission notice appear in all copies.
9
9
  *
10
- * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
11
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
13
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
16
- * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
10
+ * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
11
+ * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
12
+ * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
13
+ * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
16
+ * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
17
+ * SOFTWARE.
17
18
  */
18
19
 
19
20
  #include "ares_setup.h"
@@ -35,9 +36,6 @@
35
36
 
36
37
  const struct ares_in6_addr ares_in6addr_any = { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } };
37
38
 
38
-
39
- #ifndef HAVE_INET_NET_PTON
40
-
41
39
  /*
42
40
  * static int
43
41
  * inet_net_pton_ipv4(src, dst, size)
@@ -60,7 +58,7 @@ const struct ares_in6_addr ares_in6addr_any = { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,
60
58
  * Paul Vixie (ISC), June 1996
61
59
  */
62
60
  static int
63
- inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
61
+ ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
64
62
  {
65
63
  static const char xdigits[] = "0123456789abcdef";
66
64
  static const char digits[] = "0123456789";
@@ -216,64 +214,16 @@ getbits(const char *src, int *bitsp)
216
214
  return (1);
217
215
  }
218
216
 
219
- static int
220
- getv4(const char *src, unsigned char *dst, int *bitsp)
221
- {
222
- static const char digits[] = "0123456789";
223
- unsigned char *odst = dst;
224
- int n;
225
- unsigned int val;
226
- char ch;
227
-
228
- val = 0;
229
- n = 0;
230
- while ((ch = *src++) != '\0') {
231
- const char *pch;
232
-
233
- pch = strchr(digits, ch);
234
- if (pch != NULL) {
235
- if (n++ != 0 && val == 0) /* no leading zeros */
236
- return (0);
237
- val *= 10;
238
- val += aresx_sztoui(pch - digits);
239
- if (val > 255) /* range */
240
- return (0);
241
- continue;
242
- }
243
- if (ch == '.' || ch == '/') {
244
- if (dst - odst > 3) /* too many octets? */
245
- return (0);
246
- *dst++ = (unsigned char)val;
247
- if (ch == '/')
248
- return (getbits(src, bitsp));
249
- val = 0;
250
- n = 0;
251
- continue;
252
- }
253
- return (0);
254
- }
255
- if (n == 0)
256
- return (0);
257
- if (dst - odst > 3) /* too many octets? */
258
- return (0);
259
- *dst = (unsigned char)val;
260
- return 1;
261
- }
262
217
 
263
218
  static int
264
- inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size)
219
+ ares_inet_pton6(const char *src, unsigned char *dst)
265
220
  {
266
221
  static const char xdigits_l[] = "0123456789abcdef",
267
- xdigits_u[] = "0123456789ABCDEF";
222
+ xdigits_u[] = "0123456789ABCDEF";
268
223
  unsigned char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
269
224
  const char *xdigits, *curtok;
270
- int ch, saw_xdigit;
225
+ int ch, saw_xdigit, count_xdigit;
271
226
  unsigned int val;
272
- int digits;
273
- int bits;
274
- size_t bytes;
275
- int words;
276
- int ipv4;
277
227
 
278
228
  memset((tp = tmp), '\0', NS_IN6ADDRSZ);
279
229
  endp = tp + NS_IN6ADDRSZ;
@@ -283,22 +233,22 @@ inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size)
283
233
  if (*++src != ':')
284
234
  goto enoent;
285
235
  curtok = src;
286
- saw_xdigit = 0;
236
+ saw_xdigit = count_xdigit = 0;
287
237
  val = 0;
288
- digits = 0;
289
- bits = -1;
290
- ipv4 = 0;
291
238
  while ((ch = *src++) != '\0') {
292
239
  const char *pch;
293
240
 
294
241
  if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
295
242
  pch = strchr((xdigits = xdigits_u), ch);
296
243
  if (pch != NULL) {
244
+ if (count_xdigit >= 4)
245
+ goto enoent;
297
246
  val <<= 4;
298
- val |= aresx_sztoui(pch - xdigits);
299
- if (++digits > 4)
247
+ val |= (unsigned int)(pch - xdigits);
248
+ if (val > 0xffff)
300
249
  goto enoent;
301
250
  saw_xdigit = 1;
251
+ count_xdigit++;
302
252
  continue;
303
253
  }
304
254
  if (ch == ':') {
@@ -308,76 +258,99 @@ inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size)
308
258
  goto enoent;
309
259
  colonp = tp;
310
260
  continue;
311
- } else if (*src == '\0')
261
+ } else if (*src == '\0') {
312
262
  goto enoent;
263
+ }
313
264
  if (tp + NS_INT16SZ > endp)
314
- return (0);
315
- *tp++ = (unsigned char)((val >> 8) & 0xff);
316
- *tp++ = (unsigned char)(val & 0xff);
265
+ goto enoent;
266
+ *tp++ = (unsigned char) (val >> 8) & 0xff;
267
+ *tp++ = (unsigned char) val & 0xff;
317
268
  saw_xdigit = 0;
318
- digits = 0;
269
+ count_xdigit = 0;
319
270
  val = 0;
320
271
  continue;
321
272
  }
322
273
  if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
323
- getv4(curtok, tp, &bits) > 0) {
274
+ ares_inet_net_pton_ipv4(curtok, tp, NS_INADDRSZ) > 0) {
324
275
  tp += NS_INADDRSZ;
325
276
  saw_xdigit = 0;
326
- ipv4 = 1;
327
277
  break; /* '\0' was seen by inet_pton4(). */
328
278
  }
329
- if (ch == '/' && getbits(src, &bits) > 0)
330
- break;
331
279
  goto enoent;
332
280
  }
333
281
  if (saw_xdigit) {
334
282
  if (tp + NS_INT16SZ > endp)
335
283
  goto enoent;
336
- *tp++ = (unsigned char)((val >> 8) & 0xff);
337
- *tp++ = (unsigned char)(val & 0xff);
284
+ *tp++ = (unsigned char) (val >> 8) & 0xff;
285
+ *tp++ = (unsigned char) val & 0xff;
338
286
  }
339
- if (bits == -1)
340
- bits = 128;
341
-
342
- words = (bits + 15) / 16;
343
- if (words < 2)
344
- words = 2;
345
- if (ipv4)
346
- words = 8;
347
- endp = tmp + 2 * words;
348
-
349
287
  if (colonp != NULL) {
350
288
  /*
351
289
  * Since some memmove()'s erroneously fail to handle
352
290
  * overlapping regions, we'll do the shift by hand.
353
291
  */
354
- const ares_ssize_t n = tp - colonp;
355
- ares_ssize_t i;
292
+ const int n = (int)(tp - colonp);
293
+ int i;
356
294
 
357
295
  if (tp == endp)
358
296
  goto enoent;
359
297
  for (i = 1; i <= n; i++) {
360
- *(endp - i) = *(colonp + n - i);
361
- *(colonp + n - i) = 0;
298
+ endp[- i] = colonp[n - i];
299
+ colonp[n - i] = 0;
362
300
  }
363
301
  tp = endp;
364
302
  }
365
303
  if (tp != endp)
366
304
  goto enoent;
367
305
 
368
- bytes = (bits + 7) / 8;
369
- if (bytes > size)
370
- goto emsgsize;
371
- memcpy(dst, tmp, bytes);
372
- return (bits);
306
+ memcpy(dst, tmp, NS_IN6ADDRSZ);
307
+ return (1);
373
308
 
374
- enoent:
309
+ enoent:
375
310
  SET_ERRNO(ENOENT);
376
311
  return (-1);
312
+ }
377
313
 
378
- emsgsize:
379
- SET_ERRNO(EMSGSIZE);
380
- return (-1);
314
+ static int
315
+ ares_inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size)
316
+ {
317
+ struct ares_in6_addr in6;
318
+ int ret;
319
+ int bits;
320
+ size_t bytes;
321
+ char buf[INET6_ADDRSTRLEN + sizeof("/128")];
322
+ char *sep;
323
+
324
+ if (strlen(src) >= sizeof buf) {
325
+ SET_ERRNO(EMSGSIZE);
326
+ return (-1);
327
+ }
328
+ strncpy(buf, src, sizeof buf);
329
+
330
+ sep = strchr(buf, '/');
331
+ if (sep != NULL)
332
+ *sep++ = '\0';
333
+
334
+ ret = ares_inet_pton6(buf, (unsigned char *)&in6);
335
+ if (ret != 1)
336
+ return (-1);
337
+
338
+ if (sep == NULL)
339
+ bits = 128;
340
+ else {
341
+ if (!getbits(sep, &bits)) {
342
+ SET_ERRNO(ENOENT);
343
+ return (-1);
344
+ }
345
+ }
346
+
347
+ bytes = (bits + 7) / 8;
348
+ if (bytes > size) {
349
+ SET_ERRNO(EMSGSIZE);
350
+ return (-1);
351
+ }
352
+ memcpy(dst, &in6, bytes);
353
+ return (bits);
381
354
  }
382
355
 
383
356
  /*
@@ -403,18 +376,15 @@ ares_inet_net_pton(int af, const char *src, void *dst, size_t size)
403
376
  {
404
377
  switch (af) {
405
378
  case AF_INET:
406
- return (inet_net_pton_ipv4(src, dst, size));
379
+ return (ares_inet_net_pton_ipv4(src, dst, size));
407
380
  case AF_INET6:
408
- return (inet_net_pton_ipv6(src, dst, size));
381
+ return (ares_inet_net_pton_ipv6(src, dst, size));
409
382
  default:
410
383
  SET_ERRNO(EAFNOSUPPORT);
411
384
  return (-1);
412
385
  }
413
386
  }
414
387
 
415
- #endif /* HAVE_INET_NET_PTON */
416
-
417
- #ifndef HAVE_INET_PTON
418
388
  int ares_inet_pton(int af, const char *src, void *dst)
419
389
  {
420
390
  int result;
@@ -434,11 +404,3 @@ int ares_inet_pton(int af, const char *src, void *dst)
434
404
  return 0;
435
405
  return (result > -1 ? 1 : -1);
436
406
  }
437
- #else /* HAVE_INET_PTON */
438
- int ares_inet_pton(int af, const char *src, void *dst)
439
- {
440
- /* just relay this to the underlying function */
441
- return inet_pton(af, src, dst);
442
- }
443
-
444
- #endif
@@ -0,0 +1,53 @@
1
+ #ifndef ARES_GETOPT_H
2
+ #define ARES_GETOPT_H
3
+
4
+ /*
5
+ * Copyright (c) 1987-2001 The Regents of the University of California.
6
+ * All rights reserved.
7
+ *
8
+ * Redistribution and use in source and binary forms, with or without
9
+ * modification, are permitted provided that the following conditions are met:
10
+ *
11
+ * A. Redistributions of source code must retain the above copyright notice,
12
+ * this list of conditions and the following disclaimer.
13
+ * B. Redistributions in binary form must reproduce the above copyright notice,
14
+ * this list of conditions and the following disclaimer in the documentation
15
+ * and/or other materials provided with the distribution.
16
+ * C. Neither the names of the copyright holders nor the names of its
17
+ * contributors may be used to endorse or promote products derived from this
18
+ * software without specific prior written permission.
19
+ *
20
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS
21
+ * IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
24
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
+ * POSSIBILITY OF SUCH DAMAGE.
31
+ */
32
+
33
+
34
+ int ares_getopt(int nargc, char * const nargv[], const char *ostr);
35
+
36
+ #undef optarg
37
+ #undef optind
38
+ #undef opterr
39
+ #undef optopt
40
+ #undef optreset
41
+
42
+ #define optarg ares_optarg
43
+ #define optind ares_optind
44
+ #define opterr ares_opterr
45
+ #define optopt ares_optopt
46
+ #define optreset ares_optreset
47
+
48
+ extern char *optarg;
49
+ extern int optind;
50
+ extern int opterr;
51
+ extern int optopt;
52
+
53
+ #endif /* ARES_GETOPT_H */