aboutsummaryrefslogtreecommitdiff
path: root/src/backend/libpq/v6util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/libpq/v6util.c')
-rw-r--r--src/backend/libpq/v6util.c300
1 files changed, 0 insertions, 300 deletions
diff --git a/src/backend/libpq/v6util.c b/src/backend/libpq/v6util.c
deleted file mode 100644
index 10bab95303c..00000000000
--- a/src/backend/libpq/v6util.c
+++ /dev/null
@@ -1,300 +0,0 @@
-#include "postgres.h"
-
-#include <errno.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/socket.h>
-#include <netdb.h>
-#include <netinet/in.h>
-#ifdef HAVE_NETINET_TCP_H
-#include <netinet/tcp.h>
-#endif
-#include <arpa/inet.h>
-#include <sys/file.h>
-
-#include "libpq/libpq.h"
-#include "miscadmin.h"
-
-
-
-
-
-
-#ifdef HAVE_UNIX_SOCKETS
-static int ga_unix(const char* path, const struct addrinfo* hintsp,
- struct addrinfo** result);
-#endif /* HAVE_UNIX_SOCKETS */
-
-
-int getaddrinfo2(const char* hostname, const char* servname,
- const struct addrinfo* hintp, struct addrinfo **result)
-{
-#ifdef HAVE_UNIX_SOCKETS
- if( hintp != NULL && hintp->ai_family == AF_UNIX){
- return ga_unix(servname, hintp, result);
- }
- else {
-#endif /* HAVE_UNIX_SOCKETS */
- return getaddrinfo(hostname, servname, hintp, result);
-#ifdef HAVE_UNIX_SOCKETS
- }
-#endif /* HAVE_UNIX_SOCKETS */
-}
-
-void freeaddrinfo2(int hint_ai_family, struct addrinfo *ai)
-{
-#ifdef HAVE_UNIX_SOCKETS
- if(hint_ai_family == AF_UNIX){
- struct addrinfo *p;
- while(ai != NULL){
- p = ai;
- ai = ai->ai_next;
- free(p->ai_addr);
- free(p);
- }
- }
- else {
-#endif /* HAVE_UNIX_SOCKETS */
- freeaddrinfo(ai);
-#ifdef HAVE_UNIX_SOCKETS
- }
-#endif /* HAVE_UNIX_SOCKETS */
-}
-
-
-#ifdef HAVE_UNIX_SOCKETS
-/**
- * Bug: only one addrinfo is set even though hintsp is NULL or
- * ai_socktype is 0
- * AI_CANNONNAME does not support.
- */
-static int ga_unix(const char* path, const struct addrinfo* hintsp,
- struct addrinfo** result)
-{
- struct addrinfo hints;
- struct addrinfo* aip;
- struct sockaddr_un* unp;
- memset(&hints, 0, sizeof(hints));
-
-
- if(hintsp == NULL){
- hints.ai_family = AF_UNIX;
- hints.ai_socktype = SOCK_STREAM;
- }
- else {
- memcpy(&hints, hintsp, sizeof(hints));
- }
- if(hints.ai_socktype == 0){
- hints.ai_socktype = SOCK_STREAM;
- }
-
- if(!(hints.ai_family == AF_UNIX)){
- printf("hints.ai_family is invalied ga_unix()\n");
- return EAI_ADDRFAMILY;
- }
-
-
- aip = calloc(1, sizeof(struct addrinfo));
- if(aip == NULL){
- return EAI_MEMORY;
- }
-
- aip->ai_family = AF_UNIX;
- aip->ai_socktype = hints.ai_socktype;
- aip->ai_protocol = hints.ai_protocol;
- aip->ai_next = NULL;
- aip->ai_canonname = NULL;
- *result = aip;
-
- unp = calloc(1, sizeof(struct sockaddr_un));
- if(aip == NULL){
- return EAI_MEMORY;
- }
-
- unp->sun_family = AF_UNIX;
- aip->ai_addr = (struct sockaddr*) unp;
- aip->ai_addrlen = sizeof(struct sockaddr_un);
-
- if(strlen(path) >= sizeof(unp->sun_path)){
- return EAI_SERVICE;
- }
- strcpy(unp->sun_path, path);
-
-#if SALEN
- unp->sun_len = sizeof(struct sockaddr_un);
-#endif /* SALEN */
-
- if(hints.ai_flags & AI_PASSIVE){
- unlink(unp->sun_path);
- }
-
- return 0;
-}
-#endif /* HAVE_UNIX_SOCKETS */
-
-
-
-
-
-/**
- * SockAddr_ntop - set IP address string from SockAddr
- *
- * parameters... sa : SockAddr union
- * dst : buffer for address string
- * cnt : sizeof dst
- * v4conv: non-zero: if address is IPv4 mapped IPv6 address then
- * convert to IPv4 address.
- * returns... pointer to dst
- * if sa.sa_family is not AF_INET or AF_INET6 dst is set as empy string.
- */
-char* SockAddr_ntop(const SockAddr* sa, char* dst, size_t cnt, int v4conv)
-{
- switch(sa->sa.sa_family){
- case AF_INET:
- inet_ntop(AF_INET, &sa->in.sin_addr, dst, cnt);
- break;
- case AF_INET6:
- inet_ntop(AF_INET6, &sa->in6.sin6_addr, dst, cnt);
- if(v4conv && IN6_IS_ADDR_V4MAPPED(&sa->in6.sin6_addr) ){
- strcpy(dst, dst + 7);
- }
- break;
- default:
- dst[0] = '\0';
- break;
- }
- return dst;
-}
-
-int SockAddr_pton(SockAddr* sa, const char* src, size_t cnt)
-{
- int i;
- int family = AF_INET;
- for(i = 0; i < cnt; i++){
- if(src[i] == ':'){
- family = AF_INET6;
- break;
- }
- }
-
- sa->sa.sa_family = family;
- switch(family){
- case AF_INET:
- return inet_pton(AF_INET, src, &sa->in.sin_addr);
- case AF_INET6:
- return inet_pton(AF_INET6, src, &sa->in6.sin6_addr);
- break;
- default:
- return -1;
- }
-}
-
-
-
-
-/**
- * isAF_INETx - check to see if sa is AF_INET or AF_INET6
- *
- * parameters... sa : SockAddr union
- * returns...
- * if sa->sa.sa_famil is AF_INET or AF_INET6 then
- * return 1
- * else
- * return 0
- */
-int isAF_INETx(const SockAddr* sa)
-{
- if(sa->sa.sa_family == AF_INET ||
- sa->sa.sa_family == AF_INET6
- ){
- return 1;
- }
- else {
- return 0;
- }
-}
-
-int isAF_INETx2(int family)
-{
- if(family == AF_INET ||
- family == AF_INET6
- ){
- return 1;
- }
- else {
- return 0;
- }
-}
-
-
-int rangeSockAddr(const SockAddr* addr, const SockAddr* netaddr, const SockAddr* netmask)
-{
- if(addr->sa.sa_family == AF_INET){
- return rangeSockAddrAF_INET(addr, netaddr, netmask);
- }
- else if(addr->sa.sa_family == AF_INET6){
- return rangeSockAddrAF_INET6(addr, netaddr, netmask);
- }
- else {
- return 0;
- }
-}
-
-int rangeSockAddrAF_INET(const SockAddr* addr, const SockAddr* netaddr,
- const SockAddr* netmask)
-{
- if(addr->sa.sa_family != AF_INET ||
- netaddr->sa.sa_family != AF_INET ||
- netmask->sa.sa_family != AF_INET ){
- return 0;
- }
- if( ((addr->in.sin_addr.s_addr ^ netaddr->in.sin_addr.s_addr ) &
- netmask->in.sin_addr.s_addr) == 0){
- return 1;
- }
- else {
- return 0;
- }
-}
-
-int rangeSockAddrAF_INET6(const SockAddr* addr, const SockAddr* netaddr,
- const SockAddr* netmask)
-{
- int i;
-
- if(IN6_IS_ADDR_V4MAPPED(&addr->in6.sin6_addr) ){
- SockAddr addr4;
- convSockAddr6to4(addr, &addr4);
- if(rangeSockAddrAF_INET(&addr4, netaddr, netmask)){
- return 1;
- }
- }
-
- if(netaddr->sa.sa_family != AF_INET6 ||
- netmask->sa.sa_family != AF_INET6 ){
- return 0;
- }
-
- for( i = 0; i < 16; i++){
- if( ((addr->in6.sin6_addr.s6_addr[i] ^ netaddr->in6.sin6_addr.s6_addr[i] ) &
- netmask->in6.sin6_addr.s6_addr[i] ) != 0){
- return 0;
- }
- }
-
- return 1;
-}
-
-void convSockAddr6to4(const SockAddr* src, SockAddr* dst)
-{
- char addr_str[INET6_ADDRSTRLEN];
-
- dst->in.sin_family = AF_INET;
- dst->in.sin_port = src->in6.sin6_port;
-
- dst->in.sin_addr.s_addr = src->in6.sin6_addr.s6_addr32[3];
- SockAddr_ntop(src, addr_str, INET6_ADDRSTRLEN, 0);
-}
-
-