git.postgresql.org Git - postgresql.git/commitdiff

git projects / postgresql.git / commitdiff
? search:
summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 3e5da0a)
netmask() and hostmask() functions should return maximum-length masklen,
Mon, 1 Dec 2003 18:50:19 +0000 (18:50 +0000)
Mon, 1 Dec 2003 18:50:19 +0000 (18:50 +0000)
per gripe from Joe Sunday.


diff --git a/src/backend/utils/adt/network.c b/src/backend/utils/adt/network.c
index 6cb1d9f687b1eaf1da070ff0e2d78d017ac31887..acad79dec63d3540ffc29414a00a3050e4cca917 100644 (file)
--- a/src/backend/utils/adt/network.c
+++ b/src/backend/utils/adt/network.c
@@ -1,7 +1,7 @@
/*
* PostgreSQL type definitions for the INET and CIDR types.
*
- * $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.48 2003年11月29日 19:51:59 pgsql Exp $
+ * $PostgreSQL: pgsql/src/backend/utils/adt/network.c,v 1.49 2003年12月01日 18:50:19 tgl Exp $
*
* Jon Postel RIP 16 Oct 1998
*/
@@ -315,8 +315,8 @@ inet_set_masklen(PG_FUNCTION_ARGS)
errmsg("invalid mask length: %d", bits)));
/* clone the original data */
- dst = (inet *) palloc(VARHDRSZ + sizeof(inet_struct));
- memcpy(dst, src, VARHDRSZ + sizeof(inet_struct));
+ dst = (inet *) palloc(VARSIZE(src));
+ memcpy(dst, src, VARSIZE(src));
ip_bits(dst) = bits;
@@ -658,7 +658,6 @@ network_network(PG_FUNCTION_ARGS)
inet *dst;
int byte;
int bits;
- int maxbytes;
unsigned char mask;
unsigned char *a,
*b;
@@ -666,11 +665,6 @@ network_network(PG_FUNCTION_ARGS)
/* make sure any unused bits are zeroed */
dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
- if (ip_family(ip) == PGSQL_AF_INET)
- maxbytes = 4;
- else
- maxbytes = 16;
-
bits = ip_bits(ip);
a = ip_addr(ip);
b = ip_addr(dst);
@@ -710,18 +704,12 @@ network_netmask(PG_FUNCTION_ARGS)
inet *dst;
int byte;
int bits;
- int maxbytes;
unsigned char mask;
unsigned char *b;
/* make sure any unused bits are zeroed */
dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
- if (ip_family(ip) == PGSQL_AF_INET)
- maxbytes = 4;
- else
- maxbytes = 16;
-
bits = ip_bits(ip);
b = ip_addr(dst);
@@ -744,7 +732,7 @@ network_netmask(PG_FUNCTION_ARGS)
}
ip_family(dst) = ip_family(ip);
- ip_bits(dst) = ip_bits(ip);
+ ip_bits(dst) = ip_maxbits(ip);
ip_type(dst) = 0;
VARATT_SIZEP(dst) = VARHDRSZ
+ ((char *) ip_addr(dst) - (char *) VARDATA(dst))
@@ -794,7 +782,7 @@ network_hostmask(PG_FUNCTION_ARGS)
}
ip_family(dst) = ip_family(ip);
- ip_bits(dst) = ip_bits(ip);
+ ip_bits(dst) = ip_maxbits(ip);
ip_type(dst) = 0;
VARATT_SIZEP(dst) = VARHDRSZ
+ ((char *) ip_addr(dst) - (char *) VARDATA(dst))
This is the main PostgreSQL git repository.
RSS Atom

AltStyle によって変換されたページ (->オリジナル) /