7.18. “身份”声明

identity”声明用于定义新的全球唯一,抽象和无类型的身份。 身份的唯一目的是表示它的名字,语义和存在。 身份可以从头开始定义,也可以从一个或多个基本身份派生。 身份的参数是一个标识符,是身份的名称。 紧接着是一个包含详细身份信息的子状态块。

内置数据类型“identityref”(见第9.10节)可用于引用数据模型中的身份。

7.18.1. 身份的子语句

+--------------+---------+-------------+
| substatement | section | cardinality |
+--------------+---------+-------------+
| base         | 7.18.2  | 0..n        |
| description  | 7.21.3  | 0..1        |
| if-feature   | 7.20.2  | 0..n        |
| reference    | 7.21.4  | 0..1        |
| status       | 7.21.2  | 0..1        |
+--------------+---------+-------------+

7.18.2. “base”声明

可选的“base”语句将一个字符串作为参数,该字符串是从中派生新身份的现有身份的名称。 如果不存在“base”语句,则从头开始定义标识。 如果存在多个“base”语句,则从所有这些语句中派生出身份。

如果基本名称上存在前缀,则表示在前缀导入的模块中定义的标识;如果前缀与本地模块的前缀匹配,则表示前缀为本地模块。 否则,必须在当前模块或包含的子模块中定义具有匹配名称的标识。

身份不得直接或间接通过其他身份链来引用自己。

身份的推导具有以下属性:

  • 这是不反射的,这意味着一个身份不是从它本身衍生出来的。

  • 它是传递性的,这意味着如果B的身份是从A派生的,C是从B派生的,那么C也是从A派生的。

7.18.3. 使用示例

module example-crypto-base {
  yang-version 1.1;
  namespace "urn:example:crypto-base";
  prefix "crypto";

  identity crypto-alg {
    description
      "Base identity from which all crypto algorithms
       are derived.";
  }

  identity symmetric-key {
    description
      "Base identity used to identify symmetric-key crypto
       algorithms.";
    }

  identity public-key {
    description
      "Base identity used to identify public-key crypto
       algorithms.";
    }
}

module example-des {
  yang-version 1.1;
  namespace "urn:example:des";
  prefix "des";

  import "example-crypto-base" {
    prefix "crypto";
  }

  identity des {
    base "crypto:crypto-alg";
    base "crypto:symmetric-key";
    description "DES crypto algorithm.";
  }
  identity des3 {
    base "crypto:crypto-alg";
    base "crypto:symmetric-key";
    description "Triple DES crypto algorithm.";
  }
}

results matching ""

    No results matching ""