/*
* 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
*/
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;
inet *dst;
int byte;
int bits;
- int maxbytes;
unsigned char mask;
unsigned char *a,
*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);
a = ip_addr(ip);
b = ip_addr(dst);
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);
}
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))
}
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))