--- /dev/null
+module ietf-netconf-monitoring {\r
+\r
+ yang-version 1;\r
+\r
+ namespace\r
+ "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring";\r
+\r
+ prefix ncm;\r
+\r
+ import ietf-yang-types {\r
+ prefix yang;\r
+ revision-date "2013-07-15";\r
+ }\r
+\r
+ import ietf-inet-types {\r
+ prefix inet;\r
+ revision-date "2013-07-15";\r
+ }\r
+\r
+ organization\r
+ "IETF NETCONF (Network Configuration) Working Group";\r
+\r
+ contact\r
+ "WG Web: <http://tools.ietf.org/wg/netconf/>\r
+ WG List: <mailto:netconf@ietf.org>\r
+\r
+ WG Chair: Mehmet Ersue\r
+ <mailto:mehmet.ersue@nsn.com>\r
+\r
+ WG Chair: Bert Wijnen\r
+ <mailto:bertietf@bwijnen.net>\r
+\r
+ Editor: Mark Scott\r
+ <mailto:mark.scott@ericsson.com>\r
+\r
+ Editor: Martin Bjorklund\r
+ <mailto:mbj@tail-f.com>";\r
+\r
+ description\r
+ "NETCONF Monitoring Module.\r
+ All elements in this module are read-only.\r
+\r
+ Copyright (c) 2010 IETF Trust and the persons identified as\r
+ authors of the code. All rights reserved.\r
+\r
+ Redistribution and use in source and binary forms, with or\r
+ without modification, is permitted pursuant to, and subject\r
+ to the license terms contained in, the Simplified BSD\r
+ License set forth in Section 4.c of the IETF Trust's\r
+ Legal Provisions Relating to IETF Documents\r
+ (http://trustee.ietf.org/license-info).\r
+\r
+ This version of this YANG module is part of RFC 6022; see\r
+ the RFC itself for full legal notices.";\r
+\r
+ revision "2010-10-04" {\r
+ description "Initial revision.";\r
+ reference\r
+ "RFC 6022: YANG Module for NETCONF Monitoring";\r
+\r
+ }\r
+\r
+\r
+ typedef netconf-datastore-type {\r
+ type enumeration {\r
+ enum "running" {\r
+ value 0;\r
+ }\r
+ enum "candidate" {\r
+ value 1;\r
+ }\r
+ enum "startup" {\r
+ value 2;\r
+ }\r
+ }\r
+ description\r
+ "Enumeration of possible NETCONF datastore types.";\r
+ reference\r
+ "RFC 4741: NETCONF Configuration Protocol";\r
+\r
+ }\r
+\r
+ identity transport {\r
+ description\r
+ "Base identity for NETCONF transport types.";\r
+ }\r
+\r
+ identity netconf-ssh {\r
+ base transport;\r
+ description\r
+ "NETCONF over Secure Shell (SSH).";\r
+ reference\r
+ "RFC 4742: Using the NETCONF Configuration Protocol\r
+ over Secure SHell (SSH)";\r
+\r
+ }\r
+\r
+ identity netconf-soap-over-beep {\r
+ base transport;\r
+ description\r
+ "NETCONF over Simple Object Access Protocol (SOAP) over\r
+ Blocks Extensible Exchange Protocol (BEEP).";\r
+ reference\r
+ "RFC 4743: Using NETCONF over the Simple Object\r
+ Access Protocol (SOAP)";\r
+\r
+ }\r
+\r
+ identity netconf-soap-over-https {\r
+ base transport;\r
+ description\r
+ "NETCONF over Simple Object Access Protocol (SOAP)\r
+ over Hypertext Transfer Protocol Secure (HTTPS).";\r
+ reference\r
+ "RFC 4743: Using NETCONF over the Simple Object\r
+ Access Protocol (SOAP)";\r
+\r
+ }\r
+\r
+ identity netconf-beep {\r
+ base transport;\r
+ description\r
+ "NETCONF over Blocks Extensible Exchange Protocol (BEEP).";\r
+ reference\r
+ "RFC 4744: Using the NETCONF Protocol over the\r
+ Blocks Extensible Exchange Protocol (BEEP)";\r
+\r
+ }\r
+\r
+ identity netconf-tls {\r
+ base transport;\r
+ description\r
+ "NETCONF over Transport Layer Security (TLS).";\r
+ reference\r
+ "RFC 5539: NETCONF over Transport Layer Security (TLS)";\r
+\r
+ }\r
+\r
+ identity schema-format {\r
+ description\r
+ "Base identity for data model schema languages.";\r
+ }\r
+\r
+ identity xsd {\r
+ base schema-format;\r
+ description\r
+ "W3C XML Schema Definition.";\r
+ reference\r
+ "W3C REC REC-xmlschema-1-20041028:\r
+ XML Schema Part 1: Structures";\r
+\r
+ }\r
+\r
+ identity yang {\r
+ base schema-format;\r
+ description\r
+ "The YANG data modeling language for NETCONF.";\r
+ reference\r
+ "RFC 6020: YANG - A Data Modeling Language for the\r
+ Network Configuration Protocol (NETCONF)";\r
+\r
+ }\r
+\r
+ identity yin {\r
+ base schema-format;\r
+ description "The YIN syntax for YANG.";\r
+ reference\r
+ "RFC 6020: YANG - A Data Modeling Language for the\r
+ Network Configuration Protocol (NETCONF)";\r
+\r
+ }\r
+\r
+ identity rng {\r
+ base schema-format;\r
+ description\r
+ "Regular Language for XML Next Generation (RELAX NG).";\r
+ reference\r
+ "ISO/IEC 19757-2:2008: RELAX NG";\r
+\r
+ }\r
+\r
+ identity rnc {\r
+ base schema-format;\r
+ description "Relax NG Compact Syntax";\r
+ reference\r
+ "ISO/IEC 19757-2:2008: RELAX NG";\r
+\r
+ }\r
+\r
+ grouping common-counters {\r
+ description\r
+ "Counters that exist both per session, and also globally,\r
+ accumulated from all sessions.";\r
+ leaf in-rpcs {\r
+ type yang:zero-based-counter32;\r
+ description\r
+ "Number of correct <rpc> messages received.";\r
+ }\r
+\r
+ leaf in-bad-rpcs {\r
+ type yang:zero-based-counter32;\r
+ description\r
+ "Number of messages received when an <rpc> message was expected,\r
+ that were not correct <rpc> messages. This includes XML parse\r
+ errors and errors on the rpc layer.";\r
+ }\r
+\r
+ leaf out-rpc-errors {\r
+ type yang:zero-based-counter32;\r
+ description\r
+ "Number of <rpc-reply> messages sent that contained an\r
+ <rpc-error> element.";\r
+ }\r
+\r
+ leaf out-notifications {\r
+ type yang:zero-based-counter32;\r
+ description\r
+ "Number of <notification> messages sent.";\r
+ }\r
+ } // grouping common-counters\r
+\r
+ container netconf-state {\r
+ config false;\r
+ description\r
+ "The netconf-state container is the root of the monitoring\r
+ data model.";\r
+ container capabilities {\r
+ description\r
+ "Contains the list of NETCONF capabilities supported by the\r
+ server.";\r
+ leaf-list capability {\r
+ type inet:uri;\r
+ description\r
+ "List of NETCONF capabilities supported by the server.";\r
+ }\r
+ } // container capabilities\r
+\r
+ container datastores {\r
+ description\r
+ "Contains the list of NETCONF configuration datastores.";\r
+ list datastore {\r
+ key "name";\r
+ description\r
+ "List of NETCONF configuration datastores supported by\r
+ the NETCONF server and related information.";\r
+ leaf name {\r
+ type netconf-datastore-type;\r
+ description\r
+ "Name of the datastore associated with this list entry.";\r
+ }\r
+\r
+ container locks {\r
+ presence\r
+ "This container is present only if the datastore\r
+ is locked.";\r
+ description\r
+ "The NETCONF <lock> and <partial-lock> operations allow\r
+ a client to lock specific resources in a datastore. The\r
+ NETCONF server will prevent changes to the locked\r
+ resources by all sessions except the one that acquired\r
+ the lock(s).\r
+\r
+ Monitoring information is provided for each datastore\r
+ entry including details such as the session that acquired\r
+ the lock, the type of lock (global or partial) and the\r
+ list of locked resources. Multiple locks per datastore\r
+ are supported.";\r
+ grouping lock-info {\r
+ description\r
+ "Lock related parameters, common to both global and\r
+ partial locks.";\r
+ leaf locked-by-session {\r
+ type uint32;\r
+ mandatory true;\r
+ description\r
+ "The session ID of the session that has locked\r
+ this resource. Both a global lock and a partial\r
+ lock MUST contain the NETCONF session-id.\r
+\r
+ If the lock is held by a session that is not managed\r
+ by the NETCONF server (e.g., a CLI session), a session\r
+ id of 0 (zero) is reported.";\r
+ reference\r
+ "RFC 4741: NETCONF Configuration Protocol";\r
+\r
+ }\r
+\r
+ leaf locked-time {\r
+ type yang:date-and-time;\r
+ mandatory true;\r
+ description\r
+ "The date and time of when the resource was\r
+ locked.";\r
+ }\r
+ } // grouping lock-info\r
+ choice lock-type {\r
+ description\r
+ "Indicates if a global lock or a set of partial locks\r
+ are set.";\r
+ container global-lock {\r
+ description\r
+ "Present if the global lock is set.";\r
+ uses lock-info;\r
+ } // container global-lock\r
+ list partial-lock {\r
+ key "lock-id";\r
+ description\r
+ "List of partial locks.";\r
+ reference\r
+ "RFC 5717: Partial Lock Remote Procedure Call (RPC) for\r
+ NETCONF";\r
+\r
+ leaf lock-id {\r
+ type uint32;\r
+ description\r
+ "This is the lock id returned in the <partial-lock>\r
+ response.";\r
+ }\r
+\r
+ uses lock-info;\r
+\r
+ leaf-list select {\r
+ type yang:xpath1.0;\r
+ min-elements 1;\r
+ description\r
+ "The xpath expression that was used to request\r
+ the lock. The select expression indicates the\r
+ original intended scope of the lock.";\r
+ }\r
+\r
+ leaf-list locked-node {\r
+ type instance-identifier;\r
+ description\r
+ "The list of instance-identifiers (i.e., the\r
+ locked nodes).\r
+\r
+ The scope of the partial lock is defined by the list\r
+ of locked nodes.";\r
+ }\r
+ } // list partial-lock\r
+ } // choice lock-type\r
+ } // container locks\r
+ } // list datastore\r
+ } // container datastores\r
+\r
+ container schemas {\r
+ description\r
+ "Contains the list of data model schemas supported by the\r
+ server.";\r
+ list schema {\r
+ key "identifier version format";\r
+ description\r
+ "List of data model schemas supported by the server.";\r
+ leaf identifier {\r
+ type string;\r
+ description\r
+ "Identifier to uniquely reference the schema. The\r
+ identifier is used in the <get-schema> operation and may\r
+ be used for other purposes such as file retrieval.\r
+\r
+ For modeling languages that support or require a data\r
+ model name (e.g., YANG module name) the identifier MUST\r
+ match that name. For YANG data models, the identifier is\r
+ the name of the module or submodule. In other cases, an\r
+ identifier such as a filename MAY be used instead.";\r
+ }\r
+\r
+ leaf version {\r
+ type string;\r
+ description\r
+ "Version of the schema supported. Multiple versions MAY be\r
+ supported simultaneously by a NETCONF server. Each\r
+ version MUST be reported individually in the schema list,\r
+ i.e., with same identifier, possibly different location,\r
+ but different version.\r
+\r
+ For YANG data models, version is the value of the most\r
+ recent YANG 'revision' statement in the module or\r
+ submodule, or the empty string if no 'revision' statement\r
+ is present.";\r
+ }\r
+\r
+ leaf format {\r
+ type identityref {\r
+ base schema-format;\r
+ }\r
+ description\r
+ "The data modeling language the schema is written\r
+ in (currently xsd, yang, yin, rng, or rnc).\r
+ For YANG data models, 'yang' format MUST be supported and\r
+ 'yin' format MAY also be provided.";\r
+ }\r
+\r
+ leaf namespace {\r
+ type inet:uri;\r
+ mandatory true;\r
+ description\r
+ "The XML namespace defined by the data model.\r
+\r
+ For YANG data models, this is the module's namespace.\r
+ If the list entry describes a submodule, this field\r
+ contains the namespace of the module to which the\r
+ submodule belongs.";\r
+ }\r
+\r
+ leaf-list location {\r
+ type union {\r
+ type enumeration {\r
+ enum "NETCONF" {\r
+ value 0;\r
+ }\r
+ }\r
+ type inet:uri;\r
+ }\r
+ description\r
+ "One or more locations from which the schema can be\r
+ retrieved. This list SHOULD contain at least one\r
+ entry per schema.\r
+\r
+ A schema entry may be located on a remote file system\r
+ (e.g., reference to file system for ftp retrieval) or\r
+ retrieved directly from a server supporting the\r
+ <get-schema> operation (denoted by the value 'NETCONF').";\r
+ }\r
+ } // list schema\r
+ } // container schemas\r
+\r
+ container sessions {\r
+ description\r
+ "The sessions container includes session-specific data for\r
+ NETCONF management sessions. The session list MUST include\r
+ all currently active NETCONF sessions.";\r
+ list session {\r
+ key "session-id";\r
+ description\r
+ "All NETCONF sessions managed by the NETCONF server\r
+ MUST be reported in this list.";\r
+ leaf session-id {\r
+ type uint32 {\r
+ range "1..max";\r
+ }\r
+ description\r
+ "Unique identifier for the session. This value is the\r
+ NETCONF session identifier, as defined in RFC 4741.";\r
+ reference\r
+ "RFC 4741: NETCONF Configuration Protocol";\r
+\r
+ }\r
+\r
+ leaf transport {\r
+ type identityref {\r
+ base transport;\r
+ }\r
+ mandatory true;\r
+ description\r
+ "Identifies the transport for each session, e.g.,\r
+ 'netconf-ssh', 'netconf-soap', etc.";\r
+ }\r
+\r
+ leaf username {\r
+ type string;\r
+ mandatory true;\r
+ description\r
+ "The username is the client identity that was authenticated\r
+ by the NETCONF transport protocol. The algorithm used to\r
+ derive the username is NETCONF transport protocol specific\r
+ and in addition specific to the authentication mechanism\r
+ used by the NETCONF transport protocol.";\r
+ }\r
+\r
+ leaf source-host {\r
+ type inet:host;\r
+ description\r
+ "Host identifier of the NETCONF client. The value\r
+ returned is implementation specific (e.g., hostname,\r
+ IPv4 address, IPv6 address)";\r
+ }\r
+\r
+ leaf login-time {\r
+ type yang:date-and-time;\r
+ mandatory true;\r
+ description\r
+ "Time at the server at which the session was established.";\r
+ }\r
+\r
+ uses common-counters {\r
+ description\r
+ "Per-session counters. Zero based with following reset\r
+ behaviour:\r
+ - at start of a session\r
+ - when max value is reached";\r
+ }\r
+ } // list session\r
+ } // container sessions\r
+\r
+ container statistics {\r
+ description\r
+ "Statistical data pertaining to the NETCONF server.";\r
+ leaf netconf-start-time {\r
+ type yang:date-and-time;\r
+ description\r
+ "Date and time at which the management subsystem was\r
+ started.";\r
+ }\r
+\r
+ leaf in-bad-hellos {\r
+ type yang:zero-based-counter32;\r
+ description\r
+ "Number of sessions silently dropped because an\r
+ invalid <hello> message was received. This includes <hello>\r
+ messages with a 'session-id' attribute, bad namespace, and\r
+ bad capability declarations.";\r
+ }\r
+\r
+ leaf in-sessions {\r
+ type yang:zero-based-counter32;\r
+ description\r
+ "Number of sessions started. This counter is incremented\r
+ when a <hello> message with a <session-id> is sent.\r
+\r
+ 'in-sessions' - 'in-bad-hellos' =\r
+ 'number of correctly started netconf sessions'";\r
+ }\r
+\r
+ leaf dropped-sessions {\r
+ type yang:zero-based-counter32;\r
+ description\r
+ "Number of sessions that were abnormally terminated, e.g.,\r
+ due to idle timeout or transport close. This counter is not\r
+ incremented when a session is properly closed by a\r
+ <close-session> operation, or killed by a <kill-session>\r
+ operation.";\r
+ }\r
+\r
+ uses common-counters {\r
+ description\r
+ "Global counters, accumulated from all sessions.\r
+ Zero based with following reset behaviour:\r
+ - re-initialization of NETCONF server\r
+ - when max value is reached";\r
+ }\r
+ } // container statistics\r
+ } // container netconf-state\r
+\r
+ rpc get-schema {\r
+ description\r
+ "This operation is used to retrieve a schema from the\r
+ NETCONF server.\r
+\r
+ Positive Response:\r
+ The NETCONF server returns the requested schema.\r
+\r
+ Negative Response:\r
+ If requested schema does not exist, the <error-tag> is\r
+ 'invalid-value'.\r
+\r
+ If more than one schema matches the requested parameters, the\r
+ <error-tag> is 'operation-failed', and <error-app-tag> is\r
+ 'data-not-unique'.";\r
+ input {\r
+ leaf identifier {\r
+ type string;\r
+ mandatory true;\r
+ description\r
+ "Identifier for the schema list entry.";\r
+ }\r
+\r
+ leaf version {\r
+ type string;\r
+ description\r
+ "Version of the schema requested. If this parameter is not\r
+ present, and more than one version of the schema exists on\r
+ the server, a 'data-not-unique' error is returned, as\r
+ described above.";\r
+ }\r
+\r
+ leaf format {\r
+ type identityref {\r
+ base schema-format;\r
+ }\r
+ description\r
+ "The data modeling language of the schema. If this\r
+ parameter is not present, and more than one formats of\r
+ the schema exists on the server, a 'data-not-unique' error\r
+ is returned, as described above.";\r
+ }\r
+ }\r
+\r
+ output {\r
+ anyxml data {\r
+ description\r
+ "Contains the schema content.";\r
+ }\r
+ }\r
+ } // rpc get-schema\r
+} // module\r