9.12. Функции и операторы для работы с сетевыми адресами

В Таблица 9.34 показаны операторы, работающие с типами cidr и inet. Операторы <<, <<=, >>, >>= и && проверяют включения подсетей, рассматривая только биты сети в обоих адресах (игнорируя биты узлов) и определяя, идентична ли одна сеть другой или её подсети.

Таблица 9.34. Операторы для типов cidr и inet

ОператорОписаниеПример
<меньшеinet '192.168.1.5' < inet '192.168.1.6'
<=меньше или равноinet '192.168.1.5' <= inet '192.168.1.5'
=равноinet '192.168.1.5' = inet '192.168.1.5'
>=больше или равноinet '192.168.1.5' >= inet '192.168.1.5'
>большеinet '192.168.1.5' > inet '192.168.1.4'
<>не равноinet '192.168.1.5' <> inet '192.168.1.4'
<<содержится вinet '192.168.1.5' << inet '192.168.1/24'
<<=равно или содержится вinet '192.168.1/24' <<= inet '192.168.1/24'
>>содержитinet '192.168.1/24' >> inet '192.168.1.5'
>>=равно или содержитinet '192.168.1/24' >>= inet '192.168.1/24'
&&содержит или содержится вinet '192.168.1/24' && inet '192.168.1.80/28'
~битовый NOT~ inet '192.168.1.6'
&битовый ANDinet '192.168.1.6' & inet '0.0.0.255'
|битовый ORinet '192.168.1.6' | inet '0.0.0.255'
+сложениеinet '192.168.1.6' + 25
-вычитаниеinet '192.168.1.43' - 36
-вычитаниеinet '192.168.1.43' - inet '192.168.1.19'

В Таблице 9.35 перечислены функции, работающие с типами cidr и inet. Функции abbrev, host и text предназначены в основном для вывода данных в альтернативных форматах.

Таблица 9.35. Функции для типов cidr и inet

ФункцияТип результатаОписаниеПримерРезультат
abbrev(inet)textвывод адрес в кратком текстовом видеabbrev(inet '10.1.0.0/16')10.1.0.0/16
abbrev(cidr)textвывод адрес в кратком текстовом видеabbrev(cidr '10.1.0.0/16')10.1/16
broadcast(inet)inetшироковещательный адрес сетиbroadcast('192.168.1.5/​24')192.168.1.255/​24
family(inet)intвозвращает семейство адреса; 4 для адреса IPv4, 6 для IPv6family('::1')6
host(inet)textизвлекает IP-адрес в виде текстаhost('192.168.1.5/​24')192.168.1.5
hostmask(inet)inetвычисляет маску узла для сетевого адресаhostmask('192.168.23.20/​30')0.0.0.3
masklen(inet)intвыдаёт длину маски сетиmasklen('192.168.1.5/​24')24
netmask(inet)inetвычисляет маску сети для сетевого адресаnetmask('192.168.1.5/​24')255.255.255.0
network(inet)cidrизвлекает компонент сети из адресаnetwork('192.168.1.5/​24')192.168.1.0/24
set_masklen(inet, int)inetзадаёт размер маски для значения inetset_masklen('192.168.1.5/​24', 16)192.168.1.5/16
set_masklen(cidr, int)cidrзадаёт размер маски для значения cidrset_masklen('192.168.1.0/​24'::cidr, 16)192.168.0.0/16
text(inet)textвыводит в текстовом виде IP-адрес и длину маскиtext(inet '192.168.1.5')192.168.1.5/32
inet_same_family(inet, inet)booleanадреса относятся к одному семейству?inet_same_family('192.168.1.5/24', '::1')false
inet_merge(inet, inet)cidrнаименьшая сеть, включающая обе заданные сетиinet_merge('192.168.1.5/24', '192.168.2.5/24')192.168.0.0/22

Любое значение cidr можно привести к типу inet, явно или нет; поэтому все функции, показанные выше с типом inet, также будут работать со значениями cidr. (Некоторые из функций указаны отдельно для типов inet и cidr, потому что их поведение с разными типами различается.) Кроме того, значение inet тоже можно привести к типу cidr. При этом все биты справа от сетевой маски просто обнуляются, чтобы значение стало допустимым для типа cidr. К типам inet и cidr можно привести и обычные текстовые значения, используя обычный синтаксис, например: inet(выражение) или столбец::cidr.

В Таблице 9.36 приведена функция, предназначенная для работы с типом macaddr. Функция trunc(macaddr) возвращает MAC-адрес, последние 3 байта в котором равны 0. Это может быть полезно для вычисления префикса, определяющего производителя.

Таблица 9.36. Функции macaddr

ФункцияТип результатаОписаниеПримерРезультат
trunc(macaddr)macaddrобнуляет последние 3 байтаtrunc(macaddr '12:34:56:​78:90:ab')12:34:56:​00:00:00

Тип macaddr также поддерживает стандартные реляционные операторы лексической сортировки (>, <= и т. д.) и операторы битовой арифметики (~, & и |), соответствующие операциям NOT, AND и OR.

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy