Search Postgresql Archives

Re: Q: inet operators for IPv4 encapsulated in IPv6

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 06.09.23 19:41 schrieb(en) Erik Wienhold:
The docs don't spell it out, but inet operators and functions expect values of the same inet family.  Comparing IPv4 and IPv6 always returns false, e.g. [1].
The only hint in the docs that may imply this is [2]:

	"When sorting inet or cidr data types, IPv4 addresses will always sort
	 before IPv6 addresses, including IPv4 addresses encapsulated or mapped
	 to IPv6 addresses, such as ::10.2.3.4 or ::ffff:10.4.3.2."

Ah, I missed that section in the docs.  Thanks a lot for your explanation and the pointers!

You can write your own function that converts IPv4-mapped IPv6 addresses to IPv4 and then do the comparison:

	postgres=# SELECT ltrim(host('::ffff:192.168.1.5'::inet & '::255.255.255.255'::inet), ':')::inet;
	    ltrim
	-------------
	 192.168.1.5
	(1 row)

That's a nice approach, will do that.

Thanks again, Albrecht.

Attachment: pgpDXnEJIp2SB.pgp
Description: PGP signature


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux