Go to the documentation of this file.
23 #ifdef GRPC_HAVE_IFADDRS
29 #include <sys/socket.h>
33 #include "absl/strings/str_cat.h"
48 for (
l =
s->head;
l !=
nullptr;
l =
l->next) {
49 if (
l->addr.len !=
addr->len) {
52 if (memcmp(
l->addr.addr,
addr->addr,
addr->len) == 0) {
74 if (bind(fd,
reinterpret_cast<const grpc_sockaddr*
>(wild.
addr), wild.
len) !=
80 if (getsockname(fd,
reinterpret_cast<grpc_sockaddr*
>(wild.
addr), &wild.
len) !=
98 unsigned fd_index = 0;
101 if (requested_port == 0) {
108 }
else if (requested_port <= 0) {
113 if (
getifaddrs(&ifa) != 0 || ifa ==
nullptr) {
116 for (ifa_it = ifa; ifa_it !=
nullptr; ifa_it = ifa_it->
ifa_next) {
123 }
else if (ifa_it->
ifa_addr->sa_family == AF_INET) {
124 addr.len =
static_cast<socklen_t
>(
sizeof(grpc_sockaddr_in));
126 addr.len =
static_cast<socklen_t
>(
sizeof(grpc_sockaddr_in6));
137 if (!addr_str.ok()) {
141 "Adding local addr from interface %s flags 0x%x to server: %s",
145 if (find_listener_with_addr(s, &
addr) !=
nullptr) {
153 absl::StrCat(
"Failed to add listener: ", addr_str.value()));
169 }
else if (sp ==
nullptr) {
172 *out_port = sp->
port;
GPRAPI void gpr_mu_unlock(gpr_mu *mu)
struct grpc_tcp_listener * sibling
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
absl::StatusOr< std::string > grpc_sockaddr_to_string(const grpc_resolved_address *resolved_addr, bool normalize)
grpc_error_handle grpc_tcp_server_add_addr(grpc_tcp_server *s, const grpc_resolved_address *addr, unsigned port_index, unsigned fd_index, grpc_dualstack_mode *dsmode, grpc_tcp_listener **listener)
grpc_error_handle grpc_error_add_child(grpc_error_handle src, grpc_error_handle child)
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
#define GRPC_OS_ERROR(err, call_name)
create an error associated with errno!=0 (an 'operating system' error)
struct sockaddr * ifa_addr
int grpc_sockaddr_set_port(grpc_resolved_address *resolved_addr, int port)
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
grpc_error_handle grpc_tcp_server_add_all_local_addrs(grpc_tcp_server *s, unsigned port_index, int requested_port, int *out_port)
GPRAPI void gpr_mu_lock(gpr_mu *mu)
grpc_error_handle grpc_create_dualstack_socket(const grpc_resolved_address *addr, int type, int protocol, grpc_dualstack_mode *dsmode, int *newfd)
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc)
bool grpc_tcp_server_have_ifaddrs(void)
int grpc_sockaddr_get_port(const grpc_resolved_address *resolved_addr)
void grpc_sockaddr_make_wildcard4(int port, grpc_resolved_address *resolved_wild_out)
#define GRPC_ERROR_CREATE_FROM_CPP_STRING(desc)
void grpc_sockaddr_make_wildcard6(int port, grpc_resolved_address *resolved_wild_out)
struct ifaddrs * ifa_next
void freeifaddrs(struct ifaddrs *ifa)
__BEGIN_DECLS int getifaddrs(struct ifaddrs **ifap)
char addr[GRPC_MAX_SOCKADDR_SIZE]
#define GRPC_ERROR_IS_NONE(err)
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:29