如何在YANG模型中细化叶子的范围?

时间:2019-03-21 14:06:15

标签: ietf-netmod-yang ietf-netconf

我有一个分组-

  grouping threshold-value-grouping {
    container threshold-value {
      description "Threshold value";
      leaf upper-limit-val {
        description
          "Upper limit";
        type uint32 {
          range "1..60000";
        }
      }
      leaf lower-limit-val {
        description
          "Lower limit";
        type uint32 {
          range "1..60000";
        }
      }
    }
  }

我想在多个地方重复使用此分组。 但是在不同的地方使用时,叶子的范围会有所不同。

所以我想知道如何使用 refine 语句来实现? 还是有解决这个问题的更好方法?

1 个答案:

答案 0 :(得分:1)

RFC 7950的7.13.2节明确指定了所有可能的改进,而range不是其中之一。 type也不是,这在ABNF语法中也可以看到(第14节):

refine-stmt         = refine-keyword sep refine-arg-str optsep
                       "{" stmtsep
                           ;; these stmts can appear in any order
                           *if-feature-stmt
                           *must-stmt
                           [presence-stmt]
                           *default-stmt
                           [config-stmt]
                           [mandatory-stmt]
                           [min-elements-stmt]
                           [max-elements-stmt]
                           [description-stmt]
                           [reference-stmt]
                         "}" stmtsep

但是您可以在这里添加must约束,例如

uses threshold-value-grouping {
    refine threshold-value/upper-limit-val {
        must '(. >= 10 and . <= 100)' {
            error-message "Here you can only use values between 10 and 100";
        }
    }
}