Функции и операторы для сетевых адресов
Типы cidr и inet, предназначенные для сетевых IP-адресов, поддерживают обычные операторы сравнения, приведенные в таблице Операторы сравнения, а также специальные операторы и функции, приведенные в Таблице 38 и Таблице 39.
Любое значение типа cidr можно привести к типу inet неявно, поэтому операторы и функции, показанные ниже для типа inet, также работают со значениями типа cidr. (Там, где для inet cidr показаны разные функции, причина этого в том, что в данном случае их поведение с этими двумя типами различается.) Кроме того, разрешено приведение значения типа inet к типу cidr. При этому все биты справа от сетевой маски молча обнуляются, чтобы создать допустимое значение типа cidr.
Таблица 38. Операторы для IP-адресов
Оператор |
||
---|---|---|
Описание Пример(ы) |
||
inet << inet → boolean |
||
Первая подсеть строго содержится во второй? Этот и следующие четыре оператора проверяют вхождение одной подсети в другую. Они рассматривают только сетевые части двух заданных адресов (игнорируя все биты справа от сетевой маски) и определяют, идентична ли одна сеть другой или является ее подсетью.
|
||
inet <<= inet → boolean |
||
Первая подсеть содержится во второй или равна ей?
|
||
inet >> inet → boolean |
||
Первая подсеть строго содержит вторую?
|
||
inet >>= inet → boolean |
||
Первая подсеть содержит вторую или равна ей?
|
||
inet && inet → boolean |
||
Одна из двух подсетей содержит другую или равна ей?
|
||
~ inet → inet |
||
Вычисляет результат побитового НЕ.
|
||
inet & inet → inet |
||
Вычисляет результат побитового И.
|
||
inet | inet → inet |
||
Вычисляет результат побитового ИЛИ.
|
||
inet + bigint → inet |
||
Добавляет смещение к адресу.
|
||
bigint + inet → inet |
||
Добавляет смещение к адресу.
|
||
inet - bigint → inet |
||
Вычитает смещение из адреса.
|
||
inet - inet → bigint |
||
Вычисляет разность двух адресов.
|
Таблица 39. Функции для IP-адресов
Функция |
||
---|---|---|
Описание Пример(ы) |
||
abbrev ( inet ) → text |
||
Создает сокращенный формат отображения адреса в виде текста. (Результат получается тот же, что и у функции вывода inet; «сокращенным» он является только в сравнении с результатом явного приведения к типу text, которое по историческим причинам никогда не будет убирать часть с сетевой маской.)
|
||
abbrev ( cidr ) → text |
||
Создает сокращенный формат отображения адреса в виде текста. (Это сокращение заключается в отбрасывании полностью нулевых октетов справа от сетевой маски; другие примеры см. в таблице Примеры вводимых значений типа cidr.)
|
||
broadcast ( inet ) → inet |
||
Вычисляет широковещательный адрес для сети в заданном адресе.
|
||
family ( inet ) → integer |
||
Возвращает семейство адреса: 4 для адресов IPv4, 6 для адресов IPv6.
|
||
host ( inet ) → text |
||
Возвращает IP-адрес в виде текста, игнорируя сетевую маску.
|
||
hostmask ( inet ) → inet |
||
Вычисляет маску хоста для сети в заданном адресе.
|
||
inet_merge ( inet, inet ) → cidr |
||
Вычисляет наименьшую сеть, содержащую обе заданные сети.
|
||
inet_same_family ( inet, inet ) → boolean |
||
Проверяет, принадлежат ли адреса одному семейству IP.
|
||
masklen ( inet ) → integer |
||
Возвращает длину сетевой маски в битах.
|
||
netmask ( inet ) → inet |
||
Вычисляет сетевую маску для сети в заданном адресе.
|
||
network ( inet ) → cidr |
||
Возвращает сетевую часть адреса, обнуляя все биты справа от сетевой маски. (Это равнозначно приведению значения к типу cidr.)
|
||
set_masklen ( inet, integer ) → inet |
||
Задает длину сетевой маски для значения типа inet. Адресная часть при этом не меняется.
|
||
set_masklen ( cidr, integer ) → cidr |
||
Задает длину сетевой маски для значения cidr. Биты адреса справа от новой сетевой маски при этом устанавливаются в ноль.
|
||
text ( inet ) → text |
||
Возвращает несокращенный IP-адрес и длину сетевой маски в виде текста. (Такой же результат получается при явном приведении к типу text.)
|
Совет
Функции abbrev, host и text предназначены в основном для отображения IP-адресов в альтернативных форматах.
Типы для MAC-адресов, macaddr и macaddr8, поддерживают обычные операторы
сравнения, приведенные в таблице Операторы сравнения, а также специальные функции,
приведенные в Таблице 40. Кроме того, они поддерживают побитовые логические
операторы ~
, &
и |
(НЕ, И и ИЛИ), показанные выше для IP-адресов.
Таблица 40. Функции для MAC-адресов
Функция |
||
---|---|---|
Описание Пример(ы) |
||
trunc ( macaddr ) → macaddr |
||
Устанавливает в ноль 3 последних байта адреса. Оставшийся префикс можно сопоставить с конкретным производителем (используя информацию, отсутствующую в QHB).
|
||
trunc ( macaddr8 ) → macaddr8 |
||
Устанавливает в ноль 5 последних байта адреса. Оставшийся префикс можно сопоставить с конкретным производителем (используя информацию, отсутствующую в QHB).
|
||
macaddr8_set7bit ( macaddr8 ) → macaddr8 |
||
Устанавливает единицу в 7-м бите адреса, создавая так называемый модифицированный идентификатор EUI-64 для включения в адрес IPv6.
|