6.10. 网络地址类型函数

Table 6-23 显示了可以 用于 inetcidr 的操作符. 操作符 << <<= >> >>= 用于计算子网包含:它们只考虑两个地址的网络部分,忽略任何主机部分, 然后判断其中一个网络部分是等于另外一个还是另外一个的子网.

Table 6-23. cidrinet 操作符

操作符描述用法
< 小于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'

Table 6-24 显示了所有可以用于 inetcidr 的函数。 函数 host()text()abbrev() 主要是为了提供可选的显示格式用的. 你可以用普通的类型转换语法∶ inet(expression) 或者 colname::inet 把一个文本数域转换成 inet.

Table 6-24. cidrinet 函数

函数返回描述例子结果
broadcast(inet)inet网络广播地址broadcast('192.168.1.5/24')192.168.1.255/24
host(inet)text将主机地址类型抽出为文本host('192.168.1.5/24')192.168.1.5
masklen(inet)integer抽取网络掩码长度masklen('192.168.1.5/24')24
set_masklen(inet,integer)inetinet数值设置网络掩码长度set_masklen('192.168.1.5/24',16)192.168.1.5/16
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
text(inet)text把 IP 地址和掩码长度抽取为文本text(inet '192.168.1.5')192.168.1.5/32
abbrev(inet)text抽取缩写显示为文本abbrev(cidr '10.1.0.0/16')10.1/16

Table 6-25 显示了可以用于 mac 类型的函数。 函数 truncmacaddr)返回一个 MAC 地址,该地址的最后三个字节设置为零. 这样可以把剩下的前缀与一个制造商相关联. 源程序目录 contrib/mac 里有一些用于创建和维护这样的 关联表的工具.

Table 6-25. macaddr 函数

函数返回描述例子结果
trunc(macaddr)macaddr把后三个字节置为零trunc(macaddr '12:34:56:78:90:ab')12:34:56:00:00:00

macaddr 类型还支持标准关系操作符 (><=,等) 用于词法排序.