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.
- checksums.yaml +4 -4
- data/Makefile +100 -68
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
- data/src/core/ext/filters/client_channel/client_channel.h +6 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +148 -107
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- 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
|
-
|
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
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
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
|
-
|
108
|
-
parsestr = ares_strdup(in);
|
109
|
-
if (parsestr == NULL)
|
59
|
+
if (count == 0)
|
110
60
|
return NULL;
|
111
|
-
|
112
|
-
|
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
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
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
|
-
|
173
|
-
|
88
|
+
tmp = ares_realloc(table, count * sizeof (*table));
|
89
|
+
if (tmp != NULL)
|
90
|
+
table = tmp;
|
174
91
|
|
175
|
-
|
176
|
-
|
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
|
21
|
+
/* Split a string on delms skipping empty or duplicate elements.
|
22
22
|
*
|
23
23
|
* param in String to split.
|
24
|
-
* param
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
28
|
-
*
|
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 **
|
35
|
+
char **ares__strsplit(const char *in, const char *delms, size_t *num_elm);
|
37
36
|
|
38
|
-
/* Frees the result returned from
|
39
|
-
void
|
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)
|
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
|
11
|
-
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
|
12
|
-
* MERCHANTABILITY AND FITNESS.
|
13
|
-
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
|
14
|
-
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
|
15
|
-
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
|
16
|
-
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
|
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
|
-
|
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
|
-
|
219
|
+
ares_inet_pton6(const char *src, unsigned char *dst)
|
265
220
|
{
|
266
221
|
static const char xdigits_l[] = "0123456789abcdef",
|
267
|
-
|
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 |=
|
299
|
-
if (
|
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
|
-
|
315
|
-
*tp++ = (unsigned char)(
|
316
|
-
*tp++ = (unsigned char)
|
265
|
+
goto enoent;
|
266
|
+
*tp++ = (unsigned char) (val >> 8) & 0xff;
|
267
|
+
*tp++ = (unsigned char) val & 0xff;
|
317
268
|
saw_xdigit = 0;
|
318
|
-
|
269
|
+
count_xdigit = 0;
|
319
270
|
val = 0;
|
320
271
|
continue;
|
321
272
|
}
|
322
273
|
if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
|
323
|
-
|
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)(
|
337
|
-
*tp++ = (unsigned char)
|
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
|
355
|
-
|
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
|
-
|
361
|
-
|
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
|
-
|
369
|
-
|
370
|
-
goto emsgsize;
|
371
|
-
memcpy(dst, tmp, bytes);
|
372
|
-
return (bits);
|
306
|
+
memcpy(dst, tmp, NS_IN6ADDRSZ);
|
307
|
+
return (1);
|
373
308
|
|
374
|
-
|
309
|
+
enoent:
|
375
310
|
SET_ERRNO(ENOENT);
|
376
311
|
return (-1);
|
312
|
+
}
|
377
313
|
|
378
|
-
|
379
|
-
|
380
|
-
|
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 (
|
379
|
+
return (ares_inet_net_pton_ipv4(src, dst, size));
|
407
380
|
case AF_INET6:
|
408
|
-
return (
|
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 */
|