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

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

表 9.36. cidrinet运算符

Operator Description Example
< 小于 inet '192.168.1.5' < inet '192.168.1.6'
<= 小于或等于 inet '192.168.1.5' <= inet '192.168.1.5'
= equals 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'
>> contains 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'
~ bitwise NOT ~ inet '192.168.1.6'
& bitwise AND inet '192.168.1.6' & inet '0.0.0.255'
| bitwise OR inet '192.168.1.6' | inet '0.0.0.255'
+ addition inet '192.168.1.6' + 25
- subtraction inet '192.168.1.43' - 36
- subtraction inet '192.168.1.43' - inet '192.168.1.19'

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

表 9.37. cidrinet函数

Function Return Type Description Example Result
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用于 IPv6 family('::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 inet值设置网络掩码长度 set_masklen('192.168.1.5/24', 16) 192.168.1.5/16
set_masklen(cidr, int) cidr cidr值设置网络掩码长度 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功能

Function Return Type Description Example Result
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功能

Function Return Type Description Example Result
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 的按位算术运算符(~&|)。

上一章 首页 下一章