leafref require-instance 允许携带不存在的值
leafref require-instance allows to carry non existing values
想弄清楚以下内容:
say, (omitting key for brevity)
list l1 {
leaf lx {
leafref /x/y;
require-instance false;
mandatory false;
}
}
- 因为强制性是错误的,
我可以有一个没有叶 lx 的 l1 实例。
- 因为 require-instance 是 false,我可以有一个列表实例,其中 lx 是任何值(有效类型),无论相应的 /x/y 是否存在。
并且,假设叶子是强制性的;
list l1 {
leaf lx {
leafref /x/y;
require-instance false;
mandatory true;
}
}
现在,
列表实例必须带有叶 lx。并且任何值(正确类型)都是有效的,因为 require-instance 是 false。
正确吗?
我什么时候应该使用这个工具?
如果require-instance
设置为false
则leafref
节点的值space与引用节点的值space相同.如果引用节点的值 space 特别复杂,有很多限制等,这可能很有用。因此,基本上,模块创建者可以重用他们之前定义的内容。
如果require-instance
设置为true
(或省略),那么当有没有个指定值的叶子实例时-space leafref
节点的值 space 为空。因此,您无法创建 leafref
节点的有效实例,因为它没有可能的值。
以下是YANG 1.1 RFC 7950的相关部分:
9.9. The leafref Built-In Type
The leafref built-in type is restricted to the value space of some leaf or leaf-list node in the schema tree and optionally further restricted by corresponding instance nodes in the data tree. The "path" substatement (Section 9.9.2) is used to identify the referred leaf or leaf-list node in the schema tree. The value space of the referring node is the value space of the referred node.
和关于 require-instance
语句的片段:
9.9.3. The "require-instance" Statement
[...] If this statement is not present, it defaults to "true".
If "require-instance" is "true", it means that the instance being referred to MUST exist for the data to be valid. This constraint is enforced according to the rules in Section 8.
If "require-instance" is "false", it means that the instance being referred to MAY exist in valid data.
恕我直言,YANG 1.1 RFC 7950 的这一部分有点误导。首先,它说引用节点的值space是引用节点的值space,但后来又说存在实例存在限制默认。这意味着,默认情况下,引用节点的值 space 是引用节点的一组叶实例值,并且 而不是 的完整值 space那个节点。
想弄清楚以下内容:
say, (omitting key for brevity)
list l1 {
leaf lx {
leafref /x/y;
require-instance false;
mandatory false;
}
}
- 因为强制性是错误的, 我可以有一个没有叶 lx 的 l1 实例。
- 因为 require-instance 是 false,我可以有一个列表实例,其中 lx 是任何值(有效类型),无论相应的 /x/y 是否存在。
并且,假设叶子是强制性的;
list l1 {
leaf lx {
leafref /x/y;
require-instance false;
mandatory true;
}
}
现在, 列表实例必须带有叶 lx。并且任何值(正确类型)都是有效的,因为 require-instance 是 false。
正确吗?
我什么时候应该使用这个工具?
如果require-instance
设置为false
则leafref
节点的值space与引用节点的值space相同.如果引用节点的值 space 特别复杂,有很多限制等,这可能很有用。因此,基本上,模块创建者可以重用他们之前定义的内容。
如果require-instance
设置为true
(或省略),那么当有没有个指定值的叶子实例时-space leafref
节点的值 space 为空。因此,您无法创建 leafref
节点的有效实例,因为它没有可能的值。
以下是YANG 1.1 RFC 7950的相关部分:
9.9. The leafref Built-In Type
The leafref built-in type is restricted to the value space of some leaf or leaf-list node in the schema tree and optionally further restricted by corresponding instance nodes in the data tree. The "path" substatement (Section 9.9.2) is used to identify the referred leaf or leaf-list node in the schema tree. The value space of the referring node is the value space of the referred node.
和关于 require-instance
语句的片段:
9.9.3. The "require-instance" Statement
[...] If this statement is not present, it defaults to "true".
If "require-instance" is "true", it means that the instance being referred to MUST exist for the data to be valid. This constraint is enforced according to the rules in Section 8.
If "require-instance" is "false", it means that the instance being referred to MAY exist in valid data.
恕我直言,YANG 1.1 RFC 7950 的这一部分有点误导。首先,它说引用节点的值space是引用节点的值space,但后来又说存在实例存在限制默认。这意味着,默认情况下,引用节点的值 space 是引用节点的一组叶实例值,并且 而不是 的完整值 space那个节点。