ip.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  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. #include "getaddrinfo.h" /* pgrminclude ignore */
  18. #include "libpq/pqcomm.h" /* pgrminclude ignore */
  19. #ifdef HAVE_UNIX_SOCKETS
  20. #define IS_AF_UNIX(fam) ((fam) == AF_UNIX)
  21. #else
  22. #define IS_AF_UNIX(fam) (0)
  23. #endif
  24. typedef void (*PgIfAddrCallback) (struct sockaddr * addr,
  25. struct sockaddr * netmask,
  26. void *cb_data);
  27. extern int pg_getaddrinfo_all(const char *hostname, const char *servname,
  28. const struct addrinfo * hintp,
  29. struct addrinfo ** result);
  30. extern void pg_freeaddrinfo_all(int hint_ai_family, struct addrinfo * ai);
  31. extern int pg_getnameinfo_all(const struct sockaddr_storage * addr, int salen,
  32. char *node, int nodelen,
  33. char *service, int servicelen,
  34. int flags);
  35. extern int pg_range_sockaddr(const struct sockaddr_storage * addr,
  36. const struct sockaddr_storage * netaddr,
  37. const struct sockaddr_storage * netmask);
  38. extern int pg_sockaddr_cidr_mask(struct sockaddr_storage * mask,
  39. char *numbits, int family);
  40. extern int pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data);
  41. #endif /* IP_H */