aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>1999-09-23 17:42:23 +0000
committerBruce Momjian <bruce@momjian.us>1999-09-23 17:42:23 +0000
commitdabc3f31b583c4c1b75f62a7a764086557b1559c (patch)
tree30f07d3132c19489ea469246714b891abee43881 /src
parent337ab803a212a67bdf793fd996daa919014a6f66 (diff)
downloadpostgresql-dabc3f31b583c4c1b75f62a7a764086557b1559c.tar.gz
postgresql-dabc3f31b583c4c1b75f62a7a764086557b1559c.zip
Fix for netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0
This is because (-1) << 32 is -1 (Only intel arc. has been checked) Oleg Sharoiko
Diffstat (limited to 'src')
-rw-r--r--src/backend/utils/adt/network.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c
index 92580cfe965..cb1b9b90bfe 100644
--- a/src/backend/utils/adt/network.c
+++ b/src/backend/utils/adt/network.c
@@ -3,7 +3,7 @@
* is for IP V4 CIDR notation, but prepared for V6: just
* add the necessary bits where the comments indicate.
*
- * $Id: network.c,v 1.15 1999/07/17 20:17:58 momjian Exp $
+ * $Id: network.c,v 1.16 1999/09/23 17:42:23 momjian Exp $
* Jon Postel RIP 16 Oct 1998
*/
@@ -448,7 +448,8 @@ network_netmask(inet *ip)
if (ip_family(ip) == AF_INET)
{
/* It's an IP V4 address: */
- int addr = htonl((-1 << (32 - ip_bits(ip))) & 0xffffffff);
+ int addr = htonl(ip_bits(ip) ?
+ (-1 << (32 - ip_bits(ip))) & 0xffffffff : 0x00000000);
if (inet_net_ntop(AF_INET, &addr, 32, tmp, sizeof(tmp)) == NULL)
elog(ERROR, "unable to print netmask (%s)", strerror(errno));