问题描述
在YANG语言中是否有可能在位类型叶中选择一个选项,这将取消选择所有其他位? 我想要做的是,默认情况下选择了整个平台,但是当用户选择其他选项时,将取消选择整个平台。 否则,当用户选择 Whole-Platform 时,应取消选择所有其他选项。
leaf check-type {
type bits {
bit Whole-platform;
bit NSO-checks;
bit ESC-checks;
}
default "Whole-platform";
}
解决方法
不,YANG 位类型不会让您这样做,因为默认情况下各个位之间不存在任何关系 - 除了所有这些都属于同一组“可配置标志”的概念。
这是联合类型成为可行建模决策的地方。
leaf check-type {
type union {
type enumeration {
enum Whole-platform;
}
type bits {
bit NSO-checks;
bit ESC-checks;
}
}
default Whole-platform;
}
这样做意味着值 Whole-platform
与读者的剩余位值集之间的 XOR(互斥)。
有效值:
<check-type>Whole-platform</check-type>
<check-type>NSO-checks</check-type>
<check-type>NSO-checks ESC-checks</check-type>
无效:
<check-type>Whole-platform ESC-checks</check-type>
您可以保留您的类型,并在描述中处理一个位来统治它们,因为那只是人类可读的规范文本。
description "Implementations must ensure an XOR relationship between
'Whole-platform' bit value and the other bit values of this
leaf. When the former is used it means that
...";
注意:您要实现的是实现细节。