网络地址函数和操作符#

下表显示了cidr 和inet类型可用的操作符。操作符<<, <<=, >>, 和 >>=用于测试子网包含。它们只考虑两个地址的网络部分,忽略任何主机部分, 然后判断其中一个网络是等于另外一个网络还是另外一个的子网。

表.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.6’

&

位与

inet ‘192.168.1.6’ & inet ‘0.0.0.255’

|

位或

inet ‘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’

下表显示了cidr 和inet 类型可用的函数。函数abbrev, host, text主要是为了提供可选的显示格式用的。

表.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 为 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

任何cidr值都能够被隐含或明确的转换为inet值, 因此上述能够操作inet值的函数也同样能够操作cidr值。(而将某些操作inet和cidr的函数单独分隔开是因为它们的行为不同。) inet值也可以转换为cidr值,此时子网掩码右侧的所有位都将无声的转换为零以获得一个有效的cidr值。另外,你还可以使用常规的类型转换语法将一个文本字符串转换为inet或cidr值。 例如:inet(expression)或colname::cidr。

下表显示了macaddr 类型可用的函数。函数trunc(macaddr)返回一个 MAC 地址, 该地址的最后三个字节设置为零。这样可以把剩下的前缀与一个制造商相关联。

表.macaddr 函数

函数

返回类型

描述

例子

结果

trunc(macaddr)

macaddr

最后三个字节设置为零

trunc(macaddr ‘12:34:56:78:90:ab’)

12:34:56:00:00:00

macaddr 类型也支持标准关系操作符(>,<=,等)用于此法排列。