Перейти к содержимому
Последнее обновление

IS_IPV4_MAPPED

Описание​

Проверяет, является ли адрес IPv6 адресом IPv4-mapped. Адреса IPv4-mapped представляют собой особый формат адресов IPv6, используемый для представления адресов IPv4 в сетях IPv6.

Синтаксис​

IS_IPV4_MAPPED(<ipv6_address>)

Параметры​

  • <ipv6_address>: Двоичное представление адреса IPv6 (тип VARCHAR, 16 байт)

Возвращаемое значение​

Тип возвращаемого значения: BOOLEAN

Смысл возвращаемого значения: 1 означает, что адрес является адресом IPv4-mapped, 0 означает, что адрес не является адресом IPv4-mapped

Примечания по использованию​

  • Формат адреса IPv4-mapped: ::ffff:IPv4, где первые 10 байт равны 0, байты 11-12 равны 0xFFFF, а последние 4 байта содержат адрес IPv4
  • Входные данные должны представлять собой двоичные данные IPv6 длиной 16 байт
  • Этот формат определён в RFC 4291 и является наиболее распространённым способом представления адресов IPv4 в IPv6
  • Возвращает NULL, если входной параметр равен NULL

Примеры​

Проверка адреса IPv4-mapped.

SELECT is_ipv4_mapped(INET6_ATON('::ffff:192.168.1.1')) as is_mapped;
+-----------+
| is_mapped |
+-----------+
| 1 |
+-----------+

Проверка адресов, не являющихся адресами IPv4-mapped.

SELECT 
is_ipv4_mapped(INET6_ATON('2001:db8::1')) as standard_ipv6,
is_ipv4_mapped(INET6_ATON('::192.168.1.1')) as ipv4_compat;
+--------------+------------+
| standard_ipv6| ipv4_compat|
+--------------+------------+
| 0 | 0 |
+--------------+------------+

Проверка граничных значений.

SELECT 
is_ipv4_mapped(INET6_ATON('::ffff:0.0.0.0')) as min_ip,
is_ipv4_mapped(INET6_ATON('::ffff:255.255.255.255')) as max_ip;
+--------+--------+
| min_ip | max_ip |
+--------+--------+
| 1 | 1 |
+--------+--------+

Если входной параметр равен NULL, возвращается NULL.

SELECT is_ipv4_mapped(NULL) as null_result;
+-------------+
| null_result |
+-------------+
| NULL |
+-------------+

Ключевые слова​

IS_IPV4_MAPPED