Change default output formatting for CIDR to be unabbreviated, per
recommendation from Paul Vixie. Add a new abbrev() function to produce abbreviated format as text. No forced initdb, but new function is not available unless you do an initdb or add the pg_proc row manually.
This commit is contained in:
parent
13b78a2400
commit
61784c54b5
@ -1,5 +1,5 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.44 2000/12/14 22:30:56 petere Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/datatype.sgml,v 1.45 2000/12/22 18:00:24 tgl Exp $
|
||||
-->
|
||||
|
||||
<chapter id="datatype">
|
||||
@ -1818,7 +1818,7 @@ January 8 04:05:06 1999 PST
|
||||
class="parameter">x.x.x.x</replaceable> is an IP address and
|
||||
<replaceable class="parameter">y</replaceable> is the number of
|
||||
bits in the netmask. If the <replaceable
|
||||
class="parameter">y</replaceable> part is left off, then the
|
||||
class="parameter">/y</replaceable> part is left off, then the
|
||||
netmask is 32, and the value represents just a single host.
|
||||
On display, the <replaceable class="parameter">/y</replaceable>
|
||||
portion is suppressed if the netmask is 32.
|
||||
@ -1837,7 +1837,7 @@ January 8 04:05:06 1999 PST
|
||||
class="parameter">x.x.x.x/y</> where <replaceable
|
||||
class="parameter">x.x.x.x</> is the network and <replaceable
|
||||
class="parameter">y</> is the number of bits in the netmask. If
|
||||
<replaceable class="parameter">y</> omitted, it is calculated
|
||||
<replaceable class="parameter">y</> is omitted, it is calculated
|
||||
using assumptions from the older classful numbering system, except
|
||||
that it will be at least large enough to include all of the octets
|
||||
written in the input.
|
||||
@ -1848,56 +1848,68 @@ January 8 04:05:06 1999 PST
|
||||
|
||||
<table tocentry="1">
|
||||
<title><type>cidr</> Type Input Examples</title>
|
||||
<tgroup cols="2">
|
||||
<tgroup cols="3">
|
||||
<thead>
|
||||
<row>
|
||||
<entry>CIDR Input</entry>
|
||||
<entry>CIDR Displayed</entry>
|
||||
<entry>abbrev(CIDR)</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
<row>
|
||||
<entry>192.168.100.128/25</entry>
|
||||
<entry>192.168.100.128/25</entry>
|
||||
<entry>192.168.100.128/25</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>192.168/24</entry>
|
||||
<entry>192.168.0.0/24</entry>
|
||||
<entry>192.168.0/24</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>192.168/25</entry>
|
||||
<entry>192.168.0.0/25</entry>
|
||||
<entry>192.168.0.0/25</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>192.168.1</entry>
|
||||
<entry>192.168.1.0/24</entry>
|
||||
<entry>192.168.1/24</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>192.168</entry>
|
||||
<entry>192.168.0.0/24</entry>
|
||||
<entry>192.168.0/24</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>128.1</entry>
|
||||
<entry>128.1.0.0/16</entry>
|
||||
<entry>128.1/16</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>128</entry>
|
||||
<entry>128.0.0.0/16</entry>
|
||||
<entry>128.0/16</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>128.1.2</entry>
|
||||
<entry>128.1.2.0/24</entry>
|
||||
<entry>128.1.2/24</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>10.1.2</entry>
|
||||
<entry>10.1.2.0/24</entry>
|
||||
<entry>10.1.2/24</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>10.1</entry>
|
||||
<entry>10.1.0.0/16</entry>
|
||||
<entry>10.1/16</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>10</entry>
|
||||
<entry>10.0.0.0/8</entry>
|
||||
<entry>10/8</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
@ -1917,8 +1929,8 @@ January 8 04:05:06 1999 PST
|
||||
<tip>
|
||||
<para>
|
||||
If you do not like the output format for <type>inet</type> or
|
||||
<type>cidr</type> values, try the <function>host</>() and
|
||||
<function>text</>() functions.
|
||||
<type>cidr</type> values, try the <function>host</>(),
|
||||
<function>text</>(), and <function>abbrev</>() functions.
|
||||
</para>
|
||||
</tip>
|
||||
</para>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.45 2000/12/19 17:35:46 petere Exp $ -->
|
||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/func.sgml,v 1.46 2000/12/22 18:00:24 tgl Exp $ -->
|
||||
|
||||
<chapter id="functions">
|
||||
<title>Functions and Operators</title>
|
||||
@ -2432,7 +2432,7 @@ Not defined by this name. Implements the intersection operator '#'
|
||||
<entry>cidr</entry>
|
||||
<entry>extract network part of address</entry>
|
||||
<entry>network('192.168.1.5/24')</entry>
|
||||
<entry>192.168.1/24</entry>
|
||||
<entry>192.168.1.0/24</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>text(inet)</entry>
|
||||
@ -2441,15 +2441,22 @@ Not defined by this name. Implements the intersection operator '#'
|
||||
<entry>text(inet '192.168.1.5')</entry>
|
||||
<entry>192.168.1.5/32</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>abbrev(inet)</entry>
|
||||
<entry>text</entry>
|
||||
<entry>extract abbreviated display as text</entry>
|
||||
<entry>abbrev(cidr '10.1.0.0/16')</entry>
|
||||
<entry>10.1/16</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
||||
<para>
|
||||
All of the functions for <type>inet</type> can be applied to
|
||||
<type>cidr</type> values as well. The <function>host</>() and
|
||||
<function>text</>() functions are primarily intended to offer
|
||||
alternative display formats.
|
||||
<type>cidr</type> values as well. The <function>host</>(),
|
||||
<function>text</>(), and <function>abbrev</>() functions are primarily
|
||||
intended to offer alternative display formats.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
|
@ -3,7 +3,7 @@
|
||||
* is for IP V4 CIDR notation, but prepared for V6: just
|
||||
* add the necessary bits where the comments indicate.
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/network.c,v 1.27 2000/11/25 21:30:54 tgl Exp $
|
||||
* $Header: /cvsroot/pgsql/src/backend/utils/adt/network.c,v 1.28 2000/12/22 18:00:20 tgl Exp $
|
||||
*
|
||||
* Jon Postel RIP 16 Oct 1998
|
||||
*/
|
||||
@ -111,19 +111,24 @@ inet_out(PG_FUNCTION_ARGS)
|
||||
inet *src = PG_GETARG_INET_P(0);
|
||||
char tmp[sizeof("255.255.255.255/32")];
|
||||
char *dst;
|
||||
int len;
|
||||
|
||||
if (ip_family(src) == AF_INET)
|
||||
{
|
||||
/* It's an IP V4 address: */
|
||||
if (ip_type(src))
|
||||
dst = inet_cidr_ntop(AF_INET, &ip_v4addr(src), ip_bits(src),
|
||||
tmp, sizeof(tmp));
|
||||
else
|
||||
dst = inet_net_ntop(AF_INET, &ip_v4addr(src), ip_bits(src),
|
||||
tmp, sizeof(tmp));
|
||||
|
||||
/* Use inet style for both inet and cidr, since we don't want
|
||||
* abbreviated CIDR style here.
|
||||
*/
|
||||
dst = inet_net_ntop(AF_INET, &ip_v4addr(src), ip_bits(src),
|
||||
tmp, sizeof(tmp));
|
||||
if (dst == NULL)
|
||||
elog(ERROR, "unable to print address (%s)", strerror(errno));
|
||||
/* For CIDR, add /n if not present */
|
||||
if (ip_type(src) && strchr(tmp, '/') == NULL)
|
||||
{
|
||||
len = strlen(tmp);
|
||||
snprintf(tmp + len, sizeof(tmp) - len, "/%u", ip_bits(src));
|
||||
}
|
||||
}
|
||||
else
|
||||
/* Go for an IPV6 address here, before faulting out: */
|
||||
@ -375,17 +380,50 @@ network_show(PG_FUNCTION_ARGS)
|
||||
/* force display of 32 bits, regardless of masklen... */
|
||||
if (inet_net_ntop(AF_INET, &ip_v4addr(ip), 32, tmp, sizeof(tmp)) == NULL)
|
||||
elog(ERROR, "unable to print host (%s)", strerror(errno));
|
||||
/* Add /n if not present (which it won't be) */
|
||||
if (strchr(tmp, '/') == NULL)
|
||||
{
|
||||
len = strlen(tmp);
|
||||
snprintf(tmp + len, sizeof(tmp) - len, "/%u", ip_bits(ip));
|
||||
}
|
||||
}
|
||||
else
|
||||
/* Go for an IPV6 address here, before faulting out: */
|
||||
elog(ERROR, "unknown address family (%d)", ip_family(ip));
|
||||
|
||||
/* Add /n if not present */
|
||||
if (strchr(tmp, '/') == NULL)
|
||||
/* Return string as a text datum */
|
||||
len = strlen(tmp);
|
||||
ret = (text *) palloc(len + VARHDRSZ);
|
||||
VARATT_SIZEP(ret) = len + VARHDRSZ;
|
||||
memcpy(VARDATA(ret), tmp, len);
|
||||
PG_RETURN_TEXT_P(ret);
|
||||
}
|
||||
|
||||
Datum
|
||||
network_abbrev(PG_FUNCTION_ARGS)
|
||||
{
|
||||
inet *ip = PG_GETARG_INET_P(0);
|
||||
text *ret;
|
||||
char *dst;
|
||||
int len;
|
||||
char tmp[sizeof("255.255.255.255/32")];
|
||||
|
||||
if (ip_family(ip) == AF_INET)
|
||||
{
|
||||
len = strlen(tmp);
|
||||
snprintf(tmp + len, sizeof(tmp) - len, "/%u", ip_bits(ip));
|
||||
/* It's an IP V4 address: */
|
||||
if (ip_type(ip))
|
||||
dst = inet_cidr_ntop(AF_INET, &ip_v4addr(ip), ip_bits(ip),
|
||||
tmp, sizeof(tmp));
|
||||
else
|
||||
dst = inet_net_ntop(AF_INET, &ip_v4addr(ip), ip_bits(ip),
|
||||
tmp, sizeof(tmp));
|
||||
|
||||
if (dst == NULL)
|
||||
elog(ERROR, "unable to print address (%s)", strerror(errno));
|
||||
}
|
||||
else
|
||||
/* Go for an IPV6 address here, before faulting out: */
|
||||
elog(ERROR, "unknown address family (%d)", ip_family(ip));
|
||||
|
||||
/* Return string as a text datum */
|
||||
len = strlen(tmp);
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: pg_proc.h,v 1.180 2000/12/21 20:48:16 petere Exp $
|
||||
* $Id: pg_proc.h,v 1.181 2000/12/22 18:00:17 tgl Exp $
|
||||
*
|
||||
* NOTES
|
||||
* The script catalog/genbki.sh reads this file and generates .bki
|
||||
@ -2294,6 +2294,8 @@ DATA(insert OID = 930 ( network_supeq PGUID 12 f t t t 2 f 16 "869 869" 100 0
|
||||
DESCR("is-supernet-or-equal");
|
||||
|
||||
/* inet/cidr functions */
|
||||
DATA(insert OID = 605 ( abbrev PGUID 12 f t t t 1 f 25 "869" 100 0 0 100 network_abbrev - ));
|
||||
DESCR("abbreviated display of inet/cidr value");
|
||||
DATA(insert OID = 683 ( network PGUID 12 f t t t 1 f 650 "869" 100 0 0 100 network_network - ));
|
||||
DESCR("network part of address");
|
||||
DATA(insert OID = 696 ( netmask PGUID 12 f t t t 1 f 869 "869" 100 0 0 100 network_netmask - ));
|
||||
|
@ -7,7 +7,7 @@
|
||||
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $Id: builtins.h,v 1.144 2000/12/08 23:57:00 tgl Exp $
|
||||
* $Id: builtins.h,v 1.145 2000/12/22 18:00:18 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -508,6 +508,7 @@ extern Datum network_masklen(PG_FUNCTION_ARGS);
|
||||
extern Datum network_broadcast(PG_FUNCTION_ARGS);
|
||||
extern Datum network_host(PG_FUNCTION_ARGS);
|
||||
extern Datum network_show(PG_FUNCTION_ARGS);
|
||||
extern Datum network_abbrev(PG_FUNCTION_ARGS);
|
||||
|
||||
/* mac.c */
|
||||
extern Datum macaddr_in(PG_FUNCTION_ARGS);
|
||||
|
@ -19,18 +19,18 @@ INSERT INTO INET_TBL (c, i) VALUES ('10', '9.1.2.3/8');
|
||||
INSERT INTO INET_TBL (c, i) VALUES ('192.168.1.2/24', '192.168.1.226');
|
||||
ERROR: invalid CIDR value '192.168.1.2/24': has bits set to right of mask
|
||||
SELECT '' AS ten, c AS cidr, i AS inet FROM INET_TBL;
|
||||
ten | cidr | inet
|
||||
-----+--------------+------------------
|
||||
| 192.168.1/24 | 192.168.1.226/24
|
||||
| 192.168.1/24 | 192.168.1.226
|
||||
| 10/8 | 10.1.2.3/8
|
||||
| 10.0.0.0/32 | 10.1.2.3/8
|
||||
| 10.1.2.3/32 | 10.1.2.3
|
||||
| 10.1.2/24 | 10.1.2.3/24
|
||||
| 10.1/16 | 10.1.2.3/16
|
||||
| 10/8 | 10.1.2.3/8
|
||||
| 10/8 | 11.1.2.3/8
|
||||
| 10/8 | 9.1.2.3/8
|
||||
ten | cidr | inet
|
||||
-----+----------------+------------------
|
||||
| 192.168.1.0/24 | 192.168.1.226/24
|
||||
| 192.168.1.0/24 | 192.168.1.226
|
||||
| 10.0.0.0/8 | 10.1.2.3/8
|
||||
| 10.0.0.0/32 | 10.1.2.3/8
|
||||
| 10.1.2.3/32 | 10.1.2.3
|
||||
| 10.1.2.0/24 | 10.1.2.3/24
|
||||
| 10.1.0.0/16 | 10.1.2.3/16
|
||||
| 10.0.0.0/8 | 10.1.2.3/8
|
||||
| 10.0.0.0/8 | 11.1.2.3/8
|
||||
| 10.0.0.0/8 | 9.1.2.3/8
|
||||
(10 rows)
|
||||
|
||||
-- now test some support functions
|
||||
@ -51,61 +51,61 @@ SELECT '' AS ten, i AS inet, host(i), text(i) FROM INET_TBL;
|
||||
|
||||
SELECT '' AS ten, c AS cidr, broadcast(c),
|
||||
i AS inet, broadcast(i) FROM INET_TBL;
|
||||
ten | cidr | broadcast | inet | broadcast
|
||||
-----+--------------+------------------+------------------+------------------
|
||||
| 192.168.1/24 | 192.168.1.255/24 | 192.168.1.226/24 | 192.168.1.255/24
|
||||
| 192.168.1/24 | 192.168.1.255/24 | 192.168.1.226 | 192.168.1.226
|
||||
| 10/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8
|
||||
| 10.0.0.0/32 | 10.0.0.0 | 10.1.2.3/8 | 10.255.255.255/8
|
||||
| 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3 | 10.1.2.3
|
||||
| 10.1.2/24 | 10.1.2.255/24 | 10.1.2.3/24 | 10.1.2.255/24
|
||||
| 10.1/16 | 10.1.255.255/16 | 10.1.2.3/16 | 10.1.255.255/16
|
||||
| 10/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8
|
||||
| 10/8 | 10.255.255.255/8 | 11.1.2.3/8 | 11.255.255.255/8
|
||||
| 10/8 | 10.255.255.255/8 | 9.1.2.3/8 | 9.255.255.255/8
|
||||
ten | cidr | broadcast | inet | broadcast
|
||||
-----+----------------+------------------+------------------+------------------
|
||||
| 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.226/24 | 192.168.1.255/24
|
||||
| 192.168.1.0/24 | 192.168.1.255/24 | 192.168.1.226 | 192.168.1.226
|
||||
| 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8
|
||||
| 10.0.0.0/32 | 10.0.0.0 | 10.1.2.3/8 | 10.255.255.255/8
|
||||
| 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3 | 10.1.2.3
|
||||
| 10.1.2.0/24 | 10.1.2.255/24 | 10.1.2.3/24 | 10.1.2.255/24
|
||||
| 10.1.0.0/16 | 10.1.255.255/16 | 10.1.2.3/16 | 10.1.255.255/16
|
||||
| 10.0.0.0/8 | 10.255.255.255/8 | 10.1.2.3/8 | 10.255.255.255/8
|
||||
| 10.0.0.0/8 | 10.255.255.255/8 | 11.1.2.3/8 | 11.255.255.255/8
|
||||
| 10.0.0.0/8 | 10.255.255.255/8 | 9.1.2.3/8 | 9.255.255.255/8
|
||||
(10 rows)
|
||||
|
||||
SELECT '' AS ten, c AS cidr, network(c) AS "network(cidr)",
|
||||
i AS inet, network(i) AS "network(inet)" FROM INET_TBL;
|
||||
ten | cidr | network(cidr) | inet | network(inet)
|
||||
-----+--------------+---------------+------------------+------------------
|
||||
| 192.168.1/24 | 192.168.1/24 | 192.168.1.226/24 | 192.168.1/24
|
||||
| 192.168.1/24 | 192.168.1/24 | 192.168.1.226 | 192.168.1.226/32
|
||||
| 10/8 | 10/8 | 10.1.2.3/8 | 10/8
|
||||
| 10.0.0.0/32 | 10.0.0.0/32 | 10.1.2.3/8 | 10/8
|
||||
| 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3/32
|
||||
| 10.1.2/24 | 10.1.2/24 | 10.1.2.3/24 | 10.1.2/24
|
||||
| 10.1/16 | 10.1/16 | 10.1.2.3/16 | 10.1/16
|
||||
| 10/8 | 10/8 | 10.1.2.3/8 | 10/8
|
||||
| 10/8 | 10/8 | 11.1.2.3/8 | 11/8
|
||||
| 10/8 | 10/8 | 9.1.2.3/8 | 9/8
|
||||
ten | cidr | network(cidr) | inet | network(inet)
|
||||
-----+----------------+----------------+------------------+------------------
|
||||
| 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.226/24 | 192.168.1.0/24
|
||||
| 192.168.1.0/24 | 192.168.1.0/24 | 192.168.1.226 | 192.168.1.226/32
|
||||
| 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8
|
||||
| 10.0.0.0/32 | 10.0.0.0/32 | 10.1.2.3/8 | 10.0.0.0/8
|
||||
| 10.1.2.3/32 | 10.1.2.3/32 | 10.1.2.3 | 10.1.2.3/32
|
||||
| 10.1.2.0/24 | 10.1.2.0/24 | 10.1.2.3/24 | 10.1.2.0/24
|
||||
| 10.1.0.0/16 | 10.1.0.0/16 | 10.1.2.3/16 | 10.1.0.0/16
|
||||
| 10.0.0.0/8 | 10.0.0.0/8 | 10.1.2.3/8 | 10.0.0.0/8
|
||||
| 10.0.0.0/8 | 10.0.0.0/8 | 11.1.2.3/8 | 11.0.0.0/8
|
||||
| 10.0.0.0/8 | 10.0.0.0/8 | 9.1.2.3/8 | 9.0.0.0/8
|
||||
(10 rows)
|
||||
|
||||
SELECT '' AS ten, c AS cidr, masklen(c) AS "masklen(cidr)",
|
||||
i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL;
|
||||
ten | cidr | masklen(cidr) | inet | masklen(inet)
|
||||
-----+--------------+---------------+------------------+---------------
|
||||
| 192.168.1/24 | 24 | 192.168.1.226/24 | 24
|
||||
| 192.168.1/24 | 24 | 192.168.1.226 | 32
|
||||
| 10/8 | 8 | 10.1.2.3/8 | 8
|
||||
| 10.0.0.0/32 | 32 | 10.1.2.3/8 | 8
|
||||
| 10.1.2.3/32 | 32 | 10.1.2.3 | 32
|
||||
| 10.1.2/24 | 24 | 10.1.2.3/24 | 24
|
||||
| 10.1/16 | 16 | 10.1.2.3/16 | 16
|
||||
| 10/8 | 8 | 10.1.2.3/8 | 8
|
||||
| 10/8 | 8 | 11.1.2.3/8 | 8
|
||||
| 10/8 | 8 | 9.1.2.3/8 | 8
|
||||
ten | cidr | masklen(cidr) | inet | masklen(inet)
|
||||
-----+----------------+---------------+------------------+---------------
|
||||
| 192.168.1.0/24 | 24 | 192.168.1.226/24 | 24
|
||||
| 192.168.1.0/24 | 24 | 192.168.1.226 | 32
|
||||
| 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
|
||||
| 10.0.0.0/32 | 32 | 10.1.2.3/8 | 8
|
||||
| 10.1.2.3/32 | 32 | 10.1.2.3 | 32
|
||||
| 10.1.2.0/24 | 24 | 10.1.2.3/24 | 24
|
||||
| 10.1.0.0/16 | 16 | 10.1.2.3/16 | 16
|
||||
| 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
|
||||
| 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8
|
||||
| 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
|
||||
(10 rows)
|
||||
|
||||
SELECT '' AS four, c AS cidr, masklen(c) AS "masklen(cidr)",
|
||||
i AS inet, masklen(i) AS "masklen(inet)" FROM INET_TBL
|
||||
WHERE masklen(c) <= 8;
|
||||
four | cidr | masklen(cidr) | inet | masklen(inet)
|
||||
------+------+---------------+------------+---------------
|
||||
| 10/8 | 8 | 10.1.2.3/8 | 8
|
||||
| 10/8 | 8 | 10.1.2.3/8 | 8
|
||||
| 10/8 | 8 | 11.1.2.3/8 | 8
|
||||
| 10/8 | 8 | 9.1.2.3/8 | 8
|
||||
four | cidr | masklen(cidr) | inet | masklen(inet)
|
||||
------+------------+---------------+------------+---------------
|
||||
| 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
|
||||
| 10.0.0.0/8 | 8 | 10.1.2.3/8 | 8
|
||||
| 10.0.0.0/8 | 8 | 11.1.2.3/8 | 8
|
||||
| 10.0.0.0/8 | 8 | 9.1.2.3/8 | 8
|
||||
(4 rows)
|
||||
|
||||
SELECT '' AS six, c AS cidr, i AS inet FROM INET_TBL
|
||||
@ -121,17 +121,17 @@ SELECT '' AS ten, i, c,
|
||||
i << c AS sb, i <<= c AS sbe,
|
||||
i >> c AS sup, i >>= c AS spe
|
||||
FROM INET_TBL;
|
||||
ten | i | c | lt | le | eq | ge | gt | ne | sb | sbe | sup | spe
|
||||
-----+------------------+--------------+----+----+----+----+----+----+----+-----+-----+-----
|
||||
| 192.168.1.226/24 | 192.168.1/24 | f | f | f | t | t | t | f | t | f | t
|
||||
| 192.168.1.226 | 192.168.1/24 | f | f | f | t | t | t | t | t | f | f
|
||||
| 10.1.2.3/8 | 10/8 | f | f | f | t | t | t | f | t | f | t
|
||||
| 10.1.2.3/8 | 10.0.0.0/32 | t | t | f | f | f | t | f | f | t | t
|
||||
| 10.1.2.3 | 10.1.2.3/32 | f | t | t | t | f | f | f | t | f | t
|
||||
| 10.1.2.3/24 | 10.1.2/24 | f | f | f | t | t | t | f | t | f | t
|
||||
| 10.1.2.3/16 | 10.1/16 | f | f | f | t | t | t | f | t | f | t
|
||||
| 10.1.2.3/8 | 10/8 | f | f | f | t | t | t | f | t | f | t
|
||||
| 11.1.2.3/8 | 10/8 | f | f | f | t | t | t | f | f | f | f
|
||||
| 9.1.2.3/8 | 10/8 | t | t | f | f | f | t | f | f | f | f
|
||||
ten | i | c | lt | le | eq | ge | gt | ne | sb | sbe | sup | spe
|
||||
-----+------------------+----------------+----+----+----+----+----+----+----+-----+-----+-----
|
||||
| 192.168.1.226/24 | 192.168.1.0/24 | f | f | f | t | t | t | f | t | f | t
|
||||
| 192.168.1.226 | 192.168.1.0/24 | f | f | f | t | t | t | t | t | f | f
|
||||
| 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t
|
||||
| 10.1.2.3/8 | 10.0.0.0/32 | t | t | f | f | f | t | f | f | t | t
|
||||
| 10.1.2.3 | 10.1.2.3/32 | f | t | t | t | f | f | f | t | f | t
|
||||
| 10.1.2.3/24 | 10.1.2.0/24 | f | f | f | t | t | t | f | t | f | t
|
||||
| 10.1.2.3/16 | 10.1.0.0/16 | f | f | f | t | t | t | f | t | f | t
|
||||
| 10.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | t | f | t
|
||||
| 11.1.2.3/8 | 10.0.0.0/8 | f | f | f | t | t | t | f | f | f | f
|
||||
| 9.1.2.3/8 | 10.0.0.0/8 | t | t | f | f | f | t | f | f | f | f
|
||||
(10 rows)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user