1 /*-------------------------------------------------------------------------
4 * Definitions for IPv6-aware network access.
6 * These definitions are used by both frontend and backend code. Be careful
7 * what you include here!
9 * Copyright (c) 2003-2014, PostgreSQL Global Development Group
11 * src/include/libpq/ip.h
13 *-------------------------------------------------------------------------
18 #include "getaddrinfo.h" /* pgrminclude ignore */
19 #include "libpq/pqcomm.h" /* pgrminclude ignore */
22 #ifdef HAVE_UNIX_SOCKETS
23 #define IS_AF_UNIX(fam) ((fam) == AF_UNIX)
25 #define IS_AF_UNIX(fam) (0)
28 typedef void (*PgIfAddrCallback) (struct sockaddr * addr,
29 struct sockaddr * netmask,
32 extern int pg_getaddrinfo_all(const char *hostname, const char *servname,
33 const struct addrinfo * hintp,
34 struct addrinfo ** result);
35 extern void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo * ai);
37 extern int pg_getnameinfo_all(const struct sockaddr_storage * addr, int salen,
38 char *node, int nodelen,
39 char *service, int servicelen,
42 extern int pg_range_sockaddr(const struct sockaddr_storage * addr,
43 const struct sockaddr_storage * netaddr,
44 const struct sockaddr_storage * netmask);
46 extern int pg_sockaddr_cidr_mask(struct sockaddr_storage * mask,
47 char *numbits, int family);
50 extern void pg_promote_v4_to_v6_addr(struct sockaddr_storage * addr);
51 extern void pg_promote_v4_to_v6_mask(struct sockaddr_storage * addr);
54 extern int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data);