【问题标题】:Why leaf node with name type does not work in yang model?为什么名称类型的叶节点在 yang 模型中不起作用?
【发布时间】:2019-08-29 04:46:26
【问题描述】:

我有这个简单的阳模型

leaf type {
    type string;
    description "some description";
}

这不起作用。有人可以解释一下字符串 'type' 是否对 yang 中的叶子名称无效?

【问题讨论】:

  • pyang 认为它是有效的叶子值。
  • 尝试将参数括在引号中作为一种潜在的解决方法。阻止使用此类参数的工具不符合 RFC7950/RFC6020。

标签: ietf-netmod-yang


【解决方案1】:

leaf 语句参数必须是标识符,并且没有任何限制禁止在需要标识符的地方使用 YANG 关键字(所有内置关键字也是标识符)。 leaf type {...}leaf leaf {...} 都是有效的 YANG 语句。

“leaf”语句用于定义架构中的叶节点 树。它接受一个参数,它是一个标识符,后跟一个 包含详细叶信息的子语句块。

RFC7950, Section 7.6

以下是规范中关于标识符的说明:

标识符用于通过以下方式识别不同种类的 YANG 项目 姓名。每个标识符都以大写或小写 ASCII 开头 字母或下划线字符,后跟零个或多个 ASCII 字母、数字、下划线字符、连字符和点。 实现必须支持最多 64 个字符的标识符 length 和 MAY 支持更长的标识符。标识符是大小写 敏感的。标识符语法由规则正式定义 第 14 节中的“标识符”。标识符可以指定为带引号的 或不带引号的字符串。

RFC7950, Section 6.2

上面提到的语法规则:

identifier          = (ALPHA / "_")
                     *(ALPHA / DIGIT / "_" / "-" / ".")

这是关于 leaf 语句的命名空间的说明(命名空间在其范围内施加了唯一的名称要求,目的是防止名称冲突):

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

RFC7950, Section 6.2.1

【讨论】:

    猜你喜欢
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-26
    • 2019-08-12
    • 2014-12-28
    • 1970-01-01
    • 2013-07-23
    相关资源
    最近更新 更多