簡體   English   中英

如何在 YANG 中增加枚舉

[英]How to augment an enumeration in YANG

有沒有辦法在 YANG 的另一個模塊中增加枚舉? 就我而言,沒有辦法將所有值放在定義枚舉的第一個模塊中。

知道枚舉在分組內,如下所示:

grouping mygrouping {
    ...
    container mycontainer {
        ...
        list mylist {
            leaf type {
                type enumeration {
                    enum type1
                    enum type2
                    ...
                    enum typen
                }
            }
        }
    }
}

新模塊中使用了分組,但我無法增加葉子類型以在枚舉中添加新類型。

在 YANG 中,枚舉用於著名的 static 選項集。 對於可擴展的選項,您可以使用 identityrefs。 這允許在多個文件中使用身份,並定義一個具有 identityref 類型的葉子,然后它可以采用已定義身份的任何值。

將其視為分散的枚舉。 它並不是真正的“增強”,但它確實允許在不更改原始模塊的情況下為值引入新選項。 當然,這確實假設您實際上可以使用枚舉更改原始葉子。

YANG RFC 中的身份定義: https://tools.ietf.org/html/rfc6020#section-7.16關於枚舉與身份的一些參考: https://tools.ietf.org/4.html/rf.1#1


更新:“某種”增強枚舉的一個選項是在 typedef 中定義原始枚舉,然后通過聯合擴展它:

typedef myenum {
    enum val1 { value 1; }
    enum val2 { value 2; }
    enum val3 { value 3; }
}

...

leaf myleaf {
    type union {
        type myenum;
        type enumeration {
            enum val4 { value 4; }
            enum val5 { value 5; }
        }
    }
}

所以在這種情況下, myleaf可以具有值 val1、val2、val3、val4、val5,這意味着原始枚舉確實是“增強的”。

當然,這意味着它不是真正的枚舉,而是兩個枚舉之間的聯合,它們的排列方式使它們的值不會相交(聯合確實允許這樣做)。 在客戶端和服務器端,這可能是也可能不是簡化 - 取決於實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM