4.2.9. 操作定义

YANG允许定义的操作。 使用YANG数据定义语句对操作名称,输入参数和输出参数进行建模。 模块顶层的操作用“rpc”语句定义。 操作也可以绑定到容器或列表数据节点。 这些操作用“操作”语句来定义。

YANG顶层操作示例:

  1. rpc activate-software-image {
  2. input {
  3. leaf image-name {
  4. type string;
  5. }
  6. }
  7. output {
  8. leaf status {
  9. type string;
  10. }
  11. }
  12. }

NETCONF XML示例:

  1. <rpc message-id="101"
  2. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  3. <activate-software-image xmlns="http://example.com/system">
  4. <image-name>example-fw-2.3</image-name>
  5. </activate-software-image>
  6. </rpc>
  7. <rpc-reply message-id="101"
  8. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  9. <status xmlns="http://example.com/system">
  10. The image example-fw-2.3 is being installed.
  11. </status>
  12. </rpc-reply>

YANG绑定到列表数据节点的操作示例:

  1. list interface {
  2. key "name";
  3. leaf name {
  4. type string;
  5. }
  6. action ping {
  7. input {
  8. leaf destination {
  9. type inet:ip-address;
  10. }
  11. }
  12. output {
  13. leaf packet-loss {
  14. type uint8;
  15. }
  16. }
  17. }
  18. }

NETCONF XML示例:

  1. <rpc message-id="102"
  2. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
  3. <action xmlns="urn:ietf:params:xml:ns:yang:1">
  4. <interface xmlns="http://example.com/system">
  5. <name>eth1</name>
  6. <ping>
  7. <destination>192.0.2.1</destination>
  8. </ping>
  9. </interface>
  10. </action>
  11. </rpc>
  12. <rpc-reply message-id="102"
  13. xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
  14. xmlns:sys="http://example.com/system">
  15. <sys:packet-loss>60</sys:packet-loss>
  16. </rpc-reply>

第7.14节介绍“rpc”声明,第7.15节介绍“action”声明。