+/*-------------------------------------------------------------------------
+ *
+ * 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-2009, PostgreSQL Global Development Group
+ *
+ * $PostgreSQL: pgsql/src/include/libpq/ip.h,v 1.21 2009/01/01 17:23:59 momjian Exp $
+ *
+ *-------------------------------------------------------------------------
+ */
#ifndef IP_H
#define IP_H
-#include "c.h"
-#include <sys/socket.h>
-#include <netdb.h>
-#include "libpq/pqcomm.h"
-#ifndef HAVE_GETADDRINFO
+
#include "getaddrinfo.h"
-#endif
+#include "libpq/pqcomm.h"
+
+
+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);
-int getaddrinfo2(const char *hostname, const char *servname,
- const struct addrinfo *hintp, struct addrinfo **result);
-void freeaddrinfo2(int hint_ai_family, struct addrinfo *ai);
-
-char *SockAddr_ntop(const SockAddr *sa, char *dst, size_t cnt, int v4conv);
-int SockAddr_pton(SockAddr *sa, const char *src);
-int isAF_INETx(const int family);
-int rangeSockAddr(const SockAddr *addr, const SockAddr *netaddr,
- const SockAddr *netmask);
-int rangeSockAddrAF_INET(const SockAddr *addr, const SockAddr *netaddr,
- const SockAddr *netmask);
#ifdef HAVE_IPV6
-int rangeSockAddrAF_INET6(const SockAddr *addr, const SockAddr *netaddr,
- const SockAddr *netmask);
-void convSockAddr6to4(const SockAddr *src, SockAddr *dst);
+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
+
+#ifdef HAVE_UNIX_SOCKETS
+#define IS_AF_UNIX(fam) ((fam) == AF_UNIX)
+#else
+#define IS_AF_UNIX(fam) (0)
#endif
-#endif /* IP_H */
+#endif /* IP_H */