mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-15 08:20:16 +08:00
netmask() and hostmask() functions should return maximum-length masklen,
per gripe from Joe Sunday.
This commit is contained in:
parent
3e5da0a8da
commit
c5336a892f
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* PostgreSQL type definitions for the INET and CIDR types.
|
* 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
|
* Jon Postel RIP 16 Oct 1998
|
||||||
*/
|
*/
|
||||||
@ -315,8 +315,8 @@ inet_set_masklen(PG_FUNCTION_ARGS)
|
|||||||
errmsg("invalid mask length: %d", bits)));
|
errmsg("invalid mask length: %d", bits)));
|
||||||
|
|
||||||
/* clone the original data */
|
/* clone the original data */
|
||||||
dst = (inet *) palloc(VARHDRSZ + sizeof(inet_struct));
|
dst = (inet *) palloc(VARSIZE(src));
|
||||||
memcpy(dst, src, VARHDRSZ + sizeof(inet_struct));
|
memcpy(dst, src, VARSIZE(src));
|
||||||
|
|
||||||
ip_bits(dst) = bits;
|
ip_bits(dst) = bits;
|
||||||
|
|
||||||
@ -658,7 +658,6 @@ network_network(PG_FUNCTION_ARGS)
|
|||||||
inet *dst;
|
inet *dst;
|
||||||
int byte;
|
int byte;
|
||||||
int bits;
|
int bits;
|
||||||
int maxbytes;
|
|
||||||
unsigned char mask;
|
unsigned char mask;
|
||||||
unsigned char *a,
|
unsigned char *a,
|
||||||
*b;
|
*b;
|
||||||
@ -666,11 +665,6 @@ network_network(PG_FUNCTION_ARGS)
|
|||||||
/* make sure any unused bits are zeroed */
|
/* make sure any unused bits are zeroed */
|
||||||
dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
|
dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
|
||||||
|
|
||||||
if (ip_family(ip) == PGSQL_AF_INET)
|
|
||||||
maxbytes = 4;
|
|
||||||
else
|
|
||||||
maxbytes = 16;
|
|
||||||
|
|
||||||
bits = ip_bits(ip);
|
bits = ip_bits(ip);
|
||||||
a = ip_addr(ip);
|
a = ip_addr(ip);
|
||||||
b = ip_addr(dst);
|
b = ip_addr(dst);
|
||||||
@ -710,18 +704,12 @@ network_netmask(PG_FUNCTION_ARGS)
|
|||||||
inet *dst;
|
inet *dst;
|
||||||
int byte;
|
int byte;
|
||||||
int bits;
|
int bits;
|
||||||
int maxbytes;
|
|
||||||
unsigned char mask;
|
unsigned char mask;
|
||||||
unsigned char *b;
|
unsigned char *b;
|
||||||
|
|
||||||
/* make sure any unused bits are zeroed */
|
/* make sure any unused bits are zeroed */
|
||||||
dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
|
dst = (inet *) palloc0(VARHDRSZ + sizeof(inet_struct));
|
||||||
|
|
||||||
if (ip_family(ip) == PGSQL_AF_INET)
|
|
||||||
maxbytes = 4;
|
|
||||||
else
|
|
||||||
maxbytes = 16;
|
|
||||||
|
|
||||||
bits = ip_bits(ip);
|
bits = ip_bits(ip);
|
||||||
b = ip_addr(dst);
|
b = ip_addr(dst);
|
||||||
|
|
||||||
@ -744,7 +732,7 @@ network_netmask(PG_FUNCTION_ARGS)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ip_family(dst) = ip_family(ip);
|
ip_family(dst) = ip_family(ip);
|
||||||
ip_bits(dst) = ip_bits(ip);
|
ip_bits(dst) = ip_maxbits(ip);
|
||||||
ip_type(dst) = 0;
|
ip_type(dst) = 0;
|
||||||
VARATT_SIZEP(dst) = VARHDRSZ
|
VARATT_SIZEP(dst) = VARHDRSZ
|
||||||
+ ((char *) ip_addr(dst) - (char *) VARDATA(dst))
|
+ ((char *) ip_addr(dst) - (char *) VARDATA(dst))
|
||||||
@ -794,7 +782,7 @@ network_hostmask(PG_FUNCTION_ARGS)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ip_family(dst) = ip_family(ip);
|
ip_family(dst) = ip_family(ip);
|
||||||
ip_bits(dst) = ip_bits(ip);
|
ip_bits(dst) = ip_maxbits(ip);
|
||||||
ip_type(dst) = 0;
|
ip_type(dst) = 0;
|
||||||
VARATT_SIZEP(dst) = VARHDRSZ
|
VARATT_SIZEP(dst) = VARHDRSZ
|
||||||
+ ((char *) ip_addr(dst) - (char *) VARDATA(dst))
|
+ ((char *) ip_addr(dst) - (char *) VARDATA(dst))
|
||||||
|
Loading…
Reference in New Issue
Block a user