31 #ifdef HAVE_NETINET_TCP_H 32 #include <netinet/tcp.h> 41 #ifdef HAVE_UNIX_SOCKETS 42 static int getaddrinfo_unix(
const char *path,
46 static int getnameinfo_unix(
const struct sockaddr_un *
sa,
int salen,
47 char *node,
int nodelen,
48 char *service,
int servicelen,
65 #ifdef HAVE_UNIX_SOCKETS 67 return getaddrinfo_unix(servname, hintp, result);
71 rc =
getaddrinfo((!hostname || hostname[0] ==
'\0') ? NULL : hostname,
72 servname, hintp, result);
90 #ifdef HAVE_UNIX_SOCKETS 91 if (hint_ai_family == AF_UNIX)
123 char *node,
int nodelen,
124 char *service,
int servicelen,
129 #ifdef HAVE_UNIX_SOCKETS 130 if (addr && addr->ss_family == AF_UNIX)
131 rc = getnameinfo_unix((
const struct sockaddr_un *) addr, salen,
137 rc =
getnameinfo((
const struct sockaddr *) addr, salen,
147 strlcpy(service,
"???", servicelen);
154 #if defined(HAVE_UNIX_SOCKETS) 165 getaddrinfo_unix(
const char *path,
const struct addrinfo *hintsp,
174 MemSet(&hints, 0,
sizeof(hints));
176 if (strlen(path) >=
sizeof(unp->
sun_path))
185 memcpy(&hints, hintsp,
sizeof(hints));
215 aip->
ai_addr = (
struct sockaddr *) unp;
235 #ifdef HAVE_STRUCT_SOCKADDR_STORAGE_SS_LEN 247 char *node,
int nodelen,
248 char *service,
int servicelen,
254 if (sa == NULL || sa->
sun_family != AF_UNIX ||
255 (node == NULL && service == NULL))
260 ret =
snprintf(node, nodelen,
"%s",
"[local]");
261 if (ret < 0 || ret >= nodelen)
275 if (ret < 0 || ret >= servicelen)
void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo *ai)
#define MemSet(start, val, len)
int pg_getaddrinfo_all(const char *hostname, const char *servname, const struct addrinfo *hintp, struct addrinfo **result)
size_t strlcpy(char *dst, const char *src, size_t siz)
int pg_getnameinfo_all(const struct sockaddr_storage *addr, int salen, char *node, int nodelen, char *service, int servicelen, int flags)
struct addrinfo * ai_next
unsigned short sun_family
struct sockaddr * ai_addr
#define offsetof(type, field)