How the IS_IPV4_MAPPED() function works in Mariadb?

The IS_IPV4_MAPPED() function is a network function that tests whether an IPv6 address is mapped to an IPv4 address or not.

Posted on

The MariaDB IS_IPV4_MAPPED() function is used to determine if an IPv6 address is an IPv4-mapped address. This is useful when dealing with databases that store IP addresses, as it helps maintain compatibility between IPv4 and IPv6 addresses.

Syntax

The syntax for the MariaDB IS_IPV4_MAPPED() function is as follows:

IS_IPV4_MAPPED(ipv6_address)
  • ipv6_address is the IPv6 address to be checked for being an IPv4-mapped address.

The function returns 1 if the IPv6 address is an IPv4-mapped address, otherwise, it returns 0.

Examples

Example 1: IPv4-Mapped Address

This example checks if the given IPv6 address is an IPv4-mapped address.

SELECT IS_IPV4_MAPPED(INET6_ATON('::FFFF:192.168.0.1'));

The output for this statement is:

+--------------------------------------------------+
| IS_IPV4_MAPPED(INET6_ATON('::FFFF:192.168.0.1')) |
+--------------------------------------------------+
|                                                1 |
+--------------------------------------------------+

This result indicates that the IPv6 address is an IPv4-mapped address.

Example 2: Non-Mapped IPv6 Address

Demonstrating the check for an IPv6 address that is not IPv4-mapped.

SELECT IS_IPV4_MAPPED(INET6_ATON('2001:db8::1'));

The output for this statement is:

+-------------------------------------------+
| IS_IPV4_MAPPED(INET6_ATON('2001:db8::1')) |
+-------------------------------------------+
|                                         0 |
+-------------------------------------------+

Since the address is not IPv4-mapped, the function returns 0.

Example 3: Invalid IPv6 Address

Showing the result when checking an invalid IPv6 address.

SELECT IS_IPV4_MAPPED(INET6_ATON('invalid address'));

The output for this statement is:

+-----------------------------------------------+
| IS_IPV4_MAPPED(INET6_ATON('invalid address')) |
+-----------------------------------------------+
|                                             0 |
+-----------------------------------------------+

The function returns 0 because the address is not a valid IPv6 address.

Example 4: Checking Multiple Addresses

Using IS_IPV4_MAPPED() to check multiple IPv6 addresses in a single query.

SELECT IS_IPV4_MAPPED(INET6_ATON('::FFFF:192.168.0.1')),
       IS_IPV4_MAPPED(INET6_ATON('2001:db8::1'));

The output for this statement is:

+--------------------------------------------------+-------------------------------------------+
| IS_IPV4_MAPPED(INET6_ATON('::FFFF:192.168.0.1')) | IS_IPV4_MAPPED(INET6_ATON('2001:db8::1')) |
+--------------------------------------------------+-------------------------------------------+
|                                                1 |                                         0 |
+--------------------------------------------------+-------------------------------------------+

This result shows the IPv4-mapped status of two different IPv6 addresses.

Example 5: Using IS_IPV4_MAPPED() with Table Data

Checking the IPv4-mapped status of IPv6 addresses stored in a table.

DROP TABLE IF EXISTS ip_addresses;
CREATE TABLE ip_addresses (id INT, ipv6_address VARBINARY(16));
INSERT INTO ip_addresses (id, ipv6_address) VALUES (1, INET6_ATON('::FFFF:192.168.0.1')), (2, INET6_ATON('2001:db8::1'));

SELECT id, IS_IPV4_MAPPED(ipv6_address) AS ipv4_mapped FROM ip_addresses;

The output for this statement is:

+------+-------------+
| id   | ipv4_mapped |
+------+-------------+
|    1 |           1 |
|    2 |           0 |
+------+-------------+

This table shows the IPv4-mapped status of the IPv6 addresses in the database.

Below are a few functions related to the MariaDB IS_IPV4_MAPPED() function:

  • MariaDB INET6_ATON() function is used to convert an IPv6 or IPv4 address to binary form.
  • MariaDB INET6_NTOA() function is used to convert the binary form of an IPv6 or IPv4 address back to text.

Conclusion

The IS_IPV4_MAPPED() function in MariaDB is a valuable tool for handling IP addresses within a database. It allows for the identification of IPv4-mapped addresses within an IPv6 context, ensuring proper handling and compatibility between different IP versions. Mastery of this function is crucial for database administrators and developers working with network-related data. Understanding how to use this function can greatly simplify the management of IP addresses and ensure seamless operation across various network protocols.