#include <grpc/support/port_platform.h>
#include "src/core/lib/event_engine/tcp_socket_utils.h"
#include <grpc/event_engine/event_engine.h>
#include "src/core/lib/address_utils/parse_address.h"
#include "src/core/lib/iomgr/port.h"
#ifdef GRPC_POSIX_SOCKET_UTILS_COMMON
#include <arpa/inet.h>
#ifdef GRPC_LINUX_TCP_H
#include <linux/tcp.h>
#else
#include <netinet/in.h>
#endif
#include <sys/socket.h>
#endif
#ifdef GRPC_HAVE_UNIX_SOCKET
#include <sys/stat.h>
#include <sys/un.h>
#endif
#include <errno.h>
#include <inttypes.h>
#include <stdlib.h>
#include <string.h>
#include <initializer_list>
#include <utility>
#include "absl/status/status.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include <grpc/support/log.h>
#include "src/core/lib/gprpp/host_port.h"
#include "src/core/lib/gprpp/status_helper.h"
#include "src/core/lib/iomgr/resolved_address.h"
#include "src/core/lib/uri/uri_parser.h"
namespace grpc_event_engine {
namespace experimental {
namespace {
constexpr uint8_t kV4MappedPrefix[] = …;
absl::StatusOr<std::string> GetScheme(
const EventEngine::ResolvedAddress& resolved_address) { … }
#ifdef GRPC_HAVE_UNIX_SOCKET
absl::StatusOr<std::string> ResolvedAddrToUnixPathIfPossible(
const EventEngine::ResolvedAddress* resolved_addr) { … }
absl::StatusOr<std::string> ResolvedAddrToUriUnixIfPossible(
const EventEngine::ResolvedAddress* resolved_addr) { … }
#else
absl::StatusOr<std::string> ResolvedAddrToUnixPathIfPossible(
const EventEngine::ResolvedAddress* ) {
return absl::InvalidArgumentError("Unix socket is not supported.");
}
absl::StatusOr<std::string> ResolvedAddrToUriUnixIfPossible(
const EventEngine::ResolvedAddress* ) {
return absl::InvalidArgumentError("Unix socket is not supported.");
}
#endif
}
bool ResolvedAddressIsV4Mapped(
const EventEngine::ResolvedAddress& resolved_addr,
EventEngine::ResolvedAddress* resolved_addr4_out) { … }
bool ResolvedAddressToV4Mapped(
const EventEngine::ResolvedAddress& resolved_addr,
EventEngine::ResolvedAddress* resolved_addr6_out) { … }
EventEngine::ResolvedAddress ResolvedAddressMakeWild6(int port) { … }
EventEngine::ResolvedAddress ResolvedAddressMakeWild4(int port) { … }
int ResolvedAddressGetPort(const EventEngine::ResolvedAddress& resolved_addr) { … }
void ResolvedAddressSetPort(EventEngine::ResolvedAddress& resolved_addr,
int port) { … }
absl::optional<int> ResolvedAddressIsWildcard(
const EventEngine::ResolvedAddress& addr) { … }
absl::StatusOr<std::string> ResolvedAddressToNormalizedString(
const EventEngine::ResolvedAddress& resolved_addr) { … }
absl::StatusOr<std::string> ResolvedAddressToString(
const EventEngine::ResolvedAddress& resolved_addr) { … }
absl::StatusOr<std::string> ResolvedAddressToURI(
const EventEngine::ResolvedAddress& resolved_address) { … }
absl::StatusOr<EventEngine::ResolvedAddress> URIToResolvedAddress(
std::string address_str) { … }
}
}