1
0
mirror of https://github.com/postgres/postgres.git synced 2025-11-10 17:42:29 +03:00

I agree. I think, though, that the best argument presented in the

debate was from Paul Vixie, who wanted INET to be the name covering
both IPV4 and IPV6.  The following kit makes the needed changes:

Tom Ivar Helbekkmo
This commit is contained in:
Bruce Momjian
1998-10-08 00:19:47 +00:00
parent ac5a8b9ab5
commit 8849655d24
11 changed files with 90 additions and 89 deletions

View File

@@ -4,7 +4,7 @@
# Makefile for utils/adt
#
# IDENTIFICATION
# $Header: /cvsroot/pgsql/src/backend/utils/adt/Makefile,v 1.18 1998/10/03 05:40:47 momjian Exp $
# $Header: /cvsroot/pgsql/src/backend/utils/adt/Makefile,v 1.19 1998/10/08 00:19:33 momjian Exp $
#
#-------------------------------------------------------------------------
@@ -24,7 +24,7 @@ OBJS = acl.o arrayfuncs.o arrayutils.o bool.o cash.o char.o chunk.o \
oid.o oracle_compat.o \
regexp.o regproc.o ruleutils.o selfuncs.o sets.o \
tid.o timestamp.o varchar.o varlena.o version.o \
ip.o mac.o inet_net_ntop.o inet_net_pton.o
inet.o mac.o inet_net_ntop.o inet_net_pton.o
all: SUBSYS.o

View File

@@ -1,9 +1,9 @@
/*
* PostgreSQL type definitions for IP addresses. This
* PostgreSQL type definitions for the INET type. This
* is for IP V4 CIDR notation, but prepared for V6: just
* add the necessary bits where the comments indicate.
*
* $Id: ip.c,v 1.4 1998/10/04 16:24:30 momjian Exp $
* $Id: inet.c,v 1.1 1998/10/08 00:19:35 momjian Exp $
*/
#include <sys/types.h>
@@ -19,38 +19,40 @@
#include <postgres.h>
#include <utils/palloc.h>
#include <utils/builtins.h>
#include <utils/mac.h>
#include <utils/network.h>
static int v4bitncmp(unsigned int a1, unsigned int a2, int bits);
/*
* Access macros. Add IPV6 support.
*/
#define ip_addrsize(ipaddrptr) \
(((ipaddr_struct *)VARDATA(ipaddrptr))->family == AF_INET ? 4 : -1)
#define ip_addrsize(inetptr) \
(((inet_struct *)VARDATA(inetptr))->family == AF_INET ? 4 : -1)
#define ip_family(ipaddrptr) \
(((ipaddr_struct *)VARDATA(ipaddrptr))->family)
#define ip_family(inetptr) \
(((inet_struct *)VARDATA(inetptr))->family)
#define ip_bits(ipaddrptr) \
(((ipaddr_struct *)VARDATA(ipaddrptr))->bits)
#define ip_bits(inetptr) \
(((inet_struct *)VARDATA(inetptr))->bits)
#define ip_v4addr(ipaddrptr) \
(((ipaddr_struct *)VARDATA(ipaddrptr))->addr.ipv4_addr)
#define ip_v4addr(inetptr) \
(((inet_struct *)VARDATA(inetptr))->addr.ipv4_addr)
/*
* IP address reader.
*/
ipaddr *
ipaddr_in(char *src)
inet *
inet_in(char *src)
{
int bits;
ipaddr *dst;
inet *dst;
dst = palloc(VARHDRSZ + sizeof(ipaddr_struct));
dst = palloc(VARHDRSZ + sizeof(inet_struct));
if (dst == NULL)
{
elog(ERROR, "unable to allocate memory in ipaddr_in()");
elog(ERROR, "unable to allocate memory in inet_in()");
return (NULL);
}
/* First, try for an IP V4 address: */
@@ -75,7 +77,7 @@ ipaddr_in(char *src)
*/
char *
ipaddr_out(ipaddr *src)
inet_out(inet *src)
{
char *dst,
tmp[sizeof("255.255.255.255/32")];
@@ -99,7 +101,7 @@ ipaddr_out(ipaddr *src)
dst = palloc(strlen(tmp) + 1);
if (dst == NULL)
{
elog(ERROR, "unable to allocate memory in ipaddr_out()");
elog(ERROR, "unable to allocate memory in inet_out()");
return (NULL);
}
strcpy(dst, tmp);
@@ -111,7 +113,7 @@ ipaddr_out(ipaddr *src)
*/
bool
ipaddr_lt(ipaddr *a1, ipaddr *a2)
inet_lt(inet *a1, inet *a2)
{
if ((ip_family(a1) == AF_INET) && (ip_family(a2) == AF_INET))
{
@@ -129,13 +131,13 @@ ipaddr_lt(ipaddr *a1, ipaddr *a2)
}
bool
ipaddr_le(ipaddr *a1, ipaddr *a2)
inet_le(inet *a1, inet *a2)
{
return (ipaddr_lt(a1, a2) || ipaddr_eq(a1, a2));
return (inet_lt(a1, a2) || inet_eq(a1, a2));
}
bool
ipaddr_eq(ipaddr *a1, ipaddr *a2)
inet_eq(inet *a1, inet *a2)
{
if ((ip_family(a1) == AF_INET) && (ip_family(a2) == AF_INET))
{
@@ -152,13 +154,13 @@ ipaddr_eq(ipaddr *a1, ipaddr *a2)
}
bool
ipaddr_ge(ipaddr *a1, ipaddr *a2)
inet_ge(inet *a1, inet *a2)
{
return (ipaddr_gt(a1, a2) || ipaddr_eq(a1, a2));
return (inet_gt(a1, a2) || inet_eq(a1, a2));
}
bool
ipaddr_gt(ipaddr *a1, ipaddr *a2)
inet_gt(inet *a1, inet *a2)
{
if ((ip_family(a1) == AF_INET) && (ip_family(a2) == AF_INET))
{
@@ -176,13 +178,13 @@ ipaddr_gt(ipaddr *a1, ipaddr *a2)
}
bool
ipaddr_ne(ipaddr *a1, ipaddr *a2)
inet_ne(inet *a1, inet *a2)
{
return (!ipaddr_eq(a1, a2));
return (!inet_eq(a1, a2));
}
bool
ipaddr_sub(ipaddr *a1, ipaddr *a2)
inet_sub(inet *a1, inet *a2)
{
if ((ip_family(a1) == AF_INET) && (ip_family(a2) == AF_INET))
{
@@ -199,7 +201,7 @@ ipaddr_sub(ipaddr *a1, ipaddr *a2)
}
bool
ipaddr_subeq(ipaddr *a1, ipaddr *a2)
inet_subeq(inet *a1, inet *a2)
{
if ((ip_family(a1) == AF_INET) && (ip_family(a2) == AF_INET))
{
@@ -216,7 +218,7 @@ ipaddr_subeq(ipaddr *a1, ipaddr *a2)
}
bool
ipaddr_sup(ipaddr *a1, ipaddr *a2)
inet_sup(inet *a1, inet *a2)
{
if ((ip_family(a1) == AF_INET) && (ip_family(a2) == AF_INET))
{
@@ -233,7 +235,7 @@ ipaddr_sup(ipaddr *a1, ipaddr *a2)
}
bool
ipaddr_supeq(ipaddr *a1, ipaddr *a2)
inet_supeq(inet *a1, inet *a2)
{
if ((ip_family(a1) == AF_INET) && (ip_family(a2) == AF_INET))
{
@@ -254,7 +256,7 @@ ipaddr_supeq(ipaddr *a1, ipaddr *a2)
*/
int4
ipaddr_cmp(ipaddr *a1, ipaddr *a2)
inet_cmp(inet *a1, inet *a2)
{
if (ntohl(ip_v4addr(a1)) < ntohl(ip_v4addr(a2)))
return (-1);
@@ -267,7 +269,7 @@ ipaddr_cmp(ipaddr *a1, ipaddr *a2)
* Bitwise comparison for V4 addresses. Add V6 implementation!
*/
int
static int
v4bitncmp(unsigned int a1, unsigned int a2, int bits)
{
unsigned long mask = 0;

View File

@@ -1,7 +1,7 @@
/*
* PostgreSQL type definitions for MAC addresses.
*
* $Id: mac.c,v 1.3 1998/10/04 16:24:32 momjian Exp $
* $Id: mac.c,v 1.4 1998/10/08 00:19:36 momjian Exp $
*/
#include <stdio.h>
@@ -10,7 +10,7 @@
#include <postgres.h>
#include <utils/palloc.h>
#include <utils/builtins.h>
#include <utils/mac.h>
#include <utils/network.h>
manufacturer manufacturers[] = {
{0x00, 0x00, 0x0C, "Cisco"},