网络地址函数和操作符
网络地址函数和操作符#
9.12. 网络地址函数和操作符
表 9.37展示了可以用于cidr和
inet类型的操作符。 操作符<<、<<=、
>>、>>=和
&&测试用于子网包含。它们只考虑两个地址的网
络部分(忽略任何主机部分),然后判断其中一个网络部分是等于另外一个或者是
另外一个的子网。
表 9.37. ``cidr``和``inet``操作符
| 操作符 | 描述 | 例子 | 
|---|---|---|
| 
 | 小于 | 
 | 
| 
 | 小于等于 | 
 | 
| 
 | 等于 | 
 | 
| 
 | 大于等于 | 
 | 
| 
 | 大于 | 
 | 
| 
 | 不等于 | 
 | 
| 
 | 被包含在内 | 
 | 
| 
 | 被包含在内或等于 | 
 | 
| 
 | 包含 | 
 | 
| 
 | 包含或等于 | 
 | 
| 
 | 包含或者被包含contains or is contained by | 
 | 
| 
 | 按位 NOT | 
 | 
| 
 | 按位 AND | 
 | 
| 
 | 按位 OR | 
 | 
| 
 | 加 | ` inet ‘192.168.1.6’ + 25` | 
| 
 | 减 | `` inet ‘192.168.1.43’ - 36`` | 
| 
 | 减 | 
 | 
表 9.38展示了所有可以用于cidr和inet类型的函数。函数abbrev、host和text主要是为了提供可选的显示格式用的。
表 9.38. ``cidr``和``inet``函数
| 函数 | 返回类型 | 描述 | 例子 | 结果 | 
|---|---|---|---|---|
| 
 | 
 | 缩写显 示格式文本 | 
 | 
 | 
| 
 | 
 | 缩写显 示格式文本 | 
 | 
 | 
| 
 | 
 | 网 络广播地址 | 
 | 
 | 
| 
 | 
 | 抽
取地址族;
 | 
 | 
 | 
| 
 | 
 | 抽取 IP 地址为文本 | 
 | 
 | 
| 
 | 
 | 为网络构 造主机掩码 | 
 | 
 | 
| 
 | 
 | 抽取网 络掩码长度 | 
 | 
 | 
| 
 | 
 | 为网络构 造网络掩码 | 
 | 
 | 
| 
 | 
 | 抽取地址 的网络部分 | 
 | 
 | 
| 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | |
| 
 | 
 | 抽取 IP 地址 和网络掩码 长度为文本 | 
 | 
 | 
| 
 | 
 | 地址是 来自于同一 个家族吗? | ` inet_same_ family(‘192 .168.1.5/24 ‘, ‘::1’)` | 
 | 
| 
 | 
 | 包 括给定网络 的最小网络 | 
 | 
 | 
任何cidr值都能够被隐式或显式地转换为inet值,
因此上述能够操作inet值的函数也同样能够操作cidr值(也有独立的用于inet和cidr的函数,因为它的行为应当和这两种情况不同)。inet值也可以转换为cidr值。完成时,该网络掩码右侧的任何位都将无声地转换为零以获得一个有效的cidr值。另外,你还可以使用常规的造型语法将一个文本字符串转换为inet或cidr值:例如,inet(expression)或colname::cidr。
表 9.39展示了可以用于macaddr类型的函数。
函数trunc(macaddr)返回一个 MAC
地址,该地址的最后三个字节设置为零。这样可以把剩下的前缀与一个制造商相关联。
表 9.39. ``macaddr``函数
| 函数 | 返回类型 | 描述 | 例子 | 结果 | 
|---|---|---|---|---|
| 
 | 
 | 设置最后 3个字节为零 | 
 | 
 | 
macaddr类型还支持标准关系操作符 (>、<=等)
用于编辑次序,并且按位算术操作符(~、&和|)用于
NOT、AND 和 OR。
表 9.40中展示了可以用于macaddr8类型的函数。函数trunc(macaddr8)返回一个后五个字节设置为零的MAC地址。这可以被用来为一个制造商关联一个前缀。
表 9.40. ``macaddr8``函数
| 函数 | 返回类型 | 描述 | 例子 | 结果 | 
|---|---|---|---|---|
| 
 | ` macaddr8` | 设置最后五 个字节为零 | ` trunc(maca ddr8 ‘12:34 :56:78:90:a b:cd:ef’)` | 
 | 
| 
 | ` macaddr8` | 设置第7位 为一,也被 称为修改版 的EUI-64, 用于内含在 IPv6地址中 | 
 | 
 | 
macaddr8类型也支持用于排序的标准关系操作符(>、<=等)以及用于NOT、AND和OR的位运算操作符(~、&和|)。