diff --git a/doc/src/sgml/client-auth.sgml b/doc/src/sgml/client-auth.sgml
index ab96af8f66d..228cfffda33 100644
--- a/doc/src/sgml/client-auth.sgml
+++ b/doc/src/sgml/client-auth.sgml
@@ -257,7 +257,7 @@ hostnossl database user
- You can also write
+ You can also write all to match any IP address,
samehost to match any of the server's own IP
addresses, or samenet to match any address in any
subnet that the server is directly connected to.
diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index 20c86b7ea3f..17363599626 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -885,8 +885,11 @@ parse_hba_line(List *line, int line_num, HbaLine *parsedline)
}
token = lfirst(line_item);
- /* Is it equal to 'samehost' or 'samenet'? */
- if (strcmp(token, "samehost\n") == 0)
+ if (strcmp(token, "all\n") == 0)
+ {
+ parsedline->ip_cmp_method = ipCmpAll;
+ }
+ else if (strcmp(token, "samehost\n") == 0)
{
/* Any IP on this host is allowed to connect */
parsedline->ip_cmp_method = ipCmpSameHost;
@@ -1503,6 +1506,8 @@ check_hba(hbaPort *port)
continue;
}
break;
+ case ipCmpAll:
+ break;
case ipCmpSameHost:
case ipCmpSameNet:
if (!check_same_host_or_net(&port->raddr,
diff --git a/src/include/libpq/hba.h b/src/include/libpq/hba.h
index eb6637f1c74..aa60d8d4f17 100644
--- a/src/include/libpq/hba.h
+++ b/src/include/libpq/hba.h
@@ -36,7 +36,8 @@ typedef enum IPCompareMethod
{
ipCmpMask,
ipCmpSameHost,
- ipCmpSameNet
+ ipCmpSameNet,
+ ipCmpAll
} IPCompareMethod;
typedef enum ConnType