9.12. 网络地址功能和运算符

Table 9.36显示可用于cidrinet类型的运算符。运算符<<<<=>>>>=&&测试子网包含。他们只考虑两个地址的网络部分(忽略任何主机部分),并确定一个网络与另一个网络相同还是一个子网。

表 9.36. cidrinet运算符

OperatorDescriptionExample
<小于inet '192.168.1.5' < inet '192.168.1.6'
<=小于或等于inet '192.168.1.5' <= inet '192.168.1.5'
=equalsinet '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'
>>containsinet '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'
~bitwise NOT~ inet '192.168.1.6'
&bitwise ANDinet '192.168.1.6' & inet '0.0.0.255'
|bitwise ORinet '192.168.1.6' | inet '0.0.0.255'
+additioninet '192.168.1.6' + 25
-subtractioninet '192.168.1.43' - 36
-subtractioninet '192.168.1.43' - inet '192.168.1.19'

Table 9.37显示了可用于cidrinet类型的功能。 abbrevhosttext函数主要用于提供其他显示格式。

表 9.37. cidrinet函数

FunctionReturn TypeDescriptionExampleResult
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 地址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)inetinet值设置网络掩码长度set_masklen('192.168.1.5/24', 16)192.168.1.5/16
set_masklen(cidr, int)cidrcidr值设置网络掩码长度set_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的值。 (在inetcidr有单独的函数的情况下,这是因为两种情况下的行为应有所不同.)此外,还允许将inet值强制转换为cidr。完成此操作后,网络掩码右侧的任何位都将被静默清零以创建有效的cidr值。此外,您可以使用常规转换语法将文本值转换为inetcidr,例如inet(expression)colname::cidr

Table 9.38显示可用于macaddr类型的功能。函数trunc(macaddr)返回最后 3 个字节设置为零的 MAC 地址。这可用于将剩余的前缀与制造商关联。

表 9.38. macaddr功能

FunctionReturn TypeDescriptionExampleResult
trunc(macaddr)macaddr将最后 3 个字节设置为零trunc(macaddr '12:34:56:78:90:ab')12:34:56:00:00:00

macaddr类型还支持字典 Sequences 的标准关系运算符(><=等),以及 NOT,AND 和 OR 的按位算术运算符(~&|)。

Table 9.39显示可用于macaddr8类型的功能。函数trunc(macaddr8)返回最后 5 个字节设置为零的 MAC 地址。这可用于将剩余的前缀与制造商关联。

表 9.39. macaddr8功能

FunctionReturn TypeDescriptionExampleResult
trunc(macaddr8)macaddr8将最后 5 个字节设置为零trunc(macaddr8 '12:34:56:78:90:ab:cd:ef')12:34:56:00:00:00:00:00
macaddr8_set7bit(macaddr8)macaddr8将第 7 位设置为 1,也称为修改后的 EUI-64,以包含在 IPv6 地址中macaddr8_set7bit(macaddr8 '00:34:56:ab:cd:ef')02:34:56:ff:fe:ab:cd:ef

macaddr8类型还支持用于排序的标准关系运算符(><=等),以及用于 NOT,AND 和 OR 的按位算术运算符(~&|)。