【问题标题】:leaf name and type name can be same in yangyang中的叶子名称和类型名称可以相同
【发布时间】:2020-10-16 00:22:25
【问题描述】:

下面的例子是否正确?它对 pyang 有效,但 JNC 无法处理

grouping TLId {
leaf age {
type Age;
mandatory true;
}
}

typedef Age {
type string {
pattern '[0-9][0-9]';
}
}

请推荐

【问题讨论】:

  • 正如@predi 所提到的,这是一个有效的声明。这很可能是 JNC 错误/限制。

标签: ietf-netmod-yang ietf-netconf jncryptor ietf yang


【解决方案1】:

您的 YANG sn-p 有效。

与模式节点标识符相比,Typedef 被分配到不同的命名空间 - 叶标识符和 typedef 标识符之间永远不会发生名称冲突,如 Section 6.2.1 of RFC7950 中所述:

每个标识符在取决于类型的命名空间中都是有效的 正在定义的 YANG 项目。命名空间中定义的所有标识符 必须是唯一的。

o 在父节点内或顶部定义的所有派生类型名称 模块或其子模块的级别共享相同的类型 标识符命名空间。此命名空间的范围为所有后代 父节点或模块的节点。这意味着任何 后代节点可以使用该 typedef,并且它不能定义一个 typedef 同名。

o 所有叶子、叶子列表、列表、容器、选择、RPC、动作、 定义的通知、anydatas 和 anyxmls(直接或通过 一个“使用”语句)在父节点内或在顶层 模块或其子模块共享相同的标识符命名空间。 此命名空间的范围仅限于父节点或模块,除非 父节点是一个案例节点。在这种情况下,命名空间是作用域的 到不是案例或选择节点的最近祖先节点。

【讨论】:

    猜你喜欢
    • 2019-08-29
    • 1970-01-01
    • 2015-07-23
    • 2017-02-22
    • 1970-01-01
    • 2018-08-22
    • 2022-06-10
    • 2018-04-06
    相关资源
    最近更新 更多