0

我正在写一个杨模型。是否可以使用基于另一个字段的值设置叶子(字符串或枚举)。例如,我想说如果 x 则字段 a 的值为 b,如果 z 则字段 a 的值为 c。

编辑:我是 yang 的新手,仍在尝试学习它,如果有任何其他想法或运算符可以用来解决这个问题,请随时分享。:D 非常感谢。

4

1 回答 1

1

您可以使用whenmust构造:YANG 1.1,第 7.5.3 节说:

must语句是可选的,它接受一个包含 XPath 表达式的字符串作为参数(参见第 6.4 节)。它用于正式声明对有效数据的约束。约束是根据第 8 节中的规则执行的。

第 7.5.4.3 节对此进行了说明:

 container interface {
   leaf ifType {
     type enumeration {
       enum ethernet;
       enum atm;
     }
   }
   leaf ifMTU {
     type uint32;
   }
   must 'ifType != "ethernet" or ifMTU = 1500' {
     error-message "An Ethernet MTU must be 1500";
   }
   must 'ifType != "atm" or'
      + ' (ifMTU <= 17966 and ifMTU >= 64)' {
     error-message "An ATM MTU must be 64 .. 17966";
   }
 }

when第 7.21.5 节写道,

when语句使其父数据定义语句成为条件语句。父数据定义语句定义的节点只有在满足when语句指定的条件时才有效。该语句的参数是一个 XPath 表达式(参见第 6.4 节),用于正式指定此条件。

ConfD 提供了NETCONF 和 YANG 中的 XPath教程;这个例子来自它:

augment /system/login/user {
  when “class != ’wheel’”;
  leaf uid {
    type uint16 {
    range “1000 .. 30000”;
    }
  }
}
于 2017-11-28T08:21:50.317 回答