1 /*------------------------------------------------------------------------- 2 * 3 * ip.h 4 * Definitions for IPv6-aware network access. 5 * 6 * These definitions are used by both frontend and backend code. Be careful 7 * what you include here! 8 * 9 * Copyright (c) 2003-2016, PostgreSQL Global Development Group 10 * 11 * src/include/libpq/ip.h 12 * 13 *------------------------------------------------------------------------- 14 */ 15 #ifndef IP_H 16 #define IP_H 17 18 #include "getaddrinfo.h" /* pgrminclude ignore */ 19 #include "libpq/pqcomm.h" /* pgrminclude ignore */ 20 21 22 #ifdef HAVE_UNIX_SOCKETS 23 #define IS_AF_UNIX(fam) ((fam) == AF_UNIX) 24 #else 25 #define IS_AF_UNIX(fam) (0) 26 #endif 27 28 typedef void (*PgIfAddrCallback) (struct sockaddr * addr, 29 struct sockaddr * netmask, 30 void *cb_data); 31 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); 36 37 extern int pg_getnameinfo_all(const struct sockaddr_storage * addr, int salen, 38 char *node, int nodelen, 39 char *service, int servicelen, 40 int flags); 41 42 extern int pg_range_sockaddr(const struct sockaddr_storage * addr, 43 const struct sockaddr_storage * netaddr, 44 const struct sockaddr_storage * netmask); 45 46 extern int pg_sockaddr_cidr_mask(struct sockaddr_storage * mask, 47 char *numbits, int family); 48 49 extern int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data); 50 51 #endif /* IP_H */ 52