mirror of
https://github.com/postgres/postgres.git
synced 2025-11-10 17:42:29 +03:00
Remove configure probe for sockaddr_in6 and require AF_INET6.
SUSv3 <netinet/in.h> defines struct sockaddr_in6, and all targeted Unix systems have it. Windows has it in <ws2ipdef.h>. Remove the configure probe, the macro and a small amount of dead code. Also remove a mention of IPv6-less builds from the documentation, since there aren't any. This is similar to commitsf5580882and077bf2f2for Unix sockets. Even though AF_INET6 is an "optional" component of SUSv3, there are no known modern operating system without it, and it seems even less likely to be omitted from future systems than AF_UNIX. Reviewed-by: Andres Freund <andres@anarazel.de> Discussion: https://postgr.es/m/CA+hUKGKErNfhmvb_H0UprEmp4LPzGN06yR2_0tYikjzB-2ECMw@mail.gmail.com
This commit is contained in:
@@ -3015,13 +3015,8 @@ PerformRadiusTransaction(const char *server, const char *secret, const char *por
|
||||
int packetlength;
|
||||
pgsocket sock;
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
struct sockaddr_in6 localaddr;
|
||||
struct sockaddr_in6 remoteaddr;
|
||||
#else
|
||||
struct sockaddr_in localaddr;
|
||||
struct sockaddr_in remoteaddr;
|
||||
#endif
|
||||
struct addrinfo hint;
|
||||
struct addrinfo *serveraddrs;
|
||||
int port;
|
||||
@@ -3131,18 +3126,12 @@ PerformRadiusTransaction(const char *server, const char *secret, const char *por
|
||||
}
|
||||
|
||||
memset(&localaddr, 0, sizeof(localaddr));
|
||||
#ifdef HAVE_IPV6
|
||||
localaddr.sin6_family = serveraddrs[0].ai_family;
|
||||
localaddr.sin6_addr = in6addr_any;
|
||||
if (localaddr.sin6_family == AF_INET6)
|
||||
addrsize = sizeof(struct sockaddr_in6);
|
||||
else
|
||||
addrsize = sizeof(struct sockaddr_in);
|
||||
#else
|
||||
localaddr.sin_family = serveraddrs[0].ai_family;
|
||||
localaddr.sin_addr.s_addr = INADDR_ANY;
|
||||
addrsize = sizeof(struct sockaddr_in);
|
||||
#endif
|
||||
|
||||
if (bind(sock, (struct sockaddr *) &localaddr, addrsize))
|
||||
{
|
||||
@@ -3245,21 +3234,11 @@ PerformRadiusTransaction(const char *server, const char *secret, const char *por
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
if (remoteaddr.sin6_port != pg_hton16(port))
|
||||
#else
|
||||
if (remoteaddr.sin_port != pg_hton16(port))
|
||||
#endif
|
||||
{
|
||||
#ifdef HAVE_IPV6
|
||||
ereport(LOG,
|
||||
(errmsg("RADIUS response from %s was sent from incorrect port: %d",
|
||||
server, pg_ntoh16(remoteaddr.sin6_port))));
|
||||
#else
|
||||
ereport(LOG,
|
||||
(errmsg("RADIUS response from %s was sent from incorrect port: %d",
|
||||
server, pg_ntoh16(remoteaddr.sin_port))));
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -645,8 +645,6 @@ ipv4eq(struct sockaddr_in *a, struct sockaddr_in *b)
|
||||
return (a->sin_addr.s_addr == b->sin_addr.s_addr);
|
||||
}
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
|
||||
static bool
|
||||
ipv6eq(struct sockaddr_in6 *a, struct sockaddr_in6 *b)
|
||||
{
|
||||
@@ -658,7 +656,6 @@ ipv6eq(struct sockaddr_in6 *a, struct sockaddr_in6 *b)
|
||||
|
||||
return true;
|
||||
}
|
||||
#endif /* HAVE_IPV6 */
|
||||
|
||||
/*
|
||||
* Check whether host name matches pattern.
|
||||
@@ -747,7 +744,6 @@ check_hostname(hbaPort *port, const char *hostname)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#ifdef HAVE_IPV6
|
||||
else if (gai->ai_addr->sa_family == AF_INET6)
|
||||
{
|
||||
if (ipv6eq((struct sockaddr_in6 *) gai->ai_addr,
|
||||
@@ -757,7 +753,6 @@ check_hostname(hbaPort *port, const char *hostname)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -34,11 +34,9 @@ static int range_sockaddr_AF_INET(const struct sockaddr_in *addr,
|
||||
const struct sockaddr_in *netaddr,
|
||||
const struct sockaddr_in *netmask);
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
static int range_sockaddr_AF_INET6(const struct sockaddr_in6 *addr,
|
||||
const struct sockaddr_in6 *netaddr,
|
||||
const struct sockaddr_in6 *netmask);
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
@@ -56,12 +54,10 @@ pg_range_sockaddr(const struct sockaddr_storage *addr,
|
||||
return range_sockaddr_AF_INET((const struct sockaddr_in *) addr,
|
||||
(const struct sockaddr_in *) netaddr,
|
||||
(const struct sockaddr_in *) netmask);
|
||||
#ifdef HAVE_IPV6
|
||||
else if (addr->ss_family == AF_INET6)
|
||||
return range_sockaddr_AF_INET6((const struct sockaddr_in6 *) addr,
|
||||
(const struct sockaddr_in6 *) netaddr,
|
||||
(const struct sockaddr_in6 *) netmask);
|
||||
#endif
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
@@ -78,9 +74,6 @@ range_sockaddr_AF_INET(const struct sockaddr_in *addr,
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
|
||||
static int
|
||||
range_sockaddr_AF_INET6(const struct sockaddr_in6 *addr,
|
||||
const struct sockaddr_in6 *netaddr,
|
||||
@@ -97,7 +90,6 @@ range_sockaddr_AF_INET6(const struct sockaddr_in6 *addr,
|
||||
|
||||
return 1;
|
||||
}
|
||||
#endif /* HAVE_IPV6 */
|
||||
|
||||
/*
|
||||
* pg_sockaddr_cidr_mask - make a network mask of the appropriate family
|
||||
@@ -147,7 +139,6 @@ pg_sockaddr_cidr_mask(struct sockaddr_storage *mask, char *numbits, int family)
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
{
|
||||
struct sockaddr_in6 mask6;
|
||||
@@ -172,7 +163,7 @@ pg_sockaddr_cidr_mask(struct sockaddr_storage *mask, char *numbits, int family)
|
||||
memcpy(mask, &mask6, sizeof(mask6));
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
@@ -207,13 +198,11 @@ run_ifaddr_callback(PgIfAddrCallback callback, void *cb_data,
|
||||
if (((struct sockaddr_in *) mask)->sin_addr.s_addr == INADDR_ANY)
|
||||
mask = NULL;
|
||||
}
|
||||
#ifdef HAVE_IPV6
|
||||
else if (mask->sa_family == AF_INET6)
|
||||
{
|
||||
if (IN6_IS_ADDR_UNSPECIFIED(&((struct sockaddr_in6 *) mask)->sin6_addr))
|
||||
mask = NULL;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* If mask is invalid, generate our own fully-set mask */
|
||||
@@ -437,10 +426,7 @@ pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
|
||||
{
|
||||
struct sockaddr_in addr;
|
||||
struct sockaddr_storage mask;
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
struct sockaddr_in6 addr6;
|
||||
#endif
|
||||
|
||||
/* addr 127.0.0.1/8 */
|
||||
memset(&addr, 0, sizeof(addr));
|
||||
@@ -452,7 +438,6 @@ pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
|
||||
(struct sockaddr *) &addr,
|
||||
(struct sockaddr *) &mask);
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
/* addr ::1/128 */
|
||||
memset(&addr6, 0, sizeof(addr6));
|
||||
addr6.sin6_family = AF_INET6;
|
||||
@@ -462,7 +447,6 @@ pg_foreach_ifaddr(PgIfAddrCallback callback, void *cb_data)
|
||||
run_ifaddr_callback(callback, cb_data,
|
||||
(struct sockaddr *) &addr6,
|
||||
(struct sockaddr *) &mask);
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -413,11 +413,9 @@ StreamServerPort(int family, const char *hostName, unsigned short portNumber,
|
||||
case AF_INET:
|
||||
familyDesc = _("IPv4");
|
||||
break;
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
familyDesc = _("IPv6");
|
||||
break;
|
||||
#endif
|
||||
case AF_UNIX:
|
||||
familyDesc = _("Unix");
|
||||
break;
|
||||
|
||||
@@ -1725,9 +1725,7 @@ inet_client_addr(PG_FUNCTION_ARGS)
|
||||
switch (port->raddr.addr.ss_family)
|
||||
{
|
||||
case AF_INET:
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
PG_RETURN_NULL();
|
||||
@@ -1764,9 +1762,7 @@ inet_client_port(PG_FUNCTION_ARGS)
|
||||
switch (port->raddr.addr.ss_family)
|
||||
{
|
||||
case AF_INET:
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
PG_RETURN_NULL();
|
||||
@@ -1801,9 +1797,7 @@ inet_server_addr(PG_FUNCTION_ARGS)
|
||||
switch (port->laddr.addr.ss_family)
|
||||
{
|
||||
case AF_INET:
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
PG_RETURN_NULL();
|
||||
@@ -1840,9 +1834,7 @@ inet_server_port(PG_FUNCTION_ARGS)
|
||||
switch (port->laddr.addr.ss_family)
|
||||
{
|
||||
case AF_INET:
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
PG_RETURN_NULL();
|
||||
@@ -2102,7 +2094,6 @@ inetmi(PG_FUNCTION_ARGS)
|
||||
void
|
||||
clean_ipv6_addr(int addr_family, char *addr)
|
||||
{
|
||||
#ifdef HAVE_IPV6
|
||||
if (addr_family == AF_INET6)
|
||||
{
|
||||
char *pct = strchr(addr, '%');
|
||||
@@ -2110,5 +2101,4 @@ clean_ipv6_addr(int addr_family, char *addr)
|
||||
if (pct)
|
||||
*pct = '\0';
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -735,11 +735,8 @@ pg_stat_get_activity(PG_FUNCTION_ARGS)
|
||||
}
|
||||
else
|
||||
{
|
||||
if (beentry->st_clientaddr.addr.ss_family == AF_INET
|
||||
#ifdef HAVE_IPV6
|
||||
|| beentry->st_clientaddr.addr.ss_family == AF_INET6
|
||||
#endif
|
||||
)
|
||||
if (beentry->st_clientaddr.addr.ss_family == AF_INET ||
|
||||
beentry->st_clientaddr.addr.ss_family == AF_INET6)
|
||||
{
|
||||
char remote_host[NI_MAXHOST];
|
||||
char remote_port[NI_MAXSERV];
|
||||
@@ -1105,9 +1102,7 @@ pg_stat_get_backend_client_addr(PG_FUNCTION_ARGS)
|
||||
switch (beentry->st_clientaddr.addr.ss_family)
|
||||
{
|
||||
case AF_INET:
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
#endif
|
||||
break;
|
||||
default:
|
||||
PG_RETURN_NULL();
|
||||
@@ -1152,9 +1147,7 @@ pg_stat_get_backend_client_port(PG_FUNCTION_ARGS)
|
||||
switch (beentry->st_clientaddr.addr.ss_family)
|
||||
{
|
||||
case AF_INET:
|
||||
#ifdef HAVE_IPV6
|
||||
case AF_INET6:
|
||||
#endif
|
||||
break;
|
||||
case AF_UNIX:
|
||||
PG_RETURN_INT32(-1);
|
||||
|
||||
Reference in New Issue
Block a user