Import 如何在Yang中导入模块
我正在尝试构建一个CLI。我选择用“阳”来表达。我是新手,不知道如何导入现有模块。例如,我在github()上找到了一个ospf模块,我想将它导入到我自己的模块中。这能做到吗?怎么做 编辑1:Import 如何在Yang中导入模块,import,ietf-netmod-yang,Import,Ietf Netmod Yang,我正在尝试构建一个CLI。我选择用“阳”来表达。我是新手,不知道如何导入现有模块。例如,我在github()上找到了一个ospf模块,我想将它导入到我自己的模块中。这能做到吗?怎么做 编辑1: module mininet { /* name space */ namespace "http://tail-f.com/ns/example/mininet"; prefix mininet; import ietf-ospf { prefix ospf; revis
module mininet {
/* name space */
namespace "http://tail-f.com/ns/example/mininet";
prefix mininet;
import ietf-ospf {
prefix ospf;
revision-date 2015-03-09
}
leaf area-id-type {
type yang:area-id-type;
}
}
所以我试着用Piotr Babij帮助这样做。不幸的是,这不起作用。我需要改变什么?
区域id类型是ietf ospf的类型定义。我的错误如下:
mininet.yang:12:3: error: trailing garbage after module
mininet.yang:12:3: error: unterminated statement
您可以使用
import
语句在自己的模块中导入其他模块。在YANG 1.1和YANG 1.0中都有描述。在YANG 1.1中,您可以导入同一模块的两个不同版本。除此之外,import
语句在两个版本中的工作原理相同
实际上,基本导入如下所示:
module acme-system {
namespace "http://acme.example.com/system";
prefix "acme";
import ietf-yang-types {
prefix "yang";
revision-date 2013-07-15;
}
leaf acme-ip-address {
type yang:dotted-quad;
}
}
如果省略可选的修订日期
语句,则会导入未定义的模块修订。因此,一般来说,使用它是一种很好的练习
必填的prefix
语句允许您引用导入模块中的内容。在本例中,导入的ietf-yang-types
模块的前缀为yang
,因此,很明显yang:domind quad
指的是该模块中的类型。在您的情况下,您已经将前缀设置为ospf
,因此您应该具有ospf:areaid-type
,以引用该模块中的类型定义。如果导入多个模块,则需要确保其前缀是唯一的
此外,您正在导入ietf ospf
模块的最旧可用版本。我只是希望这是你真正想做的
无论如何,导入模块后,您可以:
- 使用在导入的模块或其子模块的顶层定义的任何
和分组
typedef
- 使用导入模块或其子模块中定义的任何
、扩展名
和功能
标识
- 在
、must
和path
语句中使用导入模块架构树中的任何节点,或作为when
和augment
语句中的目标节点偏差
在上述示例中,
ietf-yang-types
中的typedef-dopped-quad
用于acme系统
模块。您可以使用import
语句在自己的模块中导入其他模块。在YANG 1.1和YANG 1.0中都有描述。在YANG 1.1中,您可以导入同一模块的两个不同版本。除此之外,import
语句在两个版本中的工作原理相同
实际上,基本导入如下所示:
module acme-system {
namespace "http://acme.example.com/system";
prefix "acme";
import ietf-yang-types {
prefix "yang";
revision-date 2013-07-15;
}
leaf acme-ip-address {
type yang:dotted-quad;
}
}
如果省略可选的修订日期
语句,则会导入未定义的模块修订。因此,一般来说,使用它是一种很好的练习
必填的prefix
语句允许您引用导入模块中的内容。在本例中,导入的ietf-yang-types
模块的前缀为yang
,因此,很明显yang:domind quad
指的是该模块中的类型。在您的情况下,您已经将前缀设置为ospf
,因此您应该具有ospf:areaid-type
,以引用该模块中的类型定义。如果导入多个模块,则需要确保其前缀是唯一的
此外,您正在导入ietf ospf
模块的最旧可用版本。我只是希望这是你真正想做的
无论如何,导入模块后,您可以:
- 使用在导入的模块或其子模块的顶层定义的任何
和分组
typedef
- 使用导入模块或其子模块中定义的任何
、扩展名
和功能
标识
- 在
、must
和path
语句中使用导入模块架构树中的任何节点,或作为when
和augment
语句中的目标节点偏差
在上述示例中,
ietf-yang-types
中的typedef虚线四元组
用于acme系统
模块。谢谢您的帮助,但它不起作用,我正在编辑原始帖子。我更新了答案。您应该使用前缀来引用导入模块中的内容。谢谢您的帮助,但它不起作用,我正在编辑原始帖子。我更新了答案。您应该使用前缀来引用导入模块中的内容。我需要更改什么?
嗯,修订日期
语句缺少分号(;
)。您正在使用的工具的解析器因此有点混乱,它会给您提供那些非描述性的错误消息。另外,对于导入模块的类型引用,您仍然使用了错误的前缀。我需要更改什么?
嗯,修订日期语句缺少分号(;
)。您正在使用的工具的解析器因此有点混乱,它会给您提供那些非描述性的错误消息。另外,对于导入模块的类型引用,您仍然使用了错误的前缀。