在 yang 文件中调用 'C' 函数

Calling a 'C' function inside yang file

我们可以在 yang 文件中调用 'C' 函数吗?或者有什么办法可以做到这一点?基本上我想调用一个 'C' 函数,它将 return 一个整数值并在我的 .yang 文件中使用它。

下面是我的叶子结构:

leaf memory {
  type int16;
  default 100;
}

我不想要这里的静态默认值 100。 我希望从 "C" 函数中获取默认字段中的值。

有什么办法可以做到这一点吗?

谢谢

YANG 没有定义实现细节,它只是定义了服务器和客户端交换的数据的模式。 将 YANG 模型实现为实现参考的一种可能方法是使用 YANG 扩展。 这些允许数据模型包含 YANG 标准无法识别但 YANG 代理可以识别的额外信息。

这意味着:

  1. 在 YANG 文件上定义扩展名
  2. 使用该扩展名而不是 default 关键字
  3. 在您的实现中,有一种机制,无论何时初始化 YANG 定义的值,如果存在扩展,调用具有该名称的方法以检索默认值,而不是使用模型的默认值直接描述。

正如您所见,前两步很简单,第三步比较难,因为这需要在编译时或运行时调整 YANG 解析器,以便调用扩展中提到的 C 函数。这需要某种能够处理扩展并将其保存在内存中以便正确初始化数据的引擎。

这是一个例子,说明在 YANG

中会是什么样子
module extensions {
  namespace "http://example.com/extensions";
  prefix ext;

  extension default-function {
     argument function-name;
     description "Describes that this leaf has its default value defined by this function.";
  }
}
import extensions { prefix ext; }
(...)
  leaf memory {
    type int16;
    ext:default-function 100;
  }