yang文件语法格式


前言

NETCONF(Network Configuration Protocol),该协议的配置功能非常强大,同时兼顾监控和故障管理,安全验证和访问控制,得到业界的一致认可,被广泛用来配置网络

NETCONF协议分为传输层、RPC层、操作层和内容层。其中,内容层是唯一没有标准化的层,于是一种新的建模语言YANG产生了,它的目标是对NETCONF数据模型、操作进行建模,覆盖NETCONF协议的操作层和内容层

 

以下详细介绍yang文件的主要元素与语法格式

一、Modules与Submodules

  一个module包含三种类型的声明  

  • module-header statement(模块头声明) —— 描述了该module,给出了module相关的信息。
  • revision statement(版本声明)—— 描述了该module的历史信息。
  • definition statement(定义声明) —— 定义了数据模型的内容部分。

二、yang数据建模的节点类型

2.1  leaf nodes 

  一个leaf nodes包含了像integer或string这样的简单数据,并且没有子节点,如:

  leaf host-name{

    type string;

    description "hostname";

  }

2.2  leaf-list nodes

  一系列的leaf nodes,每个leaf都有特定类型的值

2.3  container node

  将相关的节点归总到一个subtree就是container,只能包含节点,没有值。一个container可能会包含任何类型的任何数量的子节点(包括leafs,lists,leaf-lists以及containers)。  

  yang表示:

container system {
     container login {
         leaf message {
             type string;
             description
                 "Message given at start of login session";
         }
     }
 }

2.4  list nodes  

  定义了一系列的列表项,通过名为key的leaf值唯一确定,可以包含任意类型、任意数目的子节点(包括leafs,lists,containers)

通过以上四种类型节点的组合,即可定义module

三、  state node  

    节点带有"config false"标签时,他的子结构就打上了state data的标签,不可配置,能通过netconf操作获取

四、  内嵌类型

   +---------------------+-------------------------------------+
   | Name                | Description                         |
   +---------------------+-------------------------------------+
   | binary              | Any binary data                     |
   | bits                | A set of bits or flags              |
   | boolean             | "true" or "false"                   |
   | decimal64           | 64-bit signed decimal number        |
   | empty               | A leaf that does not have any value |
   | enumeration         | Enumerated strings                  |
   | identityref         | A reference to an abstract identity |
   | instance-identifier | References a data tree node         |
   | int8                | 8-bit signed integer                |
   | int16               | 16-bit signed integer               |
   | int32               | 32-bit signed integer               |
   | int64               | 64-bit signed integer               |
   | leafref             | A reference to a leaf instance      |
   | string              | Human-readable string               |
   | uint8               | 8-bit unsigned integer              |
   | uint16              | 16-bit unsigned integer             |
   | uint32              | 32-bit unsigned integer             |
   | uint64              | 64-bit unsigned integer             |
   | union               | Choice of member types              |
   +---------------------+-------------------------------------+

五、
  typedef     定义衍生类型

  grouping    可重用节点组

  refine     重定义  重写特定的声明覆盖原有grouping的定义

  choice case   申明分离不相容的节点,类似于java中的switch case

  augment     “augment”声明定义了在数据模型树形结构中,新的节点插入的位置。“when”声明了新节点生效的时间。  

  RPC(Remote Procedure Call)  yang文件可以定义声明RPC的输入输出参数

  notification   yang可以用来为netconf的notification做内容建模


https://www.cnblogs.com/castielangel/p/10083277.html

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM