/*------------------------------------------------------------------------- * * ip.h * Definitions for IPv6-aware network access. * * These definitions are used by both frontend and backend code. Be careful * what you include here! * * Copyright (c) 2003-2010, PostgreSQL Global Development Group * * $PostgreSQL: pgsql/src/include/libpq/ip.h,v 1.24 2010/02/26 02:01:24 momjian Exp $ * *------------------------------------------------------------------------- */ #ifndef IP_H #define IP_H #include "getaddrinfo.h" #include "libpq/pqcomm.h" #ifdef HAVE_UNIX_SOCKETS #define IS_AF_UNIX(fam) ((fam) == AF_UNIX) #else #define IS_AF_UNIX(fam) (0) #endif typedef void (*PgIfAddrCallback) (struct sockaddr * addr, struct sockaddr * netmask, void *cb_data); extern int pg_getaddrinfo_all(const char *hostname, const char *servname, const struct addrinfo * hintp, struct addrinfo ** result); extern void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo * ai); extern int pg_getnameinfo_all(const struct sockaddr_storage * addr, int salen, char *node, int nodelen, char *service, int servicelen, int flags); extern int pg_range_sockaddr(const struct sockaddr_storage * addr, const struct sockaddr_storage * netaddr, const struct sockaddr_storage * netmask); extern int pg_sockaddr_cidr_mask(struct sockaddr_storage * mask, char *numbits, int family); #ifdef HAVE_IPV6 extern void pg_promote_v4_to_v6_addr(struct sockaddr_storage * addr); extern void pg_promote_v4_to_v6_mask(struct sockaddr_storage * addr); #endif extern int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data); #endif /* IP_H */