From e47b93d333d0741628727dec9d5ff58d2956a8da Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 2 Jun 1999 03:37:15 +0000 Subject: [PATCH] The INET and CIDR types mistakenly compared 198.68.123.0/24 and 198.68.123.0/27 the same when indexing them. D'Arcy --- src/backend/utils/adt/network.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c index cd86ec6f3d..7c1aa24dbc 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.9 1999/05/25 16:12:11 momjian Exp $ + * $Id: network.c,v 1.10 1999/06/02 03:37:15 momjian Exp $ * Jon Postel RIP 16 Oct 1998 */ @@ -306,8 +306,16 @@ network_cmp(inet *a1, inet *a2) { if (ntohl(ip_v4addr(a1)) < ntohl(ip_v4addr(a2))) return (-1); - else if (ntohl(ip_v4addr(a1)) > ntohl(ip_v4addr(a2))) + + if (ntohl(ip_v4addr(a1)) > ntohl(ip_v4addr(a2))) return (1); + + if (ip_bits(a1) < ip_bits(a2)) + return (-1); + + if (ip_bits(a1) > ip_bits(a2)) + return (1); + return 0; }